Taula de continguts:

Utilitzeu 1 entrada analògica per a 6 botons per a Arduino: 6 passos
Utilitzeu 1 entrada analògica per a 6 botons per a Arduino: 6 passos

Vídeo: Utilitzeu 1 entrada analògica per a 6 botons per a Arduino: 6 passos

Vídeo: Utilitzeu 1 entrada analògica per a 6 botons per a Arduino: 6 passos
Vídeo: #1 Как запрограммировать ПЛК Outseal Arduino (начало работы) 2024, Desembre
Anonim
Utilitzeu 1 entrada analògica per a 6 botons per a Arduino
Utilitzeu 1 entrada analògica per a 6 botons per a Arduino

Sovint m'he preguntat com podria aconseguir més entrades digitals per al meu Arduino. Recentment se m’ha acudit que hauria de poder utilitzar una de les entrades analògiques per incorporar diverses entrades digitals. Vaig fer una cerca ràpida i vaig trobar on la gent podia fer això, però això només permetia prémer un sol botó alhora. Vull poder tenir qualsevol combinació de botons per prémer SIMULTÀNIAMENT. Per tant, amb l’ajut de TINKERCAD CIRCUITS, em vaig proposar que això succeís.

Per què voldria prémer simultàniament els botons? Tal com s’il·lustra en el disseny de circuits de TinkerCad, es podria utilitzar per a entrades de commutadors DIP per a la selecció de diferents modes del programa.

El circuit que em va semblar utilitza la font de 5 V disponible a l’Arduino i utilitza 7 resistències i 6 botons o commutadors.

Pas 1: el circuit

El Circuit
El Circuit

Els Arduino tenen entrades analògiques que accepten una entrada de 0V a 5V. Aquesta entrada té una resolució de 10 bits, el que significa que el senyal es divideix en 2 ^ 10 segments, o 1024 recomptes. Basant-nos en això, el màxim que podríem introduir en una entrada analògica alhora que permetés prémer simultàniament seria de 10 botons a 1 entrada analògica. Però, aquest no és un món perfecte. Hi ha resistència als conductors, soroll de fonts externes i potència imperfecta. Per tant, per donar-me molta flexibilitat, vaig planejar dissenyar-ho per a 6 botons. Això va estar influït, en part, pel fet que els circuits de TinkerCAD tenien un objecte de commutador DIP de 6 commutadors, cosa que facilitaria les proves.

El primer pas del meu disseny va ser assegurar-me que cada botó, quan es prem individualment, proporcionés un voltatge únic. Això va descartar que totes les resistències tinguessin el mateix valor. El següent pas va ser que els valors de resistència, quan s’afegien en paral·lel, no podien tenir la mateixa resistència que cap valor de resistència individual. Quan les resistències es connecten en paral·lel, la resistència resultant es pot calcular amb Rx = 1 / [(1 / R1) + (1 / R2)]. Per tant, si R1 = 2000 i R2 = 1000, Rx = 667. Vaig especular que en duplicar la mida de cada resistència, no veuria la mateixa resistència per a cap combinació.

Per tant, el meu circuit fins aquest punt era tenir 6 commutadors, cadascun amb la seva pròpia resistència. Però, cal una resistència més per completar aquest circuit.

L'última resistència té 3 propòsits. En primer lloc, actua com una resistència desplegable. Sense la resistència, quan no es premen botons, el circuit és incomplet. Això permetria que la tensió a l'entrada analògica de l'Arduino flotés fins a qualsevol potencial de tensió. Una resistència Pull-Down bàsicament fa baixar la tensió a 0 V. El segon propòsit és limitar el corrent d’aquest circuit. La llei d'Ohm estableix que V = IR o Voltatge = Corrent multiplicat per Resistència. Amb una font de tensió donada, més gran és la resistència significa que el corrent seria menor. Per tant, si s’apliqués un senyal de 5V a una resistència de 500ohm, el corrent més gran que podríem veure seria 0,01A o 10mA. El tercer propòsit és proporcionar la tensió del senyal. El corrent total que flueix per l'última resistència seria: i = 5V / Rtotal, on Rtotal = Rlast + {1 / [(1 / R1) + (1 / R2) + (1 / R3) + (1 / R4) + (1 / R5) + (1 / R6)]}. Tot i això, només incloeu 1 / Rx per a cada resistència que tingui premut el botó corresponent. A partir del corrent total, la tensió subministrada a l'entrada analògica seria i * Rlast o i * 500.

Pas 2: prova: Excel

Prova: Excel
Prova: Excel

La forma més ràpida i senzilla de demostrar que obtindria resistències úniques i, per tant, tensions úniques amb aquest circuit, era utilitzar les capacitats d'Excel.

Vaig configurar totes les combinacions possibles d’entrades de commutador i les vaig organitzar de manera seqüencial seguint patrons binaris. Un valor de "1" indica que l'interruptor està activat; el blanc indica que està desactivat. A la part superior del full de càlcul, he introduït els valors de resistència de cada commutador i de la resistència desplegable. Llavors vaig calcular la resistència equivalent per a cadascuna de les combinacions, excepte quan totes les resistències estan apagades, ja que aquestes resistències no tindran cap efecte sense tenir una font d'alimentació que la subministri. Per fer els meus càlculs fàcils de poder copiar i enganxar a cada combinació, he inclòs totes les combinacions al càlcul multiplicant cada valor de commutador (0 o 1) pel seu valor de resistència invertit. En fer-ho, es va eliminar la resistència del càlcul si l’interruptor estava apagat. L'equació resultant es pot veure a la imatge del full de càlcul, però Req = Rx + 1 / (Sw1 / R1 + Sw2 / R2 + Sw3 / R3 + Sw4 / R4 + Sw5 / R5 + Sw6 / R6). Utilitzant Itotal = 5V / Req, determinem el corrent total a través del circuit. Aquest és el mateix corrent que passa per la resistència desplegable i ens proporciona el voltatge de la nostra entrada analògica. Això es calcula com Vin = Itotal x Rx. Examinant tant les dades de Req com les dades de Vin, podem veure que realment tenim valors únics.

En aquest moment, sembla que el nostre circuit funcionarà. Ara per esbrinar com programar l’Arduino.

Pas 3: Programació Arduino

Programació Arduino
Programació Arduino
Programació Arduino
Programació Arduino
Programació Arduino
Programació Arduino

Quan vaig començar a pensar com programar l’Arduino, inicialment tenia previst configurar rangs de tensió individuals per determinar si un interruptor estava encès o apagat. Però, estirat al llit una nit, em va semblar que hauria de poder trobar una equació per fer-ho. Com? SOBRESORTIR. Excel té la capacitat de calcular equacions per adaptar-se millor a les dades d’un gràfic. Per fer-ho, voldré una equació del valor enter dels commutadors (binari) enfront de l’entrada de voltatge corresponent a aquest valor. Al meu llibre de treball d'Excel, he posat el valor enter al costat esquerre del full de càlcul. Ara per determinar la meva equació.

Aquí teniu un tutorial ràpid sobre com determinar l'equació d'una línia dins d'Excel.

1) Seleccioneu una cel·la que no contingui dades. Si heu seleccionat una cel·la que conté dades, Excel intentarà endevinar de què voleu fer tendència. Això fa que sigui molt més difícil establir una tendència, ja que poques vegades Excel prediu correctament.

2) Seleccioneu la pestanya "Insereix" i seleccioneu un gràfic "Dispersió".

3) Feu clic amb el botó dret al quadre gràfic i feu clic a "Selecciona dades …". S'obrirà la finestra "Selecciona la font de dades". Seleccioneu el botó Afegeix per continuar seleccionant les dades.

4) Doneu-li un nom de sèrie (opcional). Seleccioneu l'interval de l'eix X fent clic a la fletxa cap amunt i després seleccioneu les dades de voltatge. Seleccioneu l'interval de l'eix Y fent clic a la fletxa cap amunt i, a continuació, seleccioneu les dades enteres (0-63).

5) Feu clic amb el botó dret sobre els punts de dades i seleccioneu "Afegeix línia de tendència …" A la finestra "Format de línia de tendència", seleccioneu el botó Polinomi. Veient la tendència, veiem que l’ordre 2 no coincideix del tot. Vaig seleccionar una comanda de 3 i em va semblar molt més precís. Marqueu la casella de selecció "Mostra l'equació al gràfic". L’equació final ara es mostra al gràfic.

6) Fet.

D'ACORD. Torna al programa Arduino. Ara que tenim l’equació, programar l’Arduino és fàcil. El nombre enter que representa les posicions dels commutadors es calcula en 1 línia de codi. Mitjançant la funció de "lectura de bits", podem agafar el valor de cada bit individual i així conèixer l'estat de cada botó. (VEURE FOTOS)

Pas 4: circuits de TinkerCAD

Circuits TinkerCAD
Circuits TinkerCAD

Si no heu comprovat els circuits de TinkerCAD, feu-ho ara. ESPERA !!!! Acabeu de llegir el meu Instructable i, a continuació, comproveu-ho. TinkerCAD Circuits facilita molt la prova de circuits Arduino. Inclou diversos objectes elèctrics i Arduinos, fins i tot us permet programar Arduino per provar-los.

Per provar el meu circuit, he configurat 6 commutadors mitjançant un paquet de commutadors DIP i els he lligat a les resistències. Per demostrar que el valor del voltatge del meu full de càlcul d'Excel era correcte, vaig mostrar un voltímetre a l'entrada de l'Arduino. Tot va funcionar com s’esperava.

Per demostrar que la programació Arduino ha funcionat, emeto els estats dels commutadors a LED, mitjançant les sortides digitals d'Arduino.

Aleshores he canviat tots els interruptors per cada combinació possible i estic orgullós de dir "FUNCIONA".

Pas 5: "Molt de temps, i gràcies per tots els peixos". (ref.1)

Encara no ho he provat amb equipament real, ja que actualment viatjo per feina. Però, després de demostrar-ho amb TinkerCAD Circuits, crec que funcionarà. El repte és que els valors de les resistències que he especificat no són tots els valors estàndard de les resistències. Per evitar-ho, planejo utilitzar potenciòmetres i combinacions de resistències per obtenir els valors que necessito.

Gràcies per llegir el meu instructiu. Espero que us ajudi amb els vostres projectes.

Si us plau, deixeu comentaris si heu intentat abordar aquest mateix obstacle i com ho havíeu resolt. M’encantaria aprendre més maneres de fer-ho.

Pas 6: referències

No creieu que proporcionaria un pressupost sense proporcionar cap referència a la seva font, oi?

ref. 1: Adams, Douglas. Molt de temps, i gràcies per tots els peixos. (El quart llibre de la "trilogia" de la Guia de l'autostopista per a la galàxia)

Recomanat: