Taula de continguts:
- Pas 1: els elements essencials (no realment)
- Pas 2: el divisor de tensió
- Pas 3: Escala divisòria de tensió
- Pas 4: resum
Vídeo: Com llegir molts commutadors amb un pin MCU: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:18
Alguna vegada us heu perdut cap projecte (s) i el projecte continua creixent i creixent, alhora que hi afegiu més coses (en diem això un creaturisme insensible)? En un projecte recent, estava construint un mesurador de freqüència i vaig afegir un generador de senyal de cinc funcions / sintetitzador de freqüència. Aviat vaig acabar amb més commutadors dels que em quedaven pins disponibles, així que què hi ha de fer un home?
Tanmateix, aviat vaig tenir set commutadors més a la meva Funbox (sí, això és el que vaig anomenar el meu generador de funcions … Ja ho sé, no tinc creativitat) i aquí teniu un breu instructiu que us mostra com podeu fer el mateix. No requereix cap registre de desplaçament ni IC específics. De fet, tampoc no necessita un microcontrolador, si els semiconductors discrets són com es fa rodar. Aquí teniu una manera de llegir / gestionar diversos commutadors amb un sol pin al vostre AVR (o un altre microcontrolador … He sentit que hi ha altres microcontroladors a part dels AVR, però no m’ho imagino …).:)
Pas 1: els elements essencials (no realment)
Per aconseguir-ho, necessitareu uns quants components. Ajuda a tenir una multitud d’interruptors que heu de gestionar. També necessiteu algunes resistències i un microcontrolador que tingui ADC (conversió analògica a digital) o alguna altra manera que vulgueu indicar que hi havia un commutador activat i quin interruptor era.
Si volíeu, podríeu utilitzar un oscil·lador controlat per tensió per indicar-ho, potser amb algunes llums parpellejants o, alternativament, amb so. En aquest tema, faré veure que fem servir un AVR, però al vostre món podeu fingir el que us faci feliç. Enyoro Bob Ross.
Pas 2: el divisor de tensió
Bàsicament, la manera de fer-ho és mitjançant una tècnica i un circuit anomenat divisor de voltatge. Els divisors de tensió divideixen, com potser heu endevinat, la tensió V,, in,, per algun valor que determineu. Podeu dividir el voltatge amb diversos components, inclosos condensadors i inductors, però aquí ho faré amb la bona resistència. La idea El que estem fent és posar dos components en sèrie que causin, cadascun individualment, una caiguda de tensió a través del component. Mireu la primera imatge si no tinc sentit. Hi ha una diferència de potencial de 9V entre ferrocarril i ferrocarril. Entre 9V i 0V hi ha dues resistències en sèrie. Cadascun d’aquests experimentarà una caiguda de tensió a través de si mateix, depenent de la resistència, tal com recordeu probablement de V = IR. Si feu una mesura de tensió entre les dues resistències, obtindreu algun valor entre 9V i 0V, depenent de la quantitat de voltatge que hagi caigut a la primera resistència i de la quantitat que queda per caure sobre la segona resistència, abans de 0V. Hi ha una fórmula senzilla per calcular la caiguda de tensió en una resistència en aquesta situació i sembla així. Sigui la tensió sobre la resistència 1 (R1) V1 i la tensió sobre la resistència dos (R2) sigui V2. Com que ja no puc fer servir el format, mireu la imatge 2 a continuació per trobar la fórmula … Per tant, al nostre divisor resistiu, el voltatge de Vout es pot determinar mitjançant la nostra fórmula per a V2 (ja que farem referència a GND a 0V). Què té a veure això amb que es detectin un munt d’interruptors des d’un pin? Bé, passa pàgina i t’ho mostraré!
Pas 3: Escala divisòria de tensió
Ara suposem que tenim tots els nostres commutadors, potser sis, vuit o setze, tots connectats mitjançant resistències que actuen com un divisor de tensió, de manera que quan es modifica l’estat del pin del commutador, es llegeix el voltatge i es basa en el nivell de tensió. pot saber quin interruptor s’acaba d’activar. Mireu a continuació. A la imatge següent, he connectat dos blocs d’interruptors. El bloc més alt té dos commutadors i el bloc més alt té cinc commutadors. Podeu connectar els commutadors alternatius, momentanis, tàctils, etc. de la mateixa manera. L’important que cal tenir en compte és la resistència a la qual està connectat l’interruptor. En el meu exemple, gairebé he duplicat la resistència de la següent resistència per crear un buit de tensió que sigui fàcil de mesurar i que no confongui amb l’interruptor abans ni després. Si no us n’heu adonat abans, torneu a mirar i adoneu-vos que tornem al nostre vell amic, el divisor de tensió resistiva. La primera resistència, el 10k ohm, està connectada a 5V i la segona resistència, la resistència que determinarà Vfora per al pin SWITCH_ADC, està connectat a cada commutador i, per tant, cada commutador està associat a una tensió Vout particular que es pot llegir des del pin ADC connectat a SWITCH_ADC. A continuació, determineu el Vout esperat de cada commutador així
Vout = Vin * (R2 / (R1 + R2))
per canviar un:
Vout = 5V * (500 / (10000 + 500)) = 5 * 0,048 = 0,24V o 240 mV
per al commutador dos:
Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0,18 = 0,9V o ~ 900mV
i així successivament. No dubteu a substituir els vostres propis valors per R2 si només teniu a mà certes resistències … El més important aquí és mantenir un buit de tensió prou ampli entre els commutadors perquè guanyi qualsevol marge d'error a l'ADC. No us poseu la tensió que s’espera d’un commutador veí. He trobat que el més fàcil de fer és construir l’escala divisòria i posar un multímetre / voltímetre al pin ADC i prémer cada pin i veure quins valors obteniu. Haurien d’estar ben fixats en el que calculeu. Un cop tingueu tots els valors de tensió esperats de cada commutador amb una resistència concreta, podeu fer que la vostra MCU llegeixi el pin ADC i compareu-la amb els valors coneguts per determinar quin interruptor es va prémer. Per exemple, suposem que heu registrat una rutina de servei d'interrupció que es cridarà cada vegada que es detecti un canvi al pin ADC. Dins d’aquesta ISR, podeu llegir l’ADC i comparar aquest valor amb la vostra taula de commutadors. Si utilitzeu un valor ADC de 8 bits, el voltatge es convertirà en un número entre 0 i 255 que correspongui a un voltatge entre 0V i 5V. Això suposa que el vostre ADC està configurat d'aquesta manera.
Pas 4: resum
Per tant, ara hauríeu de saber com ser frugals en utilitzar pins GPIO per als commutadors. Sempre que us queden pocs pins GPIO, o gairebé no en teniu cap, o si us adoneu que faràs servir un banc d’interruptors, el divisor resistiu és el camí a seguir per guardar els teus pins GPIO mentre encara proporciona un robust mecanisme per detectar l'accés dels commutadors.
Recomanat:
Teclat USB universal amb commutadors RGB: 6 passos
Teclat USB universal amb commutadors RGB: en aquest instructiu us mostraré com construir el vostre propi teclat USB personalitzat que es comporta com un teclat ordinador normal. Podeu assignar qualsevol combinació de tecles o seqüència de tecles a prémer mentre premeu només un polsador. Podeu utilitzar-lo
Com llegir diversos valors analògics mitjançant un pin analògic: 6 passos (amb imatges)
Com llegir diversos valors analògics mitjançant un pin analògic: en aquest tutorial, us mostraré com llegir diversos valors analògics amb només un pin d’entrada analògic
Versàtil E / S Extender PCB per controlar molts tubs Nixie amb I2C: 9 passos (amb imatges)
Versàtil E / S Extender PCB per controlar molts tubs Nixie amb I2C: actualment hi ha molt interès en donar vida als tubs nixie vintage. Hi ha disponibles al mercat molts kits de rellotges de tub nixie. Semblava que hi havia fins i tot un comerç animat amb velles existències de tubs russos de nixie. També aquí a Instructables allà
Més de 100 commutadors en un sol pin d'Arduino: 6 passos (amb imatges)
Més de 100 commutadors en un sol pin d'Arduino: Introducció Us heu quedat sense pins d'entrada? No us preocupeu, aquí teniu una solució sense cap registre de torns. En aquest vídeo, aprendrem a connectar més de 100 commutadors a un sol pin d'Arduino
Controla molts servos amb Arduino !: 4 passos (amb imatges)
Controla molts servoes amb Arduino !: Al principi, hauria de dir alguna cosa. No tenia belles imatges. Per tant, he pres les fotos de bildr.blog. Sabem, un Arduino UNO no té molts pins pwm per controlar molts servos. Per tant, sovint ens trobem en un problema per controlar més servoes per un arduino