Taula de continguts:
- Pas 1: maquinari obligatori
- Pas 2: explicació del mètode de commutació múltiple
- Pas 3: full de càlcul del comparador
- Pas 4: toqueu una melodia
Vídeo: Selector de sintonització DIP amb 1 pin: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Fa un temps vaig treballar en un projecte de "caixa de música" que necessitava triar entre fins a 10 fragments de melodia diferents. Una opció natural per escollir una melodia específica era un interruptor dip de 4 pins, ja que 4 interruptors en proporcionen 24= 16 paràmetres diferents. Tot i això, la implementació de la força bruta per a aquest enfocament requereix 4 pins de dispositiu, un per a cada commutador. Com que tenia previst utilitzar l'ATtiny85 per al desenvolupament, la pèrdua de 4 pins era una mica excessiva. Afortunadament, em vaig trobar amb un article que descrivia un mètode enginyós per utilitzar 1 pin analògic per manejar diverses entrades de commutador.
La tècnica multi-switch; 1 entrada utilitza un circuit divisor de tensió per proporcionar un valor enter únic per a cadascuna de les 16 possibles combinacions de configuració de commutadors. Aquest conjunt de 16 identificadors enters s'utilitza al programa d'aplicació per associar una acció a un paràmetre.
Aquesta instrucció utilitza el mètode de commutació múltiple per implementar la selecció de melodies per a l'aplicació de caixa de música. A continuació, la melodia seleccionada es reprodueix mitjançant un brunzidor piezoelèctric mitjançant la funció de to Arduino.
Pas 1: maquinari obligatori
L’ús de l’ONU com a plataforma d’implementació minimitza el nombre de components de maquinari necessaris. La implementació del mètode d’entrada de commutadors múltiples requereix només un commutador dip de 4 pins, les 5 resistències que s’utilitzen per al divisor de tensió i un cable de connexió per a les connexions. A la configuració s’afegeix un brunzidor piezoelèctric per a la implementació del selector de cançons de música. Opcionalment, en funció del tipus d’interruptor dip utilitzat, és útil utilitzar un endoll de 2x4 de 8 pins per connectar l’interruptor dip a la placa de control, ja que els passadors estàndard del commutador de dipòsit semblen fabricats per soldar a una placa de perfils que no es connecten directament a una placa de control. El sòcol estabilitza les connexions del commutador dip i evita que es pugui aixecar fàcilment quan es col·loquen els commutadors.
Nom | Possible font | Com s'utilitza |
---|---|---|
Interruptor dip de 4 pins | Selecció de sintonització | |
Presa de 2x4 pins (opcional) | Amazon | Les publicacions de la majoria dels interruptors dip no mantenen l'interruptor molt bé en una taula de proves. Un sòcol ajuda a fer la connexió més sòlida. Una alternativa és trobar un commutador dip que estigui realment dissenyat per a ús de taulers amb pins clàssics IC. |
resistències:
|
Implementeu el divisor de tensió | |
timbre piezoelèctric passiu | Amazon | Reproduïu la melodia segons l’aplicació mitjançant la funció de to Arduino |
Pas 2: explicació del mètode de commutació múltiple
En aquesta secció es discuteixen els conceptes subjacents per al mètode de commutació múltiple i es desenvolupen les equacions necessàries per al càlcul autònom d’identificadors únics per a cadascuna de les 16 configuracions possibles de configuració del commutador de dip. Aquests identificadors es poden utilitzar en un programa d'aplicació per associar una configuració de commutador a una acció. Per exemple, és possible que vulgueu que el paràmetre: encendre 1, apagar 2, apagar 3, apagar 4 (1, 0, 0, 0) - per jugar a Amazing Grace i (0, 1, 0, 0) per jugar Lleó dorm aquesta nit. Per brevetat i concisió, els identificadors de configuració es denominen comparadors a la resta del document.
El concepte fonamental per al mètode de commutació múltiple és el circuit divisor de tensió que consta de 2 resistències en sèrie connectades a una tensió d’entrada. El cable de tensió de sortida està connectat entre les resistències, R1 i R2, com es mostra més amunt. El voltatge de sortida del divisor es calcula com la tensió d’entrada multiplicada per la proporció de la resistència R2 a la suma de R1 i R2 (equació 1). Aquesta relació sempre és inferior a 1, de manera que el voltatge de sortida és sempre menor que el voltatge d’entrada.
Tal com s’indica al diagrama de disseny anterior, el commutador múltiple es configura com un divisor de tensió amb R2 fix i R1 igual a la resistència composta / equivalent per a les 4 resistències de dip switch. El valor de R1 depèn de quins commutadors dip s’activen i, per tant, contribueixen a la resistència del compost. Com que les resistències del commutador de dip són paral·leles, l'equació de càlcul de resistència equivalent s'indica en termes de recíprocs de les resistències components. Per a la nostra configuració i el cas que tots els commutadors estiguin activats, l'equació es converteix en
1 / R1 = 1/80000 + 1/40000 + 1/20000 + 1/10000
donant R1 = 5333,33 volts. Per tenir en compte el fet que la majoria de configuracions tenen almenys un dels commutadors desactivats, l'estat del commutador s'utilitza com a multiplicador:
1 / R1 = s1* 1/80000 + s2* 1/40000 + s3* 1/20000 + s4*1/10000 (2)
on el multiplicador estatal, sjo, és igual a 1 si l'interruptor està activat i igual a 0 si l'interruptor està apagat. R1 ara es pot utilitzar per calcular la relació de resistència necessària a l'equació 1. Utilitzant el cas en què tots els interruptors estan activats com a exemple de nou
RATIO = R2/ (R1+ R2) = 10000/(5333.33+10000) =.6522
L'últim pas en el càlcul del valor del comparador predit és la multiplicació del RATIO per 1023 per emular l'efecte de la funció analogRead. L'identificador del cas en què tots els interruptors estan activats és llavors
comparador15 = 1023*.6522 = 667
Totes les equacions ja estan al seu lloc per al càlcul dels identificadors dels 16 possibles paràmetres de commutació. Resumir:
- R1 es calcula mitjançant l’equació 2
- R1 i R2 s’utilitzen per calcular la relació de resistència associada
- la RATIO es multiplica per 1023 per obtenir el valor del comparador
- opcionalment, la tensió de sortida prevista també es pot calcular com a RATIO * Vin
El conjunt de comparadors només depèn dels valors de resistència utilitzats per al divisor de tensió i són una signatura única per a la configuració. Com que les tensions de sortida del divisor fluctuaran d’execució en execució (i llegides per llegir), únic en aquest context significa que, tot i que dos conjunts d’identificadors poden no ser exactament iguals, són prou propers perquè les diferències del comparador de components es trobin dins d’un petit interval especificat. El paràmetre de la mida de l'interval s'ha de triar prou gran per tenir en compte les fluctuacions esperades, però prou petit perquè els diferents paràmetres de commutació no es superposin. Normalment, 7 funcionen bé per a l'interval de mig ample.
Es pot obtenir un conjunt de comparadors per a una configuració particular mitjançant diversos mètodes: executeu el programa de demostració i anoteu els valors de cada paràmetre; utilitzeu el full de càlcul de la secció següent per calcular; copieu un conjunt existent. Com s’ha indicat anteriorment, tots els conjunts probablement seran lleugerament diferents, però haurien de funcionar. Suggereixo fer servir el conjunt d’identificadors de l’autor del mètode per a la configuració de diversos commutadors i el full de càlcul de la secció següent si es canvia significativament alguna de les resistències o s’hi afegeixen més resistències.
El següent programa de demostració il·lustra l’ús dels comparadors per identificar la configuració actual del dip switch. A cada cicle de programa es realitza una lectura analògica per obtenir un identificador de la configuració actual. A continuació, es compara aquest identificador a la llista de comparació fins que es troba una coincidència o s’esgota la llista. Si es troba una coincidència, s'emet un missatge de sortida per verificar-lo; si no es troba, s'emet un avís. S'insereix un retard de 3 segons al bucle de manera que la finestra de sortida sèrie no es veurà desbordada de missatges i per donar temps a restablir la configuració del commutador dip.
//-------------------------------------------------------------------------------------
// Programa de demostració per llegir la sortida del divisor de tensió i utilitzar-lo per identificar la // configuració actual del commutador dip, buscant el valor de sortida en una matriu de // valors de comparació per a cada configuració possible. Els valors de la matriu de cerca // es poden obtenir d'una execució anterior per a la configuració o mitjançant càlcul // basat en les equacions subjacents. // ------------------------------------------------ -------------------------------------- int comparator [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // Definiu variables de processament int dipPin = A0; // pin analògic per a l’entrada divisor de tensió int dipIn = 0; // manté la sortida de tensió del divisor traduïda per analogRead int count = 0; // loop counter int epsilon = 7; // interval de comparació bool de mig ample dipFound = false; // cert si la sortida del divisor de tensió actual es troba a la taula de cerca void setup () {pinMode (dipPin, INPUT); // configureu el pin divisor de tensió com a INPUT Serial.begin (9600); // habilita la comunicació serial} void loop () {delay (3000); // evitar que la sortida es desplaci massa ràpid // Inicialitzar el recompte de paràmetres de cerca = 0; dipFound = false; // Llegir i documentar la tensió de sortida actual dipIn = analogRead (dipPin); Serial.print ("sortida del divisor"); Serial.print (dipIn); // Cerqueu el valor actual a la llista de comparadors mentre que ((recompte <16) && (! DipFound)) {if (abs (dipIn - comparador [recompte]) <= epsilon) {// l’ha trobat dipFound = true; Serial.print ("es troba a l'entrada"); Serial.print (recompte); Serial.println ("valor" + cadena (comparador [recompte])); trencar; } comptar ++; } if (! dipFound) {// valor no a la taula; no hauria de passar Serial.println ("OOPS! No s'ha trobat; millor truqueu Ghost Busters"); }}
Pas 3: full de càlcul del comparador
Els càlculs dels 16 valors de comparació es donen al full de càlcul que es mostra més amunt. El fitxer excel adjunt està disponible per descarregar a la part inferior d'aquesta secció.
Les columnes A-D del full de càlcul registren els valors de la resistència del commutador dip i els 16 paràmetres possibles del commutador. Tingueu en compte que el commutador DIP de maquinari que es mostra al diagrama de disseny fritzing està realment numerat d’esquerra a dreta en lloc de numeració de dreta a esquerra que es mostra al full de càlcul. Em va semblar una mica confús, però l'alternativa no posa la configuració "1" (0, 0, 0, 1) al primer de la llista. La columna E utilitza la fórmula 2 de la secció anterior per calcular la resistència equivalent del divisor de tensió R1 per a la configuració. La columna F utilitza aquest resultat per calcular el RATIO de resistència associat i, finalment, la columna G multiplica el RATIO pel valor màxim analogRead (1023) per obtenir el valor del comparador predit. Les 2 columnes finals contenen els valors reals d'una execució del programa de demostració juntament amb les diferències entre els valors previstos i reals.
La secció anterior esmentava tres mètodes per obtenir un conjunt de valors de comparació, inclosa l'extensió d'aquest full de càlcul, si es canvien significativament els valors de la resistència o s'afegeixen més commutadors. Sembla que petites diferències en els valors de la resistència no afecten significativament els resultats finals (cosa que és bo ja que les especificacions de la resistència donen una tolerància, per exemple un 5%, i la resistència rarament és igual al seu valor real declarat).
Pas 4: toqueu una melodia
Per il·lustrar com es pot utilitzar la tècnica de commutació múltiple en una aplicació, es modifica el programa de demostració de comparació de la secció "Explicació del mètode" per implementar el processament de selecció de melodies per al programa de caixa de música. La configuració actualitzada de l'aplicació es mostra a la part superior. L'única addició al maquinari és un brunzidor piezoelèctric passiu per reproduir la melodia seleccionada. El canvi bàsic del programari és l’addició d’una rutina per reproduir una melodia, un cop identificada, mitjançant el timbre i la rutina de tons Arduino.
Els fragments de sintonia disponibles es troben en un fitxer de capçalera, Tunes.h, juntament amb la definició de les estructures de suport necessàries. Cada melodia es defineix com un conjunt d'estructures relacionades amb les notes que contenen la freqüència i la durada de les notes. Les freqüències de les notes es troben en un fitxer de capçalera separat, Pitches.h. Els fitxers de programa i de capçalera es poden descarregar al final d'aquesta secció. Els tres fitxers s’han de col·locar al mateix directori.
La selecció i la identificació es produeixen de la següent manera:
- L '"usuari" estableix els dip switches a la configuració associada a la melodia desitjada
- a cada cicle de bucle de programa, l’identificador del paràmetre actual del dip switch s’obté mitjançant analogRead
- L'identificador de configuració del pas 2 es compara amb cadascun dels comparadors de la llista de melodies disponibles
-
Si es troba una coincidència, es crida a la rutina playTune amb la informació necessària per accedir a la llista de notes de sintonització
Mitjançant la funció de to Arduino, cada nota es reprodueix a través del timbre
- Si no es troba cap coincidència, no es prenen mesures
- repetir 1-5
Els paràmetres del commutador DIP per a les cançons disponibles es mostren a la taula següent, on 1 significa que el commutador està activat, 0 es desactiva. Recordeu que la forma d’orientar el commutador dip col·loca l’interruptor 1 a la posició més esquerra (la associada a la resistència de 80 K).
NOM | Commutador 1 | Interruptor 2 | Commutador 3 | Commutador 4 |
Danny Boy | 1 | 0 | 0 | 0 |
Petit ós | 0 | 1 | 0 | 0 |
Lleó dorm aquesta nit | 1 | 1 | 0 | 0 |
Ningú no sap el problema | 0 | 0 | 1 | 0 |
Amazing Grace | 0 | 0 | 0 | 1 |
Espai en blanc | 1 | 0 | 0 | 1 |
MockingBird Hill | 1 | 0 | 1 | 1 |
La qualitat del so d'un brunzidor piezoelèctric certament no és gran, però almenys es reconeix. De fet, si es mesuren els tons, són molt propers a la freqüència exacta de les notes. Una tècnica interessant que s’utilitza al programa és emmagatzemar les dades de sintonització a la secció de memòria flash / programa en lloc de la secció de memòria de dades per defecte mitjançant la directiva PROGMEM. La secció de dades conté les variables de processament del programa i és molt més petita, al voltant de 512 bytes per a alguns dels microcontroladors ATtiny.
Recomanat:
Selector de colors: 4 passos
Selector de colors: etapa 1 Pas 1: proveïment de components Components: Esp. 32 (microcontrolador) Anell sense píxels 12 & 9 (llum d'anell RGB) Sensor de color Bateria de 3.7v Convertidor de 3.7v a 5v Reptes: Obtenir mesures precises dels components Pas 2: Codificació de materials: A
Selector de colors Arduino RGB: seleccioneu els colors dels objectes de la vida real: 7 passos (amb imatges)
Arduino RGB Color Picker: seleccioneu els colors dels objectes de la vida real: escolliu fàcilment els colors dels objectes físics amb aquest selector de colors RGB basat en Arduino, que us permetrà recrear els colors que veieu als objectes de la vida real al vostre PC o telèfon mòbil. Simplement premeu un botó per escanejar el color de l'objecte amb un TCS347 barat
Sintonització del seguidor de la línia GiggleBot - Avançat: 7 passos
Configuració del seguidor de la línia GiggleBot - Avançat: en aquest instructable molt breu, sintonitzareu el vostre propi GiggleBot per seguir una línia negra. En aquest altre tutorial GiggleBot Line Follower, hem codificat els valors de sintonització perquè funcionin segons aquest escenari. És possible que vulgueu fer que es comporti
Selector de selecció paral·lel / sèrie SIMPLE: 3 passos
Commutador de selecció SIMPLE en paral·lel / en sèrie: en aquesta instrucció, explicaré com utilitzar un senzill interruptor de doble pol, doble llançament (DPDT) per seleccionar el cablejat en sèrie o paral·lel per a dues càrregues en una font d'alimentació. El cablejat de dues càrregues en sèrie proporcionarà el corrent complet disponible per a tots dos
Quadre selector AV: 4 passos (amb imatges)
Caixa de selecció AV: tinc un reproductor de DVD, un vídeo VHS i una càmera de vídeo mini-DV. Gravo el mini-DV al meu PC, també estic gravant VHS a digital d'una manera similar. De vegades prenc àudio-vídeo del DVD al PC. Abans alimentava vídeo compost al gràfic del meu PC