Video sul pilotaggio del gate dei MOSFET e le complicazioni associate per cui conviene usare un integrato come MOSFET driver: corrente e tempi di commutazione, gate driver con level-shift e push-pull, bootstrap per NMOS high-side (GreatScott su youtube)
altro video più tecnico sul pilotaggio dei MOSFET e blog post associato di MicroType Engineering su youtube); perché due resistenze sul gate, perché i MOSFET logic level sono da evitare, gate driver, calcolo approssimato della potenza dissipata e della massima frequenza in commutazione
articolo di Analog Device sul perché servano i gate driver (push-pull più efficiente di transistor + resistore, più corrente → commutazione più rapida → meno perdite, funzionalità extra degli IC: level-shift, protezione da shoot-trhough, isolamento per sicurezza e NMOS high-side)
Application Note della TI su gate driving per MOSFET e IGBT con varie soluzioni, discrete e integrate di gate-driver (bootstrap a pag 30)
AN di Onsemi sul progetto dei circuiti bootstrap per gate driver (utile riassunto a pagina 11)
Osservazioni sparse sui MOSFET:
ci sono tanti tipi di MOSFET ma a grandi linee:
si usano quelli enhancement (ad arricchimento)
canale N (Ron minore)
non logic-level (che hanno Ron e corrente sul gate maggiori)
il controllo è in tensione ma serve corrente nel passaggio da ON a OFF
con correnti basse la commutazione è lenta e si hanno perdite
meglio usare un driver in grado di fornire corrente elevata e garantire tempi di commutazione rapidi
si mette una resistenza di pull-down sul gate per evitare commutazioni indesiderate se G risulta isolato
si mette una resistenza in serie al gate per regolare la corrente e quindi i tempi di commutazione (R alta se pilotato da un microcontrollore → tempi lunghi e corrente bassa, R bassa se si usa un driver) e smorzare possibili oscillazioni dovute alla componente capacitiva del MOSFET e induttiva dei conduttori
driver: push-pull discreti BJT, integrati dedicati (eventualmente con funzione booster o charge-pump per usare MOSFET a canale N anche come high-side switch)
in corrispondenza di Vth il MOSFET comincia a condurre ma con una resistenza ancora elevata e perdite; il valore di VgsON si ricava nella riga di RdsON del datasheet
la potenza dissipata va calcolata stimando anche la temperatura effettiva di funzionamento: si considera il caso peggiore e si calcola Ron*I^2, poi si stima l'aumento di temperatura del silicio con Rth*P e nel caso si installa un dissipatore
per stimare il tempo di carica si può usare Ciss (capacità equivalente in ingresso) o Qg (total gate charge); in entrambi i casi si ipotizza di caricare un condensatore a corrente costante (cosa abbastanza vera quando Vgs raggiunge Vth)
Risorse su ponte H
Ponte H:
Video molto semplice sul funzionamento del ponte H con MOSFET con segnale PWM generato da NE555)
link sui multivibratori con vari documenti (anche dal libro di elettronica) sul 555 e applicazioni
Immagine di un ponte H con BJT e porte NAND (da Batani)
controllo PWM di un motore DC senza inversione del moto dagli appunti di quarta (non c'è inversione del moto e non è un ponte H ma c'è PWM generato con 555, simulazione motore e risultati sperimentali all'oscilloscopio)
Charge Pump per pilotare MOSFET a canale N (inglese)
Pompa di carica in italiano (la pagina è sulla RS232 ma questa soluzione viene usata anche nei gate driver per permettere l'utilizzo dei MOSFET a canale N come interruttori high-side (source)
Di seguito un programma per generare un segnale PWM sul con frequenza di 1 kHz e duty-cycle regolabile usando la scheda Arduino. Usa quattro pulsanti: uno per avviare e uno per fermare la generazione del segnale PWM, uno per aumentare e uno per diminuire il duty-cycle.
// pin (i pin 0 e 1 sono impegnati per la trasmissione seriale)constint pinStart =8;// piedino da mettere a massa per attivare il PWMconstint pinStop =9;// piedino da mettere a massa per disattivare il PWMconstint pinPWMup =2;// piedino da mettere a massa per incrementare il duty-cycleconstint pinPWMdown =3;// piedino da mettere a massa per diminuire il duty-cycleconstint pinPWM =5;// piedino di uscita del segnale PWM (a 1kHz in quel piedino)// altre variabiliint spinning =0;// attiva o no il segnale PWM int duty =100;// da 0 a 255 -> 0-100%int PWMup;// stato pin che incrementa il duty-cycleint PWMupPrec =1;// stato precedente pin che incrementa il duty-cycleint PWMdown;// stato pin che diminuisce il duty-cycleint PWMdownPrec =1;// stato precedente pin che diminuisce il duty-cyclevoid setup(){
pinMode(pinPWM,OUTPUT);
pinMode(pinStart, INPUT_PULLUP);// pull-up interno al micro
pinMode(pinStop, INPUT_PULLUP);
pinMode(pinPWMup, INPUT_PULLUP);
pinMode(pinPWMdown, INPUT_PULLUP);
pinMode(13,OUTPUT);// LED 13 acceso quando gira il motore
Serial.begin(9600);// debug su serial monitor}void loop(){// gira se pinStart a GNDif(!digitalRead(pinStart)){
spinning =1;}// si ferma se pinStop a GNDif(!digitalRead(pinStop)){
spinning =0;}// LED sulla scheda acceso se gira (PWM attivo)
digitalWrite(13, spinning);// attiva/disattiva PWMif(spinning){// attiva PWM
analogWrite(pinPWM, duty);}else{
analogWrite(pinPWM,0);}// incremento/decremento duty-cycle
PWMup = digitalRead(pinPWMup);
PWMdown = digitalRead(pinPWMdown);if((!PWMup)&&PWMupPrec){if(duty+10<255){
duty +=10;}
delay(20);// antirimbalzo
Serial.println(duty);}if((!PWMdown)&&PWMdownPrec){if(duty-10>0){
duty -=10;}
delay(20);
Serial.println(duty);}
PWMupPrec = PWMup;
PWMdownPrec = PWMdown;}
Nel video qua sotto il codice in azione.
Questo sito Web utilizza i cookie. Utilizzando il sito Web, l'utente accetta la memorizzazione dei cookie sul proprio computer. Inoltre riconosci di aver letto e compreso la nostra Informativa sulla privacy. Se non sei d'accordo, lascia il sito.Maggiori informazioni sui cookie
ponteh.txt · Ultima modifica: 2022/02/26 12:17 da admin