Obsah:
- Krok 1: Schéma černé skříňky
- Krok 2: Stav strojů
- Krok 3: Stavové tabulky pravdy stroje, excitační rovnice a výstupní rovnice
- Krok 4: Obálka, submoduly a omezení
- Krok 5: I/O porty pro LED
Video: L I G H T S: 5 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
Účelem tohoto konečného projektu bylo vytvořit něco, co by se zaměřilo na udržitelnost a implementovalo koncepty digitálního designu, a proto jsem se rozhodl navrhnout škálovatelný systém pro úsporu energie pomocí vhdl a vyrobený pro desku Basys 3 Board (řada Artix-7 35T)). Škálovatelné, protože do místnosti lze umístit libovolný počet senzorů a libovolný počet těchto systémů lze umístit kolem budovy nebo domu. Tento systém by teoreticky ušetřil tisíce dolarů v komerčních budovách a snížil velké procento spotřeby energie v menších obytných komunitách zavedením propojeného systému aktivně a pasivně ovládaných světel, detektorů pohybu, časovačů zobrazovaných na sedmi segmentových displejích a ovládací spínače. Tento příklad se zabývá jediným systémem se třemi detektory pohybu, hlavním spínačem, manuálním/normálním spínačem, čtyřmi sedmi segmentovými displeji a jediným osvětlením, které systém ovládá.
Například ve vybrané místnosti by bylo rozmístěno několik detektorů pohybu (tento příklad má tři) a každý by vyslal signál (1), pokud detekuje pohyb, a (0) pokud ne. Pokud alespoň jeden z detektorů pohybu detekuje pohyb, světla se rozsvítí, pokud již nejsou zapnutá, a zůstanou zapnutá, pokud již jsou zapnutá. Kdykoli všechny detektory pohybu nic nezjistí, časovač začne odpočítávat po nastavenou dobu (nastavitelný v kódu) a kontrolky zůstanou rozsvícené, zatímco časovač odpočítává. Jakmile časovač dokončí odpočítávání, časovač se zastaví a světla zhasnou. Pokud alespoň jeden detektor pohybu detekuje pohyb, zatímco časovač odpočítává, časovač se zastaví a resetuje. A pokud alespoň jeden detektor pohybu detekuje pohyb, když jsou světla vypnutá, světla se okamžitě rozsvítí.
Tento systém má dva režimy, jeden s časovačem, jak je uvedeno výše, a druhý, kde je spínač, který ovládá světla ručně (ignoruje senzory). K dispozici je hlavní přepínač, který uživateli umožňuje vybrat si režim, který chce použít, podle toho, který z nich cítí, celkově ušetří více energie. Př. Místnost, jako je chodba, by mohla využívat režim pasivního časovače- uživatelé si nejsou jisti, kdy jimi budou procházet lidé, ale zapnutí a vypnutí světla při každém vstupu a odchodu by bylo nepříjemné, zatímco místnost jako protože ložnice s jedním uživatelem by byla lépe ovládána ručně. A hlavní vypínač by byl užitečný v případech, jako kdyby osoba žijící v ložnici odešla na delší dobu, pak by hlavní vypínač mohl být vypnut a režim časovače by fungoval pro úsporu energie efektivněji.
V tomto systému tedy existují dva stavové automaty, jeden je hlavní stavový a druhý pro odpočítávací časovač. Hlavní stavový stroj má takto definováno pět stavů: 1. „světla svítí, detekován pohyb“(id = 000), 2. „světla svítí, není detekován žádný pohyb“(id = 001), 3. „světla nesvítí, žádný pohyb detekováno "(id = 010), 4." ručně zapnuto "(id = 011) a 5." ručně vypnuto "(id = 100). Tento hlavní stavový stroj má čtyři vstupy: hlavní spínač (ms), ruční/normální spínač (ns), signál, který je vysoký, když alespoň jeden spínač detekuje pohyb, a je nízký, jinak (orx), a signál, který je vysoká, jakmile je časovač hotový, a nízká, jinak (td). Hlavní stavový stroj má dva výstupy: světla (světla) a signál, který ukazuje, kdy zapnout časovač odpočítávání (časovač) nebo (t) (oba se používají zaměnitelně).
Druhý stavový automat, odpočítávací časovač, má 12 stavů: 10 z nich má ID spojená s číslem, které sedm segmentů zobrazuje- „seg 10“(id = 1010), „seg 9“(id = 1001), […], „Seg 2“(id = 0010), „seg 1“(id = 0001) a další dva stavy zobrazují nulu, což znamená, že časovač je vypnutý- takže je zde první prázdné „prázdné 1“(id = 1111) a druhé prázdné „prázdné 2“(id = 0000). Časovač odpočítávání má jeden vstup: časovač (t) a tři výstupy: číslo zobrazené binárně se čtyřmi bity (bin) a signálem, že je časovač dokončen (td).
Krok 1: Schéma černé skříňky
Toto je přehled toho, jak má celý systém fungovat, a je popsán pomocí diagramu černé skříňky.
- Hodiny se používají k taktování hlavního stavového stroje a sedmisegmentového dekodéru; pro počítadlo dolů jsou zapotřebí pomalejší hodiny, takže existuje modul děliče hodin, který převezme hodinový vstup a vydá pomalejší hodiny pro počítadlo dolů.
- Mezilehlá proměnná (orx) v obalu je svázána se senzory pohybu a bude vysoká, pokud alespoň jeden ze senzorů něco detekuje, a nízká naopak; logická rovnice pro to je jen orx = s (2) nebo s (1) nebo s (0).
-
Hlavní fsm řídí, ve kterém obecném stavu se systém nachází, v závislosti na vstupech (orx, ms, ns, td) a vydává aktuální stav, ve kterém je (sm) zobrazen zjednodušeně pomocí dvou signálů, pro které se používá (časovač a světla).
- (časovač) je signál obalu, který je odeslán do čítače dolů fsm jako jeho vstup a je řízen aktuálním stavem hlavního fsm. Udává, kdy zapnout časovač.
- (světla) je signál obalu, který se používá k ovládání LED a je řízen aktuálním stavem hlavní fsm.
-
Čítač dolů fsm ovládá to, co sedm segmentů zobrazuje v závislosti na vstupu (časovač) a vydává aktuální stav, ve kterém je (sd), zjednodušeně pomocí dvou signálů, pro které se používá (td a bin).
- (td) je signál obalu, který je odeslán do hlavního fsm jako jeho vstup a je řízen aktuálním stavem čítače dolů fsm. Funguje jako signál zpětné vazby, který indikuje, kdy je časovač dokončen.
- (bin) je čtyřbitový obalový signál, který je spojen se čtyřmi bity nula („0000“a bin) a kombinovaných osm bitů je odesláno do (q), osmibitového obalového signálu, který je následně odeslán do sedmi segmentový dekodér pod (ALU_VAL).
-
Modul se sedmi segmenty je stejný jako na Polylearn; jeho hlavní vstupy mají 8bitové číslo (bin) až (ALU_VAL) pro zobrazení na čtyřech různých sedmi segmentových displejích pomocí výstupů (SEGMENTS) pro signál obálky (seg) a (DISP_EN) pro wrapper (disp_en).
- Vzhledem k tomu, že dva nebo více sedm segmentových displejů nemohou zobrazovat různé číslice současně, jsou k procházení čtyř ssegů zapotřebí hodiny, které zobrazují příslušnou číslici současně pro každý zapnutý sseg samostatně, a dostatečně rychlé cyklování Zdá se, že ssegy jsou zapnuty najednou.
- (znaménko a platný) jsou v celém tomto programu konstantní, takže (znaménko) je trvale nastaveno na nízkou hodnotu a (platné) je trvale nastaveno na vysokou hodnotu.
- (ALU_VAL) převezme signál obálky (q) jako vstup, který představuje číslo, které bude binárně zobrazeno na sedmisegmentovém displeji.
- Výstup (SEGMENTS) je odeslán do signálu osmibitového wrapperu (seg) a (DISP_EN) do signálu čtyřbitového wrapperu (disp_en).
-
K dispozici je také modul D flip flop, který není v diagramu výslovně zobrazen, ale je potřebný pro dva stavové automaty jako submoduly a pomáhá synchronně tranzistovat stavy.
- (3) z nich jsou potřeba pro hlavní fsm, protože 2^(3) = 8> 5 stavů pro kódování
- (4) z nich jsou potřebné pro čítač dolů fsm, protože 2^4 = 16> 12 stavů pro kódování
Krok 2: Stav strojů
Aby bylo možné správně navrhnout dva stavové automaty, je třeba jasně definovat jednotlivé stavy s jejich výstupy a stavem, do kterého přechází na základě různých možných vstupů.
Hlavní fsm uvádí:
„Svítí, detekován pohyb“(id = 000)
Kontrolky svítí, alespoň jeden z detektorů pohybu detekuje pohyb, takže orx musí být vysoký a ms je zapnutý.
- Výstupy: světla = 1 a časovač = 0
- Zůstává v tomto stavu, když ms = 1 a orx = 1.
- Přejde do stavu „světla svítí, nebyl detekován žádný pohyb“, pokud ms = 1 a orx = 0.
- Přejde do stavu „ručně zapnuto“, pokud ms = 0 a ns = 1.
- Přejde do stavu „ručně vypnuto“, pokud ms = 0 a ns = 0.
„Svítí, nebyl detekován žádný pohyb“(id = 001)
Světla svítí, z žádného detektoru pohybu nebyl detekován žádný pohyb, takže orx musí být nízký a ms je zapnutý. Také na začátku tohoto stavu nastavený časovač říká, že odpočítávání fsm začne odpočítávat, pokračuje v odpočítávání a přestane odpočítávat, jakmile odpočítávání fsm řekne tomuto fsm, že je počítání hotové.
- Výstupy: světla = 1 a časovač = 1.
- Zůstává v tomto stavu, když ms = 1 a orx = 0 a td (časovač je hotový) = 0.
- Přejde do stavu „světla svítí, detekován pohyb“, pokud ms = 1 a orx = 1.
- Přejde do stavu „světla zhasnuta, nebyl detekován žádný pohyb“, pokud ms = 1 a orx = 0 a td = 1.
- Přejde do stavu „ručně zapnuto“, pokud ms = 0 a ns = 1.
- Přejde do stavu „ručně vypnuto“, pokud ms = 0 a ns = 0.
„Zhasnutá světla, nebyl detekován žádný pohyb“(id = 010)
Světla jsou vypnutá, žádný pohyb nebyl detekován žádným pohybovým senzorem a časovač skončil odpočítávání, takže orx musí být nízký, ms je zapnutý a td je vypnuté.
- Výstupy: světla = 0 a časovač = 0.
- Zůstává jako tento stav, když ms = 1 a orx = 0.
- Přejde do stavu „světla svítí, detekován pohyb“, pokud ms = 1 a orx = 1.
- Přejde do stavu „ručně zapnuto“, pokud ms = 0 a ns = 1.
- Přejde do stavu „ručně vypnuto“, pokud ms = 0 a ns = 0.
„Ručně zapnuto“(id = 011)
Kontrolky jsou zapnuté, detektory pohybu jsou irelevantní, takže ms je vypnutý a ns je zapnutý.
- Výstupy: světla = 1 a časovač = 0.
- Zůstává v tomto stavu, když ms = 0 a ns = 1.
- Přejde do stavu „ručně vypnuto“, pokud ms = 0 a ns = 0.
- Přejde do stavu „nesvítí, žádný pohyb nebyl detekován, pokud ms = 1.
„Ručně vypnuto“(id = 100)
Světla jsou vypnutá, detektory pohybu jsou irelevantní, takže ms je vypnutý a ns je vypnutý.
- Výstupy: světla = 0 a časovač = 0.
- Zůstává v tomto stavu, když ms = 0 a ns = 0.
- Přejde do stavu „ručně zapnuto“, pokud ms = 0 a ns = 1.
- Přejde do stavu „nesvítí, žádný pohyb nebyl detekován, pokud ms = 1.
Stavy čítače dolů:
„Seg 10“(id = 1010)
Sedmisegmentový displej zobrazuje 10.
- Výstupy: bin = “1010” a td = 0.
- Pokud časovač = 1, přejde do stavu „seg 9“.
- Pokud časovač = 0, přejde do stavu „prázdné 2“.
„Seg 9“(id = 1001)
Sedmisegmentový displej zobrazuje 9.
- Výstupy: bin = “1001” a td = 0.
- Pokud časovač = 1, přejde do stavu „seg 8“.
- Pokud časovač = 0, přejde do stavu „prázdné 2“.
(Stavy „Seg 8“až „Seg 2“jsou vynechány, protože sledují stejný vzorec jako „Seg 10“a „Seg 9“a nejsou nutné pro vysvětlení.)
„Seg 1“(id = 0001)
Sedmisegmentový displej zobrazuje 1.
- Výstupy: bin = „0001“a td = 0.
- Přejde na stav „prázdné 2“na další náběžné hraně hodin (není potřeba žádný vstup).
„Prázdné 2“(id = 1111)
Sedmisegmentový displej zobrazuje 0. Účel druhého prázdného stavu je, aby existoval samostatný stav, když td = 1 pro bezpečnost.
- Výstupy: bin = “1111” a td = 1.
- Přejde na stav „prázdný 1“na další stoupající hraně hodin (není potřeba žádný vstup).
„Prázdný 1“(id = 0000)
Sedmisegmentový displej zobrazuje 0. Toto je stav, ve kterém systém zůstává, když je hlavní stavový stroj ve stavu „zhasne, není detekován žádný pohyb“.
- Výstupy: bin = „0000“a td = 0.
- Pokud časovač = 1, přejde do stavu „seg 10“.
Krok 3: Stavové tabulky pravdy stroje, excitační rovnice a výstupní rovnice
Dalším krokem je vytvoření pravdivostních tabulek pro dva stavové automaty a excitační rovnice a výstupní rovnice pro každou fsm. Pro každou fsm excitační rovnici musí existovat rovnice pro každý další stav kódovaný bit z hlediska aktuálního stavu a jeho vstupních signálů. Pro každou výstupní rovnici fsm musí existovat rovnice pro každý výstupní signál z hlediska aktuálního stavu. Všechny čtyři sady rovnic lze čerpat z vyobrazených tabulek pravd. (qn je další kódovaný bit pro každý stavový stroj a q je aktuální stav)
(000) ekvivalent q (2) 'q (1)' q (0) 'a (0000) ekvivalent q (3)' q (2) 'q (1)' q (0) '
(např. (0101) je q (3) 'q (2) q (1)' q (0) a (110) je q (2) q (1) q (0) ')
Vzrušovací rovnice pro 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 pro hlavní fsm:
- světla = (000) + (001) + (100)
- časovač = (001)
Vzrušovací rovnice pro počítadlo dolů 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 pro počítadlo dolů fsm:
- td = (1111)
- přihrádka (3) = (1010) + (1001) + (1000) + (1111) + (0000)
- přihrádka (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
- přihrádka (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
- přihrádka (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)
Krok 4: Obálka, submoduly a omezení
Jak již bylo vysvětleno v kroku 1, tyto moduly jsou pro tento projekt potřeba a jsou svázány dohromady s modulem obálky s názvem „final_proj.vhd“. Soubor omezení s názvem „Basys3_Master.xdc“se používá k propojení všech vstupů a výstupů modulu wrapper s přepínači, sedmi segmentovými a I/O porty na desce Basys 3. Hlavní spínač by měl být přepínač na desce nejblíže straně, na které jsou vodiče, normální/ruční spínač je druhý nejbližší a tři spínače představující tři pohybová čidla jsou tři spínače bezprostředně vedle normálního/ručního spínače. Veškerý kód (booleovské rovnice, deklarace modulů atd.) Je již zapsán v souborech, takže nemusíte nic dalšího psát, aby to fungovalo.
Krok 5: I/O porty pro LED
Posledním krokem tohoto projektu je použití LED diody k zobrazení, zda se (světla) skutečně zapínají a vypínají. Zapojení je znázorněno na dvou obrázcích. Ujistěte se, že je v sérii odpor s LED diodou (alespoň 330 ohmů), aby se LED nespálila, a ujistěte se, že dlouhý kolík LED je připojen ke stejné zásuvce na základní desce, jak je zobrazen červený vodič (nahoře úplně vpravo) a kratší kolík je připojen k zemi, stejná zásuvka jako černý vodič (nahoře, druhý zleva).
Doporučuje:
Počitadlo kroků - mikro: bit: 12 kroků (s obrázky)
Počitadlo kroků - Micro: Bit: Tento projekt bude počítadlem kroků. K měření našich kroků použijeme snímač akcelerometru, který je zabudovaný v Micro: Bit. Pokaždé, když se Micro: Bit zatřese, přidáme 2 k počtu a zobrazíme ho na obrazovce
Akustická levitace s Arduino Uno krok za krokem (8 kroků): 8 kroků
Akustická levitace s Arduino Uno krok za krokem (8 kroků): Ultrazvukové měniče zvuku L298N Dc samice napájecí zdroj s mužským DC pinem Arduino UNOBreadboard Jak to funguje: Nejprve nahrajete kód do Arduino Uno (je to mikrokontrolér vybavený digitálním a analogové porty pro převod kódu (C ++)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): 6 kroků (s obrázky)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): Indukční nabíjení (známé také jako bezdrátové nabíjení nebo bezdrátové nabíjení) je druh bezdrátového přenosu energie. Využívá elektromagnetickou indukci k poskytování elektřiny přenosným zařízením. Nejběžnější aplikací je bezdrátové nabíjení Qi
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: 13 kroků (s obrázky)
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: Toto je návod, jak rozebrat počítač. Většina základních komponent je modulární a lze je snadno odstranit. Je však důležité, abyste o tom byli organizovaní. To vám pomůže zabránit ztrátě součástí a také při opětovné montáži
Banka přepínaného zatěžovacího odporu s menší velikostí kroku: 5 kroků
Banka přepínaného zatěžovacího odporu s menší velikostí kroku: Banky zatěžovacích odporů jsou vyžadovány pro testování energetických produktů, pro charakterizaci solárních panelů, v testovacích laboratořích a v průmyslových odvětvích. Reostaty zajišťují nepřetržité kolísání odporu zátěže. Jak se však hodnota odporu snižuje, výkon