3.8. Adattamento di livello

Un pin GPIO della camera fornisce circa 3,3 V quando è alto. Un dispositivo dall’altro lato può funzionare a 5 V (microcontrollori più vecchi, molte schede sensore) o a 1,8 V (sensori più recenti, alcuni bus chip-to-chip). Collegare i due direttamente è talvolta sicuro e talvolta distruttivo; l”adattamento di livello è il circuito che colma il divario in modo affidabile.

3.8.1. Perché il pilotaggio diretto a tensione incrociata può danneggiare un pin

Il pad di I/O di ogni chip ha una coppia di diodi di protezione integrati: uno dal pin verso massa, uno dal pin verso la linea di alimentazione del chip. Sono presenti per assorbire le scariche elettrostatiche (ESD) – un breve picco ad alta tensione dovuto all’elettricità statica che può colpire un pin quando si maneggia la scheda. Una persona che ha camminato su un tappeto può trasportare diversi kilovolt di carica statica; toccare il pin sbagliato trasferisce quella carica al chip in nanosecondi. Il diodo di protezione superiore va in polarizzazione diretta e deriva l’impulso in modo sicuro verso la linea di alimentazione prima che raggiunga i transistor all’interno del chip.

Quando un segnale a 5 V viene applicato in modo continuo a un pin a 3,3 V che non è tollerante ai 5 V, il diodo di protezione superiore conduce all’infinito. I diodi sono dimensionati per brevi impulsi ESD, non per una corrente a regime stazionario; la linea di alimentazione inizia a salire sopra i 3,3 V, il diodo si riscalda e si guasta o il pin o il regolatore di tensione integrato.

I pin tolleranti ai 5 V usano uno stadio di ingresso diverso – il diodo superiore va a una linea più alta o è assente – quindi applicare 5 V è innocuo. Se i pin di una scheda siano tolleranti ai 5 V varia da scheda a scheda; consulta il riferimento rapido di OpenMV Cam.

L’altra direzione ha il suo problema. Un GPIO a 3,3 V che pilota un livello alto produce ~3,3 V sul filo. Un ricevitore a 5 V che richiede 0.7 × Vcc per riconoscere un livello alto ha la sua soglia a 3,5 V; 3,3 V potrebbero essere letti come basso o come ambigui. Anche senza danni, il segnale non funziona in modo affidabile.

Un adattatore di livello risolve entrambe le direzioni.

3.8.2. Il MOSFET a canale N come interruttore

I circuiti seguenti usano un singolo MOSFET a canale N. Ha tre pin – gate, drain e source – e si comporta come un interruttore controllato elettricamente.

L’ingresso di controllo è la tensione tra il gate e il source, indicata con Vgs (tensione gate-source):

Vgs = (gate voltage) - (source voltage)

Al MOSFET interessa questa differenza, non la tensione assoluta su uno dei due pin presi singolarmente. Il suo comportamento dipende da Vgs:

  • Quando Vgs è al di sopra della tensione di soglia del MOSFET (tipicamente intorno a 1 V per un componente a piccolo segnale di livello logico), il transistor si accende e la corrente scorre liberamente dal drain al source.

  • Quando Vgs è pari o inferiore a 0, il transistor si spegne e quasi nessuna corrente scorre dal drain al source.

Il percorso drain-source è il percorso di corrente commutato; Vgs apre o chiude quell’interruttore.

Un MOSFET a canale N ha anche un diodo di corpo tra drain e source che conduce quando il drain viene portato al di sotto del source di più di ~0,6 V. Il diodo è un effetto collaterale del processo di fabbricazione; l’adattatore bidirezionale qui sotto lo usa di proposito.

3.8.2.1. Regole di cablaggio

Un MOSFET a canale N non è un dispositivo a tre terminali simmetrico. Il diodo di corpo punta dal source (anodo) al drain (catodo) e Vgs è ciò che controlla il canale. Ne derivano due regole che devono valere per ogni circuito a interruttore con MOSFET a canale N:

  • Il source va alla tensione più bassa; il drain va a quella più alta. Con il drain alla linea più alta il diodo di corpo è polarizzato inversamente e non fa nulla. Invertendoli, il diodo di corpo è polarizzato direttamente tutto il tempo: la corrente scorre dal source ora più alto attraverso il diodo di corpo verso il drain ora più basso, indipendentemente da ciò che sta facendo il gate. Il MOSFET smette di essere un interruttore – perde continuamente, il segnale non può essere disattivato e il dispositivo spesso si surriscalda e si guasta.

  • Il gate è collegato alla linea di tensione del source. Mantenere il gate alla linea su cui si trova il source a riposo rende Vgs = 0 in idle, ben al di sotto della soglia; il MOSFET resta saldamente spento finché qualcosa non porta il gate al di sopra del source (il circuito unidirezionale qui sotto) o non porta il source al di sotto del gate (il circuito bidirezionale). Se invece si lascia il gate flottante altrove, lo stato di spegnimento smette di essere definito – rumore, correnti di dispersione o capacità parassite possono far derivare Vgs sopra la soglia e accendere il MOSFET in modo casuale.

Invertire una delle due regole trasforma l’adattatore di livello in un percorso con perdite e inaffidabile. Entrambi i circuiti adattatori qui sotto seguono queste regole: source sul lato più basso, drain su quello più alto, gate collegato o pilotato dalla linea del source.

3.8.3. Unidirezionale 3,3 V → 5 V

L’adattatore di livello più semplice spinge un segnale monodirezionale dal GPIO della camera verso un ingresso a 5 V. Un singolo MOSFET a canale N più due resistori svolgono il compito.

Un MOSFET a canale N cablato come invertitore. Il GPIO a 3,3 V pilota il gate; il source va a massa; il drain è portato in pull-up a 5 V tramite 10 kΩ; il drain è anche prelevato come uscita a 5 V.

Un MOSFET a canale N adatta di livello (e inverte) un segnale a 3,3 V in un’uscita a 5 V.

Quando il GPIO pilota un livello alto (3,3 V al gate), Vgs è al di sopra della soglia e il MOSFET si accende; il drain viene portato a ~0 V. Quando il GPIO pilota un livello basso (0 V al gate), il MOSFET è spento e il pull-up da 10 kΩ porta il drain a 5 V.

L’uscita è l”inverso dell’ingresso. Il software può riportare il segnale al verso originale (scrivendo 0 per «uscita a 5 V alta»), oppure si possono mettere in cascata due stadi per ottenere un segnale non invertito al costo del doppio dei componenti.

3.8.4. Bidirezionale con un solo MOSFET a canale N

Per una linea che deve poter essere pilotata da entrambi i lati – un bus condiviso in cui una delle due estremità può portare la linea bassa – il circuito standard è un singolo MOSFET a canale N per linea, con un pull-up verso l’alimentazione di ciascun lato.

Un adattatore di livello bidirezionale a MOSFET a canale N. Il MOSFET fa da ponte tra una linea di segnale a 3,3 V a sinistra e una linea di segnale a 5 V a destra; il gate si collega all'alimentazione a 3,3 V, il source si collega al segnale a 3,3 V, il drain al segnale a 5 V; ogni linea di segnale ha il proprio resistore di pull-up verso la propria alimentazione.

Un singolo MOSFET a canale N fa da ponte tra una linea a 3,3 V e una a 5 V; ogni lato ha il proprio pull-up.

Il gate è collegato all’alimentazione a 3,3 V, quindi il comportamento del MOSFET dipende da quale lato sta pilotando:

  • Entrambi i lati a riposo. Il source si trova a 3,3 V tramite il pull-up di sinistra; il gate è a 3,3 V; Vgs = 0; il MOSFET è spento. Il lato a 5 V flotta a 5 V tramite il pull-up di destra. Entrambi i lati leggono un livello alto.

  • Il lato a 3,3 V porta basso. Il source scende a 0 V; Vgs sale al di sopra della soglia; il MOSFET si accende e conduce da source a drain. Il lato a 5 V viene portato basso attraverso il transistor.

  • Il lato a 5 V porta basso. Il drain scende a 0 V; il diodo di corpo del MOSFET (da drain a source) diventa polarizzato direttamente e conduce; il source (lato a 3,3 V) viene portato a circa 0,6 V. Vgs supera quindi la soglia e il MOSFET si accende completamente, portando entrambi i lati a un livello basso.

Il BSS138 è il MOSFET a canale N standard per questo schema; i MOSFET a canale N a piccolo segnale di livello logico con tensioni di soglia gate simili si comportano tutti allo stesso modo in questo caso.