Obsah:

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

Video: L I G H T S: 5 krokov

Video: L I G H T S: 5 krokov
Video: Mirko Cro Cop's Best Kickboxing Highlights 2024, November
Anonim
SVETLÁ
SVETLÁ

Cieľom tohto konečného projektu bolo vytvoriť niečo, čo by sa zameralo na udržateľnosť a implementovať koncepty digitálneho dizajnu, a preto som sa rozhodol navrhnúť škálovateľný systém úspory energie pomocou vhdl a vyrobený pre dosku Basys 3 (séria Artix-7 35T).). Škálovateľné, pretože do miestnosti je možné umiestniť ľubovoľný počet senzorov a ľubovoľný počet týchto systémov je možné umiestniť okolo budovy alebo domu. Tento systém by teoreticky ušetril tisíce dolárov v komerčných budovách a znížil veľké percento spotreby energie v menších obytných komunitách zavedením prepojeného systému aktívne a pasívne riadených svetiel, detektorov pohybu, časovačov zobrazovaných na siedmich segmentových displejoch a ovládacie spínače. Tento príklad sa zaoberá jediným systémom s tromi detektormi pohybu, hlavným spínačom, manuálnym/normálnym spínačom, štyrmi sedemsegmentovými displejmi a jediným svetlom, ktoré systém ovláda.

Napríklad vo vybranej miestnosti by bolo umiestnených niekoľko detektorov pohybu (tento príklad má tri) a každý by vyslal signál (1), ak detekuje pohyb, a (0) ak nie. Ak aspoň jeden z detektorov pohybu zaznamená pohyb, svetlá sa rozsvietia, ak ešte nie sú zapnuté, a zostanú zapnuté, ak už sú zapnuté. Kedykoľvek všetky detektory pohybu nič nezistia, časovač začne odpočítavať nastavený čas (nastaviteľný v kóde) a kontrolky zostanú svietiť, kým časovač odpočítava. Akonáhle časový spínač skončí odpočítavanie, časovač sa zastaví a svetlá zhasnú. Ak počas odpočítavania časovača detekuje pohyb aspoň jeden detektor pohybu, časovač sa zastaví a resetuje. A pokiaľ aspoň jeden detektor pohybu detekuje pohyb, keď sú svetlá vypnuté, svetlá sa okamžite zapnú.

Tento systém má dva režimy, jeden s časovačom, ako je uvedené vyššie, a druhý, kde je spínač, ktorý ovláda svetlá ručne (ignorujúc senzory). Existuje hlavný prepínač, ktorý umožňuje používateľovi vybrať si režim, ktorý chce používať, podľa toho, ktorý z nich cíti, celkovo ušetrí viac energie. Napr. Miestnosť, ako je chodba, by mohla využívať režim pasívneho časovača- používatelia si nie sú istí, kedy cez ňu budú prechádzať ľudia, ale zapínanie a vypínanie svetiel pri každom vstupe a odchode by bolo nepohodlné, zatiaľ čo miestnosť, ako je pretože spálňa s jedným používateľom by bola lepšie ovládaná ručne. A hlavný vypínač by bol nápomocný v prípadoch, ako keby osoba žijúca v spálni odišla na dlhší čas, potom by sa hlavný vypínač dal vypnúť a režim časovača by fungoval tak, aby účinnejšie šetril energiu.

V tomto systéme teda existujú dva stavové automaty, jeden je hlavný stavový a druhý pre odpočítavací časovač. Hlavný stavový stroj má päť takto definovaných stavov: 1. „svetlá svietia, detekovaný pohyb“(id = 000), 2. „svetlá svietia, nebol detekovaný žiadny pohyb“(id = 001), 3. „svetlá sú vypnuté, žiadny pohyb detekovaný “(id = 010), 4.„ ručne zapnutý “(id = 011) a 5.„ ručne vypnutý “(id = 100). Tento hlavný stavový stroj má štyri vstupy: hlavný vypínač (ms), manuálny/normálny spínač (ns), signál, ktorý je vysoký, keď aspoň jeden spínač detekuje pohyb, a v opačnom prípade je nízky (orx), a signál, ktorý je vysoká, keď je časovač hotový, a nízka, inak (td). Hlavný stavový stroj má dva výstupy: svetlá (svetlá) a signál, ktorý indikuje, kedy je potrebné zapnúť časovač odpočítavania (časovač) alebo (t) (oba sa používajú zameniteľne).

Druhý stavový automat, časovač odpočítavania, má 12 stavov: 10 z nich má ID spojené s číslom, ktoré sedem segmentov zobrazuje- „seg 10“(id = 1010), „seg 9“(id = 1001), […], „Seg 2“(id = 0010), „seg 1“(id = 0001) a ďalšie dva stavy zobrazujú nulu, čo znamená, že časovač je vypnutý- takže je tu prvé prázdne „prázdne 1“(id = 1111) a druhý prázdny „prázdny 2“(id = 0000). Časovač odpočítavania má jeden vstup: časovač (t) a tri výstupy: číslo zobrazené binárne so štyrmi bitmi (bin) a signál indikujúci, že časovač je dokončený (td).

Krok 1: Diagram čiernej skrinky

Schéma čiernej skrinky
Schéma čiernej skrinky

Toto je prehľad toho, ako by mal fungovať celý systém, a je popísaný pomocou schémy čiernej skrinky.

  • Hodiny sa používajú na taktovanie hlavného stavového automatu a sedemsegmentového dekodéra; pre počítadlo dole sú potrebné pomalšie hodiny, takže existuje modul rozdeľovača hodín, ktorý preberá vstup hodín a vydáva pomalšie hodiny pre počítadlo spustenia.
  • Stredná premenná (orx) v obale je viazaná na snímače pohybu a bude vysoká, ak aspoň jeden zo senzorov niečo detekuje, a nízka, inak; boolovská rovnica pre to je len orx = s (2) alebo s (1) alebo s (0).
  • Hlavný fsm riadi, v akom všeobecnom stave sa systém nachádza, v závislosti od vstupov (orx, ms, ns, td) a výstupy aktuálneho stavu, v ktorom sa zobrazuje (sm), sú zjednodušené pomocou dvoch signálov, na ktoré sa používa (časovač a svetlá).

    • (časovač) je signál obalu, ktorý je odoslaný do dolného počítadla fsm ako jeho vstup a je riadený aktuálnym stavom hlavného fsm. Udáva, kedy zapnúť časovač.
    • (svetlá) je signál z obalu, ktorý sa používa na ovládanie LED a je riadený aktuálnym stavom hlavnej fsm.
  • Počítadlo nadol fsm riadi to, čo sedem segmentov zobrazuje v závislosti od vstupu (časovač) a výstupov aktuálneho stavu, v ktorom sa zobrazuje (sd), zjednodušene pomocou dvoch signálov, na ktoré sa používa (td a bin).

    • (td) je signál obalu, ktorý je odoslaný do hlavného servera fsm ako jeho vstup a je ovládaný aktuálnym stavom počítadla nadol fsm. Funguje ako signál spätnej väzby, ktorý indikuje, kedy je časovač dokončený.
    • (bin) je štvorbitový obalový signál, ktorý je spojený so štyrmi bitmi s nulou („0000“a bin) a spojených osem bitov je odoslaných do (q), osembitového obalového signálu, ktorý je zaslaný do siedmich bitov segmentový dekodér pod (ALU_VAL).
  • Sedemsegmentový modul je rovnaký ako na Polylearn; jeho hlavné vstupy majú 8 bitové číslo (bin) až (ALU_VAL) na zobrazenie na štyroch rôznych siedmich segmentových displejoch pomocou výstupov (SEGMENTS) na signál obalu (seg) a (DISP_EN) na obal (disp_en).

    • Pretože dva alebo viac siedmich segmentových displejov nemôže zobrazovať rôzne číslice súčasne, sú potrebné hodiny na cyklické prechádzanie štyrmi ssegmi, ktoré zobrazujú príslušnú číslicu naraz pre každý zapnutý segseg jednotlivo a dostatočne rýchla jazda na bicykli spôsobuje, že Zdá sa, že ssegy sú zapnuté naraz.
    • (znamienko a platné) sú v celom tomto programe konštantné, takže (znamienko) je trvalo nastavené na minimum a (platné) je trvalo nastavené na vysoké.
    • (ALU_VAL) preberá signál obalu (q) ako vstup, ktorý predstavuje číslo, ktoré sa bude binárne zobrazovať na sedemsegmentovom displeji.
    • Výstup (SEGMENTS) je odoslaný do osembitového signálu (seg) a (DISP_EN) do signálu so štyrmi bitmi (disp_en).
  • K dispozícii je tiež D flip flop modul, ktorý nie je explicitne zobrazený na diagrame, ale je potrebný pre dva stavové automaty ako submoduly a pomáha synchrónne transistovať stavy.

    • (3) z nich je potrebných pre hlavný fsm, pretože 2^(3) = 8> 5 stavov na kódovanie
    • (4) z nich sú potrebné pre čítač nadol fsm, pretože 2^4 = 16> 12 stavov na kódovanie

Krok 2: Stavové stroje

Štátne stroje
Štátne stroje

Na správne navrhnutie dvoch stavových automatov je potrebné jasne definovať jednotlivé stavy s ich výstupmi a stavom, do ktorého prechádza, na základe rôznych možných vstupov.

Hlavné fsm uvádza:

„Svetlá svietia, detekovaný pohyb“(id = 000)

Kontrolky sú zapnuté, najmenej jeden z detektorov pohybu detekuje pohyb, takže orx musí byť vysoký a ms je zapnuté.

  • Výstupy: svetlá = 1 a časovač = 0
  • Zostáva v tomto stave, keď ms = 1 a orx = 1.
  • Ak ms = 1 a orx = 0, prejde do stavu „svetlá svietia, nebol detekovaný žiadny pohyb“.
  • Ak ms = 0 a ns = 1, prejde do stavu „ručne zapnuté“.
  • Ak ms = 0 a ns = 0, prejde do stavu „ručne vypnuté“.

„Svetlá svietia, nebol detekovaný žiadny pohyb“(id = 001)

Svetlá sú zapnuté, z akéhokoľvek detektora pohybu nie je detekovaný žiadny pohyb, takže hodnota Orx musí byť nízka a ms je zapnuté. Na začiatku tohto stavu tiež nastavený vysoký časovač povie odpočítavaniu fsm, aby začalo odpočítavanie, pokračuje v odpočítavaní a prestane odpočítavať, akonáhle odpočítavanie fsm oznámi tomuto fsm, že je odpočítavanie hotové.

  • Výstupy: svetlá = 1 a časovač = 1.
  • Zostáva v tomto stave, keď ms = 1 a orx = 0 a td (časovač je hotový) = 0.
  • Ak ms = 1 a orx = 1, prejde do stavu „svetlá svietia, detekovaný pohyb“.
  • Prejde do stavu „zhasnuté svetlá, nebol detekovaný žiadny pohyb“, ak ms = 1 a orx = 0 a td = 1.
  • Ak ms = 0 a ns = 1, prejde do stavu „ručne zapnuté“.
  • Ak ms = 0 a ns = 0, prejde do stavu „ručne vypnuté“.

„Svetlá zhasnuté, nebol detekovaný žiadny pohyb“(id = 010)

Svetlá sú vypnuté, žiadny pohyb nezaznamenal žiadny pohyb a časovač skončil odpočítavanie, takže hodnota Orx musí byť nízka, ms je zapnuté a td je vypnuté.

  • Výstupy: svetlá = 0 a časovač = 0.
  • Zostáva v tomto stave, keď ms = 1 a orx = 0.
  • Ak ms = 1 a orx = 1, prejde do stavu „svetlá svietia, detekovaný pohyb“.
  • Prejde do stavu „ručne zapnutý“, ak ms = 0 a ns = 1.
  • Ak ms = 0 a ns = 0, prejde do stavu „ručne vypnuté“.

„Ručne zapnuté“(id = 011)

Svetlá sú zapnuté, detektory pohybu sú irelevantné, takže ms je vypnuté a ns je zapnuté.

  • Výstupy: svetlá = 1 a časovač = 0.
  • Zostáva v tomto stave, keď ms = 0 a ns = 1.
  • Ak ms = 0 a ns = 0, prejde do stavu „ručne vypnuté“.
  • Prejde do stavu „zhasnuté svetlá, nebol detekovaný žiadny pohyb, ak ms = 1.

„Ručne vypnuté“(id = 100)

Svetlá sú vypnuté, detektory pohybu sú irelevantné, takže ms je vypnuté a ns je vypnuté.

  • Výstupy: svetlá = 0 a časovač = 0.
  • Zostáva v tomto stave, keď ms = 0 a ns = 0.
  • Ak ms = 0 a ns = 1, prejde do stavu „ručne zapnuté“.
  • Prejde do stavu „zhasnuté svetlá, nebol detekovaný žiadny pohyb, ak ms = 1.

Stavy počítadla nadol:

„Seg 10“(id = 1010)

Sedemsegmentový displej zobrazuje 10.

  • Výstupy: bin = „1010“a td = 0.
  • Ak je časovač = 1, prejde na stav „seg 9“.
  • Ak je časovač = 0, prejde na stav „prázdne 2“.

„Seg 9“(id = 1001)

Sedemsegmentový displej zobrazuje 9.

  • Výstupy: bin = „1001“a td = 0.
  • Ak je časovač = 1, prejde na stav „seg 8“.
  • Ak je časovač = 0, prejde na stav „prázdne 2“.

(Štáty „Seg 8“až „Seg 2“sa vynechávajú, pretože majú rovnaký vzorec ako „Seg 10“a „Seg 9“a nie sú potrebné na vysvetlenie.)

„Seg 1“(id = 0001)

Sedemsegmentový displej zobrazuje 1.

  • Výstupy: bin = „0001“a td = 0.
  • Na ďalšej stúpajúcej hrane hodín prejde do stavu „prázdne 2“(nie je potrebný žiadny vstup).

„Prázdne 2“(id = 1111)

Sedemsegmentový displej zobrazuje 0. Účelom druhého prázdneho stavu je, aby bol pre bezpečnosť td = 1 oddelený stav.

  • Výstupy: bin = „1111“a td = 1.
  • Na ďalšej stúpajúcej hrane hodín prejde do stavu „prázdne 1“(nie je potrebný žiadny vstup).

„Prázdne 1“(id = 0000)

Sedemsegmentový displej zobrazuje 0. Toto je stav, v ktorom systém zostáva, keď je hlavný stavový stroj v stave „kontrolky zhasnuté, nebol detekovaný žiadny pohyb“.

  • Výstupy: bin = „0000“a td = 0.
  • Ak je časovač = 1, prejde na stav „seg 10“.

Krok 3: Stavové tabuľky pravdy, excitačné rovnice a výstupné rovnice

Tabuľky pravdy stavových strojov, excitačné rovnice a výstupné rovnice
Tabuľky pravdy stavových strojov, excitačné rovnice a výstupné rovnice
Tabuľky pravdy stavových strojov, excitačné rovnice a výstupné rovnice
Tabuľky pravdy stavových strojov, excitačné rovnice a výstupné rovnice
Tabuľky pravdy stavových strojov, excitačné rovnice a výstupné rovnice
Tabuľky pravdy stavových strojov, excitačné rovnice a výstupné rovnice
Tabuľky pravdy stavových strojov, excitačné rovnice a výstupné rovnice
Tabuľky pravdy stavových strojov, excitačné rovnice a výstupné rovnice

Ďalším krokom je vytvorenie tabuliek pravdy pre dva stavové automaty a excitačné rovnice a výstupné rovnice pre každú fsm. Pre každú excitačnú rovnicu fsm musia existovať rovnice pre každý nasledujúci kódovaný bit v zmysle aktuálneho stavu a jeho vstupných signálov. Pre každú výstupnú rovnicu fsm musia existovať rovnice pre každý výstupný signál z hľadiska aktuálneho stavu. Všetky štyri sady rovníc je možné vyvodiť z vyobrazených tabuliek pravdy. (qn je ďalší kódovaný bit pre každý stavový automat a q je aktuálny stav)

(000) ekvivalent q (2) 'q (1)' q (0) 'a (0000) ekvivalent q (3)' q (2) 'q (1)' q (0) '

(napr. (0101) je q (3) 'q (2) q (1)' q (0) a (110) je q (2) q (1) q (0) ')

Vzrušujúce rovnice pre hlavné 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)]

Výstupné rovnice pre hlavné fsm:

  • svetlá = (000) + (001) + (100)
  • časovač = (001)

Vzrušujúce rovnice pre dolné počítadlo 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)]

Výstupné rovnice pre počítadlo nadol fsm:

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

Krok 4: Obálka, submoduly a obmedzenie

Ako už bolo vysvetlené v kroku 1, tieto moduly sú potrebné pre tento projekt a všetky sú prepojené s obalovým modulom s názvom „final_proj.vhd“. Súbor obmedzení s názvom „Basys3_Master.xdc“sa používa na prepojenie všetkých vstupov a výstupov modulu wrapper s prepínačmi, siedmimi segmentovými a I/O portmi na doske Basys 3. Hlavný vypínač by mal byť spínač na doske najbližšie k strane, na ktorej sú káble, normálny/manuálny spínač je druhý najbližší a tri prepínače predstavujúce tri snímače pohybu sú tri spínače bezprostredne vedľa normálneho/manuálneho spínača. Všetok kód (booleovské rovnice, deklarácie modulov atď.) Je už zapísaný v súboroch, takže na to, aby to fungovalo, nemusíte písať nič iné.

Krok 5: I/O porty pre LED

I/O porty pre LED
I/O porty pre LED
I/O porty pre LED
I/O porty pre LED

Posledným krokom tohto projektu je použitie diódy LED na zobrazenie, či sa (svetlá) skutočne zapínajú a vypínajú. Zapojenie je zobrazené na dvoch obrázkoch. Uistite sa, že je v sérii odpor s LED diódou (najmenej 330 ohmov), aby sa dióda nespálila, a uistite sa, že je dlhý kolík LED pripojený k rovnakej zásuvke na základnej doske, ako je znázornený červený vodič (hore úplne vpravo) a kratší kolík je spojený so zemou, rovnaká zásuvka ako na obrázku je čierny vodič (hore, druhý zľava).

Odporúča: