Talaan ng mga Nilalaman:

Paano Basahin ang Maraming Mga switch Sa Isang MCU Pin: 4 na Hakbang
Paano Basahin ang Maraming Mga switch Sa Isang MCU Pin: 4 na Hakbang

Video: Paano Basahin ang Maraming Mga switch Sa Isang MCU Pin: 4 na Hakbang

Video: Paano Basahin ang Maraming Mga switch Sa Isang MCU Pin: 4 na Hakbang
Video: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, Hunyo
Anonim
Paano Basahin ang Maraming Mga switch Sa Isang MCU Pin
Paano Basahin ang Maraming Mga switch Sa Isang MCU Pin

Nakarating na ba kayo chugging ang layo sa isang (mga) proyekto at ang proyekto ay patuloy na lumalaki at lumalaki, habang nagdagdag ka ng maraming mga bagay dito (tinatawag naming isang Feaping Creaturism)? Sa isang kamakailang proyekto, nagtatayo ako ng isang frequency meter at nagdagdag ng limang function signal generator / frequency synthesizer. Sa lalong madaling panahon ay napuno ko ng maraming mga switch kaysa sa mayroon akong mga magagamit na mga pin na natitira, kaya kung ano ang gagawin ng isang tao?

Gayunpaman, mayamaya pa akong pitong switch sa aking Funbox (oo, iyon ang tinawag kong generator ng aking pag-andar … Alam ko, wala akong pagkamalikhain) at narito ang isang maikling itinuro na nagpapakita sa iyo kung paano mo magagawa ang pareho. Hindi ito nangangailangan ng anumang mga rehistro sa paglilipat o mga tukoy na IC. Sa katunayan, hindi ito nangangailangan ng isang microcontroller, alinman, kung ang discrete semiconductors ay kung paano ka gumulong. Narito ang isang paraan na maaari mong basahin / pamahalaan ang maraming mga switch gamit ang isang solong pin sa iyong AVR (o iba pang microcontroller … Narinig kong may iba pang mga microcontroller bukod sa AVR's, ngunit hindi ko maisip …).:)

Hakbang 1: Ang Mga Mahahalaga (hindi Talaga)

Upang magawa ito, kakailanganin mo ng ilang mga bahagi. Nakatutulong ito upang magkaroon ng maraming mga switch na kailangan mong pamahalaan. Kakailanganin mo rin ang ilang mga resistors at alinman sa isang microcontroller na mayroong ADC (Analog-to-Digital Conversion) o ilang iba pang paraan na nais mong ipahiwatig na mayroong isang switch na naisaaktibo at aling switch ito.

Kung nais mo maaari kang gumamit ng oscillator na kinokontrol ng boltahe upang ipahiwatig ito, marahil ay may ilang mga kumikislap na ilaw, o kahalili, na may tunog. Sa 'ible na ito, magpapanggap ako na gumagamit kami ng isang AVR, ngunit sa iyong mundo maaari mong magpanggap kahit anong magpapasaya sa iyo. Miss ko na si Bob Ross.

Hakbang 2: Ang Divider ng Boltahe

Ang Divider ng Boltahe
Ang Divider ng Boltahe
Ang Divider ng Boltahe
Ang Divider ng Boltahe

Mahalaga, ang paraan na magagawa natin ito ay sa pamamagitan ng paggamit ng isang diskarte at circuit na tinatawag na isang voltage divider. Ginagawa ng mga divider ng boltahe, na maaaring nahulaan mo, hatiin ang V,, sa,, boltahe ng ilang halaga na natukoy mo. Maaari mong hatiin ang boltahe sa maraming mga bahagi, kabilang ang mga capacitor at inductor, ngunit narito ko gagawin ito sa mahusay na resistor ng ol. Ang Ideya Ang ginagawa namin ay paglalagay ng dalawang bahagi sa serye na magdudulot, bawat isa sa bawat isa, isang pagbagsak ng boltahe sa kabuuan ng bahagi. Tingnan ang unang larawan kung hindi ako nagkakaroon ng katuturan. Mayroong isang potensyal na pagkakaiba ng 9V mula sa riles patungong riles. Sa pagitan ng 9V at 0V mayroong dalawang resistors sa serye. Ang bawat isa sa mga ito ay makakaranas ng isang pagbagsak ng boltahe sa kanyang sarili, depende sa paglaban, dahil marahil ay naaalala mo mula sa V = IR. Kung kukuha ka ng isang pagsukat ng boltahe sa pagitan ng dalawang resistors, makakakuha ka ng ilang halaga sa pagitan ng 9V at 0V, depende sa kung magkano ang boltahe na bumaba sa unang risistor at kung magkano ang natitira upang mahulog sa ika-2 risistor, bago ang 0V. Mayroong isang direktang formula para sa pagkalkula ng boltahe na drop sa isang risistor sa sitwasyong ito at ganito ang hitsura. Hayaan ang boltahe sa ibabaw ng risistor 1 (R1) ay maging V1 at ang boltahe sa paglaban ng dalawang (R2) ay maging V2. Dahil hindi ko na magagamit ang pag-format, tingnan ang larawan 2 sa ibaba para sa pormula … Kaya, sa aming resistive divider, ang boltahe ng Vout ay maaaring matukoy ng aming pormula para sa V2 (dahil isasangguni namin ang GND sa 0V). Ano ang gagawin nito sa pagkakaroon ng isang kumpol ng mga switch na napansin mula sa isang pin? Kaya, buksan ang pahina at ipapakita ko sa iyo!

Hakbang 3: Hagdan ng Divider ng Boltahe

Hagdan ng Divider ng Boltahe
Hagdan ng Divider ng Boltahe

Ngayon ipagpalagay na mayroon tayong lahat ng aming mga switch, marahil anim o walo o labing-anim, lahat ay konektado sa pamamagitan ng resistors na ang bawat isa ay nagsisilbing isang divider ng boltahe na kapag nagbago ang estado ng switch ng switch, ang boltahe ay nabasa at batay sa antas ng boltahe, kami ay maaaring malaman kung aling switch ang pinapagana lang. Tumingin ka sa baba. Sa larawan sa ibaba, nakakonekta ako sa dalawang mga bloke ng switch. Ang nangungunang block ay may dalawang switch, at ang pinaka-block ay may limang switch. Maaari mong ikonekta ang iyong magkahiwalay na toggle, panandalian, pandamdam, atbp switch sa parehong paraan. Ang mahalagang bagay na mapapansin ay ang risistor na konektado ang iyong switch. Sa aking halimbawa, halos nadoble ko ang paglaban ng susunod na risistor upang lumikha ng isang boltahe na puwang na madaling sukatin at hindi pagkakamali para sa switch bago o pagkatapos. Kung hindi mo pa napansin dati, tumingin muli, at mapagtanto na bumalik kami sa aming dating kaibigan na resistive voltage divider. Ang unang risistor, ang 10k ohm, ay konektado sa 5V at ang ika-2 risistor - ang risistor na tutukoy sa Vpalabas para sa SWITCH_ADC pin, ay konektado sa bawat switch at samakatuwid, ang bawat switch ay nauugnay sa isang partikular na boltahe ng Vout na mababasa mula sa ADC pin na konektado sa SWITCH_ADC. Susunod, tukuyin ang inaasahang Vout mula sa bawat paglipat tulad nito

Vout = Vin * (R2 / (R1 + R2))

para sa switch one:

Vout = 5V * (500 / (10000 + 500)) = 5 * 0.048 = 0.24V o 240 mV

para sa switch two:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0.18 = 0.9V o ~ 900mV

at iba pa.. Huwag mag-atubiling kapalit sa iyong sariling mga halaga para sa R2 kung mayroon ka lamang mga tiyak na resistors … Ang pangunahing bagay dito ay upang mapanatili ang isang malawak na sapat na puwang sa boltahe sa pagitan ng mga switch upang ang anumang margin ng error sa ADC ay nanalo ' t ilagay ka sa boltahe na inaasahan mula sa isang kalapit na switch. Natagpuan ko ang pinakamadaling bagay na dapat gawin ay ang pagbuo ng divider hagdan at maglagay ng isang multimeter / voltmeter sa ADC pin at pindutin ang bawat pin at makita kung anong mga halaga ang nakukuha mo. Dapat ay medyo spot sila sa iyong kinakalkula. Kapag mayroon ka ng lahat ng mga inaasahang halaga ng boltahe mula sa bawat switch gamit ang isang partikular na risistor, pagkatapos ay maaari mong mabasa sa iyong MCU ang ADC pin at ihambing iyon sa iyong mga kilalang halaga upang matukoy kung aling switch ang pinindot. Halimbawa, sabihin na nakarehistro ka ng isang nakakagambala na gawain sa serbisyo na tatawagan tuwing may napansin na pagbabago sa ADC pin. Sa loob ng ISR na iyon, mababasa mo ang ADC at ihambing ang halagang iyon sa iyong switch table. Kung gumagamit ka ng isang 8-bit na halaga ng ADC, ang iyong boltahe ay mai-convert sa isang numero sa pagitan ng 0 at 255 na tumutugma sa isang boltahe sa pagitan ng 0V at 5V. Ipinapalagay nito na na-configure mo ang iyong ADC sa ganitong paraan.

Hakbang 4: Buod

Kaya, ngayon dapat mong malaman kung paano maging matipid sa paggamit ng mga GPIO pin para sa mga switch. Sa tuwing tumatakbo ka nang mababa sa mga GPIO pin, o halos wala kang pagsisimulan, o kung napagtanto mong gumagamit ka ng isang bangko ng mga switch, ang resistive divider ay ang paraan upang pumunta upang mai-save ang iyong mga GPIO pin habang nagbibigay pa rin ng matatag na mekanismo upang makita ang pag-access ng switch.

Inirerekumendang: