Përmbajtje:

Përdorni 1 hyrje analoge për 6 butona për Arduino: 6 hapa
Përdorni 1 hyrje analoge për 6 butona për Arduino: 6 hapa

Video: Përdorni 1 hyrje analoge për 6 butona për Arduino: 6 hapa

Video: Përdorni 1 hyrje analoge për 6 butona për Arduino: 6 hapa
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Korrik
Anonim
Përdorni 1 hyrje analoge për 6 butona për Arduino
Përdorni 1 hyrje analoge për 6 butona për Arduino

Shpesh kam pyetur veten se si mund të marr më shumë Inpute dixhitale për Arduino -n tim. Kohët e fundit më ka ndodhur që unë duhet të jem në gjendje të përdor një nga inputet analoge për të sjellë hyrje të shumta dixhitale. Bëra një kërkim të shpejtë dhe gjeta se ku njerëzit ishin në gjendje ta bënin këtë, por që këto lejuan që një buton i vetëm të shtypet në të njëjtën kohë. Unë dua që të jem në gjendje të kem çdo kombinim të butonave që të shtypen njëkohësisht. Kështu, me ndihmën e Qarkave TINKERCAD, fillova ta bëj këtë të ndodhë.

Pse do të doja shtypje të njëkohshme të butonave? Siç ilustrohet në modelin e Qarqeve TinkerCad, mund të përdoret për hyrjet e ndërruesve DIP për përzgjedhjen e mënyrave të ndryshme brenda programit.

Qarku që kam dalë përdor burimin 5V të disponueshëm nga Arduino dhe përdor 7 rezistorë dhe 6 butona ose çelsin.

Hapi 1: Qarku

Qarku
Qarku

Arduino ka hyrje analoge që pranojnë një hyrje 0V në 5V. Ky hyrje ka një rezolutë 10-bit, që do të thotë se sinjali është i ndarë në 2^10 segmente, ose 1024 numërime. Bazuar në këtë, më së shumti që mund të kishim futur ndonjëherë në një hyrje analoge duke lejuar shtypje të njëkohshme do të ishte 10 butona në 1 hyrje analoge. Por, kjo nuk është një botë perfekte. Ka rezistencë në përcjellës, zhurmë nga burimet e jashtme dhe fuqi të papërsosur. Pra, për t'i dhënë vetes shumë fleksibilitet, planifikova ta hartoja këtë për 6 butona. Kjo, pjesërisht, u ndikua nga fakti që Qarqet TinkerCAD kishin një objekt 6-Switch DIP Switch, i cili do ta bënte testimin të lehtë.

Hapi i parë në hartimin tim ishte të sigurohesha që secili buton, kur shtypet individualisht, do të siguronte një tension unik. Kjo përjashtoi që të gjithë rezistorët të kenë të njëjtën vlerë. Hapi tjetër ishte që vlerat e rezistencës, kur shtohen paralelisht, nuk mund të kenë të njëjtën rezistencë si çdo vlerë e vetme e rezistencës. Kur rezistorët janë të lidhur paralelisht, rezistenca që rezulton mund të llogaritet me Rx = 1/[(1/R1)+(1/R2)]. Pra, nëse R1 = 2000 dhe R2 = 1000, Rx = 667. Unë spekulova se duke dyfishuar madhësinë e secilit rezistencë, nuk do të shihja të njëjtën rezistencë për asnjë nga kombinimet.

Pra, qarku im deri në këtë pikë ishte të kisha 6 ndërprerës, secili me rezistencën e vet. Por, kërkohet një rezistencë tjetër për të përfunduar këtë qark.

Rezistenca e fundit ka 3 qëllime. Së pari, ai vepron si një rezistencë tërheqëse. Pa rezistencën, kur nuk shtypet asnjë buton, qarku nuk është i plotë. Kjo do të lejonte që tensioni në hyrjen analoge të Arduino të notonte në çdo potencial tensioni. Një rezistencë tërheqëse në thelb tërheq tensionin në 0 V. Qëllimi i dytë është të kufizojë rrymën e këtij qarku. Ligji i Ohmit thotë se V = IR, ose Tensioni = Rryma e shumëzuar me Rezistencën. Me një burim të caktuar të tensionit, aq më i madh rezistenca do të thotë që rryma do të ishte më e vogël. Pra, nëse një sinjal 5V aplikohej në një rezistencë 500ohm, rryma më e madhe që mund të shihnim do të ishte 0.01A, ose 10mA. Qëllimi i tretë është të sigurojë tensionin e sinjalit. Rryma totale që rrjedh përmes rezistencës së fundit do të ishte: i = 5V/Rtotal, ku Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Sidoqoftë, përfshini vetëm 1/Rx për çdo Rezistor që ka shtypur butonin përkatës. Nga rryma totale, Tensioni i furnizuar në Hyrjen Analog do të ishte i*Rlast, ose i*500.

Hapi 2: Vërtetim - Excel

Vërtetim - Excel
Vërtetim - Excel

Mënyra më e shpejtë dhe më e lehtë për të vërtetuar se do të merrja rezistenca unike dhe kështu tensione unike me këtë qark ishte përdorimi i aftësive të Excel.

Vendosa të gjitha kombinimet e mundshme të hyrjeve të ndërruesve dhe i organizova këto në mënyrë radhazi duke ndjekur modelet binare. Një vlerë prej "1" tregon që çelësi është i ndezur, bosh tregon se është i fikur. Në krye të tabelës, vendos vlerat e rezistencës për secilin ndërprerës dhe për rezistencën tërheqëse. Unë pastaj llogarita rezistencën ekuivalente për secilin prej kombinimeve, përveç rasteve kur të gjithë rezistorët janë të fikur pasi këto rezistorë nuk do të kenë ndikim pa pasur një burim energjie që e furnizon atë. Për t'i bërë llogaritjet e mia të lehta në mënyrë që të kopjoja dhe ngjisja në secilin kombinim, i përfshiva të gjitha kombinimet në llogaritjen duke shumëzuar secilën vlerë të ndërprerës (0 ose 1) me vlerën e rezistencës së përmbysur. Duke bërë kështu, eleminoni rezistencën e tij nga llogaritja nëse çelësi ishte i fikur. Ekuacioni që rezulton mund të shihet në imazhin e tabelës, por Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Duke përdorur Itotal = 5V / Req, ne përcaktojmë rrymën totale përmes qarkut. Kjo është e njëjta rrymë që kalon përmes rezistencës Tërheqëse dhe na siguron tensionin në hyrjen tonë analoge. Kjo llogaritet si Vin = Itotal x Rx. Duke ekzaminuar si të dhënat Req ashtu edhe të dhënat Vin, mund të shohim që me të vërtetë kemi vlera unike.

Në këtë pikë, duket se qarku ynë do të funksionojë. Tani për të kuptuar se si të programoni Arduino.

Hapi 3: Programimi Arduino

Programimi Arduino
Programimi Arduino
Programimi Arduino
Programimi Arduino
Programimi Arduino
Programimi Arduino

Kur fillova të mendoj se si të programoj Arduino -n, fillimisht planifikova të vendosja diapazone individuale të tensionit për të përcaktuar nëse një çelës ishte ndezur ose fikur. Por, ndërsa isha shtrirë në shtrat një natë, më erdhi në mendje se duhet të isha në gjendje të gjeja një ekuacion për ta bërë këtë. Si? SHKELQIM. Excel ka aftësinë për të llogaritur ekuacionet për të përshtatur më së miri të dhënat në një tabelë. Për ta bërë këtë, unë do të doja një ekuacion të Vlerës së plotë të çelsave (binar) kundrejt hyrjes së tensionit që korrespondon me atë vlerë. Në Fletoren time të Punës në Excel, unë vendos vlerën e plotë në anën e majtë të spreadsheet. Tani për të përcaktuar ekuacionin tim.

Këtu keni një mësim të shpejtë se si të përcaktoni ekuacionin e një linje brenda Excel.

1) Zgjidhni një qelizë që nuk përmban të dhëna. Nëse keni një qelizë të zgjedhur që ka të dhëna, Excel do të përpiqet të gjejë se çfarë doni të prirni. Kjo e bën shumë më të vështirë krijimin e një tendence, sepse Excel rrallë parashikon saktë.

2) Zgjidhni skedën "Fut" dhe zgjidhni një tabelë "Shpërndaj".

3) Klikoni me të djathtën në kutinë e grafikut dhe klikoni në "Zgjidh të dhënat …". Kjo do të shfaqë dritaren "Zgjidh burimin e të dhënave". Zgjidhni butonin Shto për të vazhduar për të zgjedhur të dhënat.

4) Jepini një Emër Serie (Opsionale). Zgjidhni Gama për Boshtin X duke klikuar shigjetën lart dhe pastaj duke zgjedhur të dhënat e Tensionit. Zgjidhni Gama për Boshtin Y duke klikuar shigjetën lart dhe pastaj duke zgjedhur të dhënat e plota (0-63).

5) Klikoni me të djathtën mbi pikat e të dhënave dhe Zgjidhni "Shto Trendline …" Në dritaren "Format Trendline", zgjidhni butonin Polinomial. Duke parë trendin, ne shohim që Rendi i 2 nuk përputhet plotësisht. Zgjodha një Urdhër prej 3 dhe ndjeva se kjo ishte shumë më e saktë. Zgjidhni kutinë e zgjedhjes për "Shfaqni ekuacionin në tabelë". Ekuacioni përfundimtar tani shfaqet në tabelë.

6) U krye.

NE RREGULL. Kthehuni te programi Arduino. Tani që kemi ekuacionin, programimi i Arduino është i lehtë. Numri i plotë që përfaqëson pozicionet e ndërruesit llogaritet në 1 rresht të kodit. Duke përdorur funksionin "bitread", ne mund të kapim vlerën e secilit bit individual dhe kështu të dimë gjendjen e secilit buton. (SHIKO FOTOT)

Hapi 4: Qarqet TinkerCAD

Qarqet TinkerCAD
Qarqet TinkerCAD

Nëse nuk i keni kontrolluar Qarqet TinkerCAD, bëjeni tani. PRIT !!!! Përfundoni së lexuari Instructable tim dhe më pas shikojeni. Qarqet TinkerCAD e bëjnë testimin e qarqeve Arduino shumë të lehtë. Ai përfshin disa objekte elektrike dhe Arduinos, madje ju lejon të programoni Arduino për testim.

Për të testuar qarkun tim, vendosa 6 ndërprerës duke përdorur një paketë ndërprerës DIP dhe i lidha me rezistorët. Për të vërtetuar se vlera e tensionit në spreadsheet -in tim në Excel ishte e saktë, unë shfaqa një voltmetër në hyrjen në Arduino. E gjithë kjo funksionoi siç pritej.

Për të vërtetuar se Programimi Arduino funksionoi, unë i nxjerr gjendjet e çelsave në LED, duke përdorur daljet dixhitale të Arduino.

Pastaj ndërrova çdo ndërprerës për çdo kombinim të mundshëm dhe jam krenar të them "IT WORKS" !!!

Hapi 5: "Shumë gjatë, dhe Faleminderit për të gjithë peshqit". (ref.1)

Unë ende nuk e kam provuar këtë duke përdorur pajisje të vërteta, pasi aktualisht po udhëtoj për punë. Por, pasi e provova me Qarqet TinkerCAD, besoj se do të funksionojë. Sfida është se vlerat e rezistorëve që kam specifikuar nuk janë të gjitha vlerat standarde për rezistorët. Për ta kapërcyer këtë, kam në plan të përdor potenciometra dhe kombinime të rezistorëve për të marrë vlerat që më duhen.

Faleminderit që lexuat udhëzimet e mia. Shpresoj se do t'ju ndihmojë me projektet tuaja.

Ju lutemi lini komente nëse keni provuar të trajtoni të njëjtën pengesë dhe si e kishit zgjidhur atë. Do të doja të mësoja më shumë mënyra për ta bërë këtë.

Hapi 6: Referencat

Ju nuk menduat se do të siguroja një citat pa dhënë një referencë për burimin e tij, apo jo?

ref. 1: Adams, Douglas. Shumë gjatë, dhe Faleminderit për të gjithë peshqit. (Libri i 4 -të i "trilogjisë" së Udhëzuesit të Hitchhiker -it për Galaktikën)

Recommended: