Tartalomjegyzék:

Használjon 1 analóg bemenetet 6 gombhoz az Arduino számára: 6 lépés
Használjon 1 analóg bemenetet 6 gombhoz az Arduino számára: 6 lépés

Videó: Használjon 1 analóg bemenetet 6 gombhoz az Arduino számára: 6 lépés

Videó: Használjon 1 analóg bemenetet 6 gombhoz az Arduino számára: 6 lépés
Videó: CS50 2013 - Week 9 2024, Július
Anonim
Használjon 1 analóg bemenetet 6 gombhoz az Arduino számára
Használjon 1 analóg bemenetet 6 gombhoz az Arduino számára

Sokszor elgondolkodtam azon, hogyan szerezhetnék több digitális bemenetet az Arduino -mhoz. Nemrég jutott eszembe, hogy az egyik analóg bemenetet használnom kell több digitális bemenet bevitelére. Gyors keresést végeztem, és megtudtam, hogy az emberek hol tudták ezt megtenni, de ezek csak egy gombnyomást tesznek lehetővé egyszerre. Szeretném, ha a gombok bármely kombinációját egyszerre tudnám megnyomni. Szóval, a TINKERCAD ÁRAMKÖRÖK segítségével elhatároztam, hogy ez megtörténik.

Miért akarok egyidejű gombnyomást? Amint azt a TinkerCad áramkörök tervezése is mutatja, használható a DIP kapcsoló bemenetekhez a program különböző módjainak kiválasztásához.

Az általam kitalált áramkör az Arduino -tól kapható 5V -os forrást használja, és 7 ellenállást és 6 gombot vagy kapcsolót használ.

1. lépés: Az áramkör

Az áramkör
Az áramkör

Az Arduino analóg bemenetekkel rendelkezik, amelyek 0V -5V bemenetet fogadnak el. Ez a bemenet 10 bites felbontással rendelkezik, ami azt jelenti, hogy a jel 2^10 szegmensre vagy 1024 számlálóra van bontva. Ennek alapján a legtöbb, amit valaha is be tudunk adni analóg bemenetbe, miközben lehetővé teszi az egyidejű megnyomást, 10 gomb 1 analóg bemenetre lenne. De ez nem egy tökéletes világ. Ellenállás van a vezetőkben, külső forrásokból származó zaj és nem tökéletes áram. Tehát, hogy sok rugalmasságot biztosítsak magamnak, úgy terveztem, hogy ezt 6 gombhoz tervezem. Ezt részben befolyásolta az a tény is, hogy a TinkerCAD áramkörök 6-kapcsolós DIP kapcsoló objektummal rendelkeztek, ami megkönnyíti a tesztelést.

Tervezésem első lépése az volt, hogy megbizonyosodjak arról, hogy minden gomb külön -külön megnyomva egyedi feszültséget biztosít. Ez kizárta, hogy minden ellenállás azonos értékű legyen. A következő lépés az volt, hogy az ellenállási értékek párhuzamos hozzáadásával nem rendelkezhetnek ugyanolyan ellenállással, mint bármelyik ellenállásérték. Ha az ellenállásokat párhuzamosan csatlakoztatják, a kapott ellenállás kiszámítható Rx = 1/[(1/R1)+(1/R2)]. Tehát, ha R1 = 2000 és R2 = 1000, akkor Rx = 667. Sejtettem, hogy az egyes ellenállások méretének megduplázásával egyik kombináció esetében sem látnám ugyanazt az ellenállást.

Tehát az én áramköröm eddig 6 kapcsoló volt, mindegyik saját ellenállással. Ennek az áramkörnek a befejezéséhez azonban még egy ellenállás szükséges.

Az utolsó ellenállásnak 3 célja van. Először is, lehúzó ellenállásként működik. Ellenállás nélkül, ha egyetlen gombot sem nyom meg, az áramkör hiányos. Ez lehetővé tenné, hogy az Arduino analóg bemenetén lévő feszültség bármilyen feszültségpotenciálra lebegjen. A lehúzható ellenállás lényegében lehúzza a feszültséget 0 V-ra. A második cél ennek az áramkörnek az áramának korlátozása. Ohm törvénye szerint V = IR, vagy feszültség = áram szorozva ellenállással. Adott feszültségforrás esetén minél nagyobb az ellenállás, azt jelenti, hogy az áram kisebb lesz. Tehát, ha 5 V -os jelet adnánk egy 500 ohmos ellenállásra, a legnagyobb áram, amit láthatnánk, 0,01A vagy 10mA lenne. A harmadik cél a jelfeszültség biztosítása. Az utolsó ellenálláson átáramló teljes áram a következő lenne: i = 5V/Rtotal, ahol Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Mindazonáltal csak 1/Rx értéket kell megadni minden olyan ellenálláshoz, amelyiknek le van nyomva a megfelelő gombja. A teljes áramból az analóg bemenetre táplált feszültség i*Rlast vagy i*500 lenne.

2. lépés: Bizonyítás - Excel

Bizonyítás - Excel
Bizonyítás - Excel

A leggyorsabb és legegyszerűbb módja annak, hogy bebizonyítsam, hogy egyedi ellenállásokat és így egyedi feszültségeket kapok ezzel az áramkörrel, az Excel képességeinek kihasználása volt.

Beállítottam a kapcsolóbemenetek összes lehetséges kombinációját, és ezeket bináris mintákat követve rendeztem. Az "1" érték azt jelzi, hogy a kapcsoló be van kapcsolva, az üres pedig azt, hogy ki van kapcsolva. A táblázat tetején az egyes kapcsolók és a lehúzható ellenállások ellenállási értékeit adom meg. Ezután kiszámítottam az egyes kombinációk ekvivalens ellenállását, kivéve, ha minden ellenállás ki van kapcsolva, mivel ezek az ellenállások nem lesznek hatással, ha nincs áramforrás. A számításaim megkönnyítése érdekében, hogy másolhassak és beilleszthessek minden kombinációba, minden kombinációt bevontam a számításba úgy, hogy minden egyes kapcsolóértéket (0 vagy 1) megszorzok a fordított ellenállási értékével. Ezzel a kapcsoló kikapcsolt állapotában kiküszöböli az ellenállást a számításból. A kapott egyenlet a táblázat képén látható, de Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Az Itotal = 5V / Req használatával meghatározzuk az áramkörön átfolyó teljes áramot. Ugyanaz az áram, amely a lehúzó ellenálláson megy keresztül, és biztosítja az analóg bemenet feszültségét. Ezt Vin = Itotal x Rx képlettel számítják ki. A Req és a Vin adatokat egyaránt megvizsgálva láthatjuk, hogy valóban egyedi értékeink vannak.

Ezen a ponton úgy tűnik, hogy az áramkörünk működni fog. Most kitaláljuk, hogyan kell programozni az Arduino -t.

3. lépés: Arduino programozás

Arduino programozás
Arduino programozás
Arduino programozás
Arduino programozás
Arduino programozás
Arduino programozás

Amikor azon kezdtem gondolkodni, hogyan programozhatom az Arduino -t, kezdetben egyedi feszültségtartományok beállítását terveztem annak megállapítására, hogy a kapcsoló be vagy ki van -e kapcsolva. Ám, amikor egyik este az ágyban feküdtem, eszembe jutott, hogy meg kell találnom ennek az egyenletét. Hogyan? EXCEL. Az Excel képes kiszámítani egyenleteket, hogy a legjobban illeszkedjenek a diagram adataihoz. Ehhez szeretnék a kapcsolók (bináris) egész értékének egyenletét az adott értéknek megfelelő feszültségbemenettel. Az Excel munkafüzetemben az egész értéket a táblázat bal oldalára tettem. Most határozzuk meg az egyenletemet.

Íme egy gyors bemutató, hogyan lehet meghatározni egy egyenlet egyenletét az Excelben.

1) Válasszon ki egy cellát, amely nem tartalmaz adatokat. Ha olyan cella van kiválasztva, amely adatokkal rendelkezik, az Excel megpróbálja kitalálni, hogy mit szeretne trendelni. Ez sokkal megnehezíti a trend felállítását, mert az Excel ritkán jósol helyesen.

2) Válassza ki a "Beszúrás" fület, és válasszon egy "Scatter" diagramot.

3) Kattintson a jobb gombbal a diagrammezőre, és kattintson az "Adatok kiválasztása …" gombra. Ekkor megjelenik az "Adatforrás kiválasztása" ablak. Az adatok kiválasztásához kattintson a Hozzáadás gombra.

4) Adjon meg egy sorozatnevet (opcionális). Válassza ki az X-tengely tartományát a felfelé mutató nyílra kattintva, majd válassza ki a feszültségadatokat. Válassza ki az Y tengely tartományát a felfelé mutató nyílra kattintva, majd válassza ki az Integer Data (0-63) értéket.

5) Kattintson a jobb egérgombbal az adatpontokra, és válassza a "Trendvonal hozzáadása …" lehetőséget. A "Trendvonal formázása" ablakban válassza a Polinom gombot. Ha megnézzük a tendenciát, látjuk, hogy a 2 -es sorrend nem teljesen egyezik. 3 -as rendelést választottam, és úgy éreztem, hogy ez sokkal pontosabb. Jelölje be az "Egyenlet megjelenítése a diagramon" jelölőnégyzetet. A végső egyenlet most megjelenik a diagramon.

6) Kész.

RENDBEN. Vissza az Arduino programhoz. Most, hogy megvan az egyenlet, az Arduino programozása egyszerű. A kapcsoló pozícióit ábrázoló egész szám 1 kódsorban kerül kiszámításra. A "bitread" funkció használatával megragadhatjuk az egyes bitek értékét, és így ismerhetjük az egyes gombok állapotát. (LÁSD A FOTÓKAT)

4. lépés: TinkerCAD áramkörök

TinkerCAD áramkörök
TinkerCAD áramkörök

Ha még nem nézte meg a TinkerCAD áramköröket, tegye meg most. VÁRJON!!!! Olvasd el az Instructable -t, majd nézd meg. A TinkerCAD Circuits nagyon megkönnyíti az Arduino áramkörök tesztelését. Több elektromos tárgyat és Arduino -t tartalmaz, még az Arduino programozását is lehetővé teszi tesztelésre.

Az áramkör teszteléséhez 6 kapcsolót állítottam be egy DIP kapcsolócsomag használatával, és az ellenállásokhoz kötöttem. Annak bizonyítására, hogy az Excel táblázatban megadott feszültségérték helyes volt, egy voltmérőt jelenítettem meg az Arduino bemeneténél. Mindez a várt módon működött.

Annak bizonyítására, hogy az Arduino programozás működött, az Arduino digitális kimeneteinek segítségével a kapcsolók állapotát LED -ekre adom.

Ezután minden kapcsolót lecseréltem minden lehetséges kombinációra, és büszkén mondhatom, hogy "MŰKÖDIK" !!!

5. lépés: "Olyan sokáig, és köszönöm az összes halat." (ref.1)

Ezt még nem kellett kipróbálnom valódi felszereléssel, mivel jelenleg munka miatt utazom. De miután bebizonyítottam a TinkerCAD Circuits segítségével, úgy gondolom, hogy működni fog. A kihívás az, hogy az általam megadott ellenállások értékei nem minden szabványos értékek az ellenállásoknál. Ennek kiküszöbölésére potenciométereket és ellenállások kombinációit tervezem, hogy megkapjam a szükséges értékeket.

Köszönöm, hogy elolvastad az utasításomat. Remélem, hogy segít a projektekben.

Kérjük, írjon megjegyzést, ha megpróbálta leküzdeni ugyanezt az akadályt, és hogyan oldotta meg. Szívesen megtanulnék ennek több módját.

6. lépés: Hivatkozások

Ugye nem gondolta, hogy idézetet adok anélkül, hogy hivatkoznék a forrására?

ref. 1: Adams, Douglas. Nagyon sokáig, és köszönöm az összes halat. (A stoppos Útmutató a galaxishoz "trilógia" 4. könyve)

Ajánlott: