Taula de continguts:

Model d’un interruptor universal d’apagat: 10 passos
Model d’un interruptor universal d’apagat: 10 passos

Vídeo: Model d’un interruptor universal d’apagat: 10 passos

Vídeo: Model d’un interruptor universal d’apagat: 10 passos
Vídeo: ATS , Automatic transfer switch 2 Pole 63A ,Analog generator 2024, Juny
Anonim
Model d’un interruptor universal d’apagat
Model d’un interruptor universal d’apagat

Estàs fart de comprovar que tots els llums de casa estan apagats abans d'anar a dormir? Voleu apagar tots els llums alhora sense cap mena de por? Per tal d’estalviar energia i temps, vam decidir crear un sistema que teòricament pogués tancar tota una casa alhora.

Hem modelat una prova d’aquest concepte mitjançant un parell de LEDs i una placa de circuit basys 3, i hem creat un disseny que desactivaria tots els LED amb només prémer un botó. Aquest model també es podria aplicar a un sistema d’il·luminació real, tot i que requeriria un cablejat més complicat i modificacions als fitxers VHDL donats.

Pas 1: importeu els fitxers VHDL indicats

Perquè el nostre model funcioni correctament, haureu de descarregar el programari que proporciona les instruccions a la placa Basys 3.

Primer haureu de descarregar una eina de síntesi per implementar fitxers vhdl al maquinari. Si voleu estar segurs que tot el codi replicarà completament el nostre disseny sense necessitat de fer cap modificació, us recomanem que utilitzeu Vivado 2016.2. Després d'haver instal·lat Vivado, podeu crear un projecte i descarregar els nostres fitxers font. Afegiu-los com a fonts al vostre projecte, no oblideu afegir també el fitxer de restriccions.

A continuació, explicarem què fa cadascun dels fitxers font. Omet els passos del 2 al 6 si només vols arribar a la construcció física del dispositiu.

Pas 2: desglossament del mòdul superior VHDL

Desglossament del mòdul superior VHDL
Desglossament del mòdul superior VHDL
Desglossament del mòdul superior VHDL
Desglossament del mòdul superior VHDL

El mòdul superior del projecte és el que connecta tots els mòduls de components individuals al maquinari utilitzat. Com podeu veure, tenim els mòduls killSwitch i buzzerControl definits com a components a la part superior.

La secció inferior especifica com es connecten aquests mòduls. Hem connectat quatre LED a la placa i els hem associat amb els mòduls killSwitch dev0 a dev3. Tenim quatre mòduls killSwitch definits perquè en necessitem un per gestionar l’estat de cada LED connectat. Cadascun d'aquests mòduls utilitza el senyal de rellotge i botó que hem creat a la definició del mòdul superior, així com els seus respectius senyals de commutador d'entrada i dispositiu de sortida.

El mòdul de control del timbre de la part inferior activa el timbre quan es prem el botó universal de desactivació. Com podeu veure, el mòdul de control del brunzidor passa el senyal del rellotge i del botó com a entrades. També es passa el pin de sortida del brunzidor físic per controlar-lo en conseqüència.

Pas 3: desglossament del mòdul de commutació de mort VHDL

Desglossament del mòdul VHDL Kill Switch
Desglossament del mòdul VHDL Kill Switch
Desglossament del mòdul VHDL Kill Switch
Desglossament del mòdul VHDL Kill Switch

El Kill Switch és el botó universal d’apagat i el mòdul s’ocupa principalment de connectar-lo a altres elements del circuit, de manera que quan es prem tots els llums s’apagaran.

Mentre que el mòdul superior s’encarrega de connectar el maquinari físic al programari, el mòdul killSwitch gestiona la lògica principal de cada dispositiu. El mòdul inclou entrades per al senyal del rellotge, el botó universal d’apagat i el commutador de commutació del dispositiu. A canvi, controla l'estat del pin del dispositiu al qual està connectat.

A la secció d'arquitectura del codi veiem que té una dependència del mòdul dFlipFlop per emmagatzemar memòria. També podeu veure que hem declarat quatre senyals que s’utilitzaran per connectar el xanclet i implementar les nostres afirmacions lògiques. Dins de la secció de comportament del codi, hem creat una instància del mòdul dFlipFlop i hem assignat els nostres senyals d'E / S als ports.

A partir d’aquí, la part principal de la nostra lògica rau en els valors del senyal per a invertState i isDevOn. La nostra base lògica per al dispositiu és la següent: "Cada vegada que es llança l'interruptor, la llum invertirà l'estat d'encès / apagat. Cada vegada que es prem el botó i el LED està encesa, el LED invertirà el seu estat a off. " A partir d’aquestes dues afirmacions, podem extrapolar que l’estat del LED ha de ser el XOR del commutador i el nostre element de memòria. D’aquesta manera, un canvi en qualsevol dels dos inverteix el LED. Això es pot veure implementat al senyal isDevOn. El LED d’encesa de l’element de memòria el gestiona el nostre senyal invertState. Si el LED està encès i es prem el botó, el nostre element de memòria s'actualitzarà i invertirà el seu estat. Aleshores, això també inverteix l'estat del LED.

Pas 4: Desglossament del mòdul Flip Flop VHDL

Desglossament del mòdul Flip Flop VHDL
Desglossament del mòdul Flip Flop VHDL

Un problema amb el nostre disseny va ser el fet que, després d’utilitzar l’interruptor d’apagat, és possible que s’haguessin d’invertir dues vegades els llums que estaven encesos per tornar a la posició d’encès. Aquest seria un inconvenient per a la gent amb el pas del temps. Hem aconseguit evitar aquest inconvenient incloent un "Flip Flop", un element de circuit capaç d'emmagatzemar informació al nostre disseny. Ara, el sistema recorda si anteriorment hi havia un interruptor de llum encès, de manera que si es torna a activar s’encén independentment de la seva posició inicial.

El codi VHDL utilitza sentències if i else per crear el Flip Flop com a component dins del disseny del nostre circuit. Assegura que quan el senyal del rellotge passa d’un estat baix a un alt, quan la bombeta està encesa i quan es prem l’interruptor d’apagat, la sortida de xancles sobreescriu la seva entrada. Quan se sobreescriu l'entrada, el xanclet s'inverteix.

Pas 5: Desglossament del mòdul VHDL Piezo Buzzer

Desglossament del mòdul VHDL Piezo Buzzer
Desglossament del mòdul VHDL Piezo Buzzer
Desglossament del mòdul VHDL Piezo Buzzer
Desglossament del mòdul VHDL Piezo Buzzer

Aquest fitxer és una mica superflu pel que fa al disseny de maquinari, però és essencial per fer que el fitxer de mòdul superior i de restriccions funcioni sense problemes. Si decidiu no utilitzar el brunzidor Piezo, descarregueu aquest fitxer, però no el connecteu al tauler Basys 3.

El brunzidor piezoelèctric, en prémer el botó de desactivació, reproduirà un to de dues notes que proporcionarà a l’usuari la retroalimentació auditiva que ha fet prémer el botó. Ho vam implementar de manera conductual a VHDL mitjançant una sèrie d’instruccions if en una estructura de procés. Vam començar creant un valor enter per fer un seguiment de quants canvis de rellotge s’han produït. Una vegada que comença el procés, el programa passa la primera meitat de segon (de 0 a 50 milions de paparres de rellotge) publicant una nota A a 440 Hz. Això s'aconsegueix invertint el senyal del brunzidor piezoelèctric cada múltiple parell de 227272 paparres de rellotge amb una funció de mòdul. Aquest número és el resultat de dividir el senyal de rellotge de la placa (100 MHz) per la freqüència desitjada (400 Hz). Durant la segona meitat de segon (de 50 a 100 milions de ticks de rellotge), la placa emet una nota F a 349,2 Hz segons el mateix mètode que abans. Al cap d’un segon, el programa no incrementa més la variable de rellotge i deixa de publicar qualsevol cosa del brunzidor piezoelèctric. Si torneu a prémer el botó universal de desactivació, aquest número es restablirà a 0 i reiniciarà el cicle de soroll.

Pas 6: desglossament del fitxer de restriccions VHDL

El fitxer de restriccions indica a Vivado quins dispositius de la placa Basys 3 estem utilitzant. També proporciona a Vivado els noms que hem donat als dispositius del nostre codi. Vivado necessita aquesta informació perquè sàpiga connectar els nostres elements lògics al maquinari físic. El fitxer de restriccions inclou una gran quantitat de codi comentat (no utilitzat). Aquestes línies de codi fan referència als dispositius del tauler que no estem utilitzant.

Els dispositius que fem servir inclouen quatre commutadors d’entrada etiquetats V17, V16, W16 i W1 a la placa. També fem servir el botó universal d’apagat, anomenat U18. Els pins de sortida dels nostres quatre LED connectats són JB4, JB10, JC4 i JC10. Per al nostre brunzidor piezzo estem utilitzant el pin de sortida JA9.

Com hem indicat a la distribució del mòdul superior, si voleu afegir LEDs addicionals o altres dispositius a la placa, heu d’augmentar l’abast dels senyals sw i dev, afegir més mòduls killSwitch i connectar-los. A continuació, haureu d'enllaçar aquests noms de variables al maquinari del dispositiu mitjançant el fitxer de restriccions. Això es pot fer descomentant (reactivant) les línies de codi associades als pins que voleu utilitzar i afegint el nom de la variable associada al mòdul superior. La sintaxi adequada per a això es pot copiar des dels dispositius que estem utilitzant. Per esbrinar els noms dels pins que voleu utilitzar al tauler, consulteu la guia de referència Baasys 3 aquí.

Pas 7: Construir les bases 3

Construint els fonaments 3
Construint els fonaments 3
Construint els fonaments 3
Construint els fonaments 3

Haureu d'endollar els LED als ports d'E / S correctes de Basys 3. Seguiu les imatges proporcionades per determinar quins són els ports correctes, ja que si connecteu un LED al port equivocat no s'encendrà. Si heu escollit connectar el brunzidor piezoelèctric, també haureu de connectar-lo als ports d'E / S correctes.

Quan la placa estigui llesta, connecteu-la a l'ordinador mitjançant un cable USB.

Pas 8: Implementació de fitxers VHDL a Basys 3

Implementació de fitxers VHDL a Basys 3
Implementació de fitxers VHDL a Basys 3
Implementació de fitxers VHDL a Basys 3
Implementació de fitxers VHDL a Basys 3

Ara que el vostre tauler està llest i el vostre codi està acabat, podeu muntar el model.

Un cop hàgiu configurat el vostre projecte a Vivado, heu de fer clic al botó "Genera Bitstream" per tal de compilar el codi abans de penjar-lo al tauler. Si rebeu un missatge d'error en aquest moment, heu de comprovar que el vostre codi coincideixi exactament amb el nostre. Quan dic exactament, em refereixo fins i tot als punts i punts o als tipus de parèntesis que s’utilitzen. Un cop s'ha escrit el flux de bits amb èxit, aneu al gestor de maquinari de Vivado i feu clic al botó "Obre la destinació" i, a continuació, feu clic a "Programa dispositiu" immediatament després. El tauler Basys 3 ara hauria de ser completament funcional.

Pas 9: utilitzar el tauler Basys 3

Utilització del tauler Basys 3
Utilització del tauler Basys 3

Ara que el Basys 3 Board està operatiu i s’ha programat per representar el nostre model, heu de saber utilitzar-lo.

Cadascun dels quatre commutadors que es troben més a la dreta controla un dels LED, fent-los passar el LED s'encén o s'apaga. Si el LED no s'activa, comproveu que esteu connectat al port d'E / S correcte i que el LED sigui funcional en primer lloc.

Quan vulgueu desactivar tots els LED alhora, heu de prémer el botó central del conjunt de cinc botons que es mostren a la part superior.

Pas 10: Presenteu-vos

El model és una petita novetat que podeu demostrar davant dels vostres amics i familiars. Teòricament també es pot utilitzar per implementar l’interruptor universal d’apagat al vostre sistema elèctric de casa, si substituïu els LED per cables que condueixen a les vostres llums. Tot i que és possible, hauríem de desaconsellar-ho. Hi ha possibles danys greus a si mateix o a casa seva si s’intenta tornar a connectar sense l’ajut d’un electricista.

Recomanat: