Sadržaj:

L I G H T S: 5 koraka
L I G H T S: 5 koraka

Video: L I G H T S: 5 koraka

Video: L I G H T S: 5 koraka
Video: ТРЕКОВЫЕ светильники для дома. Освещение в квартире. 2024, Studeni
Anonim
L I G H T S
L I G H T S

Svrha ovog završnog projekta bila je stvoriti nešto što će se usredotočiti na održivost i implementirati koncepte digitalnog dizajna, a kako bih to učinio, odlučio sam dizajnirati skalabilan sustav za uštedu energije pomoću vhdl-a i napravio za Basys 3 ploču (serija Artix-7 35T). Skalabilan jer se u sobu može postaviti bilo koji broj senzora, a bilo koji broj ovih sustava može se postaviti oko zgrade ili kuće. Ono što bi ovaj sustav učinio, teoretski je uštedjeti tisuće dolara u poslovnim zgradama i smanjiti veliki postotak potrošnje energije u manjim stambenim zajednicama implementacijom povezanog sustava aktivno i pasivno upravljanih svjetala, detektora pokreta, mjerača vremena prikazanih na sedam segmentnih zaslona i upravljački prekidači. Ovaj primjer se bavi jednim sustavom s tri detektora pokreta, glavnim prekidačem, ručnim/normalnim prekidačem, četiri ekrana sa sedam segmenata i jednim svjetlom kojim sustav upravlja.

Na primjer, u odabranoj prostoriji, nekoliko detektora pokreta bilo bi postavljeno okolo (ovaj primjer ima tri), a svaki bi slao signal (1) ako detektira kretanje i (0) ako ne. Ako barem jedan od detektora pokreta detektira kretanje, svjetla će se upaliti ako već nisu upaljena i ostati upaljena ako su već uključena. U svakom trenutku svi detektori pokreta ne otkrivaju ništa, mjerač vremena počinje odbrojavati određeno vrijeme (podesivo prema kodu), a svjetla ostaju upaljena dok odbrojavač odbrojava. Kad odbrojavanje završi odbrojavanje, mjerač vremena prestaje, a svjetla se isključuju. Ako barem jedan detektor pokreta otkrije kretanje tijekom odbrojavanja, odbrojavanje se zaustavlja i resetira. A ako barem jedan detektor pokreta detektira kretanje dok su svjetla isključena, svjetla se odmah pale.

Ovaj sustav ima dva načina rada, jedan s mjeračem vremena kako je gore navedeno, a drugi u kojem postoji prekidač koji ručno upravlja svjetlima (zanemarujući senzore). Postoji glavni prekidač koji omogućuje korisniku da odabere način rada koji želi koristiti na temelju onog za koji smatra da će ukupno uštedjeti više energije. Npr. Soba poput hodnika mogla bi imati koristi od načina pasivnog mjerenja vremena- korisnici nisu sigurni kada će ljudi prolaziti, ali uključivanje i isključivanje svjetla svaki put kad uđu i izađu bila bi neugodnost, dok bi takva soba budući da bi spavaćom sobom s jednim korisnikom bilo bolje ručno upravljati. Glavni prekidač bio bi od pomoći u slučajevima kao što je to slučaj da je osoba koja živi u spavaćoj sobi otišla na duže vrijeme, tada bi se glavni prekidač mogao isključiti, a način rada timera djelovao bi radi učinkovitije uštede energije.

Dakle, u ovom sustavu postoje dva stroja stanja, jedan je glavni stroj stanja, a drugi za mjerač vremena odbrojavanja. Stroj glavnog stanja ima pet definiranih stanja: 1. "svjetla uključena, otkriveno kretanje" (id = 000), 2. "svjetla uključena, kretanje nije otkriveno" (id = 001), 3. "svjetla isključena, nema kretanja" otkriveno "(id = 010), 4." ručno uključeno "(id = 011) i 5." ručno isključeno "(id = 100). Ovaj glavni državni stroj ima četiri ulaza: glavni prekidač (ms), ručni/normalni prekidač (ns), signal koji je visok kada barem jedan prekidač detektira kretanje, a inače je nizak (orx) i signal koji je visoka nakon što je mjerač vremena gotov, a inače je niska (td). Glavni državni stroj ima dva izlaza: svjetla (svjetla) i signal koji pokazuje kada treba uključiti odbrojavanje (mjerač vremena) ili (t) (oba se koriste naizmjenično).

Drugi stroj stanja, mjerač vremena odbrojavanja, ima 12 stanja: 10 od njih imaju ID-ove povezane s brojem koji prikazuje sedam segmenata- „seg 10“(id = 1010), „seg 9“(id = 1001), […], „Seg 2“(id = 0010), „seg 1“(id = 0001), a druga dva stanja prikazuju nulu, predstavljajući isključeni mjerač- tako da postoji prvo prazno „prazno 1“(id = 1111) i drugo prazno "prazno 2" (id = 0000). Odbrojavač ima jedan ulaz: mjerač vremena (t) i tri izlaza: broj prikazan u binarnom obliku s četiri bita (spremnik) i signal koji pokazuje da je mjerač vremena učinjen (td).

Korak 1: Dijagram crne kutije

Dijagram crne kutije
Dijagram crne kutije

Ovo je pregled načina na koji bi cijeli sustav trebao raditi, a opisan je dijagramom u crnoj kutiji.

  • Sat se koristi za taktiranje glavnog stroja stanja i dekodera za sedam segmenata; sporiji sat potreban je za brojač dolje, pa postoji modul razdjelnika sata koji uzima ulaz sata i daje sporiji sat za brojač dolje.
  • Srednja varijabla (orx) u omotu vezana je za senzore pokreta i bit će visoka ako barem jedan od senzora nešto otkrije, a inače niska; Booleova jednadžba za to je samo orx = s (2) ili s (1) ili s (0).
  • Glavni fsm kontrolira opće stanje u kojem se sustav nalazi, ovisno o ulazima (orx, ms, ns, td) i odašilje trenutno stanje u kojem je (sm) prikazano pojednostavljeno s dva signala za koja se koristi (mjerač vremena i svjetla).

    • (timer) je omotni signal koji se šalje dolje brojaču fsm kao njegov ulaz i kontrolira ga trenutno stanje glavnog fsm -a. Pokazuje kada treba uključiti mjerač vremena.
    • (svjetla) je signal omotača koji se koristi za upravljanje LED diodama i kontrolira se trenutnim stanjem glavnog fsm -a.
  • Brojač dolje fsm kontrolira ono što prikazuje sedam segmenata, ovisno o ulazu (mjerač vremena) i odašilje trenutno stanje u kojem je (sd) prikazano pojednostavljeno s dva signala za koja se koristi (td i bin).

    • (td) je omotni signal koji se šalje glavnom fsm -u kao njegov ulaz i kontrolira ga trenutno stanje fsm brojača prema dolje. Funkcionira kao povratni signal koji pokazuje kada je odbrojavanje gotovo.
    • (bin) je četverobitni omotni signal koji je spojen s četiri bita nule ("0000" & bin), a kombiniranih osam bitova šalje se na (q), osmobitni omotni signal, koji se zatim šalje na sedam segmentni dekoder pod (ALU_VAL).
  • Modul sa sedam segmenata isti je kao i na Polylearnu; njegovi glavni ulazi uzimaju 8 -bitni broj (bin) do (ALU_VAL) za prikaz na četiri različita sedam segmentnih zaslona koristeći izlaze (SEGMENTS) do signala omota (seg) i (DISP_EN) do omota (disp_en).

    • Budući da dva ili više zaslona sa sedam segmenata ne mogu prikazati različite znamenke istovremeno, sat je potreban za kruženje kroz četiri oznake, prikazujući odgovarajuću znamenku odjednom za svako uključivanje ssega pojedinačno, a dovoljno brzo mijenjanje ciklusa omogućuje Čini se da su ssegovi uključeni odjednom.
    • (znak i valjanost) konstantni su tijekom cijelog programa, tako da je (znak) trajno nisko postavljeno, a (valjano) trajno visoko.
    • (ALU_VAL) uzima signal omotača (q) kao ulaz, koji predstavlja broj koji će biti prikazan na sedmosegmentnom zaslonu u binarnom obliku.
    • Izlaz (SEGMENTS) se šalje na osmobitni signal omotača (seg) i (DISP_EN) na četiri bitni signal omotača (disp_en).
  • Postoji i D flip flop modul koji nije eksplicitno prikazan na dijagramu, ali je potreban za dva stroja stanja kao podmoduli i pomaže sinhronom tranziciji stanja.

    • (3) od njih su potrebni za glavni fsm budući da je 2^(3) = 8> 5 stanja za kodiranje
    • (4) od njih su potrebni za dolje brojač fsm budući da je 2^4 = 16> 12 stanja za kodiranje

Korak 2: Državni strojevi

Državni strojevi
Državni strojevi

Za pravilno projektiranje dva stroja stanja potrebno je jasno definirati pojedina stanja s izlazima i stanjem u koje prelazi na temelju različitih mogućih ulaza.

Glavna stanja fsm -a:

"Svjetla uključena, otkriveno kretanje" (id = 000)

Svjetla su uključena, barem jedan od detektora pokreta detektira kretanje, pa orx mora biti visok i uključen ms.

  • Izlazi: svjetla = 1 i mjerač vremena = 0
  • Ostaje u ovom stanju kada je ms = 1 i orx = 1.
  • Prelazi u stanje "svjetla uključena, nije otkriveno kretanje" ako je ms = 1 i orx = 0.
  • Prelazi u stanje "ručno uključeno" ako je ms = 0 i ns = 1.
  • Prelazi u stanje "ručno isključeno" ako je ms = 0 i ns = 0.

"Svjetla uključena, nije otkriveno kretanje" (id = 001)

Svjetla su uključena, nijedan pokret nije detektiran, pa orx mora biti nizak i uključen ms. Također na početku ovog stanja, mjerač vremena postavljen na visoko kaže fsm -u odbrojavanje da počne odbrojavati, nastavlja odbrojavanje i prestaje odbrojavati nakon što fsm odbrojavanja kaže ovom fsm -u da je odbrojavanje završeno.

  • Izlazi: svjetla = 1 i mjerač vremena 1.
  • Ostaje u ovom stanju kada je ms = 1 i orx = 0 i td (mjerač vremena je gotov) = 0.
  • Prelazi u stanje "svjetla uključena, otkriveno kretanje" ako je ms = 1 i orx = 1.
  • Prelazi u stanje "svjetla ugašena, kretanje nije otkriveno" ako je ms = 1 i orx = 0 i td = 1.
  • Prelazi u stanje "ručno uključeno" ako je ms = 0 i ns = 1.
  • Prelazi u stanje "ručno isključeno" ako je ms = 0 i ns = 0.

"Svjetla su ugašena, nije otkriveno kretanje" (id = 010)

Svjetla su isključena, nijedan pokret nije otkriven s bilo kojeg senzora pokreta i mjerač vremena je završio odbrojavanje, tako da orx mora biti niska, ms je uključen, a td isključen.

  • Izlazi: svjetla = 0 i mjerač vremena = 0.
  • Ostaje u ovom stanju kada je ms = 1 i orx = 0.
  • Prelazi u stanje "svjetla uključena, otkriveno kretanje" ako je ms = 1 i orx = 1.
  • Prelazi u stanje "ručno uključeno" ako je ms = 0 i ns = 1.
  • Prelazi u stanje "ručno isključeno" ako je ms = 0 i ns = 0.

"Ručno uključeno" (id = 011)

Svjetla su uključena, detektori pokreta su nevažni, pa je ms isključen, a ns uključen.

  • Izlazi: svjetla = 1 i mjerač vremena = 0.
  • Ostaje u ovom stanju kada je ms = 0 i ns = 1.
  • Prelazi u stanje "ručno isključeno" ako je ms = 0 i ns = 0.
  • Prelazi u stanje “svjetla su isključena, nije otkriveno kretanje ako je ms = 1.

"Ručno isključeno" (id = 100)

Svjetla su isključena, detektori pokreta su nevažni, pa je ms isključen, a ns isključen.

  • Izlazi: svjetla = 0 i mjerač vremena = 0.
  • Ostaje u ovom stanju kada je ms = 0 i ns = 0.
  • Prelazi u stanje "ručno uključeno" ako je ms = 0 i ns = 1.
  • Prelazi u stanje “svjetla su isključena, nije otkriveno kretanje ako je ms = 1.

Brojač prema dolje kaže:

"Seg 10" (id = 1010)

Zaslon sa sedam segmenata prikazuje 10.

  • Izlazi: bin = “1010” i td = 0.
  • Prelazi u stanje "seg 9" ako je timer = 1.
  • Prelazi u stanje "prazno 2" ako je mjerač vremena 0.

"Seg 9" (id = 1001)

Zaslon sa sedam segmenata prikazuje 9.

  • Izlazi: bin = “1001” i td = 0.
  • Prelazi u stanje "seg 8" ako je timer = 1.
  • Prelazi u stanje "prazno 2" ako je mjerač vremena 0.

(Stavke "Seg 8" do "Seg 2" su izostavljene jer slijede isti obrazac kao "Seg 10" i "Seg 9" i nisu potrebne za objašnjenje)

"Seg 1" (id = 0001)

Zaslon sa sedam segmenata prikazuje 1.

  • Izlazi: bin = “0001” i td = 0.
  • Prelazi u stanje "prazno 2" na sljedećem rastućem rubu sata (nije potreban unos).

"Prazno 2" (id = 1111)

Zaslon sa sedam segmenata prikazuje 0. Svrha drugog praznog stanja je da postoji odvojeno stanje za td = 1 radi sigurnosti.

  • Izlazi: bin = “1111” i td = 1.
  • Prelazi u stanje "prazno 1" na sljedećem rastućem rubu sata (nije potreban unos).

"Prazno 1" (id = 0000)

Zaslon sa sedam segmenata prikazuje 0. Ovo je stanje u kojem sustav ostaje kada je glavno stanje stroja u stanju "svjetla su isključena, nije otkriveno kretanje".

  • Izlazi: bin = “0000” i td = 0.
  • Prelazi u stanje "seg 10" ako je mjerač vremena 1.

Korak 3: Tablice istinitosti strojnog stanja, jednadžbe uzbude i izlazne jednadžbe

Tablice istine državnog stroja, jednadžbe uzbuđenja i izlazne jednadžbe
Tablice istine državnog stroja, jednadžbe uzbuđenja i izlazne jednadžbe
Tablice istine državnog stroja, jednadžbe uzbuđenja i izlazne jednadžbe
Tablice istine državnog stroja, jednadžbe uzbuđenja i izlazne jednadžbe
Tablice istine državnog stroja, jednadžbe uzbuđenja i izlazne jednadžbe
Tablice istine državnog stroja, jednadžbe uzbuđenja i izlazne jednadžbe
Tablice istine državnog stroja, jednadžbe uzbude i izlazne jednadžbe
Tablice istine državnog stroja, jednadžbe uzbude i izlazne jednadžbe

Sljedeći korak je stvaranje tablica istinitosti za dva stroja stanja i jednadžbe pobude i izlazne jednadžbe za svaki fsm. Za svaku jednadžbu uzbude fsm -a moraju postojati jednadžbe za svaki bit kodiran za sljedeće stanje u smislu trenutnog stanja i njegovih ulaznih signala. Za svaku fsm izlaznu jednadžbu moraju postojati jednadžbe za svaki izlazni signal u smislu trenutnog stanja. Sva četiri skupa jednadžbi mogu se izvući iz prikazanih tablica istinitosti. (qn je sljedeći bit kodiran za svaki stroj stanja, a q je trenutno stanje)

(000) ekvivalentno q (2) 'q (1)' q (0) 'i (0000) ekvivalentno q (3)' q (2) 'q (1)' q (0) '

(primjer (0101) je q (3) 'q (2) q (1)' q (0) i (110) je q (2) q (1) q (0) ')

Jednadžbe uzbuđenja za glavni fsm:

  • qn (2) = (ms) '(ns)
  • qn (1) = (ms) '(ns)' + (ms) (orx) '[(td) (001) + (010)] + (ms) [(011) + (100)]
  • qn (0) = (ms) '(ns)' + (ms) (orx) '[(000) + (td)' (001)]

Izlazne jednadžbe za glavni fsm:

  • svjetla = (000) + (001) + (100)
  • mjerač vremena (= 001)

Jednadžbe uzbude za dolje brojač fsm:

  • qn (3) = t [(0000) + (1010) + (1001) + (0001)]
  • qn (2) = t [(1000) + (0111) + (0110) + (0101) + (0001)]
  • qn (1) = t [(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
  • qn (0) = t [(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]

Izlazne jednadžbe za brojač dolje fsm:

  • td = (1111)
  • kanta (3) = (1010) + (1001) + (1000) + (1111) + (0000)
  • kanta (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
  • kanta (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
  • kanta (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)

Korak 4: Omotač, podmoduli i ograničenje

Kao što je već objašnjeno u 1. koraku, ti su moduli potrebni za ovaj projekt i svi su povezani zajedno s modulom omota pod nazivom "final_proj.vhd". Datoteka ograničenja pod nazivom "Basys3_Master.xdc" koristi se za povezivanje svih ulaza i izlaza omotača sa sklopkama, sedam segmentnih i I/O portova na ploči Basys 3. Glavni prekidač trebao bi biti prekidač na ploči najbliže strani na kojoj su žice, normalni/ručni prekidač je drugi najbliži, a tri prekidača koja predstavljaju tri senzora pokreta su tri prekidača neposredno uz normalni/ručni prekidač. Sav kôd (logičke jednadžbe, deklaracije modula itd.) Već je zapisan u datotekama, tako da ne morate ništa drugo napisati da bi ovo funkcioniralo.

Korak 5: I/O portovi za LED

I/O portovi za LED
I/O portovi za LED
I/O portovi za LED
I/O portovi za LED

Posljednji korak za ovaj projekt je korištenje LED -a za pokazivanje da li se svjetla zapravo pale i isključuju. Ožičenje je prikazano na dvije slike. Provjerite postoji li uzastopno otpornik sa LED -om (najmanje 330 ohma) kako ne bi pregorio LED -dioda i provjerite je li dugačak pin LED -a spojen na isto žensko zaglavlje na basys ploči kao što je prikazana crvena žica (gore krajnje desno), a kraći pin je spojen na masu, isto žensko zaglavlje kao prikazana crna žica (gore, drugo slijeva).

Preporučeni: