Guidare motori CC con MOSFET e un microcontrollore?


13

Sto sviluppando un nano quadricoptero usando un microcontrollore Atmega328, alimentato a 3,3 V, e motori DC spazzolati molto piccoli. La corrente media utilizzata da questi motori è di circa 800 mA a 3,7 V.

Inizialmente, per guidarli, ho usato un driver del motore L293D ma questo componente era abbastanza inefficiente. La corrente misurata quando i motori funzionavano alla massima potenza era di circa 500 mA e quindi la spinta era molto più bassa di quanto dovrebbe essere.

Ora, per risolvere questo problema, sostituirei quel driver del motore con 4 MOSFET a livello logico. Dopo una lunga ricerca, trovo questo (2SK4033).

Sai se dovrebbe funzionare? Devo usarlo insieme a un diodo? Se la risposta è "sì", che dire di questo (MBR360RLG)?

Ho scelto questi componenti anche perché posso acquistarli dallo stesso negozio online.


2
Andy ha risposto alla parte MOSFET della tua domanda, ma nessuno ha menzionato una domanda più fondamentale: come pensi di sostituire quell'L293D con MOSFET 4 N? Mettere un MOSFET N nella parte alta potrebbe causare problemi di efficienza. Un disegno schematico potrebbe aiutare a chiarire la tua idea.
Laszlo Valko,

Cosa intendi con "high-side"? In questo momento, l'unico schema che ho è quello con l'L293D. Se può aiutare, posso pubblicarlo. La mia idea è che ogni motore sia guidato da un mosfet (4 in totale) e, se necessario, anche un diodo. Quale potrebbe essere una soluzione più efficiente?
supergiox

Ogni uscita L293D include un transistor "high-side" (tra Vcc e output) e un transistor "low-side" (tra GND e output). Se si sostituisce il transistor "high-side" con un MOSFET N, è necessario un alimentatore in grado di fornire Vgs (almeno 2..3..4V) al di sopra della tensione di uscita. O il massimo. la tensione di uscita sarà Vcc - Vgs ...
Laszlo Valko

Il Vgs deve essere 3,3 V e l'uscita (Vds) deve essere 3,7 V (la stessa tensione della batteria, unica). Quindi, se c'è questo problema, come posso fare? Puoi suggerire un'altra soluzione?
supergiox

2
Hai le seguenti opzioni: a) usa i MOSFET P per il lato alto; b) utilizzare un duplicatore di tensione separato o un circuito convertitore CC-CC per fornire 2 * Vcc per pilotare le porte MOSFET lato alto; c) utilizzare un circuito bootstrap per fornire la corretta tensione Vout + Vcc per il pilotaggio delle porte MOSFET high-side. Ognuno di questi ha i suoi svantaggi e / o limitazioni.
Laszlo Valko,

Risposte:


17

I MOSFET dovrebbero funzionare molto bene per questa applicazione. Ecco alcune cose da considerare:

1:

Quando si utilizza un FET per guidare un carico, è possibile scegliere una configurazione high-side o low-side. Il lato alto posiziona il FET tra la barra di alimentazione e il carico e l'altro lato del carico è collegato a terra. In una configurazione low-side, un conduttore del carico è collegato alla barra di alimentazione e il FET è posizionato tra il carico e la terra:

HighVsLow

Il modo più semplice per guidare il motore (o altro carico) è utilizzare un MOSFET a canale N nella configurazione low-side. Un N-FET inizia a condurre quando la sua tensione di gate è superiore alla sua sorgente. Poiché la sorgente è collegata a terra, il gate può essere pilotato con la normale logica on-off. Esiste una soglia che la tensione di gate deve superare ("Vth") prima che venga eseguita la FET. Alcuni FET hanno il V in decine di volt. Volete un N-FET "a livello logico" con una soglia considerevolmente inferiore al Vcc.

Ci sono due svantaggi nella configurazione FET low-side:

  • L'avvolgimento del motore è collegato direttamente alla barra di alimentazione. Quando il FET è spento, l'intero avvolgimento è "caldo". Stai cambiando terra, non la connessione di alimentazione.

  • Il motore non avrà un riferimento reale a terra. Il suo potenziale più basso sarà superiore alla massa dalla tensione diretta del FET.

Nessuno di questi dovrebbe importare nel tuo progetto. Tuttavia, possono essere problematici se non te li aspetti! Soprattutto con circuiti di potenza superiore :)

Per ovviare a questi problemi, è possibile utilizzare un P-FET nella configurazione high-side. Il circuito di guida diventa un po 'più complesso, però. Un interruttore P-FET di solito ha il suo cancello tirato sulla barra di alimentazione. Questa barra di alimentazione è più alta del Vcc dell'UC, quindi non è possibile collegare i pin I / O dell'UC direttamente al gate. Una soluzione comune è quella di utilizzare un N-FET lato inferiore più piccolo per abbattere il gate del P-FET lato alto:

DualFet

R1 e R3 esistono per mantenere disattivati ​​i FET fino a quando non viene attivato Q2. Avrai bisogno di R3 anche in una configurazione low-side.

Nel tuo caso, penso che un semplice N-FET low-side (con R3) ti servirà meglio.


2:

Si noti R2 nell'ultimo diagramma. Una porta MOSFET funge da condensatore, che deve caricarsi prima che la corrente di drain-source inizi a fluire. Ci può essere una corrente di spunto significativa quando si fornisce alimentazione per la prima volta, quindi è necessario limitare questa corrente per evitare danni al driver di uscita dell'uC. Il tappo sembrerà solo un corto per un istante, quindi non è necessario un ampio margine di errore. Il tuo Atmel specifico, ad esempio, può generare 40mA. 3,3 V / 35 mA => 94,3 Ohm. Una resistenza da 100 Ohm funzionerà alla grande.

Tuttavia, questo resistore rallenta i tempi di accensione e spegnimento del FET, il che pone un limite superiore alla frequenza di commutazione. Inoltre, prolunga la quantità di tempo in cui il FET si trova nella regione lineare dell'operazione, il che spreca energia. Se si passa ad alta frequenza, questo potrebbe essere un problema. Un indicatore è se il FET si surriscalda!

Una soluzione a questo problema è utilizzare un driver FET. Sono effettivamente buffer che possono generare più corrente e quindi possono caricare il gate più velocemente senza la necessità di un resistore limitante. Inoltre, la maggior parte dei driver FET può utilizzare una barra di alimentazione superiore rispetto al tipico Vcc. Questa maggiore tensione di gate riduce la resistenza di accensione del FET, risparmiando energia aggiuntiva. Nel tuo caso, potresti alimentare il driver FET con 3,7 V e controllarlo con 3,3 V dell'UC.

FetDriver


3:

Infine, vorrai utilizzare un diodo Schottky per proteggerti dai picchi di tensione causati dal motore. Fallo ogni volta che commuti un carico induttivo:

LowSideWithDiode

Un avvolgimento del motore è un grande induttore, quindi resisterà a qualsiasi cambiamento nel flusso di corrente. Immagina che la corrente scorra attraverso l'avvolgimento e poi spegni il FET. L'induttanza farà sì che la corrente continui a fluire dal motore quando i campi elettrici collassano. Ma non c'è posto dove andare quella corrente! Quindi perfora il FET o fa qualcos'altro altrettanto distruttivo.

Lo Schottky, posto in parallelo al carico, offre un percorso sicuro per la corrente da percorrere. Il picco di tensione raggiunge il massimo alla tensione diretta del diodo, che è solo 0,6 V a 1 A per quella specificata.

L'immagine precedente, una configurazione low-side con il diodo flyback, è semplice, economica e abbastanza efficace.


L'unico altro problema che vedo nell'utilizzo della soluzione MOSFET è che è intrinsecamente unidirezionale. L'L293D originale è un driver multi-bridge multiplo. Ciò consente di guidare un motore in entrambe le direzioni. Imaging che collega un motore tra 1Y e 2Y. L293D può fare 1Y = Vdd e 2Y = GND e il motore gira in una direzione. Oppure, può fare 1Y = GND e 2Y = Vdd e il motore gira dall'altra parte. Abbastanza utile.

Buona fortuna e buon divertimento!


Bello! Ho bisogno di una resistenza tra il micro-cavo e il gate? 220 Ohm è un buon valore? (3,3 V / 0,02 A = 170 Ohm ~ 220 Ohm)
supergiox

1
Buona domanda. Nel mondo ideale, il cancello non affonderà affatto corrente. Questo è uno dei vantaggi delle FET rispetto ai BJT. Ma, nel mondo reale, il gate funge da piccolo condensatore, che deve caricarsi prima che la corrente di drain-source inizi a fluire. Si desidera che si carichi rapidamente, per attivare rapidamente il FET. Quando si accende per la prima volta il pin uC, la capacità del gate appare come un corto circuito. L'ATmega328 può alimentare 40 mA per pin. Il tappo sembrerà solo un corto per un istante, quindi non mi preoccuperei con troppo margine di errore. Dì, 3.3V, 35mA: ~ 100-Ohm. Unirò questo, più tardi oggi!
bitsmack

1
Oh, e se si commuta il motore ad alte frequenze, questa resistenza diventa un problema. Rallenta la carica e la scarica del gate, che rallenta la frequenza di commutazione. Inoltre, prolunga la quantità di tempo in cui il FET si trova nella regione lineare dell'operazione, il che spreca energia. Se si riscontra che si tratta di un problema, utilizzare un "driver FET" o un altro buffer, creato per generare / affondare una corrente molto più elevata verso / dal gate. Quindi è possibile ridurre al minimo (o eliminare) il resister.
bitsmack

Penso che la frequenza di commutazione sia la frequenza pwm, quindi dovrebbe essere di circa 500Hz.
supergiox,

1
Bello :) Sono geloso; Volevo costruire un elicottero quad da un po 'di tempo ormai! Facci sapere ...
bitsmack

12

Ecco cosa guarderei per qualsiasi MOSFET. Questo è dal foglio dati del 2SK4033 a proposito: -

inserisci qui la descrizione dell'immagine

Dici che 800mA è la corrente media ma, questo potrebbe aumentare a oltre 1A sotto carico? Ad ogni modo, a 1A e con una tensione del gate drive di 3,3 V, il MOSFET scende di circa 0,15 V attraverso i suoi terminali quando si alimenta un carico 1A. Riesci a vivere con questa perdita di potenza (150mW) e, soprattutto, quando la tensione della batteria scende al di sotto di 3 V puoi vivere con le prestazioni perse quando la tensione del gate diminuisce inevitabilmente.

Solo tu puoi rispondere a questa domanda. Esistono MOSFET migliori di questo, ma devi calcolare le correnti di carico reali per il motore che ti aspetti di vedere.

EDITS

Ecco un chip che ho incontrato che potrebbe essere abbastanza utile al posto dei MOSFET. È il DRV8850 di TI. Contiene due semiponti e questo significa che può pilotare in modo indipendente due dei 4 motori senza bisogno dei diodi flyback (in effetti, il FET superiore funziona come un raddrizzatore sincrono e questo ovviamente riduce le perdite). La resistenza di accensione per ogni FET è di 0,045 ohm ed è classificata a 5A (la potenza dissipata è di circa 1,1 watt) ma, dato che l'OP vuole circa 1A, questo diventa molto banale. La gamma di tensione di alimentazione è compresa tra 2 V e 5,5 V, quindi questo è molto adatto: -

inserisci qui la descrizione dell'immagine


Molte grazie. Sì, i motori potrebbero aumentare la corrente a un valore leggermente superiore a 1A, ma solo per un breve periodo. Una regola pratica che conosco è quella di considerare una corrente che è il doppio della media (1,6 A). Penso che 150mW di perdita di potenza non siano un grosso problema.
supergiox

Che dire delle tensioni della batteria più basse quando il gate drive è più scarso e la perdita aumenta. Ovviamente sto interpretando un avvocato dei diavoli!
Andy aka

Per quanto riguarda la tensione della batteria scende al di sotto di 3 V, non so se capisco cosa intendi. Ad ogni modo, utilizzo un regolatore di tensione (LE33CZ) per alimentare l'ATmega a 3,3 V. Non significa che la tensione è "sempre" 3.3V? Un'altra domanda. E il diodo?
supergiox

1
Man mano che la tensione della batteria scende a 3,4 volt, anche l'uscita del regolatore inizierà a cadere e questo significa che il voltaggio del convertitore di frequenza sul gate inizia a cadere e i feti diventano più inefficienti. Affronta questo scenario prima dei diodi. I diodi sono banali in confronto.
Andy aka

1
Hai bisogno di un Fet per controllare ogni motore o due. Laszlo presume che tu abbia bisogno di 2 perché originariamente hai usato un L293.
Andy aka

6

Dal momento che viene utilizzato un motore DC spazzolato, non è necessario necessariamente un H-Bridge come unità. Solo due casi richiedono davvero un ponte a H; necessità di commutare esternamente il motore (ad esempio motori PM senza spazzole) o di invertire la rotazione. Nessuno di questi sembra applicarsi qui. L'uso di una direzione singola o Single Quadrant Drive (SQD) semplificherebbe notevolmente ciò che si sta tentando di fare.

Il FET che stai pensando di utilizzare (2SK4033) non è un ottimo abbinamento per la tensione del convertitore disponibile (Andy ha già indicato il perché), e entreremo in maggiori dettagli sulla scelta dei FET in seguito.

Azionamento di motori DC spazzolati con un singolo quadrante (SQD)

Vth

inserisci qui la descrizione dell'immagine

VωRwindRgRpdVbVdrv

ImIdpkIdrmsIcr-ave

  • IdpkIm
  • Id-rms2Im2
  • Icr-aveIm

Criteri di base per la scelta di un FET (tipo di ABC per la scelta di un FET):

  • VDS1.5VB-max

VDS

  • Vth-maxVDrv-min3

    Vth-maxRds

  • ΔTJUN

    L'aumento di calore è davvero importante. Rappresenta tutte le perdite ... perdita di conduzione, perdita di gate e perdita di commutazione.

Selezione del campione di esempio in base a 3 criteri:

VB-maxVDRV-minVDSVth-maxRDS

  • VDSVth-max

Resimo

PTPcondPsw

dove

PcondRdsiom2

Psw12iomVBFPWM(τf+τr)

VgsVdsVgsVmpVds

inserisci qui la descrizione dell'immagine

QmpVmpVDRVRgVmpVdrv

QmpτVdrv2Rgτ2RgQmpVdrv2(100Ohms)(4nC)3.3V

ImRdsRds

PT0.9(33mOhm)(1.2A)2(3.3V)(1.2A)(242nSec)(20kHz)

Im

Estremità sciolte

  • Posizionare il circuito di comando e gli interruttori vicino al motore.

  • Mentre può essere possibile per il micro guidare direttamente il FET, un driver per la protezione del micro è una buona idea (qualcosa come un NC7WZ16 potrebbe funzionare qui).

  • Ciss

  • Im

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.