Obsah:

Model univerzálneho vypínača: 10 krokov
Model univerzálneho vypínača: 10 krokov

Video: Model univerzálneho vypínača: 10 krokov

Video: Model univerzálneho vypínača: 10 krokov
Video: Aqara Z1 Canon - новая серия умных zigbee выключателей с расширенными функциями 2024, November
Anonim
Model univerzálneho vypínača
Model univerzálneho vypínača

Ste unavení kontrolovať, či sú vo vašom dome zhasnuté všetky svetlá, než idete spať? Prajete si, aby ste mohli bez problémov vypnúť každé svetlo naraz? Aby sme ušetrili energiu a čas, rozhodli sme sa vytvoriť systém, ktorý by teoreticky mohol vypnúť celý dom naraz.

Vytvorili sme dôkaz tohto konceptu pomocou niekoľkých diód LED a základnej dosky s 3 obvodmi a vytvorili sme dizajn, ktorý by deaktivoval všetky diódy LED stlačením tlačidla. Tento model by sa dal použiť aj na skutočný systém domáceho osvetlenia, aj keď by to vyžadovalo komplikovanejšie zapojenie a úpravy daných súborov VHDL.

Krok 1: Importujte dané súbory VHDL

Aby náš model fungoval správne, budete si musieť stiahnuť softvér, ktorý dáva pokynom k doske Basys 3.

Najprv si budete musieť stiahnuť syntetizačný nástroj na implementáciu súborov vhdl na hardvér. Ak si chcete byť istí, že celý kód bude úplne replikovať náš dizajn bez toho, aby ste museli vykonávať akékoľvek úpravy, odporúčame vám použiť Vivado 2016.2. Po inštalácii Vivado môžete vytvoriť projekt a stiahnuť naše zdrojové súbory. Pridajte ich ako zdroje do svojho projektu, nezabudnite tiež pridať súbor obmedzení!

Ďalej vysvetlíme, čo každý zo zdrojových súborov robí. Ak sa chcete dostať iba k fyzickej konštrukcii zariadenia, preskočte kroky 2 až 6.

Krok 2: Rozdelenie najvyššieho modulu VHDL

Rozdelenie najvyššieho modulu VHDL
Rozdelenie najvyššieho modulu VHDL
Rozdelenie najvyššieho modulu VHDL
Rozdelenie najvyššieho modulu VHDL

Špičkový modul projektu spája všetky jednotlivé moduly komponentov s použitým hardvérom. Ako vidíte, moduly killSwitch a buzzerControl sú definované ako komponenty na vrchu.

V spodnej časti je uvedené, ako sú tieto moduly navzájom prepojené. Pripojili sme štyri LED diódy k doske a spojili ich s modulmi killSwitch dev0 až dev3. Máme zadefinované štyri moduly killSwitch, pretože jeden potrebujeme na správu stavu každej pripojenej LED diódy. Každý z týchto modulov využíva hodinový a tlačidlový signál, ktorý sme vytvorili v definícii najvyššieho modulu, ako aj signály príslušných vstupných spínačov a výstupných zariadení.

Riadiaci modul bzučiaka v spodnej časti aktivuje bzučiak stlačením univerzálneho tlačidla vypnutia. Ako vidíte, do riadiaceho modulu bzučiaka vstupujú hodiny a tlačidlový signál. Je tiež odovzdaný výstupnému kolíku fyzického bzučiaka, aby sa zodpovedajúcim spôsobom ovládal.

Krok 3: Porucha modulu VHDL Kill Switch

Rozdelenie modulu VHDL Kill Switch
Rozdelenie modulu VHDL Kill Switch
Rozdelenie modulu VHDL Kill Switch
Rozdelenie modulu VHDL Kill Switch

Kill Switch je univerzálne vypínacie tlačidlo a modul sa zaoberá predovšetkým jeho prepojením s inými prvkami obvodu, takže po jeho stlačení zhasnú všetky svetlá.

Zatiaľ čo horný modul zvláda pripojenie fyzického hardvéru k softvéru, modul killSwitch zvláda hlavnú logiku každého zariadenia. Modul prijíma vstupy pre hodinový signál, univerzálne vypínacie tlačidlo a prepínač zariadenia. Na oplátku kontroluje stav kolíka zariadenia, ku ktorému je pripojený.

V sekcii architektúry kódu vidíme, že na ukladanie pamäte je závislý na module dFlipFlop. Môžete tiež vidieť, že sme deklarovali štyri signály, ktoré budú použité na pripojenie klopného obvodu a implementáciu našich logických príkazov. V behaviorálnej časti kódu sme vytvorili inštanciu modulu dFlipFlop a portom priradili naše signály I/O.

Odtiaľ hlavná časť našej logiky spočíva v hodnotách signálu pre invertState a isDevOn. Náš logický základ pre zariadenie je nasledujúci: „Pri každom stlačení vypínača sa svetlo zmení na stav zapnutia/vypnutia. Kedykoľvek stlačíte tlačidlo a LED dióda je práve zapnutá, dióda LED zmení svoj stav na vypnutý. Z týchto dvoch vyhlásení môžeme extrapolovať, že stav LED by mal byť XOR prepínača a nášho pamäťového prvku. Týmto spôsobom zmena v oboch smeroch invertuje LED. Toto je vidieť implementované v signáli isDevOn. Stav LED diódy pre pamäťový prvok je riadený naším signálom invertState. Ak dióda LED svieti a tlačidlo je stlačené, náš pamäťový prvok sa aktualizuje a obráti svoj stav. Tým sa tiež zmení stav LED diódy.

Krok 4: Porucha modulu VHDL Flip Flop

Rozdelenie modulu VHDL Flip Flop
Rozdelenie modulu VHDL Flip Flop

Jeden problém nášho návrhu bol fakt, že po použití vypínača možno bude potrebné dvakrát prepnúť svetlá, ktoré boli predtým zapnuté, aby sa vrátili do zapnutej polohy. To by bolo pre ľudí časom celkom nepohodlné. Túto nepríjemnosť sa nám podarilo obísť začlenením „Flip Flop“, obvodového prvku schopného uchovávať informácie, do nášho návrhu. Systém si teraz pamätá, či bol spínač svetiel predtým zapnutý, takže ak ho znova otočíte, zapne sa bez ohľadu na svoju počiatočnú polohu.

Kód VHDL používa príkazy if a else na vytvorenie Flip Flop ako komponentu v rámci nášho návrhu obvodu. Zaisťuje, že keď sa hodinový signál prepne z nízkeho do vysokého stavu, keď je žiarovka zapnutá a keď je stlačený vypínač, výstup žabky prepíše jeho vstup. Keď je vstup prepísaný, preklopný obvod sa obráti.

Krok 5: Porucha modulu VHDL Piezo bzučiak

Rozdelenie modulu VHDL Piezo bzučiak
Rozdelenie modulu VHDL Piezo bzučiak
Rozdelenie modulu VHDL Piezo bzučiak
Rozdelenie modulu VHDL Piezo bzučiak

Tento súbor je trochu nadbytočný, čo sa týka hardvérového dizajnu, ale je nevyhnutný pre bezproblémový chod najvyššieho modulu a súborov obmedzení. Ak sa rozhodnete nepoužívať bzučiak Piezo, stiahnite si tento súbor, ale nepripojte bzučiak k doske Basys 3.

Piezo bzučiak po stlačení vypínacieho tlačidla zaznie dvojhlasný tón, ktorý poskytne používateľovi zvukovú spätnú väzbu o tom, že bolo tlačidlo stlačené. Implementovali sme to behaviorálne do VHDL prostredníctvom série príkazov if v štruktúre procesu. Začali sme vytvorením celočíselnej hodnoty, aby sme sledovali, koľko zmien hodín nastalo. Hneď ako sa proces začne, program strávi prvú polovicu sekundy (0 až 50 miliónov hodín) vydaním poznámky A pri 440 hertzoch. To sa dosiahne obrátením signálu piezo bzučiaka každých párny časovačov 227272 hodín s modulovou funkciou. Toto číslo je výsledkom delenia hodinového signálu dosky (100 MHz) požadovanou frekvenciou (400 Hz). V priebehu druhej pol sekundy (50 až 100 miliónov hodín tiká) doska vydá notu F na 349,2 hertzov rovnakou metódou ako predtým. Po jednej sekunde program už inkrementuje premennú hodín a prestane vydávať čokoľvek z piezo bzučiaka. Opätovným stlačením tlačidla univerzálneho vypnutia sa toto číslo vynuluje na 0, čím sa spustí cyklus šumu.

Krok 6: Rozdelenie súboru obmedzení VHDL

Súbor obmedzení hovorí Vivado, aké zariadenia na doske Basys 3 používame. Vivado tiež poskytuje názvy, ktoré sme dali zariadeniam v našom kóde. Vivado potrebuje tieto informácie, aby vedel, ako prepojiť naše logické prvky s fyzickým hardvérom. Súbor obmedzení obsahuje veľké množstvo komentovaného (nepoužitého) kódu. Tieto riadky kódu odkazujú na zariadenia na doske, ktoré nepoužívame.

Zariadenia, ktoré používame, obsahujú na doske štyri vstupné prepínače označené V17, V16, W16 a W1. Používame tiež univerzálne vypínacie tlačidlo s označením U18. Výstupné piny pre naše štyri pripojené LED diódy sú JB4, JB10, JC4 a JC10. Pre náš piezzo bzučiak používame výstupný kolík JA9.

Ako sme uviedli v hornom prehľade modulov, ak chcete na dosku pridať ďalšie diódy LED alebo iné zariadenia, musíte zväčšiť rozsah signálov sw a dev, pridať ďalšie moduly killSwitch a prepojiť ich. Potom musíte tieto názvy premenných prepojiť s hardvérom zariadenia prostredníctvom súboru obmedzení. To sa dá dosiahnuť odkomentovaním (opätovným povolením) riadkov kódu priradených k pinom, ktoré chcete použiť, a potom pridaním názvu pridruženej premennej do horného modulu. Správnu syntax je možné skopírovať zo zariadení, ktoré používame. Názvy pinov, ktoré chcete použiť na doske, nájdete v referenčnej príručke Baasys 3 tu.

Krok 7: Konštrukcia základov 3

Konštrukcia základov 3
Konštrukcia základov 3
Konštrukcia základov 3
Konštrukcia základov 3

Budete musieť zapojiť svoje diódy LED do správnych vstupno -výstupných portov základní 3. Podľa dodaných obrázkov zistite, ktoré porty sú správne, pretože ak zapojíte diódu LED do nesprávneho portu, nerozsvieti sa. Ak ste sa rozhodli pripojiť piezo bzučiak, budete ho musieť tiež pripojiť k správnym I/O portom.

Keď je doska pripravená, zapojte ju do počítača pomocou kábla USB.

Krok 8: Implementácia súborov VHDL do základov 3

Implementácia súborov VHDL do základov 3
Implementácia súborov VHDL do základov 3
Implementácia súborov VHDL do základov 3
Implementácia súborov VHDL do základov 3

Teraz, keď je vaša doska pripravená a váš kód je hotový, môžete konečne zostaviť model.

Akonáhle budete mať svoj projekt vo Vivado nastavený, musíte kliknúť na tlačidlo „Generovať bitstream“, aby ste mohli skompilovať kód pred jeho nahraním na nástenku. Ak sa vám v tejto chvíli zobrazí chybové hlásenie, musíte znova skontrolovať, či sa váš kód presne zhoduje s naším. Keď hovorím presne, mám na mysli dokonca aj bodkočiarky alebo typy zátvoriek, ktoré sa používajú. Akonáhle bude váš bitový tok úspešne zapísaný, prejdite na správcu hardvéru v programe Vivado a kliknite na tlačidlo „Otvoriť cieľ“a potom bezprostredne potom kliknite na „Programovať zariadenie“. Vaša doska Basys 3 by teraz mala byť plne funkčná.

Krok 9: Použitie dosky Basys 3

Použitie dosky Basys 3
Použitie dosky Basys 3

Teraz, keď je doska Basys 3 v prevádzke a bola naprogramovaná tak, aby reprezentovala náš model, musíte vedieť, ako ju používať.

Každý zo štyroch prepínačov, ktoré sú najviac vpravo, ovláda jednu z diód LED, ich preklopením sa dióda LED zapne alebo vypne. Ak sa dióda LED neaktivuje, skontrolujte, či ste zapojený do správneho portu I/O a či je dióda LED v prvom rade funkčná.

Ak chcete vypnúť všetky diódy LED naraz, musíte stlačiť stredné tlačidlo v sérii piatich tlačidiel uvedených vyššie.

Krok 10: Ukážte sa

Tento model slúži ako úhľadná malá novinka, ktorú môžete predviesť pred svojimi priateľmi a rodinou. Teoreticky sa dá použiť aj na implementáciu univerzálneho vypínača do vášho domáceho elektrického systému, ak vymeníte diódy LED za vodiče vedúce k vašim svetlám. Aj keď je to možné, stále by sme proti tomu museli radiť. Ak sa pokúsite zapojiť kábel bez pomoci elektrikára, existuje pravdepodobnosť vážneho poškodenia vás alebo vášho domova.

Odporúča: