Inhoudsopgave:

Model van een universele uit-schakelaar: 10 stappen
Model van een universele uit-schakelaar: 10 stappen

Video: Model van een universele uit-schakelaar: 10 stappen

Video: Model van een universele uit-schakelaar: 10 stappen
Video: Hoe installeer ik een Niko enkelpolige schakelaar? 2024, Juli-
Anonim
Model van een universele uit-schakelaar
Model van een universele uit-schakelaar

Ben je het zat om te controleren of alle lichten in je huis uit zijn voordat je gaat slapen? Zou je willen dat je alle lampen in één keer uit kon doen zonder gedoe? Om energie en tijd te besparen, hebben we besloten een systeem te maken dat in theorie een heel huis in één keer zou kunnen afsluiten.

We hebben een bewijs van dit concept gemodelleerd met behulp van een paar LED's en een basys 3-printplaat, en een ontwerp gemaakt dat alle LED's met een druk op de knop zou uitschakelen. Dit model zou ook kunnen worden toegepast op een echt huisverlichtingssysteem, hoewel het meer gecompliceerde bedrading en aanpassingen aan de gegeven VHDL-bestanden zou vereisen.

Stap 1: Importeer de gegeven VHDL-bestanden

Om ons model correct te laten werken, moet u de software downloaden die het Basys 3-bord instructies geeft.

Eerst moet u een synthesetool downloaden voor het implementeren van vhdl-bestanden naar hardware. Als u er zeker van wilt zijn dat alle code ons ontwerp volledig zal repliceren zonder dat er wijzigingen nodig zijn, raden we u aan Vivado 2016.2 te gebruiken. Nadat je Vivado hebt geïnstalleerd, kun je een project maken en onze bronbestanden downloaden. Voeg ze als bronnen toe aan je project, vergeet niet om ook het bestand met beperkingen toe te voegen!

Vervolgens zullen we uitleggen wat elk van de bronbestanden doet. Sla stap 2 tot en met 6 over als u alleen naar de fysieke constructie van het apparaat wilt gaan.

Stap 2: Uitsplitsing van de VHDL-topmodule

Uitsplitsing van VHDL-topmodule
Uitsplitsing van VHDL-topmodule
Uitsplitsing van VHDL-topmodule
Uitsplitsing van VHDL-topmodule

De bovenste module van het project verbindt alle afzonderlijke componentmodules met de gebruikte hardware. Zoals je kunt zien, hebben we de modules killSwitch en buzzerControl als componenten bovenaan gedefinieerd.

In het onderste gedeelte wordt aangegeven hoe deze modules met elkaar worden verbonden. We hebben vier LED's op het bord aangesloten en gekoppeld aan de killSwitch-modules dev0 tot en met dev3. We hebben vier killSwitch-modules gedefinieerd omdat we er een nodig hebben om de status van elke aangesloten LED te beheren. Elk van deze modules maakt gebruik van het klok- en knopsignaal dat we in de bovenste moduledefinitie hebben gemaakt, evenals hun respectieve ingangsschakelaar- en uitgangsapparaatsignalen.

De zoemerbedieningsmodule aan de onderkant activeert de zoemer wanneer de universele uit-knop wordt ingedrukt. Zoals u kunt zien, wordt de zoemerbesturingsmodule het klok- en knopsignaal doorgegeven als ingangen. Het wordt ook doorgegeven aan de fysieke zoemeruitgangspin om het dienovereenkomstig te regelen.

Stap 3: Uitsplitsing van VHDL Kill Switch-module

Uitsplitsing van VHDL Kill Switch-module
Uitsplitsing van VHDL Kill Switch-module
Uitsplitsing van VHDL Kill Switch-module
Uitsplitsing van VHDL Kill Switch-module

De Kill Switch is de universele uit-knop en de module houdt zich voornamelijk bezig met het verbinden met andere circuitelementen, zodat wanneer erop wordt gedrukt alle lichten uitgaan.

Terwijl de bovenste module zorgt voor het verbinden van fysieke hardware met software, verwerkt de killSwitch-module de hoofdlogica van elk apparaat. De module neemt ingangen op voor het kloksignaal, de universele uit-knop en de tuimelschakelaar van het apparaat. In ruil daarvoor regelt het de status van de apparaatpin waarmee het is verbonden.

In het architectuurgedeelte van de code zien we dat deze afhankelijk is van de dFlipFlop-module om geheugen op te slaan. Je kunt ook zien dat we vier signalen hebben gedeclareerd die zullen worden gebruikt om de flip-flop aan te sluiten en om onze logische uitspraken te implementeren. Binnen het gedragsgedeelte van de code hebben we een instantie van de dFlipFlop-module gemaakt en onze I/O-signalen aan de poorten toegewezen.

Vanaf hier ligt het grootste deel van onze logica in de signaalwaarden voor invertState en isDevOn. Onze logische basis voor het apparaat is als volgt: "Elke keer dat de schakelaar wordt ingedrukt, keert het licht de aan / uit-status om. Elke keer dat de knop wordt ingedrukt en de LED is momenteel aan, zal de LED zijn status omkeren naar uit. " Uit deze twee uitspraken kunnen we extrapoleren dat de status van de LED de XOR van de schakelaar en ons geheugenelement moet zijn. Op die manier keert een verandering in een van beide de LED om. Dit kan worden geïmplementeerd in het isDevOn-signaal. De LED-aan-conditie voor het geheugenelement wordt afgehandeld door ons invertState-signaal. Als de LED aan is en de knop wordt ingedrukt, zal ons geheugenelement de status bijwerken en omkeren. Dit keert dan ook de status van de LED om.

Stap 4: Uitsplitsing van de VHDL Flip Flop-module

Uitsplitsing van VHDL Flip Flop-module
Uitsplitsing van VHDL Flip Flop-module

Een probleem met ons ontwerp was het feit dat na het gebruik van de uit-schakelaar, lichten die eerder aan waren mogelijk twee keer moesten worden omgedraaid om terug te keren naar de aan-positie. Dit zou op den duur voor veel ongemak zorgen voor mensen. We zijn erin geslaagd om dit ongemak te omzeilen door een "Flip Flop", een circuitelement dat informatie kan opslaan, in ons ontwerp op te nemen. Nu onthoudt het systeem of een lichtschakelaar eerder aan was, zodat als het weer wordt omgedraaid, het wordt ingeschakeld, ongeacht de oorspronkelijke positie.

De VHDL-code gebruikt if en else-statements om de Flip Flop als onderdeel van ons circuitontwerp te maken. Het zorgt ervoor dat wanneer het kloksignaal van een lage naar een hoge toestand overgaat, wanneer de gloeilamp aan is en wanneer de uit-schakelaar wordt ingedrukt, de uitgang van de flip-flops zijn ingang overschrijft. Wanneer de invoer wordt overschreven, wordt de flip-flop omgekeerd.

Stap 5: Uitsplitsing van de VHDL piëzo-zoemermodule

Uitsplitsing van VHDL piëzo-zoemermodule
Uitsplitsing van VHDL piëzo-zoemermodule
Uitsplitsing van VHDL piëzo-zoemermodule
Uitsplitsing van VHDL piëzo-zoemermodule

Dit bestand is een beetje overbodig wat betreft het hardware-ontwerp, maar het is essentieel om de topmodule en constraints-bestanden soepel te laten verlopen. Als u ervoor kiest om de Piezo-zoemer niet te gebruiken, download dan dit bestand, maar bevestig de zoemer niet aan het Basys 3-bord.

De piëzo-zoemer zal, bij het indrukken van de uitschakelknop, een toon van twee noten spelen die de gebruiker een auditieve feedback geeft dat de knop is ingedrukt. We hebben dit gedragsmatig geïmplementeerd in VHDL via een reeks if-statements in een processtructuur. We zijn begonnen met het maken van een geheel getal om bij te houden hoeveel klokwisselingen er zijn opgetreden. Zodra het proces begint, besteedt het programma de eerste halve seconde (0 tot 50 miljoen kloktikken) aan het uitvoeren van een A-noot op 440 hertz. Dit wordt bereikt door het piëzo-zoemersignaal elk even veelvoud van 227272 kloktikken om te keren met een modulo-functie. Dit getal is het resultaat van het delen van het kloksignaal van het bord (100 MHz) door de gewenste frequentie (400 Hz). Tijdens de tweede halve seconde (50 tot 100 miljoen kloktikken) voert het bord een F-noot uit op 349,2 hertz via dezelfde methode als voorheen. Na één seconde verhoogt het programma de klokvariabele niet verder en stopt met het uitvoeren van iets van de piëzo-zoemer. Door nogmaals op de universele uit-knop te drukken, wordt dit nummer teruggezet naar 0 en wordt de ruiscyclus opnieuw gestart.

Stap 6: Uitsplitsing van VHDL-beperkingenbestand

Het bestand met beperkingen vertelt Vivado welke apparaten op het Basys 3-bord we gebruiken. Het geeft Vivado ook de namen die we in onze code aan de apparaten hebben gegeven. Vivado heeft deze informatie nodig om onze logische elementen te verbinden met de fysieke hardware. Het bestand met beperkingen bevat een grote hoeveelheid uitgecommentarieerde (ongebruikte) code. Deze coderegels verwijzen naar de apparaten op het bord die we niet gebruiken.

De apparaten die we gebruiken, bevatten vier ingangsschakelaars met het label V17, V16, W16 en W1 op het bord. We gebruiken ook de universele uit-knop, gelabeld U18. De uitgangspinnen voor onze vier aangesloten LED's zijn JB4, JB10, JC4 en JC10. Voor onze piëzzo-zoemer gebruiken we uitgangspen JA9.

Zoals we in de uitsplitsing van de bovenste module hebben vermeld, moet je, als je extra LED's of andere apparaten aan het bord wilt toevoegen, de reikwijdte van de sw- en dev-signalen vergroten, meer killSwitch-modules toevoegen en ze met elkaar verbinden. Vervolgens moet u die variabelenamen via het beperkingenbestand aan de apparaathardware koppelen. Dit kan worden gedaan door de coderegels die zijn gekoppeld aan de pinnen die u wilt gebruiken, te verwijderen (opnieuw inschakelen) en vervolgens de naam van de bijbehorende variabele toe te voegen aan de bovenste module. De juiste syntaxis hiervoor kan worden gekopieerd van de apparaten die we gebruiken. Raadpleeg de Baasys 3-naslaggids hier om de namen te vinden van de pinnen die u op het bord wilt gebruiken.

Stap 7: De Basys 3. construeren

De Basys 3. bouwen
De Basys 3. bouwen
De Basys 3. bouwen
De Basys 3. bouwen

U moet uw LED's aansluiten op de juiste I/O-poorten van de Basys 3. Volg de meegeleverde afbeeldingen om te bepalen wat de juiste poorten zijn, want als u een LED in de verkeerde poort steekt, zal deze niet oplichten. Als je ervoor hebt gekozen om de piëzo-buzzer aan te sluiten, moet je deze ook op de juiste I/O-poorten aansluiten.

Als het bord klaar is, sluit je het via een USB-kabel aan op je computer.

Stap 8: VHDL-bestanden implementeren in Basys 3

VHDL-bestanden implementeren in Basys 3
VHDL-bestanden implementeren in Basys 3
VHDL-bestanden implementeren in Basys 3
VHDL-bestanden implementeren in Basys 3

Nu je bord klaar is en je code klaar is, kun je het model eindelijk in elkaar zetten.

Zodra u uw project in Vivado hebt ingesteld, moet u op de knop "Bitstream genereren" klikken om de code te compileren voordat deze naar het bord wordt geüpload. Als u op dit moment een foutmelding krijgt, moet u controleren of uw code exact overeenkomt met de onze. Als ik het precies zeg, bedoel ik zelfs de puntkomma's of de soorten haakjes die worden gebruikt. Zodra uw bitstream met succes is geschreven, gaat u naar de hardwaremanager binnen Vivado en klikt u op de knop "Doel openen" en vervolgens onmiddellijk daarna op "Programmaapparaat". Uw Basys 3-bord zou nu volledig functioneel moeten zijn.

Stap 9: Het Basys 3-bord gebruiken

Het Basys 3-bord gebruiken
Het Basys 3-bord gebruiken

Nu het Basys 3-bord operationeel is en is geprogrammeerd om ons model te vertegenwoordigen, moet u weten hoe u het moet gebruiken.

Elk van de vier meest rechtse schakelaars bedient een van de LED's. Als u ze aanraakt, gaat de LED aan of uit. Als de LED niet wordt geactiveerd, controleer dan of u op de juiste I/O-poort bent aangesloten en of uw LED in de eerste plaats functioneel is.

Als u alle LED's in één keer wilt uitschakelen, moet u op de middelste knop drukken in de reeks van vijf knoppen die hierboven wordt weergegeven.

Stap 10: Pronk

Het model dient als een leuke kleine nieuwigheid die je kunt demonstreren voor je vrienden en familie. Het kan in theorie ook worden gebruikt om de universele uit-schakelaar in het elektrische systeem van uw huis te implementeren, als u de LED's vervangt door draden die naar uw verlichting leiden. Hoewel het mogelijk is, zouden we het toch moeten afraden. U kunt uzelf of uw huis ernstig schaden als u probeert opnieuw te bedraden zonder de hulp van een elektricien.

Aanbevolen: