Sisukord:

Kuidas lugeda mitut lülitit ühe MCU tihvtiga: 4 sammu
Kuidas lugeda mitut lülitit ühe MCU tihvtiga: 4 sammu

Video: Kuidas lugeda mitut lülitit ühe MCU tihvtiga: 4 sammu

Video: Kuidas lugeda mitut lülitit ühe MCU tihvtiga: 4 sammu
Video: ESP32 Tutorial 12 - WS2812 RGB Srip 4 Project with SunFounder's ESP32 IoT Learnig kit 2024, November
Anonim
Kuidas lugeda mitut lülitit ühe MCU tihvtiga
Kuidas lugeda mitut lülitit ühe MCU tihvtiga

Kas olete kunagi mõne projekti (te) kallal käinud ja projekt aina kasvab ja kasvab, samal ajal kui lisate sellele rohkem asju (me nimetame seda silmatorkavaks kreaturismiks)? Hiljutises projektis ehitasin sagedusmõõturit ja lisasin viie funktsiooniga signaaligeneraatori/sagedussüntesaatori. Varsti lõpetasin rohkem lülititega, kui mul oli veel nööpnõelu, nii et mida kutt teha?

Kuid varsti oli mul Funboxis veel seitse lülitit (jah, seda ma nimetasin oma funktsioonigeneraatoriks … ma tean, mul pole loovust) ja siin on lühike juhend, mis näitab teile, kuidas saate sama teha. See ei nõua vahetusregistreid ega konkreetseid IC -sid. Tegelikult ei vaja see ka mikrokontrollerit, kui te rullite diskreetseid pooljuhte. Siin on üks viis, kuidas saate lugeda/hallata mitut lülitit, kasutades ühte AVR -i (või muu mikrokontrolleri… tihvti) tihvti. Olen kuulnud, et peale AVR -i on ka teisi mikrokontrollereid, aga ma ei kujuta ette …).:)

Samm: põhitõed (mitte tegelikult)

Selle saavutamiseks vajate mõnda komponenti. See aitab paljude lülitite olemasolust, mida peate haldama. Teil on vaja ka mõnda takistit ja kas mikrokontrollerit, millel on ADC (analoog-digitaalne teisendus) või muul viisil, mida soovite näidata, et lüliti on aktiveeritud ja milline lüliti see oli.

Kui soovite, võite selle näitamiseks kasutada pingega juhitavat ostsillaatorit, võib -olla mõne vilkuva tulega või heliga. Selles naljas hakkan teesklema, et kasutame AVR -i, kuid teie maailmas võite teeselda kõike, mis teid õnnelikuks teeb. Ma igatsen Bob Rossi.

2. samm: pingejagur

Pingejagur
Pingejagur
Pingejagur
Pingejagur

Põhimõtteliselt on see, kuidas me seda teeme, kasutades tehnikat ja vooluahelat, mida nimetatakse pingejaguriks. Pingejagurid jagavad, nagu võisite arvata, V,,,, pinge mõne teie määratud väärtusega. Pinget saab jagada mitme komponendiga, sealhulgas kondensaatorite ja induktiivpoolidega, kuid siin ma teen seda hea takistiga. Idee, mida me teeme, on panna kaks komponenti järjestikku, mis põhjustavad kumbki eraldi pingelangust kogu komponendis. Vaadake esimest pilti, kui mul pole mõtet. Võimalik erinevus 9V raudteelt raudteele. 9V ja 0V vahel on järjestikku kaks takistit. Kõigil neist on pingelangus, sõltuvalt takistusest, nagu ilmselt mäletate V = IR -st. Kui võtate kahe takisti vahel pinge mõõtmise, saate väärtuse vahemikus 9V kuni 0V, sõltuvalt sellest, kui palju pinget on esimese takisti vahel langenud ja kui palju on jäänud üle teise takisti, enne 0V. Sellises olukorras on takisti pingelanguse arvutamiseks lihtne valem ja see näeb välja selline. Olgu takisti 1 (R1) pinge V1 ja takisti 2 pinge (R2) V2. Kuna ma ei saa enam vormindamist kasutada, vaadake valemit allolevalt pildilt 2 … Niisiis, meie takistusliku jagaja puhul saab Vouti pinge määrata meie valemi V2 järgi (kuna me viidame GND -le 0V -le). Mis on sellel pistmist sellega, et ühelt tihvtilt tuvastatakse hunnik lüliteid? No keera lehte ja ma näitan sulle!

3. samm: pingejaotusredel

Pingejaotusredel
Pingejaotusredel

Oletame nüüd, et meil on kõik meie lülitid, võib -olla kuus, kaheksa või kuusteist, kõik ühendatud takistite kaudu, millest igaüks toimib pingejagurina nii, et kui lüliti tihvti olek muutub, loetakse pinge ja lähtutakse pingetasemest. saab teada, milline lüliti just aktiveeriti. Vaata allpool. Alloleval pildil olen ühendanud kaks lülitite plokki. Kõige ülemises plokis on kaks lülitit ja alumises plokis on viis lülitit. Saate ühendada oma eraldi lülitus-, hetkelised, kombatavad jne lülitid samamoodi. Oluline on tähele panna takistit, millega teie lüliti on ühendatud. Minu näites olen järgmise takisti takistuse peaaegu kahekordistanud, et tekitada pingevahe, mida on lihtne mõõta ja mitte eksida lüliti ees või pärast. Kui te pole seda varem märganud, vaadake uuesti ja mõistke, et oleme tagasi oma vana sõbra, takistusliku pingejaguri juures. Esimene takisti, 10k oom, on ühendatud 5V ja teine takisti - takisti, mis määrab Vvälja SWITCH_ADC tihvti jaoks on ühendatud iga lülitiga ja seetõttu on iga lüliti seotud kindla Vout -pingega, mida saab lugeda SWITCH_ADC -ga ühendatud ADC -tihvtilt. Seejärel määrake igalt lülitilt oodatav Vout

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

esimese lüliti jaoks:

Vout = 5 V * (500 / (10000 + 500)) = 5 * 0,048 = 0,24 V või 240 mV

teise lüliti jaoks:

Vout = 5 V * (2200 / (10000 + 2200)) = 5 * 0,18 = 0,9 V või ~ 900 mV

ja nii edasi.. Asendage R2 oma väärtustega, kui teil on käepärast ainult teatud takistid … Siin on peamine asi hoida lülitite vahel piisavalt lai pingevahe, nii et ADC iga veamäär võidaks. t ei pane teid naaberlülitist oodatavasse pingesse. Leidsin, et kõige lihtsam on ehitada jaotusredel ja panna multimeeter/voltmeeter ADC tihvtile ning vajutada igale tihvtile ja vaadata, milliseid väärtusi saate. Need peaksid olema teie arvutamisel üsna täpsed. Kui teil on teatud takistit kasutades iga lüliti kõik eeldatavad pingeväärtused, saate lasta MCU -l lugeda ADC -tihvti ja võrrelda seda oma teadaolevate väärtustega, et teha kindlaks, millist lülitit vajutati. Oletame näiteks, et olete registreerinud katkestusteenuse rutiini, millele helistatakse iga kord, kui ADC tihvtis tuvastatakse muudatusi. Selle ISR -i sees saate lugeda ADC -d ja võrrelda seda väärtust oma lülitustabeliga. Kui kasutate 8-bitist ADC-väärtust, teisendatakse teie pinge arvuks vahemikus 0–255, mis vastab 0–5 V pingele. See eeldab, et teie ADC on sel viisil konfigureeritud.

4. samm: kokkuvõte

Niisiis, nüüd peaksite teadma, kuidas olla säästlik GPIO -tihvtide kasutamisel lülitite jaoks. Kui teil on GPIO -tihvtid otsas või vaevalt alustate või kui mõistate, et kasutate lülitite panka, on takistuslik eraldaja viis GPIO -nööpnõelte salvestamiseks, pakkudes samal ajal tugev mehhanism lülitile juurdepääsu tuvastamiseks.

Soovitan: