Sisällysluettelo:

Energiatehokas liikeaktivoidut katuvalot: 8 vaihetta
Energiatehokas liikeaktivoidut katuvalot: 8 vaihetta

Video: Energiatehokas liikeaktivoidut katuvalot: 8 vaihetta

Video: Energiatehokas liikeaktivoidut katuvalot: 8 vaihetta
Video: Täysin uusi Renault Austral - energia tehokas, tilava, edistyksellinen 2024, Marraskuu
Anonim
Energiatehokas liikeaktivoidut katuvalot
Energiatehokas liikeaktivoidut katuvalot

Tämän projektin tavoitteena oli luoda jotain, joka säästäisi yhteisöjen energiaa ja taloudellisia resursseja. Liikkeellä aktivoidut katuvalot tekisivät molemmat nämä asiat. Kaikkialla maassa energiaa tuhlataan katuvaloihin, jotka valaisevat tyhjiä katuja. Katuvalojärjestelmämme varmistaa, että valot syttyvät vain tarvittaessa, mikä säästää yhteisöjä lukemattomia dollareita. Liiketunnistimien avulla järjestelmä sytyttää valot vain, kun autoja on läsnä. Myös jalankulkijoiden turvallisuuden vuoksi otimme käyttöön ohituspainikkeen, joka sytyttää kaikki kadun valot. Seuraavat vaiheet opastavat sinua siinä, miten suunnittelimme ja rakensimme projektimme pienennettyä mallia käyttämällä Vivadoa ja Basys 3 -levyä.

Vaihe 1: Järjestelmän musta laatikko

Järjestelmän musta laatikko
Järjestelmän musta laatikko

Aloitimme tämän projektin piirtämällä yksinkertaisen mustan laatikon kaavion. Mustan laatikon kaavio näyttää yksinkertaisesti tulot ja lähdöt, joita järjestelmämme tarvitsee kaikkien tarvittavien prosessien suorittamiseksi. Yritimme pitää suunnittelumme mahdollisimman yksinkertaisena ja yksinkertaisena. Kolme järjestelmän tuloa sisälsivät liiketunnistinväylän (4 pienennettyä mallia varten), jalankulkijan ohituspainikkeen ja kellotulon. Toisella puolella ainoa ulostulomme on katuvaloja edustava LED -valoväylä. Tässä mallissa käytimme 16 katuvalojen skenaariota yksinkertaisesti siksi, että se on Basys 3 -levyn sisäänrakennettujen LED -lähtöjen enimmäismäärä. Lopuksi tämän kaavion avulla pystyimme luomaan Vivado -projekti-, lähde- ja rajoitustiedostot sopivilla panoksilla ja lähtöillä.

Vaihe 2: Komponentit

Komponentit
Komponentit
Komponentit
Komponentit

Tässä vaiheessa sukellamme syvemmälle tutkimalla mustan laatikon kaavion komponentteja. Ensimmäinen komponentti on VHDL-lähdetiedosto, joka sisältää D-varvastossut. D-varvastossut yksinkertaisesti ottavat kaiken signaalin, joka heille syötetään kellon nousevan reunan antureista, ja lukitsevat tiedot seuraavaan nousevaan reunaan asti. Tämä estää herkkiä liikeantureitamme aiheuttamasta LED -valojen "välkkymistä". Lisäksi laitamme yhden D-kiikun painikkeen tulosignaaliin pitämään LEDit päällä noin 5-7 sekuntia painikkeen painamisen jälkeen. Ajoimme tämän myös kellonjakajan läpi.

entiteetti clk_div2 on Portti (clk: in std_logic; sclk: out std_logic); loppu clk_div2;

arkkitehtuuri my_clk_div ja clk_div2 on

vakio max_count: kokonaisluku: = (300000000); signaali tmp_clk: std_logic: = '0'; aloita my_div: process (clk, tmp_clk) muuttuja div_cnt: integer: = 0; aloita jos (nouseva reuna (clk)) sitten jos (div_cnt = MAX_COUNT) sitten tmp_clk <= ei tmp_clk; div_cnt: = 0; else div_cnt: = div_cnt + 1; loppu Jos; loppu Jos; sclk <= tmp_clk; lopeta prosessi my_div; end my_clk_div;

Viimeinen komponentti tässä kaaviossa on käyttäytymiseen perustuva VHDL -lähdetiedosto, joka sisältää tulosignaalien kokoonpanoon perustuvat lähtöehdot.

Vaihe 3: D Varvastossut

D Varvastossut
D Varvastossut

Tulosignaaleihin kiinnitetyt neljä kiikaria ovat olennaisia järjestelmän toimivuuden kannalta. Kuten aiemmin sanottiin, varpaat liiketunnistimet ja ohituspainike, varvastossut käyttävät salpoja vain tulosignaalin lähettämiseen kellon nousevalle reunalle. Tämä peräkkäinen logiikka tarkoittaa, että katuvalot voivat palaa tietyn ajan sen jälkeen, kun ne on laukaistu nopealla liikkeellä. D-Flip Flopin koodaus on melko yksinkertainen:

aloitusprosessi (CLK) alkaa, jos nouseva reuna (CLK) sitten Q <= D; loppu Jos; lopeta prosessi;

Koko asia voidaan koota yhdeksi if -lauseeksi. Kun meillä oli tämä pala, loimme rakenteellisen VHDL-lähdetiedoston, joka sisälsi kaikki neljä tarvittavaa varvastasi:

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

lopeta käyttäytyminen;

Tämä auttaa pitämään päärakennustiedostomme, jossa kokoamme kaikki järjestelmän osat paljon puhtaammaksi ja järjestetyksi.

Vaihe 4: Ehdolliset

Jotta koodimme pysyisi pienikokoisena ja tehokkaana, kirjoitimme kaikki ehdollisemme yhteen tapauslausumaan. Pienennettyä mallia varten meillä oli 16 mahdollista LED -lähtökonfiguraatiota, koska jokainen liiketunnistin vastaa neljän LED -valon ryhmästä.:

tapaus NMS on, kun "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111"; päätykotelo;

Vaihe 5: Rajoitukset

Jotta tulosi ja lähdöt voidaan ilmaista oikein Vivadon avulla, sinun on otettava käyttöön rajoitustiedosto, jossa ilmoitetaan kaikki käytettävät portit, painikkeet, LEDit ja kellot.

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] tiedot {LED] 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 VAKIO 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] iOS_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] tiedot { 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]}]

Vaihe 6: Päälähdetiedosto

Tässä päätiedostossa kokoamme kaikki aiemmin mainitut komponenttilähdetiedostot. Tämä tiedosto toimii rakenteellisena koodina, joka yhdistää eri komponentit.

entiteetti Master_Final_Project on portti (BTN: STD_LOGIC; CLK: STD_LOGIC; MS: STD_LOGIC_VECTOR (3 - 0); LED: out STD_LOGIC_VECTOR (15 downto 0)); end Master_Final_Project;

arkkitehtuuri Master_Final_Projectin käyttäytyminen on

komponentin final_project on portti (--CLK: STD_LOGIC; NMS: STD_LOGIC_VECTOR (3-0); BTN: STD_LOGIC; --sw: STD_LOGIC_Vector (1 downto 0); LED: out STD_LOGIC_VECTOR (15 downto 0)); päätyosa;

komponentti Final_DFF on

Portti (CLK: STD_LOGIC; D: STD_LOGIC_Vector (3 - 0); Q: out STD_LOGIC_Vector (3 - 0)); päätyosa;

signaali DFF02proj30: STD_LOGIC;

signaali DFF12proj74: STD_LOGIC; signaali DFF22proj118: STD_LOGIC; signaali DFF32proj1512: STD_LOGIC;

alkaa

DFF0: Final_DFF -porttikartta (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 -porttikartta (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); lopeta käyttäytyminen;

Vaihe 7: Kokoonpano

Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano

Tämän projektin laitteistokokoonpano on minimaalinen. Ainoat vaadittavat osat ovat seuraavat:

1. Basys 3 -levy (1)

2. Halvat liikeanturit, jotka löytyvät Amazonista täältä. (4)

3. Johto uros-naaras (4)

Kokoonpano:

1. Liitä 4 urosjohtoa PMod-otsikon JB-portteihin 1-4 (katso kuva).

2. Liitä naaraspäät jokaisen liikeanturin ulostulonappiin.

Vaihe 8: Ohjelman lataaminen

Nyt olemme valmiita lataamaan VHDL -päälähdetiedoston Basys 3 -levylle. Muista suorittaa synteesi, toteutus ja luoda bittivirran tarkistus mahdollisten virheiden varalta. Jos kaikki onnistuvat, avaa laitteistonhallinta ja ohjelmoi Basys 3 -laite. Projektisi on nyt valmis!

Suositeltava: