3.8. Conversia nivelurilor de tensiune

Un pin GPIO al camerei furnizează aproximativ 3,3 V atunci când este pe nivel logic înalt. Un dispozitiv din partea cealaltă poate funcționa la 5 V (microcontrolere mai vechi, multe plăci cu senzori) sau la 1,8 V (senzori mai noi, unele magistrale de tip chip-to-chip). Conectarea directă a celor două este uneori sigură și alteori distructivă; conversia nivelurilor de tensiune este circuitul care face legătura între ele în mod fiabil.

3.8.1. De ce comanda directă cu tensiune încrucișată poate deteriora un pin

Pad-ul de I/O al fiecărui chip are o pereche de diode de protecție încorporate: una de la pin la masă, una de la pin la șina de alimentare a chipului. Ele sunt acolo pentru a absorbi descărcarea electrostatică (ESD) – un impuls scurt, de înaltă tensiune, provenit din electricitatea statică, care poate lovi un pin atunci când placa este manipulată. O persoană care a mers pe un covor poate transporta câțiva kilovolți de sarcină statică; atingerea pinului greșit transferă acea sarcină chipului în nanosecunde. Dioda de protecție superioară intră în polarizare directă și deviază impulsul în siguranță către șina de alimentare înainte ca acesta să ajungă la tranzistoarele din interiorul chipului.

Atunci când un semnal de 5 V este aplicat continuu unui pin de 3,3 V care nu este tolerant la 5 V, dioda de protecție superioară conduce la nesfârșit. Diodele sunt dimensionate pentru impulsuri ESD scurte, nu pentru curent în regim staționar; șina de alimentare începe să crească peste 3,3 V, dioda se încălzește și fie pinul, fie regulatorul de tensiune integrat pe chip cedează.

Pinii toleranți la 5 V folosesc un etaj de intrare diferit – dioda superioară merge la o șină mai înaltă sau lipsește – astfel încât aplicarea a 5 V este inofensivă. Faptul dacă pinii unei plăci sunt toleranți la 5 V variază de la placă la placă; consultați referința rapidă OpenMV Cam.

Cealaltă direcție are propria sa problemă. Un GPIO de 3,3 V care comandă nivelul înalt produce ~3,3 V pe fir. Un receptor de 5 V care are nevoie de 0.7 × Vcc pentru a recunoaște nivelul înalt are pragul la 3,5 V; 3,3 V pot fi citiți ca nivel scăzut sau ca ambiguu. Chiar și fără deteriorări, semnalul nu funcționează în mod fiabil.

Un convertor de niveluri rezolvă ambele direcții.

3.8.2. N-MOSFET-ul ca întrerupător

Circuitele de mai jos folosesc un singur MOSFET cu canal N. Acesta are trei pini – poartă (gate), dren (drain) și sursă (source) – și se comportă ca un întrerupător controlat electric.

Intrarea de comandă este tensiunea dintre poartă și sursă, scrisă Vgs (tensiunea poartă-sursă):

Vgs = (gate voltage) - (source voltage)

MOSFET-ul ține cont de această diferență, nu de tensiunea absolută de pe vreunul dintre pini luat separat. Comportamentul său decurge din Vgs:

  • Când Vgs este peste tensiunea de prag a MOSFET-ului (de obicei în jur de 1 V pentru o componentă de semnal mic la nivel logic), tranzistorul se deschide și curentul circulă liber de la dren la sursă.

  • Când Vgs este la 0 sau sub 0, tranzistorul se închide și aproape niciun curent nu circulă de la dren la sursă.

Calea dren-sursă este calea de curent comutată; Vgs deschide sau închide acel întrerupător.

Un N-MOSFET are de asemenea o diodă de corp (body diode) între dren și sursă, care conduce atunci când drenul este coborât sub sursă cu mai mult de ~0,6 V. Dioda este un efect secundar al fabricației; convertorul bidirecțional de mai jos o folosește în mod intenționat.

3.8.2.1. Reguli de cablare

Un N-MOSFET nu este un dispozitiv simetric cu trei terminale. Dioda de corp este orientată dinspre sursă (anod) către dren (catod), iar Vgs este cel care controlează canalul. Două reguli decurg de aici și trebuie respectate în orice circuit comutator cu N-MOSFET:

  • Sursa merge la tensiunea mai mică; drenul merge la cea mai mare. Cu drenul la șina mai înaltă, dioda de corp este polarizată invers și nu face nimic. Inversați-le și dioda de corp este polarizată direct tot timpul: curentul circulă de la sursa acum mai înaltă, prin dioda de corp, către drenul acum mai jos, indiferent de ce face poarta. MOSFET-ul încetează să mai fie un întrerupător – prezintă scurgeri continue, semnalul nu poate fi oprit, iar dispozitivul adesea se supraîncălzește și cedează.

  • Poarta se leagă la șina de tensiune a sursei. Menținerea porții la șina pe care se află sursa în repaus face ca Vgs = 0 la inactiv, mult sub prag; MOSFET-ul rămâne ferm închis până când ceva fie aduce poarta peste sursă (circuitul unidirecțional de mai jos), fie coboară sursa sub poartă (circuitul bidirecțional). Lăsați poarta în aer în altă parte și starea de închis încetează să mai fie definită – zgomotul, scurgerile sau capacitatea parazită pot deplasa Vgs peste prag și pot deschide MOSFET-ul la întâmplare.

Inversarea oricăreia dintre reguli transformă convertorul de niveluri într-o cale cu scurgeri, nefiabilă. Ambele circuite de conversie de mai jos respectă aceste reguli: sursa pe partea mai joasă, drenul pe cea mai înaltă, poarta legată sau comandată de la șina sursei.

3.8.3. Unidirecțional 3,3 V → 5 V

Cel mai simplu convertor de niveluri împinge un semnal unidirecțional de la GPIO-ul camerei către o intrare de 5 V. Un singur N-MOSFET plus două rezistoare fac treaba.

Un MOSFET cu canal N conectat ca inversor. GPIO-ul de 3,3 V comandă poarta; sursa merge la masă; drenul este ridicat la 5 V printr-un rezistor de 10 kΩ; drenul este de asemenea preluat ca ieșire de 5 V.

Un N-MOSFET convertește nivelul (și inversează) un semnal de 3,3 V într-o ieșire de 5 V.

Când GPIO-ul comandă nivelul înalt (3,3 V la poartă), Vgs este peste prag și MOSFET-ul se deschide; drenul este coborât la ~0 V. Când GPIO-ul comandă nivelul scăzut (0 V la poartă), MOSFET-ul este închis, iar rezistorul de ridicare de 10 kΩ aduce drenul la 5 V.

Ieșirea este inversa intrării. Software-ul poate inversa semnalul la loc (scrieți 0 pentru „ieșire de 5 V pe nivel înalt”) sau puteți pune în cascadă două etaje pentru a obține un semnal neinversat, cu dublul numărului de componente.

3.8.4. Bidirecțional cu un singur N-MOSFET

Pentru o linie care trebuie comandată din oricare parte – o magistrală partajată unde fiecare capăt poate coborî linia – circuitul standard este un singur N-MOSFET pe linie, cu câte un rezistor de ridicare către alimentarea fiecărei părți.

Un convertor de niveluri bidirecțional cu N-MOSFET. MOSFET-ul face puntea între o linie de semnal de 3,3 V în stânga și o linie de semnal de 5 V în dreapta; poarta se conectează la alimentarea de 3,3 V, sursa se conectează la semnalul de 3,3 V, drenul la semnalul de 5 V; fiecare linie de semnal are propriul rezistor de ridicare către alimentarea sa.

Un singur N-MOSFET face puntea între o linie de 3,3 V și una de 5 V; fiecare parte are propriul rezistor de ridicare.

Poarta este legată la alimentarea de 3,3 V, astfel încât comportamentul MOSFET-ului depinde de partea care comandă:

  • Ambele părți inactive. Sursa se află la 3,3 V prin rezistorul de ridicare din stânga; poarta este la 3,3 V; Vgs = 0; MOSFET-ul este închis. Partea de 5 V plutește la 5 V prin rezistorul de ridicare din dreapta. Ambele părți citesc nivel înalt.

  • Partea de 3,3 V coboară linia. Sursa scade la 0 V; Vgs crește peste prag; MOSFET-ul se deschide și conduce de la sursă la dren. Partea de 5 V este coborâtă prin tranzistor.

  • Partea de 5 V coboară linia. Drenul scade la 0 V; dioda de corp a MOSFET-ului (dren spre sursă) devine polarizată direct și conduce; sursa (partea de 3,3 V) este coborâtă la aproximativ 0,6 V. Vgs depășește atunci pragul și MOSFET-ul se deschide complet, coborând ambele părți.

BSS138 este N-MOSFET-ul standard pentru acest model; toate N-MOSFET-urile de semnal mic la nivel logic, cu tensiuni de prag ale porții similare, se comportă la fel aici.