Taula de continguts:

Com llegir molts commutadors amb un pin MCU: 4 passos
Com llegir molts commutadors amb un pin MCU: 4 passos

Vídeo: Com llegir molts commutadors amb un pin MCU: 4 passos

Vídeo: Com llegir molts commutadors amb un pin MCU: 4 passos
Vídeo: SKR 1.4 - TMC2208 UART v3.0 2024, Juny
Anonim
Com llegir molts commutadors amb un pin MCU
Com llegir molts commutadors amb un pin MCU

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ó

El divisor de tensió
El divisor de tensió
El divisor de tensió
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ó

Escala divisòria de tensió
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: