Sadržaj:

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

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

Video: Koristite 1 analogni ulaz za 6 tipki za Arduino: 6 koraka
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Juli
Anonim
Koristite 1 analogni ulaz za 6 tipki za Arduino
Koristite 1 analogni ulaz za 6 tipki 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 to je omogućilo samo jedno pritiskanje dugmeta odjednom. Želim imati mogućnost istovremenog pritiska na bilo koju kombinaciju dugmadi. Stoga sam, uz pomoć TINKERCAD KRUGA, krenuo u ostvarenje ovoga.

Zašto bih htio istovremene pritiske na tipke? Kao što je ilustrirano u dizajnu TinkerCad kola, moglo bi se koristiti za ulaze DIP prekidača za odabir različitih načina rada u okviru programa.

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

Korak 1: Krug

The Circuit
The Circuit

Arduino imaju analogne ulaze koji prihvaćaju ulaz 0V do 5V. Ovaj ulaz ima 10-bitnu rezoluciju, što znači da je signal podijeljen na 2^10 segmenata ili 1024 broja. Na osnovu ovoga, najviše što smo ikada mogli unijeti u analogni ulaz, a dopuštajući istovremene pritiske, bilo bi 10 tipki na 1 analogni ulaz. Ali, ovo nije savršen svijet. Postoji otpor u vodičima, buka iz vanjskih izvora i nesavršena snaga. Dakle, kako bih sebi dao dovoljno fleksibilnosti, planirao sam dizajnirati ovo za 6 tipki. 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 svako dugme, pojedinačno pritisnuto, daje jedinstveni napon. Time je isključeno da svi otpornici imaju istu vrijednost. Sljedeći korak je bio da vrijednosti otpora, ako se dodaju paralelno, ne mogu imati isti otpor kao niti jedna vrijednost otpornika. Kada su otpornici spojeni paralelno, rezultirajući otpor može se izračunati pomoću 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 u jednoj kombinaciji.

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

Posljednji otpornik ima 3 namjene. Prvo, djeluje kao pull-down otpornik. Bez otpornika, kada se ne pritisne nijedno dugme, kolo je nepotpuno. To bi omogućilo da napon na Arduino analognom ulazu pluta do bilo kojeg naponskog potencijala. Pull-Down otpornik u osnovi 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 sa otporom. Uz dati izvor napona, veći otpornik znači da bi struja bila manja. Dakle, ako bi se 5V signal primijenio na otpornik od 500ohm, najveća struja koju bismo mogli vidjeti bila bi 0,01A ili 10mA. Treća svrha je osigurati napon signala. Ukupna struja koja protič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 pritisnuto odgovarajuće dugme. 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 najlakši 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 prekidačkih ulaza i organizirao ove sekvencijalno 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 padajući 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. Da bih olakšao svoje proračune kako bih mogao kopirati i zalijepiti u svaku kombinaciju, uključio sam sve kombinacije u izračun množenjem svake vrijednosti prekidača (0 ili 1) s njegovom 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). Koristeći Itotal = 5V / Req, određujemo ukupnu struju kroz kolo. 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 zaista imamo jedinstvene vrijednosti.

U ovom trenutku izgleda 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 postavljanje pojedinačnih raspona napona za utvrđivanje je li prekidač uključen ili isključen. Ali, dok sam jedne noći ležao u krevetu, palo mi je na pamet da bih trebao pronaći jednadžbu za to. Kako? EXCEL. Excel ima mogućnost izračunavanja jednadžbi koje najbolje odgovaraju podacima u grafikonu. Da bih to učinio, želim jednadžbu cijele vrijednosti sklopki (binarnih) u odnosu na ulaz napona koji odgovara toj vrijednosti. U Excel radnoj svesci stavio sam cijelu vrijednost na lijevu stranu proračunske tablice. Sada da odredim moju jednačinu.

Evo kratkog vodiča o tome kako odrediti jednadžbu linije 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 predviđa ispravno.

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 dugme Dodaj da biste nastavili sa odabirom podataka.

4) Dajte mu naziv serije (opcionalno). Odaberite raspon za X-os klikom na strelicu prema gore, a zatim odabirom podataka o naponu. Odaberite raspon za Y-osu klikom na strelicu prema gore, a zatim odabirom Integer Data (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 ovo mnogo preciznije. Potvrdite okvir za "Prikaži jednadžbu na grafikonu". Konačna jednadžba sada je prikazana na grafikonu.

6) Gotovo.

UREDU. Nazad na program Arduino. Sada kada imamo jednadžbu, programiranje Arduina je jednostavno. Cijeli broj koji predstavlja pozicije prekidača izračunava se u 1 retku koda. Korištenjem "bitread" funkcije možemo dohvatiti vrijednost svakog pojedinog bita i tako znati stanje svakog dugmeta. (VIDI FOTOGRAFIJE)

Korak 4: TinkerCAD kola

TinkerCAD kola
TinkerCAD kola

Ako niste provjerili TinkerCAD kola, učinite to sada. ČEKAJTE !!!! Č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.

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

Da bih dokazao da je Arduino programiranje radilo, izlazim stanje prekidača 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. Ali, 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 uputstvo. Nadam se da će vam pomoći u vašim projektima.

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

Korak 6: Reference

Zar niste mislili da ću ponuditi citat bez navođenja izvora?

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

Preporučuje se: