Kazalo:

Nadzor senzorja gibanja/števca: 7 korakov
Nadzor senzorja gibanja/števca: 7 korakov

Video: Nadzor senzorja gibanja/števca: 7 korakov

Video: Nadzor senzorja gibanja/števca: 7 korakov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Senzor gibanja/krmiljene luči
Senzor gibanja/krmiljene luči

Ta projekt je nastal kot končni projekt za tečaj digitalnega oblikovanja na Cal Polyju v San Luis Obispu (CPE 133).

Zakaj to počnemo? Želimo pomagati ohranjati naravne vire v svetu. Naš projekt se osredotoča na varčevanje z električno energijo. Z prihrankom več električne energije bomo lahko ohranili naravne vire, ki se uporabljajo za proizvodnjo električne energije. Na začetku leta 2018 se naravni viri porabljajo z neverjetno hitrostjo. Zavedati se želimo svojega vpliva na okolje in igrati svojo vlogo pri ohranjanju naravnih virov. Elektroniko lahko uporabimo na različne načine za varčevanje z energijo, kar pomaga tako okolju kot tudi našemu gospodarskemu stanju.*Ta model je bil ustvarjen z uporabo komponent, ki so nam na voljo.

Kaj je bil naš navdih? Ljudje pogosto pozabijo ugasniti praznično luč in zapravljajo energijo tako, da jih pustijo prižgane čez noč. V resnici bo ta projekt prihranil električno energijo, ker bi »praznične luči« prižgale le, ko so ljudje v bližini, in tako prihranili energijo, ko ni nikogar v bližini. Poleg tega smo želeli oblikovati časovnik, tako da bi se luči po določenem času popolnoma ugasnile, da bi se zagotovile, da se ne vklopijo zaradi gibanja, na primer ob 3. uri zjutraj.

Kako bi lahko uporabili to zasnovo? To zasnovo je mogoče uporabiti za vse vrste luči, ne glede na to, ali so dekorativne, praktične ali oboje. Če želite, da na primer namizna svetilka deluje le 6 ur naenkrat. Števec bi morali nastaviti na 21, 600 sekund (6 ur x 3, 600 sekund/uro). Medtem ko se števec aktivno povečuje, bi senzor gibanja nadzoroval svetlobo. Zato morate vsakič, ko se v tem času izklopi, samo zamahniti z roko pred senzorjem gibanja in ta se bo znova vklopil. Če zaspite za svojo mizo in se zbudite 7 ur kasneje, ga vaše gibanje ne bo vklopilo.

1. korak: Potrebna programska in strojna oprema

Potrebna programska in strojna oprema
Potrebna programska in strojna oprema
Potrebna programska in strojna oprema
Potrebna programska in strojna oprema
Potrebna programska in strojna oprema
Potrebna programska in strojna oprema
Potrebna programska in strojna oprema
Potrebna programska in strojna oprema

Programska oprema:

  • Vivado 2016.2 (ali novejšo različico) najdete tukaj
  • Arduino IDE 1.8.3 (ali novejšo različico) najdete tukaj

Strojna oprema:

  • 1 Basys 3 deska
  • 1 Arduino Uno
  • 2 deske
  • 1 Ultrazvočni merilni senzor HC-SR04
  • 9 Moški žice
  • 1 LED
  • 1 100Ω upor

2. korak: Kode (Vivado)

Kode (Vivado)
Kode (Vivado)

Končni stroj (glej zgornji diagram stanja):

LED je zahteval stroj s končnim stanjem. LED ima samo dva stanja vklopa in izklopa. Samo dva vhoda nadzorujeta stanje LED, števec in senzor. LED -lučka mora biti prižgana le, ko senzor zazna gibanje in ko števec šteje od nič do trideset sekund. V vseh drugih primerih LED ne sveti.

Ime datoteke: LEDDES

Števec:

Števec nam omogoča, da omejimo čas, v katerem lahko senzor gibanja aktivira LED. Njegova vrednost je prikazana na sedem segmentnem prikazovalniku Basys 3 Board prek izvorne kode (»sseg_dec«). Ko je stikalo za ponastavitev spuščeno (vrednost: '0'), se začne števec vsako sekundo povečevati z 0 na 30. Ko doseže 30, zamrzne na tej številki. Ne bo se znova zagnal od 0, dokler stikalo za ponastavitev ne preklopite na '1' in nazaj na '1.' Ko se ponastavitev vrne na "0", se bo števec znova zagnal od 0 do 30. Ta izvedba zahteva tudi uporabo signala ure, njegova koda je navedena spodaj ("clk_div2").

Ime datoteke: FinalCounter

DODATNE DATOTEKE:

Prikaz sedmih segmentov:

Ta koda omogoča, da sedmi segmentni zaslon prikaže decimalne vrednosti. En podmodul deluje kot dekoder med 8-bitnim binarnim vhodom in 4-bitno binarno kodirano decimalko. Drugi deli signal ure, da osveži njegovo vrednost z določeno hitrostjo.

Ime datoteke: sseg_dec

Signal ure:

Ta koda omogoča, da se števec poveča za 1 sekundo. Ta razdeli vhodno taktno frekvenco na počasnejšo frekvenco. Prilagodili smo se tako, da zagotovimo obdobje 1 sekunde s spremembo konstante max_count: integer: = (3000000) "v" konstantno max_count: integer: = (50000000)."

Ime datoteke: clk_div2

Predložene datoteke: sseg_dec, clk_div2 *Te izvorne datoteke je posredoval profesor Bryan Mealy.

3. korak: Razumevanje, kako se združujejo (sheme komponent VHDL)

Razumevanje, kako se združujejo (sheme komponent VHDL)
Razumevanje, kako se združujejo (sheme komponent VHDL)

Glavna datoteka ("MainProjectDES") vsebuje vse poddate, o katerih smo govorili prej. Povezani so na zgornji način. Različne komponente so med seboj povezane z zemljevidi vrat za pošiljanje signala iz enega elementa v drugega.

Kot ste morda opazili, FinalCounter zagotavlja 5-bitni izhod, medtem ko sseg_dec zahteva 8-bitni vhod. Za kompenzacijo nastavimo signal, ki povezuje obe komponenti, tako, da se začne z "000" in doda 5-bitni izhod števca. Tako zagotavlja 8-bitni vhod.

Omejitve:

Za izvajanje teh kod na plošči Basys 3 je bila potrebna datoteka omejitev, ki vsakemu signalu pove, kam naj gredo in kako so deli povezani.

4. korak: Koda (Arduino)

Arduino Uno smo programirali za uporabo senzorja gibanja za zaznavanje gibanja in zagotavljanje izhoda, ki signalizira LED, da zasveti. Poleg tega uporaba senzorja za zaznavanje gibanja zahteva tekalne zanke, ki nenehno iščejo spremembo razdalje. V bistvu potrebuje časovnik, ki deluje hkrati, da odda "visok" signal, da LED zasveti, časovnik pa je treba ponastaviti, ko zazna novo gibanje, kar je glede na obseg znanja skoraj nemogoče izvesti na Vivadu razreda. Poleg tega smo uporabili Arduino, ker ne bi bilo mogoče uporabiti HC-SR04 s ploščo Basys 3, ker plošča napaja le 3,3 V, medtem ko senzor potrebuje napajanje 5 V. Za izvajanje gibanja zaznavanja je dejansko kodiranje v nasprotju s CAD v VHDL.

Za vnos vgrajene impulzne funkcije senzorja smo uporabili čas, ki je pretekel med zvokom, ki ga je prvotno oddajal senzor, in zvokom, ki se odbija ob udarcu v predmet. Nato s hitrostjo zvoka in časovnim intervalom izračunamo razdaljo med objektom in senzorjem. Od tega shranimo trenutno razdaljo in jo spremljamo. Vsakih 150 ms preverimo razdaljo. Knjižnico elapsedmil smo uporabili tudi za zagon notranjega časovnika v arduinu za spremljanje pretečenega časa. Če zaznamo spremembo razdalje, ki ustreza gibanju, se časovnik ponastavi na nič in lučka bo svetila, dokler ne minejo 3 sekunde. Kadarkoli senzor zazna drugo gibanje, se časovnik ponastavi na 0 in signal za LED lučko bo v naslednjih 3 sekundah "visok". Spodaj smo priložili kopijo naše kode Arduino.

5. korak: Kako se naše komponente ujemajo

Kako se naše komponente ujemajo!
Kako se naše komponente ujemajo!
Kako se naše komponente ujemajo!
Kako se naše komponente ujemajo!
Kako se naše komponente ujemajo!
Kako se naše komponente ujemajo!

Kot lahko vidite na "Basys3: Pmod Pin-out Diagram*" in fotografiji Arduino Uno Board, smo označili in označili vrata, ki smo jih uporabljali.

1. Plošča LED in podnožja 3

LED je zaporedno priključen na 100Ω upor. -Bela žica poveže upor z pin PWR plošče Basys 3. -Rumena žica povezuje LED z nožico H1 plošče Basys 3.

2. Senzor gibanja in Arduino Uno

-Oranžna žica povezuje Vcc (moč) senzorja gibanja s pin 5V plošče Arduino Uno. -Bela žica povezuje pin Trig senzorja gibanja s pin 10 Arduino Uno plošče. senzor gibanja na nožico 9 plošče Arduino Uno.-Črna žica poveže nož GND senzorja gibanja s čepom GND plošče Arduino Uno.

[Žice, ki smo jih uporabili, so bile prekratke, da bi dosegle komponente, zato so bile med seboj povezane]

3. Deska Basys 3 in Arduino Uno

Rumena žica povezuje pin A14 plošče Basys 3 s pin 6 plošče Arduino Uno.

*Ta diagram je vzet iz Digilentovega "Referenčnega priročnika za ploščo Basys 3 ™ FPGA", ki ga najdete tukaj.

6. korak: demonstracija

7. korak: Čas je, da ga preizkusite

Čestitamo! Prišli ste do konca našega projekta senzorja gibanja in svetlobno nadzorovanega števca! Najlepša hvala za branje naše objave Instructables. Zdaj je čas, da poskusite sami zgraditi ta projekt. Če natančno sledite vsakemu koraku, bi morali imeti senzor gibanja in števec, ki deluje podobno kot pri nas! Pri gradnji tega projekta vam želimo veliko sreče in upamo, da lahko prispeva k varčevanju z električno energijo in naravnimi viri!

Priporočena: