Obsah:
- Krok 1: Diagram čiernej skrinky
- Krok 2: Stavové stroje
- Krok 3: Stavové tabuľky pravdy, excitačné rovnice a výstupné rovnice
- Krok 4: Obálka, submoduly a obmedzenie
- Krok 5: I/O porty pre LED
Video: L I G H T S: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
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
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
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
Ď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
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:
Počítadlo krokov - mikro: bit: 12 krokov (s obrázkami)
Počítadlo krokov - mikro: bit: Tento projekt bude počítadlom krokov. Na meranie našich krokov použijeme senzor akcelerometra, ktorý je vstavaný v Micro: Bit. Zakaždým, keď sa Micro: Bit zatrasie, pridáme k počtu 2 a zobrazíme ho na obrazovke
Akustická levitácia s Arduino Uno krok za krokom (8 krokov): 8 krokov
Akustická levitácia s Arduino Uno krok za krokom (8 krokov): Ultrazvukové meniče zvuku L298N Dc napájací adaptér ženského adaptéra s mužským DC kolíkom Arduino UNOBreadboard Ako to funguje: Najprv nahráte kód do Arduino Uno (je to mikrokontrolér vybavený digitálnym a analógové porty na prevod kódu (C ++)
Bolt - Nočné hodiny pre bezdrôtové nabíjanie DIY (6 krokov): 6 krokov (s obrázkami)
Bolt - Nočné hodiny bezdrôtového nabíjania DIY (6 krokov): Indukčné nabíjanie (tiež známe ako bezdrôtové nabíjanie alebo bezdrôtové nabíjanie) je typ bezdrôtového prenosu energie. Na prenos elektriny do prenosných zariadení používa elektromagnetickú indukciu. Najbežnejšou aplikáciou je bezdrôtové nabíjanie Qi
Ako rozobrať počítač pomocou jednoduchých krokov a fotografií: 13 krokov (s obrázkami)
Ako rozobrať počítač jednoduchými krokmi a obrázkami: Toto je návod, ako rozobrať počítač. Väčšina základných komponentov je modulárna a dá sa ľahko odstrániť. Je však dôležité, aby ste o tom boli organizovaní. Pomôže to zabrániť strate súčiastok a tiež pri opätovnej montáži
Od Roomby k Roveru iba 5 krokov!: 5 krokov
Od Roomby po Rover za pouhých 5 krokov !: Roboti Roomba sú zábavným a jednoduchým spôsobom, ako ponoriť prsty do nohy vo svete robotiky. V tomto návode podrobne popíšeme, ako previesť jednoduchú Roombu na ovládateľný rover, ktorý súčasne analyzuje svoje okolie. Zoznam dielov 1.) MATLAB2.) Roomb