Sisukord:

Energiatõhusa liikumisega aktiveeritud tänavavalgustid: 8 sammu
Energiatõhusa liikumisega aktiveeritud tänavavalgustid: 8 sammu

Video: Energiatõhusa liikumisega aktiveeritud tänavavalgustid: 8 sammu

Video: Energiatõhusa liikumisega aktiveeritud tänavavalgustid: 8 sammu
Video: Exposing Digital Photography by Dan Armendariz 2024, Juuli
Anonim
Energiatõhusa liikumisega aktiveeritud tänavavalgustid
Energiatõhusa liikumisega aktiveeritud tänavavalgustid

Meie eesmärk selle projektiga oli luua midagi, mis säästaks kogukondade energiat ja rahalisi ressursse. Liikumisega aktiveeritud tänavavalgustid teeksid mõlemat asja. Kogu riigis raisatakse energiat tühjade tänavate valgustamiseks mõeldud tänavavalgustitele. Meie tänavavalgustussüsteem tagab, et tuled põlevad ainult vajadusel, säästes kogukondi lugematuid dollareid. Liikumisandureid kasutades lülitab süsteem tuled sisse ainult siis, kui autod on kohal. Ka jalakäijate turvalisuse huvides rakendasime tühistamisnupu, mis lülitab tänaval sisse kõik tuled. Järgmised sammud tutvustavad teile, kuidas me kavandasime ja ehitasime oma vähendatud projekti mudeli, kasutades Vivadot ja Basys 3 tahvlit.

Samm: süsteemi must kast

Süsteemi must kast
Süsteemi must kast

Alustasime seda projekti lihtsa musta kasti skeemi joonistamisega. Musta kasti diagramm näitab lihtsalt sisendeid ja väljundeid, mida meie süsteem vajab kõigi vajalike protsesside lõpuleviimiseks. Püüdsime hoida oma disaini võimalikult lihtsana ja elementaarsena. Meie kolm süsteemi sisendit sisaldasid liikumisandurite bussi (4 meie vähendatud mudeli jaoks), jalakäijate tühistamisnuppu ja kella sisendit. Teisel pool on meie üks väljund LED -tulede buss, mis esindab meie tänavavalgustit. Selle mudeli puhul kasutasime 16 tänavavalgustuse stsenaariumi lihtsalt sellepärast, et see on Basys 3 tahvli sisseehitatud LED -väljundite maksimaalne arv. Lõpuks, kasutades seda skeemi, suutsime luua oma Vivado projekti-, lähte- ja piirangute failid sobivate sisendite ja väljunditega.

2. samm: komponendid

Komponendid
Komponendid
Komponendid
Komponendid

Selles etapis sukeldume sügavamale, uurides meie musta kasti diagrammi komponente. Meie esimene komponent on VHDL-i lähtefail, mis sisaldab D-plätusid. D-plätud võtavad lihtsalt kella tõusva serva anduritelt neile sisestatud signaali ja salvestab need andmed järgmise tõusva servani. See hoiab ära meie tundlikud liikumisandurid, et väljund -LED -id ei hakkaks vilkuma. Samuti panime nupu sisendsignaalile ühe D-klappi, et hoida LED-id põlemas umbes 5-7 sekundit pärast nupu vajutamist. Ajasime selle ka läbi kellajaguri.

olem clk_div2 on port (clk: in std_logic; sclk: out std_logic); lõpp clk_div2;

Arhitektuur my_clk_div ja clk_div2 on

konstant max_count: täisarv: = (300000000); signaal tmp_clk: std_logic: = '0'; start my_div: process (clk, tmp_clk) muutuja div_cnt: täisarv: = 0; alusta kui (tõusev serv (clk)), siis kui (div_cnt = MAX_COUNT), siis tmp_clk <= mitte tmp_clk; div_cnt: = 0; muidu div_cnt: = div_cnt + 1; lõpetada, kui; lõpetada, kui; sclk <= tmp_clk; lõpeta protsess my_div; lõpp my_clk_div;

Selle diagrammi viimane komponent on käitumuslik VHDL -lähtefail, mis sisaldab väljundite tingimuslikke tingimusi sisendsignaalide konfiguratsiooni alusel.

3. samm: D plätud

D Varrukad
D Varrukad

Sisendsignaalide külge kinnitatud neli plätud on meie süsteemi toimimiseks hädavajalikud. Nagu varem öeldud, kasutavad plätud tundlike liikumisandurite ja alistusnupu abil riive, et väljastada meie sisendsignaal ainult kella tõusvas servas. See järjestikune loogika tähendab, et meie tänavavalgustid võivad pärast kiiret liikumist käivitada teatud aja jooksul põlema. D-Flip Flopi kodeerimine on üsna lihtne:

algusprotsess (CLK) algab, kui tõusev serv (CLK), siis Q <= D; lõpetada, kui; protsessi lõpetamine;

Kogu asja saab koondada üheks avalduseks. Kui meil oli see tükk, lõime struktuurse VHDL-lähtefaili, mis sisaldas kõiki nelja meie vajalikku plätud:

alustada DFF0: DFF pordikaart (CLK => CLK, D => D (0), Q => Q (0)); DFF1: DFF -i pordikaart (CLK => CLK, D => D (1), Q => Q (1)); DFF2: DFF pordikaart (CLK => CLK, D => D (2), Q => Q (2)); DFF3: DFF -i pordikaart (CLK => CLK, D => D (3), Q => Q (3));

lõpp Käitumine;

See aitab hoida meie põhistruktuurifaili, kus koondame kõik süsteemi komponendid palju puhtamaks ja organiseeritumaks.

Samm: tingimuslikud tingimused

Selleks, et meie kood oleks kompaktne ja efektiivne, kirjutasime kõik meie tingimused ühte juhtumilausesse. Meie vähendatud mudeli jaoks oli meil 16 võimalikku LED -väljundi konfiguratsiooni, kuna iga liikumisandur vastutab 4 LED -i rühma eest.:

juhtum NMS on, kui "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111"; lõppjuhtum;

5. samm: piirangud

Sisendi ja väljundite õigeks märkimiseks Vivado abil peate rakendama piirangute faili, milles on märgitud kõik kasutatavad pordid, nupud, LED -id ja kellad.

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 [saada] 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_porty_PACK] 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. toiming: peamine lähtefail

Sellesse põhifaili koondame kõik eelnevalt mainitud komponentide lähtefailid. See fail toimib struktuurikoodina, mis koondab erinevad komponendid.

üksus Master_Final_Project on port (BTN: STD_LOGIC; CLK: STD_LOGIC; MS: STD_LOGIC_VECTOR (3 kuni 0); LED: väljas STD_LOGIC_VECTOR (15 kuni 0)); lõpp Master_Final_Project;

arhitektuur Master_Final_Project käitumine on

komponendi lõplik_projekt on port (--CLK: STD_LOGIC; NMS: STD_LOGIC_VECTOR (3 kuni 0); BTN: STD_LOGIC; --sw: STD_LOGIC_Vector (1 kuni 0); LED: väljas STD_LOGIC_VECTOR (15 kuni 0)); lõppkomponent;

komponent Final_DFF on

Port (CLK: STD_LOGIC; D: STD_LOGIC_Vector (3 kuni 0); Q: out STD_LOGIC_Vector (3 kuni 0)); lõppkomponent;

signaal DFF02proj30: STD_LOGIC;

signaal DFF12proj74: STD_LOGIC; signaal DFF22proj118: STD_LOGIC; signaal DFF32proj1512: STD_LOGIC;

alustada

DFF0: Final_DFF pordikaart (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 pordikaart (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); lõpp Käitumine;

7. samm: kokkupanek

Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek

Selle projekti riistvara kokkupanek on minimaalne. Ainsad nõutavad osad on järgmised:

1. Basys 3 pardal (1)

2. Odavad liikumisandurid, mida leiate siit amazonist. (4)

3. Mehe-naise juhtmed (4)

Kokkupanek:

1. Ühendage 4 isast juhet PMod päise JB portidesse 1-4 (vt joonis).

2. Ühendage naisotsad iga liikumisanduri väljundpoldiga.

Samm: programmi laadimine

Nüüd oleme valmis laadima VHDL -i peamise lähtefaili Basys 3 tahvlile. Käivitage kindlasti süntees, juurutamine ja genereerige bitivoo kontroll võimalike vigade osas. Kui kõik töötab edukalt, avage riistvarahaldur ja programmeerige seade Basys 3. Teie projekt on nüüd lõpule jõudnud!

Soovitan: