I2C pyörivä anturi

Asetettu päälle

I²C Rotary Encoder

Käsittelen tässä artikkelissa kahta aihetta.

Ensimmäinen koskee Rotary Enkoodereja ja (lyhyesti) niiden toimintaa. Toinen koskee Philipsin kehittämää Inter-Integrated Circuit-protokollaa (I²C).

pyörivät kooderit

Rotary Encoder on laite, joka (fyysisesti) muistuttaa potentiometriä, mutta ei muuta vastusta kahden/kolmen liittimen välillä, vaan antaa pulsseja, kun akselia käännetään. Toinen ero potentiometriin on, että voit kääntää akselia 360° (itse asiassa ei ole rajaa kuinka monta astetta voit kiertää akselia).

Useimmissa pyörivissä koodereissa on painokytkin, joka aktivoituu, kun painat akselia. Ja on olemassa pyöriviä koodereita, joissa on sisäinen kolmivärinen LED (ns. RGB Rotary Encoder), jolla voit antaa palautetta käyttäjälle väripaletilla.

RGB Rotary Encoder RGB Rotary Encoder

Rotary Encoder tuottaa pulsseja, kun akselia käännetään. Useimmat pyörivät kooderit tuottavat 24 pulssia jokaisella 360°:n kierroksella, mutta on myös pyöriviä enkoodereita, jotka tuottavat enemmän tai vähemmän pulsseja kierrosta kohti. Ohjelmassasi voit laskea nämä pulssit ja reagoida niihin (esimerkiksi: lisätä tai vähentää virtalähteen lähtöjännitettä tai käydä läpi valikkoluetteloa).

Saatat kysyä: " Miksi käyttää Rotary Encoderia eikä vain potentiometriä? ". Tähän ei tietenkään ole " tämä on parempi kuin tuo " vastausta. Se riippuu projektista. Jos rakennat analogista hifi-vahvistinta, potentiometri on luultavasti parempi valinta. Jos sinulla on projekti, jossa on mikroprosessori, Rotary Encoder antaa sinulle monia vaihtoehtoja mukavan käyttöliittymän luomiseen (ehkä hieno/karkea muutos riippuen lyhyestä tai pitkästä akselin painalluksesta ja värillinen palaute näyttää mikä tila on aktiivinen) .

Alla on esimerkkipiirros Rotary Encoderin "lukemiseksi". Jotta tämä ohjelma toimisi oikein ja luotettavasti, tarvitset laitteiston pomppimisen ohjauksen (RC-verkko) kooderin nastoihin A ja B:

Demo Sketch Rotary Encoder

Valitettavasti Rotary Encoderin käytöllä projektissa on myös haittapuoli: tarvitset paljon GPIO-nastaja!

Yksi RGB Rotary Encoder tarvitsee kaksi GPIO-nastaa itse kooderia varten (plus GND), sitten tarvitset yhden GPIO-nastan painokytkimelle ja kolme GPIO-nastaa RGB-LEDille. Se on yhteensä kuusi GPIO-nastaa! Esimerkiksi ESP8266:ssa sinulla on enää kolme GPIO-nastaa jäljellä projektin loppuosan ohjaamiseen! Arduino UNO:ssa on enemmän GPIO-nastoja, joten yksi pyörivä Encoder ei ole ongelma. Mutta entä jos haluat liittää kaksi, kolme tai jopa useampia Rotary Enkooderia. Se ei ole mahdollista ESP8266:ssa, mutta Arduino UNO:ssa GPIO-nastat loppuvat pian!

Onneksi on ratkaisu!

Inter-Integrated Circuit -väylä (I²C)

Tätä kutsutaan (data) "väyläksi", koska voit liittää siihen monia laitteita. "Bussi" koostuu kahdesta linjasta. Kellolinja (SCL) ja datalinja (SDA). Aina on (ainakin) yksi'hallita'-laite ja kaikki muut laitteet ovat'orja' laitteet. Jokaisella laitteella on yksilöllinen osoite, joka erottaa itsensä toisistaan. En mene I²C-protokollan syvyyksiin, mutta normaalisti isäntä vaatii väylän hallintaa ja lähettää pyynnön orjalle tietyllä osoitteella. Orja puolestaan ryhtyy toimiin pyynnön suhteen joko suorittamalla tietyn toiminnon itse orjassa, lähettämällä tietoja takaisin isännälle tai yksinkertaisesti lähettämällä kuittauksen takaisin isännälle ilmoittaen, että hän on vastaanottanut pyynnön. Tässä voit lukea lisää I²C-protokollasta.

I²C Rotary Encoder

Eikö olisi mukavaa pystyä kytkemään Rotary Encoder käyttämällä vain kahta I²C-väylän johtoa!?

Ja siitä tässä viestissä oikeastaan on kyse: pyörivästä Encoderista, jonka liität I²C-väylän kautta ja jota ohjaat I²C-protokollalla.

Suunnittelin laiteohjelmiston ja pienen piirilevyn ATtiny841-mikroprosessorilla. ATtiny841:ssä on sisäänrakennettu lankalaitteisto (I²C:n alapuolella oleva kerros), mikä tekee siitä erittäin sopivan I²C-slave-laitteena tähän malliin.

I2C Rotary Encoder v2.2 alanäkymä I2C Rotary Encoder v2.2 alanäkymä

Laiteohjelmisto varmistaa, että ATtiny841 toimii toisaalta "normaalina" I²C-slavena ja toisaalta tarjoaa käyttöliittymän RGB Rotary Encoderiin. I²C RotaryEncoderin ohjaamiseksi helposti minulla on yhteensopiva ja helppokäyttöinen Arduino / ESP8266 kirjasto kirjoitettu.

Tällä asetuksella on mahdollista liittää niin monta (kirjaimellisesti!) I²C RotaryEncoderia mikroprosessoriin kuin haluat, mutta silti tarvitsee käyttää vain kahta GPIO-nastaa. Voit jopa liittää muita I²C-laitteita (näytöt, anturit jne.) samoihin kahteen GPIO-nastaan, jolloin monet GPIO-nastat jäävät vapaiksi muihin tarkoituksiin.

I2C BUS I2C BUS

Jos haluat, voit käyttää I²C RotaryEncoderin keskeytysnastaa tehdäksesi ohjelmastasi "keskeytyspohjaisen".

Keskeytystappi luo keskeytyksen jokaisen pyörivän akselin tai painonapin asennon muutoksen yhteydessä. Kaikilla I²C RotaryEncodereilla on sama keskeytyslinja.

Kuinka voit käyttää I²C RotaryEncoderia projektissasi?

Alla oleva koodi on esimerkkiluonnos kommunikoidaksesi I²C RotaryEncoderin kanssa (käyttäen keskeytysnastaa):

Basic I2C_RotaryEncoder Sketch

SparkFun Qwiic Twist - RGB Rotary Encoder BreakoutSparkfun Qwiic Twist on käyttäjäystävällinen digitaalinen pyörivä RGB-kooderi, joka yksinkertaistaa johdotusta ja koodausta. Siinä on sisäänrakennettu painike, se tukee jopa 16 miljoonaa väriä ja se on helppo yhdistää Qwiic-järjestelmään. Ihanteellinen Arduino projekteihin. Toimitetaan 5 - 10 päivässä € 26,70
Tämänhetkinen sivu 1. Johdanto 1. Johdanto 2. I2C Rotary Encoder Library 3. Kaaviomainen pyörivä I2C-anturi lähettänyt Verkkosivusto Willem Aandewiel (1955) on tausta elektroniikasta ja digitaalitekniikasta. Suurimman osan työelämästään hän on kuitenkin työskennellyt automaation parissa, jossa hän on työskennellyt lähes kaikilla aloilla ohjelmoijasta projektijohtajaan ja projektipäälliköön. Willem oli yksi ensimmäisistä hollantilaisista, joilla oli mikrotietokone (KIM-1, 1976) aikana, jolloin PC:tä ei ollut vielä keksitty. Nykyään hän keskittyy pääasiassa pienten mikroprosessoreilla varustettujen elektronisten piirien suunnitteluun ja tuotantoon. Hänen "elämäntehtävänsä" on saada ihmiset innostumaan omien elektronisten piirien, mikrotietokoneiden ja ohjelmoinnin tekemisestä.

Kommentit

Webwinkelkeur Kiyoh Trustpilot Opencircuit