Tartalomjegyzék:
- 1. lépés: Rendszer fekete doboz
- 2. lépés: Alkatrészek
- 3. lépés: D Papucsok
- 4. lépés: Feltételes
- 5. lépés: Korlátok
- 6. lépés: Fő forrásfájl
- 7. lépés: Összeszerelés
- 8. lépés: A program betöltése
Videó: Energiahatékony mozgással aktivált utcai lámpák: 8 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Célunk ezzel a projekttel az volt, hogy létrehozzunk valamit, ami megtakarítja a közösségek energia- és pénzügyi erőforrásait. A mozgással aktivált utcai lámpák mindkettőt elvégeznék. Országszerte pazarolják az energiát az utcai lámpákra, amelyek üres utcákat világítanak. Utcai lámparendszerünk biztosítja, hogy a lámpák csak szükség esetén égjenek, és számtalan dollárt takarítanak meg a közösségeknek. A mozgásérzékelők segítségével a rendszer csak akkor kapcsolja be a lámpákat, ha autók vannak jelen. A gyalogosok biztonsága érdekében megvalósítottunk egy felülbíráló gombot, amely minden utcai lámpát felkapcsol. A következő lépések bemutatják, hogyan terveztük és építettük le a projekt kicsinyített modelljét Vivado és egy Basys 3 tábla segítségével.
1. lépés: Rendszer fekete doboz
Ezt a projektet egy egyszerű fekete doboz diagram rajzolásával kezdtük. A fekete doboz diagram egyszerűen mutatja azokat a bemeneteket és kimeneteket, amelyekre a rendszerünknek szüksége van az összes szükséges folyamat elvégzéséhez. Igyekeztünk a lehető legegyszerűbb és legalapvetőbb kialakítást biztosítani. Három rendszerbemenetünk tartalmazott egy busz mozgásérzékelőt (4 a mi kicsinyített modellünkhöz), egy gyalogos felülíró gombot és egy óra bemenetet. A másik oldalon egyetlen kimenetünk egy LED -es busz, amely az utcai lámpáinkat képviseli. Ehhez a modellhez 16 utcai lámpa forgatókönyvét használtuk, egyszerűen azért, mert ez a beépített LED -kimenetek maximális száma a Basys 3 táblán. Végül, ennek a diagramnak a használatával létrehozhattuk a Vivado projekt-, forrás- és kényszerfájljainkat a megfelelő bemenetekkel és kimenetekkel.
2. lépés: Alkatrészek
Ebben a lépésben mélyebbre merülünk, megvizsgálva a fekete doboz diagramját alkotó összetevőket. Első komponensünk egy VHDL forrásfájl, amely D flip-flopokat tartalmaz. A D papucsok egyszerűen felveszik az óra emelkedő szélén lévő érzékelőktől a bemenő jeleket, és rögzítik ezeket az adatokat a következő emelkedő élig. Ez megakadályozza érzékeny mozgásérzékelőinket, hogy a kimenő LED -ek "villogjanak". Ezenkívül egyetlen D flip-flop-ot helyezünk a gomb bemeneti jelére, hogy a LED-ek körülbelül 5-7 másodpercig égjenek a gomb megnyomása után. Ezt egy óraosztón is átfutottuk.
entitás clk_div2 a Port (clk: az std_logic -ban; sclk: out std_logic); vége clk_div2;
A clk_div2 architektúrája a my_clk_div
állandó max_count: integer: = (300000000); jel tmp_clk: std_logic: = '0'; start my_div: process (clk, tmp_clk) változó div_cnt: integer: = 0; start if (emelkedő szél (clk)), majd ha (div_cnt = MAX_COUNT), akkor tmp_clk <= nem tmp_clk; div_cnt: = 0; else div_cnt: = div_cnt + 1; fejezze be, ha; fejezze be, ha; sclk <= tmp_clk; folyamat befejezése my_div; end my_clk_div;
Az utolsó komponensünk ezen a diagramon egy viselkedési VHDL forrásfájl, amely a bemeneti jelek konfigurációja alapján a kimenetekhez szükséges feltételeket tartalmazza.
3. lépés: D Papucsok
A bemeneti jelekhez rögzített négy papucs elengedhetetlen a rendszer működéséhez. Amint azt korábban említettük, az érzékeny mozgásérzékelők és a felülbíráló gomb segítségével a papucsok reteszekkel csak bemeneti jelünket adják ki az óra emelkedő szélén. Ez a szekvenciális logika azt jelenti, hogy utcai lámpáink egy meghatározott ideig felkapcsolva maradhatnak, miután egy gyors mozdulat kiváltotta őket. A D-Flip Flop kódolása meglehetősen egyszerű:
startprocess (CLK) kezdődik, ha emelkedő_szél (CLK), akkor Q <= D; fejezze be, ha; folyamat befejezése;
Az egészet egyetlen if állítássá lehet összeállítani. Miután megvolt ez a darab, létrehoztunk egy strukturális VHDL forrásfájlt, amely tartalmazza mind a négy szükséges flip-flopunkat:
start DFF0: DFF port map (CLK => CLK, D => D (0), Q => Q (0)); DFF1: DFF porttérkép (CLK => CLK, D => D (1), Q => Q (1)); DFF2: DFF porttérkép (CLK => CLK, D => D (2), Q => Q (2)); DFF3: DFF porttérkép (CLK => CLK, D => D (3), Q => Q (3));
vége Viselkedés;
Ez segít megőrizni a fő szerkezeti fájlt, ahol sokkal tisztábban és rendszerezettebben összehozzuk a rendszer összes összetevőjét.
4. lépés: Feltételes
Annak érdekében, hogy kódunk kompakt és hatékony legyen, minden feltételt egyetlen esetbe írtunk. A kicsinyített modell esetében 16 lehetséges LED kimeneti konfigurációnk volt, mivel minden mozgásérzékelő 4 LED -es csoportért felelős.:
eset NMS az, amikor "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111"; vég tok;
5. lépés: Korlátok
Annak érdekében, hogy a bemeneteket és kimeneteket megfelelően jelezze a Vivado használatával, kényszerfájlt kell végrehajtania, amely tartalmazza az összes használt portot, gombot, LED -et és órát.
set_property PACKAGE_PIN W5 [get_ports CLK] set_property IOSTANDARD LVCMOS33 [get_ports CLK]
set_property PACKAGE_PIN U16 [get_ports {LED [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [0]}] set_property PACKAGE_PIN E19 [get_ports {LED [1]}] set_property IOSTANDARD LVCMOS33 [get_operty] U19 [get_ports {LED [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [2]}] set_property PACKAGE_PIN V19 [get_ports {LED [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [3]}] set_property WACK get_ports {LED [4]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [4]}] set_property PACKAGE_PIN U15 [get_ports {LED [5]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [5]}] set_property U14 [get_ports] PACKAGE LED [6]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [6]}] set_property PACKAGE_PIN V14 [get_ports {LED [7]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [7]}] set_property PACKAGE_PIN V13 [8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [8]}] set_property PACKAGE_PIN V3 [get_ports {LED [9]}] set_property IO STANDARD LVCMOS33 [get_ports {LED [9]}] set_property PACKAGE_PIN W3 [get_ports {LED [10]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [10]}] set_property PACKAGE_PIN U3 [get_ports {LED [LV] COS_OST] [get_ports {LED [11]}] set_property PACKAGE_PIN P3 [get_ports {LED [12]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [12]}] set_property PACKAGE_PIN N3 [get_ports {LED [13]}] set_propertyMOS33 [get_ports] {LED [13]}] set_property PACKAGE_PIN P1 [get_ports {LED [14]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [14]}] set_property PACKAGE_PIN L1 [get_ports {LED [15]}] set_property IOSTANDARD LVCMOS33 [15]}]
set_property PACKAGE_PIN U18 [get_ports BTN] set_property IOSTANDARD LVCMOS33 [get_ports BTN]
set_property PACKAGE_PIN A14 [get_ports {MS [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [0]}] set_property PACKAGE_PIN A16 [get_ports {MS [1]}] set_property IOSTANDARD LVCMOS33 [get_operty_P_SET] B15 [get_ports {MS [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [2]}] set_property PACKAGE_PIN B16 [get_ports {MS [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [3]}]
6. lépés: Fő forrásfájl
Ebben a fő fájlban összegyűjtjük az összes korábban említett összetevő forrásfájlt. Ez a fájl szerkezeti kódként működik, amely összehozza a különböző összetevőket.
entitás Master_Final_Project a Port (BTN: STD_LOGIC -ban; CLK: STD_LOGIC -ban; MS: STD_LOGIC_VECTOR -ban (3 -tól 0 -ig); LED: ki STD_LOGIC_VECTOR (15 -től 0 -ig)); end Master_Final_Project;
architektúra A Master_Final_Project viselkedése is
komponens végső_projektje Port (--CLK: az STD_LOGIC-ban; NMS: az STD_LOGIC_VECTOR-ban (3-tól 0-ig); BTN: az STD_LOGIC-ban; --sw: az STD_LOGIC_Vector-ban (1-től 0-ig); LED: ki STD_LOGIC_VECTOR (15-től 0-ig)); végkomponens;
komponens Final_DFF
Port (CLK: STD_LOGIC; D: STD_LOGIC_Vector (3 -tól 0 -ig); Q: out STD_LOGIC_Vector (3 -tól 0 -ig)); végkomponens;
jel DFF02proj30: STD_LOGIC;
jel DFF12proj74: STD_LOGIC; jel DFF22proj118: STD_LOGIC; jel DFF32proj1512: STD_LOGIC;
kezdődik
DFF0: Final_DFF porttérkép (CLK => CLK, D (0) => MS (0), D (1) => MS (1), D (2) => MS (2), D (3) => MS (3), Q (0) => DFF02proj30, Q (1) => DFF12proj74, Q (2) => DFF22proj118, Q (3) => DFF32proj1512); Proj0: final_project port map (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); vége Viselkedés;
7. lépés: Összeszerelés
A hardver összeszerelése ehhez a projekthez minimális. Az egyetlen szükséges darab a következő:
1. Basys 3 tábla (1)
2. Olcsó mozgásérzékelők, amelyek itt találhatók az amazonon. (4)
3. Férfi-nő vezetékek (4)
Összeszerelés:
1. Csatlakoztasson 4 dugóvezetéket a PMod fejléc JB 1-4 portjaihoz (lásd az ábrát).
2. Csatlakoztassa a hüvelyes végeket minden mozgásérzékelő kimeneti csapjához.
8. lépés: A program betöltése
Most készen állunk a VHDL fő forrásfájl betöltésére a Basys 3 táblára. Feltétlenül futtassa a szintézist, a megvalósítást, és generálja a bitfolyam -ellenőrzést az esetleges hibákra. Ha minden sikeresen fut, nyissa meg a hardverkezelőt, és programozza be a Basys 3 eszközt. A projekt most befejeződött!
Ajánlott:
Mozgással aktivált Cosplay szárnyak a Circuit Playground Express használatával - 1. rész: 7 lépés (képekkel)
Motion Activated Cosplay Wings Circuit Playground Express használatával - 1. rész: Ez egy része a két részből álló projektnek, amelyben megmutatom nektek az automatikus tündér szárnyak készítésének folyamatát. A projekt első része a a szárnyak mechanikáját, a második rész pedig viselhetővé teszi, és hozzáadja a szárnyakat
Mozgással aktivált lámpa kapcsoló: 3 lépés
Mozgással aktivált lámpa kapcsoló: Amikor elhagyjuk az íróasztalt vagy a szobát, legtöbbször elfelejtjük lekapcsolni a villanyt. Ez áramkimaradást és a villanyszámla növekedését okozza. De mi van, ha a lámpák automatikusan kikapcsolnak, miután elhagyja a szobát. Igen benne
Akkumulátorral működő, mozgással aktivált LED-lámpa: 4 lépés
Akkumulátorral működtetett, mozgással aktivált LED-lámpa: Ha olyan lámpát szeretne elhelyezni, ahol nem lehet bekötni, akkor erre lehet szüksége
Mozgással aktivált fénykapcsoló fényérzékelővel: 5 lépés
Mozgással aktivált fénykapcsoló fényérzékelővel: A mozgással aktivált fénykapcsoló számos alkalmazást kínál otthon és irodában. Ennek azonban további előnye van a fényérzékelő beépítésével, így ez a fény csak éjszaka kapcsolható be
Mozgással aktivált lépcsők: 6 lépés (képekkel)
Mozgás aktivált lépcső: Igen, tudom, mire gondol, ez kissé túlzásnak tűnik, de először is soha nem kell aggódnia a lábujja megtörése miatt, másodszor pedig annyira fel -alá jár a lépcsőn. szórakoztató, azon kaptam magam, hogy felmegyek az emeletre, és nincs reas