Sisällysluettelo:

Kuinka lukea monia kytkimiä yhdellä MCU -nastalla: 4 vaihetta
Kuinka lukea monia kytkimiä yhdellä MCU -nastalla: 4 vaihetta

Video: Kuinka lukea monia kytkimiä yhdellä MCU -nastalla: 4 vaihetta

Video: Kuinka lukea monia kytkimiä yhdellä MCU -nastalla: 4 vaihetta
Video: Täydellinen vastauskyselykurssi tunnissa | TanStack Query v4 aloittelijoille 2024, Marraskuu
Anonim
Kuinka lukea monia kytkimiä yhdellä MCU -nastalla
Kuinka lukea monia kytkimiä yhdellä MCU -nastalla

Oletko koskaan piilottanut projektia (hankkeita) ja projekti kasvaa ja kasvaa samalla kun lisäät siihen lisää asioita (kutsumme sitä hölmöksi luovuudeksi)? Äskettäisessä projektissa rakensin taajuusmittaria ja lisäsin viiden funktion signaaligeneraattorin/taajuussyntetisaattorin. Pian päädyin enemmän kytkimiin kuin minulla oli käytettävissä olevia nastoja jäljellä, joten mitä kaveri tekee?

Kuitenkin minulla oli pian seitsemän muuta kytkintä Funboxissa (joo, sitä minä kutsuin funktiogeneraattorikseni… tiedän, minulla ei ole luovuutta), ja tässä on lyhyt ohje, joka näyttää, kuinka voit tehdä saman. Se ei vaadi vuororekistereitä tai erityisiä IC: itä. Itse asiassa se ei myöskään vaadi mikro -ohjainta, jos rullaat erillisiä puolijohteita. Tässä on yksi tapa, jolla voit lukea/hallita useita kytkimiä yhdellä nastalla AVR -laitteessasi (tai muussa mikrokontrollerissa … Olen kuullut, että AVR: n lisäksi on muitakin mikro -ohjaimia, mutta en voi kuvitella …).:)

Vaihe 1: Olennaiset asiat (ei oikeastaan)

Tämän saavuttamiseksi tarvitset muutamia komponentteja. Se auttaa monien kytkimien hallitsemisessa. Tarvitset myös joitain vastuksia ja joko mikro-ohjaimen, jossa on ADC (analoginen-digitaalinen muunnos) tai jollakin muulla tavalla haluat ilmoittaa, että kytkin oli aktivoitu ja mikä kytkin se oli.

Jos haluat, voit käyttää jänniteohjattua oskillaattoria osoittamaan tämän, ehkä joidenkin vilkkuvien valojen kanssa tai vaihtoehtoisesti äänen kanssa. Tässä iblessä aion teeskennellä, että käytämme AVR: ää, mutta maailmassasi voit teeskennellä mitä tahansa, joka tekee sinut onnelliseksi. Kaipaan Bob Rossia.

Vaihe 2: Jännitteenjakaja

Jännitteenjakaja
Jännitteenjakaja
Jännitteenjakaja
Jännitteenjakaja

Pohjimmiltaan tapa, jolla aiomme tehdä tämän, on käyttää tekniikkaa ja piiriä, jota kutsutaan jännitteenjakajaksi. Jännitteenjakajat jakavat V,, in,, jännitteen jollakin määrittämälläsi arvolla, kuten olet ehkä arvannut. Voit jakaa jännitteen useilla komponenteilla, mukaan lukien kondensaattorit ja induktorit, mutta tässä aion tehdä sen hyvällä vastuksella. Idea Mitä teemme, on asettaa kaksi komponenttia sarjaan, jotka aiheuttavat kumpikin erikseen jännitteen laskun komponentissa. Katso ensimmäinen kuva, jos minulla ei ole järkeä. Mahdollinen 9 V: n ero rautateistä rautateihin. 9V ja 0V välillä on kaksi vastusta sarjassa. Jokainen näistä kokee jännitehäviön itsestään riippuen vastuksesta, kuten luultavasti muistat V = IR. Jos otat jännitemittauksen kahden vastuksen välillä, saat jonkin arvon välillä 9V ja 0V riippuen siitä, kuinka paljon jännitettä on pudonnut ensimmäisen vastuksen yli ja kuinka paljon on jäljellä pudotusta toisen vastuksen yli ennen 0V. Tässä tilanteessa on yksinkertainen kaava jännitteen pudotuksen laskemiseksi vastuksen yli ja se näyttää tältä. Olkoon vastuksen 1 (R1) ylijännite V1 ja vastuksen 2 ylijännite (R2) V2. Koska en voi enää käyttää muotoilua, katso alla olevasta kuvasta 2 kaava… Joten resistiivisessä jakajassamme Vout -jännite voidaan määrittää kaavalla V2 (koska viitataan GND: hen 0V: ksi). Mitä tämä liittyy siihen, että yhdestä nastasta havaitaan joukko kytkimiä? No, käännä sivua, niin näytän sinulle!

Vaihe 3: Jännitteenjakajatikkaat

Jännitteenjakajatikkaat
Jännitteenjakajatikkaat

Oletetaan nyt, että meillä on kaikki kytkimet, ehkä kuusi, kahdeksan tai kuusitoista, kaikki kytkettyjä vastuksilla, jotka toimivat jännitteenjakajana siten, että kun kytkintangan tila muuttuu, jännite luetaan ja perustuu jännitetasoon, voi tietää, mikä kytkin on juuri aktivoitu. Katso alta. Alla olevassa kuvassa olen kytkenyt kaksi kytkinlohkoa. Ylimmässä lohkossa on kaksi kytkintä ja alimmassa lohkossa viisi kytkintä. Voit kytkeä erilliset kytkin-, hetkelliset, kosketus- jne. Kytkimet samalla tavalla. Tärkeä huomata on vastus, johon kytkin on kytketty. Esimerkissäni olen lähes kaksinkertaistanut seuraavan vastuksen resistanssin luodakseni jänniteraon, joka on helppo mitata eikä erehdy kytkimelle ennen tai jälkeen. Jos et ole huomannut aiemmin, katso uudelleen ja huomaa, että olemme palanneet vanhan ystävämme, resistiivisen jännitteenjakajan, luo. Ensimmäinen vastus, 10 k ohmia, on kytketty 5 V: iin ja toinen vastus - vastus, joka määrittää V: nulos SWITCH_ADC -nastalle, on kytketty kuhunkin kytkimeen, ja siksi jokainen kytkin on liitetty tiettyyn Vout -jännitteeseen, joka voidaan lukea SWITCH_ADC: stä kytketystä ADC -nastasta. Määritä seuraavaksi odotettu Vout kustakin kytkimestä

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

kytkimelle yksi:

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

kytkimelle kaksi:

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

ja niin edelleen.. Voit vapaasti korvata omat arvosi R2: lla, jos sinulla on vain tietyt vastukset käden ulottuvilla … Tärkeintä tässä on pitää riittävän leveä jänniteväli kytkimien välillä niin, että ADC: n virhemarginaali voitti ' Älä laita sinua naapurikytkimen odottamaan jännitteeseen. Olen huomannut, että helpoin tapa on rakentaa jakaja tikkaat ja laittaa yleismittari/voltimetri ADC -nastaan ja painaa jokaista tappia ja katso mitä arvoja saat. Niiden pitäisi olla melko tarkkoja laskemassasi. Kun olet saanut kaikki odotetut jännitearvot kustakin kytkimestä käyttämällä tiettyä vastusta, voit saada MCU: n lukemaan ADC -nastan ja verrata sitä tunnettuihin arvoihisi määrittääksesi, mitä kytkintä painettiin. Oletetaan esimerkiksi, että olet rekisteröinyt keskeytyspalvelurutiinin, joka kutsutaan aina, kun ADC -nastassa havaitaan muutos. Tämän ISR: n sisällä voit lukea ADC: n ja verrata tätä arvoa kytkentätaulukkoosi. Jos käytät 8-bittistä ADC-arvoa, jännite muunnetaan numeroksi 0–255, joka vastaa 0–5 V: n jännitettä. Tämä olettaa, että olet määrittänyt ADC: si tällä tavalla.

Vaihe 4: Yhteenveto

Joten nyt sinun pitäisi tietää, miten säästää GPIO -nastojen käyttämistä kytkimissä. Aina kun GPIO -nastat ovat vähissä tai niillä ei juuri ole mitään aloitusta tai jos huomaat, että aiot käyttää kytkinpankkia, resistiivinen jakaja on tapa säästää GPIO -nastasi ja tarjota silti vankka mekanismi kytkimen käytön havaitsemiseksi.

Suositeltava: