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
Vgseste 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
Vgseste 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 = 0la 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 deplasaVgspeste 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 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 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;
Vgscreș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.
Vgsdepăș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.