Sadržaj:

Koristite 1 analogni ulaz za 6 gumba za Arduino: 6 koraka
Koristite 1 analogni ulaz za 6 gumba za Arduino: 6 koraka

Video: Koristite 1 analogni ulaz za 6 gumba za Arduino: 6 koraka

Video: Koristite 1 analogni ulaz za 6 gumba za Arduino: 6 koraka
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Studeni
Anonim
Koristite 1 analogni ulaz za 6 gumba za Arduino
Koristite 1 analogni ulaz za 6 gumba za Arduino

Često sam se pitao kako bih mogao dobiti više digitalnih ulaza za svoj Arduino. Nedavno mi je palo na pamet da bih trebao moći koristiti jedan od analognih ulaza za unošenje više digitalnih ulaza. Napravio sam brzu pretragu i otkrio gdje su ljudi to mogli učiniti, ali da je to dopuštalo pritiskanje samo jednog gumba odjednom. Želim imati mogućnost istovremenog pritiska na bilo koju kombinaciju gumba. Stoga sam, uz pomoć TINKERCAD KRUGA, krenuo u ostvarenje ovoga.

Zašto bih htio istodobno pritiskanje gumba? Kao što je prikazano u dizajnu TinkerCad sklopova, moglo bi se koristiti za ulaze DIP prekidača za odabir različitih načina rada u programu.

Krug koji sam smislio koristi 5V izvor dostupan od Arduina i koristi 7 otpornika i 6 gumba ili prekidača.

Korak 1: Krug

Krug
Krug

Arduino imaju analogne ulaze koji prihvaćaju ulaz 0V do 5V. Ovaj ulaz ima 10-bitnu rezoluciju, što znači da je signal razbijen na 2^10 segmenata ili 1024 broja. Na temelju toga, najviše što smo ikada mogli unijeti u analogni ulaz, a dopuštajući istovremene pritiske, bilo bi 10 tipki na 1 analogni ulaz. No, ovo nije savršen svijet. Postoji otpor u vodičima, buka iz vanjskih izvora i nesavršena snaga. Dakle, kako bih si dao dovoljno fleksibilnosti, planirao sam dizajnirati ovo za 6 gumba. Na to je djelomično utjecala činjenica da su TinkerCAD sklopovi imali DIP prekidač sa 6 prekidača, što bi olakšalo testiranje.

Prvi korak u mom dizajnu bio je osigurati da svaki gumb, pojedinačnim pritiskom, daje jedinstveni napon. Time je isključeno da svi otpornici imaju istu vrijednost. Sljedeći korak je bio da vrijednosti otpora, kada se dodaju paralelno, ne mogu imati isti otpor kao bilo koja pojedinačna vrijednost otpornika. Kad su otpornici spojeni paralelno, rezultirajući otpor može se izračunati prema Rx = 1/[(1/R1)+(1/R2)]. Dakle, ako je R1 = 2000 i R2 = 1000, Rx = 667. Nagađao sam da udvostručenjem veličine svakog otpornika neću vidjeti isti otpor ni za jednu kombinaciju.

Dakle, moj krug do ove točke je imao 6 prekidača, svaki sa svojim otpornikom. No, za dovršetak ovog kruga potreban je još jedan otpornik.

Posljednji otpornik ima 3 svrhe. Prvo, djeluje kao pull-down otpornik. Bez otpornika, kad se ne pritisne nijedan gumb, krug je nepotpun. To bi omogućilo da napon na analognom ulazu Arduina pluta do bilo kojeg naponskog potencijala. Pull-Down otpornik u biti spušta napon na 0 V. Druga je svrha ograničiti struju ovog kruga. Ohmov zakon kaže da je V = IR, ili napon = struja pomnožena s otporom. Uz dati izvor napona, veći otpornik znači da bi struja bila manja. Dakle, ako bi se na otpornik od 500ohm primijenio signal od 5V, najveća struja koju bismo mogli vidjeti bila bi 0,01A ili 10mA. Treća svrha je osigurati napon signala. Ukupna struja koja teče kroz posljednji otpornik bila bi: i = 5V/Rtotal, gdje je Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Međutim, uključite samo 1/Rx za svaki otpornik na kojem je pritisnuta odgovarajuća tipka. Od ukupne struje, napon koji se dovodi na analogni ulaz bio bi i*Rlast ili i*500.

Korak 2: Dokaz - Excel

Dokaz - Excel
Dokaz - Excel

Najbrži i najjednostavniji način da dokažem da ću s ovim krugom dobiti jedinstvene otpore, a time i jedinstvene napone bio je korištenje mogućnosti programa Excel.

Postavio sam sve moguće kombinacije ulaza prekidača i organizirao ove uzastopno slijedeći binarne obrasce. Vrijednost "1" označava da je prekidač uključen, prazno znači da je isključen. Na vrhu proračunske tablice stavio sam vrijednosti otpora za svaki prekidač i za otporni otpornik. Zatim sam izračunao ekvivalentni otpor za svaku kombinaciju, osim kada su svi otpornici isključeni jer ti otpornici neće utjecati bez izvora napajanja. Kako bih olakšao svoje izračune kako bih mogao kopirati i zalijepiti svaku kombinaciju, uključio sam sve kombinacije u izračun tako da svaku vrijednost prekidača (0 ili 1) pomnožim s obrnutom vrijednošću otpora. Time je uklonjen njegov otpor iz proračuna ako je prekidač bio isključen. Dobivena jednadžba može se vidjeti na slici proračunske tablice, ali Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Pomoću Itotal = 5V / Req određujemo ukupnu struju kroz krug. To je ista struja koja prolazi kroz pull-down otpornik i daje nam napon na našem analognom ulazu. Ovo se računa kao Vin = Itotal x Rx. Ispitujući i Req podatke i Vin podatke, možemo vidjeti da doista imamo jedinstvene vrijednosti.

U ovom trenutku čini se da će naš krug raditi. Sada da shvatimo kako programirati Arduino.

Korak 3: Arduino programiranje

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

Kad sam počeo razmišljati o tome kako programirati Arduino, u početku sam planirao postaviti pojedinačne raspone napona za utvrđivanje je li prekidač uključen ili isključen. No, dok sam jedne noći ležao u krevetu, palo mi je na pamet da bih trebao pronaći jednadžbu za to. Kako? IZVRSNO. Excel ima mogućnost izračunavanja jednadžbi koje najbolje odgovaraju podacima u grafikonu. Da bih to učinio, htjet ću jednadžbu cijele vrijednosti sklopki (binarnih) naspram ulaza napona koji odgovara toj vrijednosti. U svoju Excel radnu knjigu stavio sam vrijednost cijelog broja na lijevu stranu proračunske tablice. Sada da odredim moju jednadžbu.

Evo kratkog vodiča o tome kako odrediti jednadžbu crte u Excelu.

1) Odaberite ćeliju koja ne sadrži nikakve podatke. Ako ste odabrali ćeliju s podacima, Excel će pokušati pogoditi što želite trend. To znatno otežava postavljanje trenda jer Excel rijetko točno predviđa.

2) Odaberite karticu "Insert" i odaberite "Scatter" grafikon.

3) Desnom tipkom miša kliknite okvir s grafikonom i kliknite "Odaberi podatke …". Ovo će otvoriti prozor "Odabir izvora podataka". Pritisnite gumb Dodaj za nastavak odabira podataka.

4) Dajte mu naziv serije (izborno). Odaberite raspon za os X klikom na strelicu prema gore, a zatim odabirom podataka o naponu. Odaberite raspon za Y-os klikom na strelicu prema gore, a zatim odabirom podataka cijelog broja (0-63).

5) Desnom tipkom miša kliknite podatkovne točke i odaberite "Dodaj liniju trenda …" U prozoru "Oblikovanje linije trenda" odaberite gumb Polinom. Gledajući trend, vidimo da se Red 2 ne podudara sasvim. Odabrao sam Narudžbu 3 i smatrao sam da je to mnogo točnije. Potvrdite okvir za "Prikaži jednadžbu na grafikonu". Konačna jednadžba sada je prikazana na grafikonu.

6) Gotovo.

U REDU. Natrag na program Arduino. Sada kada imamo jednadžbu, programiranje Arduina je jednostavno. Cijeli broj koji predstavlja položaje prekidača izračunava se u 1 retku koda. Pomoću funkcije "bitread" možemo dohvatiti vrijednost svakog pojedinog bita i tako znati stanje svakog gumba. (POGLEDAJTE FOTOGRAFIJE)

Korak 4: TinkerCAD sklopovi

TinkerCAD sklopovi
TinkerCAD sklopovi

Ako niste provjerili TinkerCAD sklopove, učinite to sada. ČEKATI!!!! Čitajte moj Instructable, a zatim ga provjerite. TinkerCAD sklopovi čine testiranje Arduino krugova vrlo lakim. Uključuje nekoliko električnih objekata i Arduinosa, čak vam omogućuje programiranje Arduina za testiranje.

Kako bih testirao svoj krug, postavio sam 6 sklopki pomoću paketa DIP sklopki i vezao ih za otpornike. Da bih dokazao da je vrijednost napona u mojoj Excel proračunskoj tablici točna, prikazao sam voltmetar na ulazu u Arduino. Sve je ovo funkcioniralo kako se očekivalo.

Kako bih dokazao da je Arduino programiranje radilo, izlazim stanje sklopki na LED diode, koristeći Arduino digitalne izlaze.

Zatim sam promijenio svaki prekidač za svaku moguću kombinaciju i s ponosom mogu reći "RADI" !!!

Korak 5: "Tako dugo i hvala za svu ribu." (ref.1)

Ovo još moram isprobati koristeći pravu opremu, jer trenutno putujem na posao. No, nakon što sam to dokazao s TinkerCAD sklopovima, vjerujem da će uspjeti. Izazov je u tome što vrijednosti otpornika koje sam naveo nisu sve standardne vrijednosti za otpornike. Kako bih to zaobišao, planiram upotrijebiti potenciometre i kombinacije otpornika kako bih dobio potrebne vrijednosti.

Hvala vam što ste pročitali moje upute. Nadam se da će vam pomoći u vašim projektima.

Ostavite komentare ako ste pokušali riješiti istu prepreku i kako ste je riješili. Volio bih saznati više načina za to.

Korak 6: Reference

Niste valjda mislili da ću dati citat bez upućivanja na njegov izvor?

ref. 1: Adams, Douglas. Tako dugo i hvala za svu ribu. (Četvrta knjiga trilogije "Autostoperski vodič kroz galaksiju")

Preporučeni: