Sisällysluettelo:

Käytä 1 analogista tuloa 6 painikkeelle Arduinolle: 6 vaihetta
Käytä 1 analogista tuloa 6 painikkeelle Arduinolle: 6 vaihetta

Video: Käytä 1 analogista tuloa 6 painikkeelle Arduinolle: 6 vaihetta

Video: Käytä 1 analogista tuloa 6 painikkeelle Arduinolle: 6 vaihetta
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Heinäkuu
Anonim
Käytä 1 analogista tuloa 6 painikkeelle Arduinolle
Käytä 1 analogista tuloa 6 painikkeelle Arduinolle

Olen usein ihmetellyt, miten voisin saada enemmän digitaalituloja Arduinolleni. Äskettäin tuli mieleeni, että minun pitäisi pystyä käyttämään yhtä analogituloista useiden digitaalitulojen tuomiseen. Tein nopean haun ja löysin paikat, joissa ihmiset pystyivät tekemään tämän, mutta ne sallivat vain yhden painikkeen painamisen kerrallaan. Haluan, että mitä tahansa näppäinyhdistelmää voidaan painaa yksinkertaisesti. Joten TINKERCAD CIRCUITSin avulla päätin toteuttaa tämän.

Miksi haluan samanaikaisia painalluksia? Kuten TinkerCad -piirien suunnittelussa on havainnollistettu, sitä voidaan käyttää DIP -kytkentätuloihin eri tilojen valitsemiseksi ohjelman sisällä.

Piirini, jonka keksin, käyttää Arduinon saatavilla olevaa 5 V: n lähdettä ja käyttää 7 vastusta ja 6 painiketta tai kytkintä.

Vaihe 1: Piiri

Piiri
Piiri

Arduinossa on analogiset tulot, jotka hyväksyvät 0V - 5V tulon. Tämän tulon resoluutio on 10 bittiä, mikä tarkoittaa, että signaali on jaettu 2^10 segmenttiin tai 1024 laskuun. Tämän perusteella eniten, mitä voisimme koskaan syöttää analogituloon ja sallia samanaikaiset painallukset, olisi 10 painiketta 1 analogiseen tuloon. Mutta tämä maailma ei ole täydellinen. Johtimissa on vastus, ulkopuolisten lähteiden melu ja epätäydellinen virta. Joten antaakseni itselleni paljon joustavuutta, suunnittelin suunnittelevani tämän 6 painikkeelle. Tähän vaikutti osittain se, että TinkerCAD Circuitsilla oli 6-kytkininen DIP-kytkinobjekti, mikä helpottaisi testaamista.

Suunnitteluni ensimmäinen askel oli varmistaa, että jokainen painike, kun sitä painetaan erikseen, tuottaa ainutlaatuisen jännitteen. Tämä sulki pois sen, että kaikki vastukset olisivat saman arvoisia. Seuraava askel oli, että rinnakkain lisättyjen vastusarvojen vastus ei voinut olla sama kuin millään yksittäisellä vastuksen arvolla. Kun vastukset on kytketty rinnakkain, tuloksena oleva vastus voidaan laskea Rx = 1/[(1/R1)+(1/R2)]. Joten jos R1 = 2000 ja R2 = 1000, Rx = 667. Arvelin, että kaksinkertaistamalla kunkin vastuksen koon, en näkisi samaa vastusta missään yhdistelmässä.

Joten, piirini tähän pisteeseen oli saada 6 kytkintä, joista jokaisella on oma vastus. Mutta tämän piirin loppuun saattamiseksi tarvitaan vielä yksi vastus.

Viimeisellä vastuksella on 3 tarkoitusta. Ensinnäkin se toimii vetovastusvastuksena. Ilman vastusta, kun mitään painikkeita ei paineta, piiri on epätäydellinen. Tämä antaisi Arduinon analogisen tulon jännitteen kellua mihin tahansa jännitepotentiaaliin. Pull-down-vastus vetää olennaisesti jännitteen alas 0 V. Toinen tarkoitus on rajoittaa tämän piirin virtaa. Ohmin lain mukaan V = IR tai jännite = virta kerrottuna vastuksella. Tietyllä jännitelähteellä suurempi vastus tarkoittaa, että virta olisi pienempi. Joten jos 5 V: n signaali kohdistettiin 500 ohmin vastukseen, suurin näkemämme virta olisi 0,01A tai 10mA. Kolmas tarkoitus on tarjota signaalijännite. Viimeisen vastuksen läpi kulkeva kokonaisvirta olisi: i = 5V/Rtotal, missä Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Sisällytä kuitenkin vain 1/Rx jokaiselle vastukselle, jonka vastaavaa painiketta on painettu. Kokonaisvirrasta analogiatuloon syötettävä jännite olisi i*Rlast tai i*500.

Vaihe 2: Todiste - Excel

Todiste - Excel
Todiste - Excel

Nopein ja helpoin tapa todistaa, että saisin ainutlaatuisia vastuksia ja siten ainutlaatuisia jännitteitä tällä piirillä, oli käyttää Excelin ominaisuuksia.

Asetin kaikki mahdolliset kytkentätulojen yhdistelmät ja järjestin nämä peräkkäin binäärimallien mukaan. Arvo "1" osoittaa, että kytkin on päällä, tyhjä osoittaa, että se on pois päältä. Laskentataulukon yläosaan laitan vastusarvot kullekin kytkimelle ja alasvetovastukselle. Laskin sitten vastaavan vastuksen kullekin yhdistelmälle, paitsi silloin, kun kaikki vastukset ovat pois päältä, koska näillä vastuksilla ei ole vaikutusta ilman virtalähdettä. Laskennan helpottamiseksi, jotta voisin kopioida ja liittää jokaiseen yhdistelmään, sisällytin kaikki laskutoimitukset kertomalla kunkin kytkimen arvon (0 tai 1) sen käänteisellä vastusarvolla. Tämä eliminoi sen vastuksen laskelmasta, jos kytkin oli pois päältä. Tuloksena oleva yhtälö näkyy laskentataulukon kuvassa, mutta Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Käyttämällä Itotal = 5V / Req määritetään piirin läpi kulkeva kokonaisvirta. Tämä on sama virta, joka kulkee alasvetovastuksen läpi ja antaa meille jännitteen analogiseen tuloon. Tämä lasketaan muodossa Vin = Itotal x Rx. Tarkasteltaessa sekä Req -tietoja että Vin -tietoja voimme nähdä, että meillä on todellakin ainutlaatuisia arvoja.

Tässä vaiheessa näyttää siltä, että piirimme toimii. Nyt selvittää, kuinka ohjelmoida Arduino.

Vaihe 3: Arduino -ohjelmointi

Arduinon ohjelmointi
Arduinon ohjelmointi
Arduinon ohjelmointi
Arduinon ohjelmointi
Arduinon ohjelmointi
Arduinon ohjelmointi

Kun aloin miettiä Arduinon ohjelmointia, alun perin suunnittelin yksittäisten jännitealueiden määrittämistä sen määrittämiseksi, onko kytkin päällä vai pois päältä. Mutta kun makasin sängyssä yhden yön, mieleeni tuli, että minun pitäisi pystyä löytämään yhtälö tämän tekemiseksi. Miten? EXCEL. Excel pystyy laskemaan yhtälöt parhaiten vastaamaan kaavion tietoja. Tätä varten haluan yhtälön kytkinten (binaarinen) kokonaislukuarvosta verrattuna kyseistä arvoa vastaavaan jännitetuloon. Laitoin Excel -työkirjaani Kokonaisluku -arvon laskentataulukon vasempaan reunaan. Määritä nyt yhtälöni.

Tässä on nopea opetusohjelma viivan yhtälön määrittämiseksi Excelissä.

1) Valitse solu, joka ei sisällä tietoja. Jos olet valinnut solun, jossa on tietoja, Excel yrittää arvata, mikä on trendi. Tämän vuoksi trendin asettaminen on paljon vaikeampaa, koska Excel ennustaa harvoin oikein.

2) Valitse "Insert" -välilehti ja valitse "Scatter" -kaavio.

3) Napsauta hiiren kakkospainikkeella kaavion ruutua ja napsauta "Valitse tiedot…". Tämä tuo esiin "Valitse tietolähde" -ikkunan. Jatka tietojen valitsemista valitsemalla Lisää -painike.

4) Anna sille sarjanimi (valinnainen). Valitse X-akselin alue napsauttamalla ylös-nuolta ja valitsemalla sitten jännitetiedot. Valitse Y-akselin alue napsauttamalla ylänuolta ja valitsemalla Kokonaislukutiedot (0-63).

5) Napsauta datapisteitä hiiren kakkospainikkeella ja valitse "Lisää trendiviiva …" Valitse "Muotoile trendiviiva" -ikkunassa Polynomi -painike. Tarkasteltaessa suuntausta näemme, että järjestys 2 ei täysin vastaa. Valitsin tilauksen 3 ja tunsin tämän olevan paljon tarkempaa. Valitse Näytä yhtälö kaaviossa -valintaruutu. Lopullinen yhtälö näkyy nyt kaaviossa.

6) Valmis.

OK. Palaa Arduino -ohjelmaan. Nyt kun meillä on yhtälö, Arduinon ohjelmointi on helppoa. Kokonaisluku, joka edustaa kytkimen asemia, lasketaan yhdellä koodirivillä. Käyttämällä "bitread" -toimintoa voimme napata kunkin yksittäisen bitin arvon ja siten tietää kunkin painikkeen tilan. (KATSO KUVAT)

Vaihe 4: TinkerCAD -piirit

TinkerCAD -piirit
TinkerCAD -piirit

Jos et ole tutustunut TinkerCAD -piiriin, tee se nyt. ODOTA!!!! Lopeta Instructable -ohjelman lukeminen ja tarkista se sitten. TinkerCAD Circuits tekee Arduino -piirien testaamisesta erittäin helppoa. Se sisältää useita sähköisiä esineitä ja Arduinoja, joiden avulla voit jopa ohjelmoida Arduinon testausta varten.

Testatakseni piirini, asetin 6 kytkintä käyttämällä DIP -kytkinpakettia ja sidoin ne vastuksiin. Todistaakseni, että Excel -laskentataulukkoni jännitearvo oli oikea, näytin volttimittarin Arduinon tulossa. Tämä kaikki toimi odotetusti.

Todistaakseni, että Arduino -ohjelmointi toimi, lähetän kytkinten tilat LED -valolle käyttämällä Arduinon digitaalilähtöjä.

Vaihdoin sitten kaikki kytkimet kaikkiin mahdollisiin yhdistelmiin ja voin ylpeänä sanoa "IT WORKS" !!!

Vaihe 5: "Niin kauan ja kiitos kaikista kaloista." (viite 1)

En ole vielä kokeillut tätä oikeilla laitteilla, koska matkustan tällä hetkellä työn vuoksi. Mutta todistettuani sen TinkerCAD Circuitsilla uskon, että se toimii. Haasteena on, että määrittämäni vastuksen arvot eivät ole kaikki vakioiden vakioarvoja. Tämän kiertämiseksi aion käyttää potentiometrejä ja vastuksen yhdistelmiä tarvittavien arvojen saamiseksi.

Kiitos, että luit ohjeeni. Toivon, että se auttaa sinua projekteissasi.

Jätä kommentit, jos olet yrittänyt ratkaista saman esteen ja miten olet ratkaissut sen. Haluaisin oppia lisää tapoja tehdä tämä.

Vaihe 6: Viitteet

Etkö luullut, että annan lainauksen antamatta viittausta sen lähteeseen?

viite. 1: Adams, Douglas. Niin kauan, ja kiitos kaikista kaloista. (Lomamatkailijan opas galaksiin -trilogian neljäs kirja)

Suositeltava: