Tartalomjegyzék:

Mozgásérzékelő/számlálóvezérelt fények: 7 lépés
Mozgásérzékelő/számlálóvezérelt fények: 7 lépés

Videó: Mozgásérzékelő/számlálóvezérelt fények: 7 lépés

Videó: Mozgásérzékelő/számlálóvezérelt fények: 7 lépés
Videó: uc/IoT Kurzus 6 : ADC Analóg-Digitális Átalakítás 1/2 rész 2024, November
Anonim
Mozgásérzékelő/számlálóvezérelt fények
Mozgásérzékelő/számlálóvezérelt fények

Ez a projekt a Digital Design tanfolyam utolsó projektjeként jött létre a Cal Poly -ban, San Luis Obispo -ban (CPE 133).

Miért tesszük ezt? Szeretnénk segíteni a világ természeti erőforrásainak megőrzésében. Projektünk az energiatakarékosságra összpontosít. Több villamos energia megtakarításával meg tudjuk őrizni a villamos energia előállításához használt természeti erőforrásokat. Ahogy elkezdjük 2018 -at, a természeti erőforrásokat hihetetlen mértékben emésztik fel. Szeretnénk tudatában lenni környezetünkre gyakorolt hatásunknak, és részt venni a természeti erőforrások megőrzésében. Az elektronika többféle módon is megvalósítható az energiatakarékosság érdekében, ami a környezetet és a gazdasági állapotunkat is segíti.*Ez a modell a rendelkezésünkre álló alkatrészek felhasználásával készült.

Mi volt az inspirációnk? Az emberek gyakran elfelejtik kikapcsolni az ünnepi fényeket, és energiát pazaroltak azzal, hogy éjszakára bekapcsolva hagyták őket. Valójában ez a projekt energiát takarít meg, mert az „ünnepi fények” csak akkor világítanak, ha emberek vannak a közelben, és így energiát takarítanak meg, ha senki nincs a közelben. Ezenkívül időzítőt akartunk tervezni, hogy a lámpák adott idő után teljesen kialudjanak, hogy ne kapcsoljanak be például hajnali 3 órakor észlelt mozgás miatt.

Hogyan használhatná ezt a kialakítást? Ez a kialakítás megvalósítható mindenféle lámpához, legyen az dekoratív, praktikus vagy mindkettő. Ha azt szeretné, hogy például az asztali lámpája egyszerre csak 6 órán keresztül működjön. A számlálót 21 600 másodpercre kell állítani (6 óra x 3, 600 másodperc/óra). Amíg a számláló aktívan növekszik, a mozgásérzékelő irányítja a fényt. Így minden alkalommal, amikor az idő alatt kikapcsol, csak le kell lengetnie a kezét a mozgásérzékelő előtt, és újra bekapcsol. Ha elalszik az asztalánál, és 7 órával később felébred, a mozgása nem kapcsolja be.

1. lépés: Szükséges szoftver és hardver

Szükséges hardver és szoftver
Szükséges hardver és szoftver
Szükséges hardver és szoftver
Szükséges hardver és szoftver
Szükséges hardver és szoftver
Szükséges hardver és szoftver
Szükséges hardver és szoftver
Szükséges hardver és szoftver

Szoftver:

  • A Vivado 2016.2 (vagy újabb verzió) itt található
  • Az Arduino IDE 1.8.3 (vagy újabb verzió) itt található

Hardver:

  • 1 Basys 3 tábla
  • 1 Arduino Uno
  • 2 Kenyeretábla
  • 1 HC-SR04 ultrahangos hatótávolság érzékelő
  • 9 Férfi-férfi vezeték
  • 1 LED
  • 1 100Ω ellenállás

2. lépés: Kódok (Vivado)

Kódok (Vivado)
Kódok (Vivado)

Véges állapotú gép (lásd a fenti állapotdiagramot):

A LED véges állapotú gépet igényelt. A LED -eknek csak két be- és kikapcsolási állapota van. Csak két bemenet vezérli a LED állapotát, a számláló és az érzékelő. A LED csak akkor világíthat, ha az érzékelő mozgást észlel, és amikor a számláló nullától harminc másodpercig számol. Minden más esetben a LED kialszik.

Fájl neve: LEDDES

Számláló:

A számláló lehetővé teszi, hogy korlátozzuk azt az időt, amely alatt a mozgásérzékelő aktiválni tudja a LED -et. Értéke a Basys 3 Board hét szegmenses kijelzőjén jelenik meg egy forráskódon („sseg_dec”) keresztül. Amikor a Reset kapcsoló le van állítva (érték: '0'), a számláló minden másodpercben növekszik 0 -ról 30 -ra. Amikor eléri a 30 -at, lefagy ezen a számon. Nem indul újra 0 -ról, amíg a Reset kapcsolót 1 -re és 1 -re nem állítja vissza. Amikor a Reset visszaáll a „0” -ra, a számláló 0 -ról 30 -ra újraindul. Ez a megvalósítás egy órajel használatát is igényli, kódját az alábbiakban adjuk meg ("clk_div2").

Fájl neve: FinalCounter

SZOLGÁLTATOTT FÁJLOK:

Hét szegmenses kijelző:

Ez a kód lehetővé teszi a hét szegmenses kijelzőn a tizedes értékek megjelenítését. Az egyik almodul dekódolóként működik egy 8 bites bináris bemenet és egy 4 bites bináris kódolású decimális között. A másik felosztja az órajelet, hogy bizonyos sebességgel frissítse az értékét.

Fájl neve: sseg_dec

Órajel:

Ez a kód lehetővé teszi, hogy a számláló 1 másodperces lépésekben növekedjen. A bemeneti órajel frekvenciáját lassabb frekvenciára osztja fel. Alkalmazkodtunk ahhoz, hogy 1 másodperces időszakot biztosítsunk, ha a max_count: integer: = (3000000)”konstansot„ állandó max_count: integer: = (50000000)”értékre változtatjuk.

Fájlnév: clk_div2

Feltett fájlok: sseg_dec, clk_div2 *Ezeket a forrásfájlokat Bryan Mealy professzor biztosította.

3. lépés: Az összetartozás megértése (VHDL -komponensek vázlatai)

Az összetartozás megértése (VHDL -komponensek vázlata)
Az összetartozás megértése (VHDL -komponensek vázlata)

A fő fájl ("MainProjectDES") tartalmazza az összes korábban tárgyalt alfájlt. A fenti módon kapcsolódnak egymáshoz. A különböző komponensek porttérképek segítségével kapcsolódnak egymáshoz, hogy jelet küldjenek az egyik elemről a másikra.

Amint észrevette, a FinalCounter 5 bites kimenetet biztosít, míg az sseg_dec 8 bites bemenetet igényel. Ennek kompenzálására a két komponenst összekötő jelet úgy állítottuk be, hogy "000" kezdődjön, és hozzáadjuk a számláló 5 bites kimenetét. Így 8 bites bemenetet biztosít.

Korlátok:

Ahhoz, hogy ezeket a kódokat fussuk a Basys 3 táblán, kényszerfájlra volt szükség, amely minden jelre megmondja, merre kell menni, és hogyan kell csatlakoztatni az alkatrészeket.

4. lépés: Kód (Arduino)

Beprogramoztuk az Arduino Uno -t, hogy a mozgásérzékelő segítségével érzékelje a mozgást, és olyan kimenetet biztosítson, amely jelzi a LED világítását. Ezenkívül az érzékelő mozgásérzékeléséhez futó hurkok szükségesek, amelyek folyamatosan keresik a távolság változását. Lényegében egy időzítőre van szükség, amely egyidejűleg fut, hogy „magas” jelet adjon ki, hogy a LED világíthasson, míg az időzítőt újra kell állítani, ha új mozgást észlel, amit a tudáskör alapján szinte lehetetlen megvalósítani a Vivado -n osztályból. Ezenkívül Arduino-t használtunk, mert nem lenne kivitelezhető a HC-SR04 használata a Basys 3 kártyával, mivel az alaplap csak 3,3 V-ot táplál, míg az érzékelő 5 V-os tápegységet igényel. Az észlelő mozgás megvalósításához ez a tényleges kódolás, szemben a CAD -vel a VHDL -ben.

Az érzékelő beépített impulzusos funkcióját használtuk az érzékelő által eredetileg kibocsátott hang és az objektum ütése közben visszapattanó hang közötti idő lekérésére. Ezután a hangsebességet és az időintervallumot használjuk a tárgy és az érzékelő közötti távolság kiszámításához. Ebből tároljuk az aktuális távolságot, és nyomon követjük. 150 ms -onként ellenőrizzük a távolságot. Az elapsedmil könyvtárat is használtuk egy belső időzítő futtatására az arduino -n belül, hogy nyomon kövessük az eltelt időt. Ha mozgásnak megfelelő távolságváltozást észlelünk, az időzítő nullázódik, és 3 másodpercig világít. Amikor az érzékelő újabb mozgást észlel, az időzítő 0 -ra áll vissza, és a LED jelzőfénye "magas" lesz a következő 3 másodpercben. Az alábbiakban csatoltuk az Arduino kód másolatát.

5. lépés: Hogyan illeszkednek össze összetevőink

Hogyan illeszkednek össze alkatrészeink!
Hogyan illeszkednek össze alkatrészeink!
Hogyan illeszkednek össze alkatrészeink!
Hogyan illeszkednek össze alkatrészeink!
Hogyan illeszkednek össze alkatrészeink!
Hogyan illeszkednek össze alkatrészeink!

Amint a "Basys3: Pmod Pin-out Diagram*" és az Arduino Uno Board fotóján látható, kiemeltük és felcímkéztük a használt portokat.

1. A LED és a Basys 3 tábla

A LED sorba van kötve a 100Ω ellenállással. -A fehér vezeték összeköti az ellenállást a Basys 3 tábla PWR csapjával. -A sárga vezeték a LED -et a Basys 3 kártya H1 -es csatlakozójához köti.

2. A mozgásérzékelő és az Arduino Uno

-A narancssárga vezeték összeköti a mozgásérzékelő Vcc-jét (teljesítményét) az Arduino Uno kártya 5V-os érintkezőjével. a mozgásérzékelőt az Arduino Uno kártya 9. érintkezőjéhez.

[Az általunk használt vezetékek túl rövidek voltak az alkatrészek eléréséhez, ezért össze voltak kötve]

3. A Basys 3 Board és az Arduino Uno

A sárga huzal összeköti a Basys 3 tábla A14 -es érintkezőjét az Arduino Uno kártya 6 -os érintkezőjével.

*Ez az ábra a Digilent "Basys 3 ™ FPGA Board Reference Manual" -ból származik, amely itt található.

6. lépés: demonstráció

7. lépés: Ideje kipróbálni

Gratulálunk! Elértük mozgásérzékelő és számlálóvezérelt fényprojektünk végét! Köszönjük, hogy elolvasta az Instructables bejegyzésünket. Itt az ideje, hogy megpróbálja saját maga felépíteni ezt a projektet. Ha minden lépést gondosan követ, akkor olyan mozgásérzékelővel és számlálóval vezérelt lámpával kell rendelkeznie, amely hasonló a miénkhez! Sok sikert kívánunk a projekt megvalósításához, és reméljük, hogy ez hozzájárulhat a villamos energia és a természeti erőforrások megtakarításához!

Ajánlott: