Obsah:

Pre Arduino použite 1 analógový vstup na 6 tlačidiel: 6 krokov
Pre Arduino použite 1 analógový vstup na 6 tlačidiel: 6 krokov

Video: Pre Arduino použite 1 analógový vstup na 6 tlačidiel: 6 krokov

Video: Pre Arduino použite 1 analógový vstup na 6 tlačidiel: 6 krokov
Video: Измерьте ток до 500A с помощью шунтирующего резистора с помощью Arduino 2024, Júl
Anonim
Pre Arduino použite 1 analógový vstup na 6 tlačidiel
Pre Arduino použite 1 analógový vstup na 6 tlačidiel

Často som premýšľal, ako by som mohol pre svoj Arduino získať viac digitálnych vstupov. Nedávno ma napadlo, že by som mal byť schopný použiť jeden z analógových vstupov na zapojenie viacerých digitálnych vstupov. Urobil som rýchle vyhľadávanie a zistil som, kde to ľudia dokážu, ale že tieto umožňujú iba stlačenie jedného tlačidla naraz. Chcem, aby bolo možné simultánne stlačiť ľubovoľnú kombináciu tlačidiel. S pomocou obvodov TINKERCAD som sa teda rozhodol to uskutočniť.

Prečo by som mal chcieť súčasné stlačenie tlačidiel? Ako je znázornené na návrhu obvodov TinkerCad, mohol by byť použitý pre vstupy prepínača DIP na výber rôznych režimov v programe.

Obvod, s ktorým som prišiel, používa 5V zdroj dostupný z Arduina a používa 7 odporov a 6 tlačidiel alebo prepínačov.

Krok 1: Okruh

Okruh
Okruh

Arduino má analógové vstupy, ktoré akceptujú vstup 0V až 5V. Tento vstup má 10-bitové rozlíšenie, čo znamená, že signál je rozdelený na 2^10 segmentov alebo 1024 číslic. Na základe toho by najviac, čo by sme mohli kedy zadať do analógového vstupu, a súčasne umožniť súčasné stlačenie, bolo 10 tlačidiel na 1 analógový vstup. Toto však nie je dokonalý svet. Vo vodičoch je odpor, hluk z vonkajších zdrojov a nedokonalá energia. Aby som si poskytol dostatok flexibility, plánoval som to navrhnúť pre 6 tlačidiel. Toto bolo čiastočne ovplyvnené skutočnosťou, že obvody TinkerCAD mali objekt 6-Switch DIP Switch, čo uľahčilo testovanie.

Prvým krokom v mojom návrhu bolo zaistiť, aby každé tlačidlo pri individuálnom stlačení poskytovalo jedinečné napätie. To vylúčilo, že všetky odpory majú rovnakú hodnotu. Ďalším krokom bolo, že hodnoty odporu, keď boli pridané paralelne, nemohli mať rovnaký odpor ako akákoľvek hodnota jedného odporu. Keď sú odpory zapojené paralelne, výsledný odpor možno vypočítať pomocou Rx = 1/[(1/R1)+(1/R2)]. Ak teda R1 = 2000 a R2 = 1000, Rx = 667. Špekuloval som, že zdvojnásobením veľkosti každého rezistora neuvidím rovnaký odpor v žiadnej z kombinácií.

Takže môj obvod do tohto bodu mal mať 6 spínačov, každý s vlastným odporom. Na dokončenie tohto obvodu je však potrebný ešte jeden odpor.

Posledný odpor má 3 účely. Po prvé, funguje ako pull-down odpor. Bez odporu nie je obvod stlačený, keď nie sú stlačené žiadne tlačidlá. To umožní, aby napätie na analógovom vstupe Arduina plávalo na akýkoľvek napäťový potenciál. Odporový odpor v podstate sťahuje napätie na 0 V. Druhým účelom je obmedziť prúd tohto obvodu. Ohmov zákon uvádza, že V = IR alebo napätie = prúd vynásobený odporom. Pri danom zdroji napätia platí, že čím väčší je odpor, tým menší bude prúd. Ak by bol teda na odpor 500 ohmov aplikovaný signál 5V, najväčší prúd, ktorý by sme mohli vidieť, by bol 0,01A alebo 10mA. Tretím účelom je poskytnúť signálne napätie. Celkový prúd pretekajúci posledným odporom by bol: i = 5V/Rtotal, kde Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Zahrňte však iba 1/Rx pre každý odpor, ktorý má stlačené príslušné tlačidlo. Z celkového prúdu by napätie dodávané do analógového vstupu bolo i*Rlast alebo i*500.

Krok 2: Dôkaz - Excel

Dôkaz - Excel
Dôkaz - Excel

Najrýchlejším a najľahším spôsobom, ako dokázať, že v tomto obvode získam jedinečné odpory a tým aj jedinečné napätie, bolo použiť možnosti programu Excel.

Nastavil som všetky možné kombinácie prepínacích vstupov a usporiadal som ich postupne podľa binárnych vzorov. Hodnota „1“znamená, že je spínač zapnutý, prázdny znamená, že je vypnutý. V hornej časti tabuľky som vložil hodnoty odporu pre každý spínač a pre sťahovací odpor. Potom som vypočítal ekvivalentný odpor pre každú z kombinácií, okrem prípadov, keď sú všetky odpory vypnuté, pretože tieto odpory nebudú mať vplyv bez toho, aby ich napájal zdroj energie. Aby boli moje výpočty jednoduché, aby som ich mohol kopírovať a prilepovať do každej kombinácie, zahrnul som všetky kombinácie do výpočtu vynásobením každej hodnoty prepínača (0 alebo 1) jej hodnoty obráteného odporu. Ak by ste tak urobili, eliminoval by sa jeho odpor z výpočtu, ak by bol vypínač vypnutý. Výslednú rovnicu je možné vidieť na obrázku tabuľky, ale Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Pomocou Itotal = 5V / Req určíme celkový prúd obvodom. Je to rovnaký prúd, ktorý prechádza ťahacím odporom, a dodáva nám napätie na náš analógový vstup. Toto sa vypočíta ako Vin = celkové x Rx. Keď skúmame údaje Req aj údaje Vin, vidíme, že skutočne máme jedinečné hodnoty.

V tomto okamihu sa zdá, že náš obvod bude fungovať. Teraz zistite, ako naprogramovať Arduino.

Krok 3: Programovanie Arduino

Programovanie Arduino
Programovanie Arduino
Programovanie Arduino
Programovanie Arduino
Programovanie Arduino
Programovanie Arduino

Keď som začal premýšľať o tom, ako naprogramovať Arduino, pôvodne som plánoval nastaviť jednotlivé rozsahy napätia na určenie, či je vypínač zapnutý alebo vypnutý. Ale keď som jednu noc ležal v posteli, napadlo mi, že by som na to mal nájsť rovnicu. Ako? EXCEL. Excel má schopnosť vypočítať rovnice tak, aby čo najlepšie zodpovedali údajom v grafe. Na to budem potrebovať rovnicu celočíselnej hodnoty prepínačov (binárne) proti napäťovému vstupu zodpovedajúcemu tejto hodnote. Vo svojom zošite programu Excel som vložil celočíselnú hodnotu na ľavú stranu tabuľky. Teraz určte moju rovnicu.

Tu je rýchly návod, ako určiť rovnicu čiary v programe Excel.

1) Vyberte bunku, ktorá neobsahuje žiadne údaje. Ak máte vybratú bunku s údajmi, Excel sa pokúsi odhadnúť, čo chcete trendovať. Vďaka tomu je oveľa ťažšie nastaviť trend, pretože Excel len zriedka predpovedá správne.

2) Vyberte kartu „Vložiť“a vyberte tabuľku „Bodový“.

3) Kliknite pravým tlačidlom myši na pole grafu a kliknite na „Vybrať údaje …“. Zobrazí sa okno „Vybrať zdroj údajov“. Kliknutím na tlačidlo Pridať pokračujte vo výbere údajov.

4) Zadajte názov série (voliteľné). Vyberte rozsah pre os X kliknutím na šípku nahor a potom zvolením údajov o napätí. Vyberte rozsah pre os Y kliknutím na šípku nahor a potom zvolením Integer Data (0-63).

5) Kliknite pravým tlačidlom myši na údajové body a zvoľte „Pridať trendovú čiaru …“V okne „Formátovať trendovú čiaru“zvoľte tlačidlo Polynóm. Pri pohľade na trend vidíme, že poradie 2 sa celkom nezhoduje. Vybral som objednávku 3 a cítil som, že je to oveľa presnejšie. Začiarknite políčko „Zobraziť rovnicu na grafe“. Konečná rovnica je teraz zobrazená v grafe.

6) Hotovo.

OK. Späť k programu Arduino. Teraz, keď máme rovnicu, je programovanie Arduina jednoduché. Celé číslo, ktoré predstavuje polohy prepínača, sa počíta v 1 riadku kódu. Použitím funkcie „bitread“môžeme zachytiť hodnotu každého jednotlivého bitu a poznať tak stav každého tlačidla. (POZRI FOTKY)

Krok 4: Obvody TinkerCAD

Obvody TinkerCAD
Obvody TinkerCAD

Ak ste si ešte neobjednali obvody TinkerCAD, urobte to teraz. ČAKAJTE !!!! Dokončite čítanie môjho Instructable a potom si ho prečítajte. Vďaka obvodom TinkerCAD je testovanie obvodov Arduino veľmi jednoduché. Obsahuje niekoľko elektrických predmetov a Arduinos, dokonca vám umožňuje naprogramovať Arduino na testovanie.

Aby som otestoval svoj obvod, nastavil som 6 prepínačov pomocou sady prepínačov DIP a priviazal ich k odporom. Aby som dokázal, že hodnota napätia v mojej tabuľke programu Excel bola správna, zobrazil som voltmetr na vstupe do Arduina. Toto všetko fungovalo podľa očakávania.

Aby som dokázal, že programovanie Arduino fungovalo, vyslal som stavy prepínačov do LED diód pomocou digitálnych výstupov Arduino.

Potom som prepol každý prepínač pre každú možnú kombináciu a som hrdý na to, že môžem povedať „TO FUNGUJE“!!!

Krok 5: „Tak dlho a vďaka za všetky ryby“. (odkaz 1)

Ešte to musím vyskúšať pomocou skutočného vybavenia, pretože momentálne cestujem za prácou. Ale potom, čo som to dokázal s obvodmi TinkerCAD, verím, že to bude fungovať. Problém je v tom, že hodnoty odporov, ktoré som uviedol, nie sú všetky štandardné hodnoty pre odpory. Aby som to obišiel, plánujem použiť potenciometre a kombinácie rezistorov na získanie hodnôt, ktoré potrebujem.

Ďakujem, že ste si prečítali môj návod. Dúfam, že vám to pomôže s vašimi projektmi.

Ak ste sa pokúsili vyriešiť rovnakú prekážku a ako ste ju vyriešili, zanechajte prosím komentáre. Rád by som sa dozvedel viac spôsobov, ako to urobiť.

Krok 6: Referencie

Nemysleli ste si, že poskytnem citát bez uvedenia odkazu na jeho zdroj, však?

ref. 1: Adams, Douglas. Tak dlho a ďakujem za všetky ryby. (4. kniha „Trilógie“Stopárovho sprievodcu po galaxii)

Odporúča: