Sisukord:
Video: Kuidas lugeda mitut lülitit ühe MCU tihvtiga: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:51
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
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
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:
Kuidas lugeda elektriarvestit Arduino kaudu: 3 sammu
Kuidas lugeda elektriarvestit Arduino kaudu: Sageli oleks huvitav teada oma kodu praegust energiatarbimist või kogutarbimist, et piirata elektrikulusid ja kaitsta keskkonda. See pole tegelikult probleem, sest enamasti leiate nutika digitaalse
Kuidas lugeda MPX5010 diferentsiaalrõhu andurit Arduino abil: 5 sammu
Kuidas lugeda MPX5010 diferentsiaalrõhu andurit Arduino abil: koodi kirjutamise viis on selline, et seda saab hõlpsasti muuta, et see sobiks teisele rõhuandurile. Lihtsalt muutke koodis järgmisi konst muutujaid, mis põhinevad mis tahes rõhuanduri andmelehe väärtustel: "sensorOffset"
Õpetus: Kuidas Arduino TCA9548A I2C multiplekseri abil mitut sama aadressi seadet juhtida: 3 sammu
Õpetus: Kuidas Arduino mitme sama aadressi seadet TCA9548A I2C multiplekseri abil kirjeldab: Kirjeldus: TCA9548A I2C multipleksermoodul võimaldab ühendada sama I2C -aadressiga (kuni 8 sama aadressiga I2C) seadmeid, mis on ühendatud ühe mikrokontrolleriga. Multiplekser toimib väravavahina, edastades käsud valitud komplektile
Ühe tihvtiga klaviatuuri Raspberry Pi kasutusjuhend: 9 sammu
Ühe nööpnõelaga klaviatuuri Raspberry Pi kasutusjuhend: TÄHELEPANU: SEE ON KASUTAMISJUHIS AVATUD ALLIKASE TOOTELE: ÜHE PIN -KLAPP. SEE EI OLE DIY PROJEKT. KUI TAHATE TEIE LAUDADE MEISTADA, VÕIB EAGLE FILES LEIDA ÕPETUSE LÕPPU. Mis on One Pin -klahvistik? Ühe nupuga klaviatuur
Mitme nupu ühendamine Arduino ühe tihvtiga: 4 sammu
Mitme nupu ühendamine Arduino ühe tihvtiga: Tere kõigile! Kui teie Arduino projektides on vilkuvate LED -ide väljakasvanud, võite vajada lisatihvte. Näitan teile trikki, mida saate kasutada, kui teil võib olla mitu nuppu, mis on ühendatud sama analoogpistikuga