Kazalo:

Uporabite 1 analogni vhod za 6 gumbov za Arduino: 6 korakov
Uporabite 1 analogni vhod za 6 gumbov za Arduino: 6 korakov

Video: Uporabite 1 analogni vhod za 6 gumbov za Arduino: 6 korakov

Video: Uporabite 1 analogni vhod za 6 gumbov za Arduino: 6 korakov
Video: Измерьте ток до 500A с помощью шунтирующего резистора с помощью Arduino 2024, November
Anonim
Za Arduino uporabite 1 analogni vhod za 6 gumbov
Za Arduino uporabite 1 analogni vhod za 6 gumbov

Pogosto sem se spraševal, kako bi lahko dobil več digitalnih vhodov za svoj Arduino. Pred kratkim se mi je zgodilo, da bi lahko uporabil enega od analognih vhodov za vnos več digitalnih vhodov. Naredil sem hitro iskanje in ugotovil, kje lahko ljudje to storijo, vendar je to omogočalo samo pritisk na en sam gumb naenkrat. Želim imeti možnost hkratnega pritiska na katero koli kombinacijo gumbov. Tako sem se s pomočjo TINKERCADOVIH KROGOV odločil, da to uresničim.

Zakaj bi želel hkratne pritiske na gumbe? Kot je prikazano v zasnovi TinkerCad Circuits, se lahko uporablja za vhode DIP stikala za izbiro različnih načinov v programu.

Vezje, ki sem ga pripravil, uporablja vir 5V, ki je na voljo v Arduinu, in uporablja 7 uporov in 6 gumbov ali stikal.

1. korak: vezje

Vezje
Vezje

Arduino imajo analogne vhode, ki sprejemajo vhod od 0V do 5V. Ta vhod ima 10-bitno ločljivost, kar pomeni, da je signal razdeljen na 2^10 segmentov ali 1024 števcev. Na podlagi tega bi največ, kar bi lahko kdaj vnesli v analogni vhod, hkrati pa omogočili hkratni pritisk, bilo 10 gumbov na 1 analogni vhod. Vendar to ni popoln svet. V vodnikih obstaja upor, hrup iz zunanjih virov in nepopolna moč. Torej, da bi si dal veliko prožnosti, sem to načrtoval za 6 gumbov. Na to je deloma vplivalo dejstvo, da so imeli TinkerCAD vezja objekt DIP stikala s 6 stikali, kar bi olajšalo testiranje.

Prvi korak pri mojem oblikovanju je bil zagotoviti, da bo vsak gumb, ko bo pritisnjen posebej, zagotovil edinstveno napetost. To je izključilo, da so vsi upori enake vrednosti. Naslednji korak je bil, da vrednosti upora, če jih dodamo vzporedno, ne morejo imeti enakega upora kot katera koli vrednost posameznega upora. Ko so upori povezani vzporedno, lahko nastali upor izračunamo z Rx = 1/[(1/R1)+(1/R2)]. Torej, če je R1 = 2000 in R2 = 1000, je Rx = 667. Ugibal sem, da z podvojitvijo velikosti vsakega upora ne bom videl enakega upora za katero koli kombinacijo.

Torej, moje vezje do te točke je bilo 6 stikal, vsako s svojim uporom. Toda za dokončanje tega vezja je potreben še en upor.

Zadnji upor ima 3 namene. Prvič, deluje kot pull-down upor. Brez upora, ko ni pritisnjenih nobenih gumbov, je vezje nepopolno. To bi omogočilo, da napetost na analognem vhodu Arduino plava na kateri koli napetostni potencial. Pull-Down upor v bistvu potegne napetost na 0 V. Drugi namen je omejiti tok tega vezja. Ohmov zakon pravi, da je V = IR ali napetost = tok pomnožen z uporom. Pri danem viru napetosti večji upor pomeni, da bi bil tok manjši. Torej, če bi na 500ohm upor uporabili signal 5V, bi bil največji tok, ki bi ga lahko videli 0,01A ali 10mA. Tretji namen je zagotoviti signalno napetost. Skupni tok, ki teče skozi zadnji upor, bi bil: i = 5V/Rtotal, kjer je Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Vendar vključite le 1/Rx za vsak upor, pri katerem je pritisnjen ustrezen gumb. Od skupnega toka bi bila napetost na analognem vhodu i*Rlast ali i*500.

2. korak: Dokaz - Excel

Dokaz - Excel
Dokaz - Excel

Najhitrejši in najlažji način, da dokažem, da bom s tem vezjem dobil edinstvene upore in s tem edinstvene napetosti, je bil uporabiti zmogljivosti Excela.

Nastavil sem vse možne kombinacije vhodov stikal in jih zaporedoma organiziral po binarnih vzorcih. Vrednost "1" pomeni, da je stikalo vklopljeno, prazno pomeni, da je izklopljeno. Na vrhu preglednice vnesem vrednosti upora za vsako stikalo in za spustni upor. Nato sem za vsako kombinacijo izračunal enakovreden upor, razen v primeru, ko so vsi upori izklopljeni, saj ti upori ne bodo vplivali brez vira napajanja. Za lažje izračune, da sem lahko kopiral in prilepil v vsako kombinacijo, sem v izračun vključil vse kombinacije tako, da sem vsako vrednost stikala (0 ali 1) pomnožil z vrednostjo obrnjenega upora. S tem je bil odpravljen njegov upor pri izračunu, če je bilo stikalo izklopljeno. Nastalo enačbo je mogoče videti na sliki preglednice, vendar je Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Z uporabo Itotal = 5V / Req določimo skupni tok skozi vezje. To je isti tok, ki teče skozi izvlečni upor in nam daje napetost do našega analognega vhoda. To se izračuna kot Vin = skupaj x Rx. Če pregledamo podatke Req in Vin, lahko vidimo, da imamo res edinstvene vrednosti.

Na tej točki se zdi, da bo naše vezje delovalo. Zdaj pa ugotovimo, kako programirati Arduino.

3. korak: Arduino programiranje

Arduino programiranje
Arduino programiranje
Arduino programiranje
Arduino programiranje
Arduino programiranje
Arduino programiranje

Ko sem začel razmišljati o tem, kako programirati Arduino, sem sprva načrtoval nastavitev posameznih razponov napetosti za ugotavljanje, ali je stikalo vklopljeno ali izklopljeno. Ko pa sem eno noč ležal v postelji, se mi je zgodilo, da bi moral najti enačbo za to. Kako? ODLIČNO. Excel ima možnost izračunati enačbe, ki najbolje ustrezajo podatkom v grafikonu. Če želite to narediti, bom želel enačbo celoštevilčne vrednosti stikal (binarno) glede na vhod napetosti, ki ustreza tej vrednosti. V Excelovem delovnem zvezku sem celoletno vrednost spustil na levo stran preglednice. Zdaj pa določim svojo enačbo.

Tukaj je kratka vadnica o tem, kako določiti enačbo črte v Excelu.

1) Izberite celico, ki ne vsebuje nobenih podatkov. Če imate izbrano celico s podatki, bo Excel poskušal uganiti, kaj želite trenditi. Zaradi tega je precej težje nastaviti trend, saj Excel redko pravilno napoveduje.

2) Izberite zavihek "Vstavi" in izberite grafikon "Scatter".

3) Z desno miškino tipko kliknite polje z grafikonom in kliknite "Izberi podatke …". To bo odprlo okno »Izberi vir podatkov«. Za nadaljevanje izbiranja podatkov izberite gumb Dodaj.

4) Dajte mu ime serije (neobvezno). Izberite obseg za X-os, tako da kliknete puščico navzgor in nato izberete podatke o napetosti. Izberite obseg za Y-os, tako da kliknete puščico navzgor in nato izberete Integer Data (0-63).

5) Z desno miškino tipko kliknite podatkovne točke in izberite "Dodaj trendno črto …" V oknu "Oblikuj trendno črto" izberite gumb Polinom. Če pogledamo trend, vidimo, da se vrstni red 2 ne ujema povsem. Izbral sem naročilo 3 in se mi je zdelo to veliko bolj natančno. Potrdite polje »Prikaži enačbo na grafikonu«. Končna enačba je zdaj prikazana na grafikonu.

6) Končano.

V REDU. Nazaj na program Arduino. Zdaj, ko imamo enačbo, je programiranje Arduina enostavno. Celo število, ki predstavlja položaje stikal, se izračuna v 1 vrstici kode. Z uporabo funkcije "branje bitov" lahko zajamemo vrednost vsakega posameznega bita in tako poznamo stanje vsakega gumba. (GLEJ FOTOGRAFIJE)

4. korak: TinkerCAD vezja

TinkerCAD vezja
TinkerCAD vezja

Če še niste preverili TinkerCAD Circuits, to storite zdaj. POČAKAJTE !!!! Dokončajte branje mojega Instructable in ga nato preverite. TinkerCAD Circuits zelo olajša testiranje Arduino vezja. Vključuje več električnih predmetov in Arduinosa, kar vam omogoča celo programiranje Arduina za testiranje.

Za preizkus svojega vezja sem z uporabo sklopa DIP stikal nastavil 6 stikal in jih privezal na upore. Da bi dokazal, da je vrednost napetosti v Excelovi preglednici pravilna, sem na vhodu v Arduino prikazal voltmeter. Vse je delovalo po pričakovanjih.

Da bi dokazal, da je programiranje Arduino delovalo, izklopim stanje stikal na LED z uporabo digitalnih izhodov Arduino.

Nato sem zamenjal vsako stikalo za vsako možno kombinacijo in s ponosom rečem "DELUJE" !!!

5. korak: "Tako dolgo in hvala za vso ribo." (ref.1)

Tega še moram preizkusiti z uporabo prave opreme, saj trenutno potujem v službo. Toda potem, ko sem to dokazal s TinkerCAD vezji, verjamem, da bo delovalo. Izziv je, da vrednosti uporov, ki sem jih navedel, niso vse standardne vrednosti za upore. Da bi to rešil, nameravam uporabiti potenciometre in kombinacije uporov, da dobim vrednosti, ki jih potrebujem.

Hvala, ker ste prebrali moj pouk. Upam, da vam bo pomagal pri vaših projektih.

Prosimo, pustite komentarje, če ste poskušali rešiti to isto oviro in kako ste jo rešili. Rad bi izvedel več načinov za to.

6. korak: Reference

Ali niste mislili, da bom ponudil ponudbo brez sklicevanja na njen vir?

ref. 1: Adams, Douglas. Tako dolgo in hvala za vse ribe. (Četrta knjiga "trilogije" avtostoperskega vodnika po galaksiji)

Priporočena: