Sadržaj:

Energetski efikasna ulična svjetla aktivirana pokretom: 8 koraka
Energetski efikasna ulična svjetla aktivirana pokretom: 8 koraka

Video: Energetski efikasna ulična svjetla aktivirana pokretom: 8 koraka

Video: Energetski efikasna ulična svjetla aktivirana pokretom: 8 koraka
Video: REVAN - THE COMPLETE STORY 2024, Juli
Anonim
Energetski efikasna ulična svjetla aktivirana pokretom
Energetski efikasna ulična svjetla aktivirana pokretom

Naš cilj s ovim projektom bio je stvoriti nešto što će zajednicama uštedjeti energiju i financijske resurse. Ulična svjetla koja se aktiviraju pokretom učinila bi obje ove stvari. Širom zemlje energija se troši na ulična svjetla koja osvjetljavaju prazne ulice. Naš sistem uličnog svjetla osigurava da se svjetla pale samo kada je to potrebno, čime se zajednicama štedi bezbroj dolara. Pomoću senzora pokreta sistem uključuje svjetla samo kada su prisutni automobili. Također, radi sigurnosti pješaka, implementirali smo dugme za poništavanje koje uključuje sva svjetla na ulici. Sljedeći koraci će vas provesti kroz to kako smo osmislili i izgradili naš smanjeni model projekta koristeći Vivado i Basys 3 ploču.

Korak 1: Sistemska crna kutija

Sistemska crna kutija
Sistemska crna kutija

Ovaj projekt započeli smo crtanjem jednostavnog dijagrama crne kutije. Dijagram u crnoj kutiji jednostavno prikazuje ulaze i izlaze koji su potrebni našem sistemu da bi dovršio sve potrebne procese. Trudili smo se da naš dizajn bude što jednostavniji i osnovni. Naša tri sistemska ulaza uključivala su sabirnicu senzora pokreta (4 za naš smanjeni model), dugme za premošćavanje pješaka i ulaz za sat. S druge strane, naš jedini izlaz je sabirnica LED svjetala koja predstavljaju naša ulična svjetla. Za ovaj model koristili smo scenarij od 16 uličnih svjetiljki jednostavno zato što je to maksimalan broj ugrađenih LED izlaza na Basys 3 ploči. Konačno, pomoću ovog dijagrama uspjeli smo stvoriti naš Vivado projekt, izvor i datoteke ograničenja s odgovarajućim ulazima i izlazima.

Korak 2: Komponente

Komponente
Komponente
Komponente
Komponente

U ovom koraku dublje istražujemo komponente koje čine naš dijagram crne kutije. Naša prva komponenta je izvorna datoteka VHDL koja sadrži D japanke. D japanke jednostavno prihvaćaju bilo koji signal koji im se unosi sa senzora na rastućoj ivici sata i hvataju te podatke do sljedeće rastuće ivice. Ovo sprječava naše osjetljive senzore pokreta da izazovu "treperenje" izlaznih LED dioda. Takođe, stavljamo jedan D flip-flop na ulazni signal dugmeta da LED diode ostanu uključene oko 5-7 sekundi nakon pritiska na dugme. Ovo smo također proveli kroz razdjelnik sata.

entitet clk_div2 je Port (clk: u std_logic; sclk: out std_logic); kraj clk_div2;

arhitektura my_clk_div od clk_div2 je

konstanta max_count: integer: = (300000000); signal tmp_clk: std_logic: = '0'; započeti my_div: process (clk, tmp_clk) varijabla div_cnt: integer: = 0; započeti if (rastući_red (clk)) onda if (div_cnt = MAX_COUNT) tada tmp_clk <= nije tmp_clk; div_cnt: = 0; else div_cnt: = div_cnt + 1; end if; end if; sclk <= tmp_clk; završi proces my_div; kraj my_clk_div;

Naša posljednja komponenta u ovom dijagramu je izvorna VHDL datoteka ponašanja koja sadrži uvjete za izlaze zasnovane na konfiguraciji ulaznih signala.

Korak 3: D Japanke

D Japanke
D Japanke

Četiri japanke priključene na ulazne signale bitne su za funkcionalnost našeg sistema. Kao što je ranije rečeno, s osjetljivim senzorima pokreta i tipkom za poništavanje, japanke koriste zasune samo za izlaz našeg ulaznog signala na rastućoj ivici sata. Ova sekvencijalna logika znači da naša ulična svjetla mogu ostati uključena određeni vremenski period nakon što su se aktivirala brzim pokretom. Kodiranje D-japanke je prilično jednostavno:

beginprocess (CLK) begin ako rise_edge (CLK) onda je Q <= D; end if; završni proces;

Cijela se stvar može sastaviti u jednu if naredbu. Nakon što smo imali ovaj komad, stvorili smo strukturnu VHDL izvornu datoteku koja sadrži sva četiri naša potrebna japanka:

započeti DFF0: mapa portova DFF (CLK => CLK, D => D (0), Q => Q (0)); DFF1: Mapa DFF portova (CLK => CLK, D => D (1), Q => Q (1)); DFF2: Mapa DFF portova (CLK => CLK, D => D (2), Q => Q (2)); DFF3: DFF karta porta (CLK => CLK, D => D (3), Q => Q (3));

end Behavioral;

To pomaže u održavanju naše glavne strukturne datoteke gdje okupljamo sve sistemske komponente mnogo čistijim i organiziranijim.

Korak 4: Uslovi

Kako bi naš kôd bio kompaktan i efikasan, napisali smo sve uvjete u jednu izjavu slučaja. Za naš smanjeni model imali smo 16 mogućih LED izlaznih konfiguracija jer je svaki senzor pokreta odgovoran za grupu od 4 LED diode.:

slučaj NMS je kada je "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111"; završni slučaj;

Korak 5: Ograničenja

Da biste ispravno naveli svoje ulaze i izlaze koristeći Vivado, morate implementirati datoteku ograničenja koja navodi sve portove, dugmad, LED diode i satove koji se koriste.

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_ports {LED [1]} PACK 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 PACKAGE_PIN W18 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 PACKAGE_PIN U14 [get | 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 [get_ports {LED 8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [8]}] set_property PACKAGE_PIN V3 [get_ports {LED [9]}] IO set_property 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 [11]}] set_property IOS [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_property IOSTANDARD LVCMOS33 {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 [LED_portovi [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_ports {MS [1P} PAGE] 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]}]

Korak 6: Glavna izvorna datoteka

U ovoj glavnoj datoteci okupljamo sve prethodno spomenute izvorne datoteke komponenti. Ova datoteka funkcionira kao strukturni kod koji okuplja različite komponente.

entitet Master_Final_Project je Port (BTN: u STD_LOGIC; CLK: u STD_LOGIC; MS: u STD_LOGIC_VECTOR (3 prema dolje 0); LED: van STD_LOGIC_VECTOR (15 do 0)); kraj Master_Final_Project;

arhitektura Ponašanje Master_Final_Project -a je

komponenta final_project je Port (--CLK: u STD_LOGIC; NMS: u STD_LOGIC_VECTOR (3 do 0); BTN: u STD_LOGIC; --sw: u STD_LOGIC_Vector (1 do 0); LED: van STD_LOGIC_VECTOR (15 do 0); krajnja komponenta;

komponenta Final_DFF je

Port (CLK: u STD_LOGIC; D: u STD_LOGIC_Vector (3 do 0); Q: van STD_LOGIC_Vector (3 do 0)); krajnja komponenta;

signal DFF02proj30: STD_LOGIC;

signal DFF12proj74: STD_LOGIC; signal DFF22proj118: STD_LOGIC; signal DFF32proj1512: STD_LOGIC;

početi

DFF0: Mapa porta Final_DFF (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: mapa porta final_project (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); end Behavioral;

Korak 7: Montaža

Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža

Sklop hardvera za ovaj projekt je minimalan. Jedini potrebni komadi su sljedeći:

1. Basys 3 ploča (1)

2. Jeftini senzori pokreta koji se mogu pronaći na Amazonu ovdje. (4)

3. Kablovi muško-ženski (4)

Montaža:

1. Priključite 4 muška kabela na PMod zaglavlje JB portova 1-4 (vidi sliku).

2. Spojite ženske krajeve na svaki izlazni pin senzora pokreta.

Korak 8: Učitavanje programa

Sada smo spremni za učitavanje VHDL glavne izvorne datoteke na Basys 3 ploču. Obavezno pokrenite sintezu, implementaciju i generirajte provjeru protoka bitova za moguće greške. Ako se sve uspješno pokrene, otvorite upravljački program hardvera i programirajte uređaj Basys 3. Vaš projekat je sada završen!

Preporučuje se: