3.8. Tasonsiirto

Kameran GPIO-nasta ajaa noin 3,3 V:n jännitettä ollessaan korkealla. Toisella puolella oleva laite voi toimia 5 V:n (vanhemmat mikro-ohjaimet, monet sensorikortit) tai 1,8 V:n (uudemmat sensorit, jotkin sirujen väliset väylät) jännitteellä. Näiden kahden kytkeminen suoraan toisiinsa on joskus turvallista ja joskus tuhoisaa; tasonsiirto on piiri, joka sillottaa eron luotettavasti.

3.8.1. Miksi suora eri jännitteen ajo voi vahingoittaa nastaa

Jokaisen sirun I/O-padilla on pari sisäänrakennettuja suojadiodeja: yksi nastasta maahan ja yksi nastasta sirun käyttöjännitekiskoon. Ne ovat siellä vaimentamassa staattista purkausta (ESD) – lyhyttä, korkeajännitteistä piikkiä staattisesta sähköstä, joka voi osua nastaan korttia käsiteltäessä. Maton yli kävellyt henkilö voi kantaa useita kilovoltteja staattista sähköä; väärään nastaan koskettaminen siirtää tämän varauksen siruun nanosekunneissa. Ylempi suojadiodi siirtyy myötäsuuntaan ja ohjaa pulssin turvallisesti käyttöjännitekiskoon ennen kuin se saavuttaa sirun sisällä olevat transistorit.

Kun 5 V:n signaali kytketään jatkuvasti 3,3 V:n nastaan, joka ei ole 5 V:tä sietävä, ylempi suojadiodi johtaa ikuisesti. Diodit on mitoitettu lyhyille ESD-pulsseille, ei pysyvälle virralle; käyttöjännitekisko alkaa nousta yli 3,3 V:n, diodi kuumenee, ja joko nasta tai sirulla oleva jännitesäädin pettää.

5 V:tä sietävät nastat käyttävät erilaista sisääntuloastetta – ylempi diodi menee korkeampaan kiskoon tai puuttuu kokonaan – joten 5 V:n syöttäminen on vaaratonta. Se, ovatko kortin nastat 5 V:tä sietäviä, vaihtelee kortin mukaan; tarkista OpenMV Cam -pikaopas.

Toisella suunnalla on oma ongelmansa. Korkealle ajava 3,3 V:n GPIO tuottaa johtimeen ~3,3 V. 5 V:n vastaanotin, joka tarvitsee 0.7 × Vcc tunnistaakseen korkean, näkee kynnysarvonsa 3,5 V:ssa; 3,3 V voi tulkkiutua matalaksi tai epäselväksi. Vaikka mitään vauriota ei syntyisi, signaali ei toimi luotettavasti.

Tasonsiirrin ratkaisee molemmat suunnat.

3.8.2. N-MOSFET kytkimenä

Alla olevat piirit käyttävät yhtä N-kanavaista MOSFETiä. Siinä on kolme nastaa – hila (gate), nielu (drain) ja lähde (source) – ja se toimii sähköisesti ohjattuna kytkimenä.

Ohjaussisääntulo on jännite hilan ja lähteen välillä, merkitään Vgs (hila-lähde-jännite):

Vgs = (gate voltage) - (source voltage)

MOSFETiä kiinnostaa tämä erotus, ei kummankaan nastan absoluuttinen jännite yksinään. Sen toiminta seuraa Vgs:n arvosta:

  • Kun Vgs on yli MOSFETin kynnysjännitteen (tyypillisesti noin 1 V pienisignaalisella logiikkatason komponentilla), transistori kytkeytyy päälle ja virta kulkee vapaasti nielusta lähteeseen.

  • Kun Vgs on 0 tai sen alle, transistori kytkeytyy pois päältä eikä juuri lainkaan virtaa kulje nielusta lähteeseen.

Nielu-lähde-polku on kytketty virtapolku; Vgs avaa tai sulkee tämän kytkimen.

N-MOSFETissä on myös runkodiodi (body diode) nielun ja lähteen välillä, joka johtaa, kun nielu vedetään lähdettä alemmas yli ~0,6 V:lla. Diodi on valmistuksen sivuvaikutus; alla oleva kaksisuuntainen siirrin käyttää sitä tarkoituksella.

3.8.2.1. Kytkentäsäännöt

N-MOSFET ei ole symmetrinen kolminapainen komponentti. Runkodiodi osoittaa lähteestä (anodi) nieluun (katodi), ja Vgs ohjaa kanavaa. Tästä seuraa kaksi sääntöä, joiden on pädettävä jokaisessa N-MOSFET-kytkinpiirissä:

  • Lähde menee alempaan jännitteeseen; nielu korkeampaan. Kun nielu on korkeammassa kiskossa, runkodiodi on estosuunnassa eikä tee mitään. Vaihda ne keskenään, ja runkodiodi on koko ajan myötäsuunnassa: virta kulkee nyt korkeammasta lähteestä runkodiodin läpi nyt matalampaan nieluun riippumatta siitä, mitä hila tekee. MOSFET lakkaa olemasta kytkin – se vuotaa jatkuvasti, signaalia ei voi kytkeä pois päältä, ja komponentti usein ylikuumenee ja pettää.

  • Hila sidotaan lähteen jännitekiskoon. Hilan pitäminen siinä kiskossa, jossa lähde lepää, tekee Vgs = 0 lepotilassa, hyvin alle kynnyksen; MOSFET pysyy tukevasti pois päältä, kunnes jokin joko ajaa hilan lähteen yläpuolelle (alla oleva yksisuuntainen piiri) tai vetää lähteen hilan alapuolelle (kaksisuuntainen piiri). Jätä hila kellumaan jonnekin muualle, ja off-tila lakkaa olemasta määritelty – kohina, vuoto tai hajakapasitanssi voivat ajelehduttaa Vgs:n yli kynnyksen ja kytkeä MOSFETin satunnaisesti päälle.

Kumman tahansa säännön kääntäminen muuttaa tasonsiirtimen vuotavaksi, epäluotettavaksi poluksi. Molemmat alla olevat siirrinpiirit noudattavat näitä sääntöjä: lähde alemmalla puolella, nielu korkeammalla, hila sidottuna lähteen kiskoon tai ajettuna siitä.

3.8.3. Yksisuuntainen 3,3 V → 5 V

Yksinkertaisin tasonsiirrin työntää yksisuuntaisen signaalin kameran GPIO:sta 5 V:n sisääntuloon. Yksi N-MOSFET ja kaksi vastusta hoitavat homman.

Inveroijaksi kytketty N-kanavainen MOSFET. 3,3 V:n GPIO ajaa hilaa; lähde menee maahan; nielu vedetään ylös 5 V:iin 10 kΩ:n kautta; nielu otetaan myös 5 V:n ulostuloksi.

N-MOSFET siirtää tasoa (ja invertoi) 3,3 V:n signaalin 5 V:n ulostuloksi.

Kun GPIO ajaa korkealle (3,3 V hilassa), Vgs on yli kynnyksen ja MOSFET kytkeytyy päälle; nielu vedetään alas ~0 V:iin. Kun GPIO ajaa matalalle (0 V hilassa), MOSFET on pois päältä ja 10 kΩ:n ylösvetovastus nostaa nielun 5 V:iin.

Ulostulo on sisääntulon käänteinen. Ohjelmisto voi kääntää signaalin takaisin (kirjoita 0 tarkoittamaan ”5 V ulostulo korkealla”), tai kaksi astetta voidaan ketjuttaa kääntämättömän signaalin saamiseksi kaksinkertaisella komponenttimäärällä.

3.8.4. Kaksisuuntainen yhdellä N-MOSFETillä

Linjalle, jota on voitava ajaa kummalta tahansa puolelta – jaettu väylä, jossa kumpi tahansa pää voi vetää linjan alas – vakiopiiri on yksi N-MOSFET linjaa kohden, jossa on yksi ylösvetovastus kummankin puolen käyttöjännitteeseen.

Kaksisuuntainen N-MOSFET-tasonsiirrin. MOSFET sillottaa 3,3 V:n signaalilinjan vasemmalla ja 5 V:n signaalilinjan oikealla; hila yhdistyy 3,3 V:n käyttöjännitteeseen, lähde yhdistyy 3,3 V:n signaaliin, nielu 5 V:n signaaliin; kummallakin signaalilinjalla on oma ylösvetovastuksensa käyttöjännitteeseensä.

Yksi N-MOSFET sillottaa 3,3 V:n ja 5 V:n linjan; kummallakin puolella on oma ylösvetovastuksensa.

Hila on sidottu 3,3 V:n käyttöjännitteeseen, joten MOSFETin toiminta riippuu siitä, kumpi puoli ajaa:

  • Molemmat puolet lepotilassa. Lähde lepää 3,3 V:ssa vasemman ylösvetovastuksen kautta; hila on 3,3 V:ssa; Vgs = 0; MOSFET on pois päältä. 5 V:n puoli kelluu 5 V:iin oikean ylösvetovastuksen kautta. Molemmat puolet lukevat korkealla.

  • 3,3 V:n puoli vetää matalalle. Lähde putoaa 0 V:iin; Vgs nousee yli kynnyksen; MOSFET kytkeytyy päälle ja johtaa lähteestä nieluun. 5 V:n puoli vedetään matalalle transistorin kautta.

  • 5 V:n puoli vetää matalalle. Nielu putoaa 0 V:iin; MOSFETin runkodiodi (nielusta lähteeseen) siirtyy myötäsuuntaan ja johtaa; lähde (3,3 V:n puoli) vedetään alas noin 0,6 V:iin. Tällöin Vgs ylittää kynnyksen ja MOSFET kytkeytyy täysin päälle, jolloin molemmat puolet menevät matalalle.

BSS138 on vakiomuotoinen N-MOSFET tähän kaavaan; pienisignaaliset logiikkatason N-MOSFETit, joilla on samankaltaiset hila-kynnysjännitteet, käyttäytyvät tässä kaikki samalla tavalla.