Tartalomjegyzék:

Energiahatékony mozgással aktivált utcai lámpák: 8 lépés
Energiahatékony mozgással aktivált utcai lámpák: 8 lépés

Videó: Energiahatékony mozgással aktivált utcai lámpák: 8 lépés

Videó: Energiahatékony mozgással aktivált utcai lámpák: 8 lépés
Videó: Reolink RLC-520A-5MP kamera 2024, November
Anonim
Energiahatékony mozgással aktivált utcai lámpák
Energiahatékony mozgással aktivált utcai lámpák

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

Rendszer fekete doboz
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

Alkatrészek
Alkatrészek
Alkatrészek
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

D Papucsok
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

Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelé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: