Conduire des moteurs à courant continu avec des MOSFET et un microcontrôleur?

13

Je développe un nano quadcopter à l'aide d'un microcontrôleur Atmega328, alimenté à 3,3 V, et de très petits moteurs CC à balais. Le courant moyen utilisé par ces moteurs est d'environ 800mA @ 3,7V.

Au départ, pour les piloter, j'ai utilisé un pilote de moteur L293D mais ce composant était assez inefficace. Le courant mesuré lorsque les moteurs fonctionnaient à la puissance maximale était d'environ 500 mA et la poussée était donc beaucoup plus faible qu'elle ne devrait l'être.

Maintenant, pour résoudre ce problème, je remplacerais ce pilote de moteur par 4 MOSFET de niveau logique. Après une longue recherche, je trouve celui- ci (2SK4033).

Savez-vous si cela devrait fonctionner? Dois-je l'utiliser en conjonction avec une diode? Si la réponse est "oui", qu'en est-il de celle- ci (MBR360RLG)?

J'ai également choisi ces composants car je peux les acheter dans la même boutique en ligne.

supergiox
la source
2
Andy a répondu à la partie MOSFET de votre question, mais personne n'a mentionné une question plus fondamentale: comment prévoyez-vous de remplacer ce L293D par 4 N MOSFET? Mettre un N MOSFET sur le côté haut peut entraîner des problèmes d'efficacité. Un dessin schématique pourrait aider à rendre votre idée claire.
Laszlo Valko
Que voulez-vous dire par "high-side"? En ce moment, le seul schéma que j'ai est celui avec le L293D. Si cela peut aider, je peux le poster. Mon idée est que chaque moteur est entraîné par un mosfet (4 au total) et si nécessaire, une diode aussi. Quelle pourrait être une solution plus efficace?
supergiox
Chaque sortie L293D comprend un transistor "côté haut" (entre Vcc et la sortie) et un transistor "côté bas" (entre GND et la sortie). Si vous remplacez le transistor «côté haut» par un MOSFET N, vous aurez besoin d'une alimentation qui peut fournir Vgs (au moins 2..3..4V) au-dessus de la tension de sortie. Ou le max. la tension de sortie sera Vcc - Vgs ...
Laszlo Valko
La Vgs doit être de 3,3 V et la sortie (Vds) doit être de 3,7 V (la même tension de la batterie, qui est unique). Donc, s'il y a ce problème, comment faire? Pouvez-vous suggérer une autre solution?
supergiox
2
Vous avez les options suivantes: a) utiliser des MOSFET P pour le côté haut; b) utiliser un doubleur de tension séparé ou un circuit convertisseur CC-CC pour fournir 2 Vcc pour entraîner les grilles MOSFET côté haut; c) utiliser un circuit d'amorçage pour fournir la tension Vout + Vcc appropriée pour entraîner les grilles MOSFET côté haut. Chacun d'eux a ses inconvénients et / ou ses limites.
Laszlo Valko

Réponses:

17

Les MOSFET devraient très bien fonctionner pour cette application. Voici quelques trucs à prendre en compte:

1:

Lorsque vous utilisez un FET pour piloter une charge, vous pouvez choisir une configuration côté haut ou bas. Le côté haut place le transistor FET entre le rail d'alimentation et la charge, et l'autre côté de la charge est connecté à la terre. Dans une configuration côté bas, un conducteur de la charge est connecté au rail d'alimentation et le FET est positionné entre la charge et la masse:

HighVsLow

Le moyen le plus simple de piloter votre moteur (ou une autre charge) consiste à utiliser un MOSFET à canal N dans la configuration côté bas. Un N-FET commence à conduire lorsque sa tension de grille est supérieure à sa source. Puisque la source est connectée à la terre, la porte peut être pilotée avec une logique marche / arrêt normale. Il existe un seuil que la tension de grille doit dépasser ("Vth") avant que le FET ne conduise. Certains FET ont Vth dans les dizaines de volts. Vous voulez un N-FET "de niveau logique" avec un seuil considérablement inférieur à votre Vcc.

La configuration FET côté bas présente deux inconvénients:

  • L'enroulement du moteur est connecté directement au rail d'alimentation. Lorsque le FET est désactivé, tout l'enroulement est "chaud". Vous changez la terre, pas la connexion électrique.

  • Le moteur n'aura pas de véritable référence au sol. Son potentiel le plus bas sera supérieur à la terre par la tension directe du FET.

Aucun de ces éléments ne devrait avoir d'importance dans votre conception. Cependant, ils peuvent être problématiques si vous ne vous y attendez pas! Surtout avec des circuits de puissance supérieure :)

Pour surmonter ces problèmes, vous pouvez utiliser un P-FET dans la configuration côté haut. Le circuit de conduite devient cependant un peu plus complexe. Un interrupteur P-FET a généralement sa porte tirée vers le haut sur le rail d'alimentation. Ce rail d'alimentation est plus élevé que le Vcc de l'UC, vous ne pouvez donc pas connecter les broches d'E / S de l'UC directement à la porte. Une solution courante consiste à utiliser un N-FET bas côté plus petit pour abaisser la grille du P-FET côté haut:

DualFet

R1 et R3 existent pour garder les FET désactivés jusqu'à ce que Q2 soit piloté. Vous aurez besoin de R3 même dans une configuration de côté bas.

Dans votre cas, je pense qu'un simple N-FET bas côté (avec R3) vous servira mieux.


2:

Remarquez R2 dans le dernier diagramme. Une grille MOSFET agit comme un condensateur, qui doit se charger avant que le courant drain-source ne commence à circuler. Il peut y avoir un courant d'appel important lors de la première mise sous tension, vous devez donc limiter ce courant pour éviter d'endommager le pilote de sortie du uC. Le capuchon ne ressemblera qu'à un court instant, il n'y a donc pas besoin d'une grande marge d'erreur. Votre Atmel spécifique, par exemple, peut fournir 40mA. 3,3 V / 35 mA => 94,3 Ohm. Une résistance de 100 ohms fonctionnera très bien.

Cependant, cette résistance ralentira les temps d'activation et de désactivation du FET, ce qui imposera une limite supérieure à votre fréquence de commutation. De plus, cela prolonge la durée pendant laquelle le transistor FET se trouve dans la région de fonctionnement linéaire, ce qui gaspille de l'énergie. Si vous passez à une fréquence élevée, cela peut être un problème. Un indicateur est si le FET devient trop chaud!

Une solution à ce problème consiste à utiliser un pilote FET. Ce sont effectivement des tampons qui peuvent générer plus de courant et peuvent donc charger la grille plus rapidement sans avoir besoin d'une résistance de limitation. De plus, la plupart des pilotes FET peuvent utiliser un rail d'alimentation plus élevé que le Vcc typique. Cette tension de grille plus élevée réduit la résistance à l'état passant du FET, économisant ainsi de l'énergie supplémentaire. Dans votre cas, vous pouvez alimenter le pilote FET avec 3,7 V et le contrôler avec 3,3 V de l'UC.

FetDriver


3:

Enfin, vous voudrez utiliser une diode Schottky pour vous protéger contre les pointes de tension causées par le moteur. Faites-le chaque fois que vous commutez une charge inductive:

LowSideWithDiode

Un enroulement de moteur est un gros inducteur, il résistera donc à tout changement de flux de courant. Imaginez que le courant traverse le bobinage, puis vous désactivez le FET. L'inductance fera en sorte que le courant continue de s'écouler du moteur lorsque les champs électriques s'effondrent. Mais, il n'y a pas de place pour ce courant! Donc, il frappe à travers le FET, ou fait autre chose tout aussi destructeur.

Le Schottky, placé en parallèle à la charge, donne un chemin sûr pour le courant à parcourir. La pointe de tension atteint son maximum à la tension directe de la diode, qui n'est que de 0,6 V à 1 A pour celle que vous avez spécifiée.

L'image précédente, une configuration de côté bas avec la diode flyback, est facile, peu coûteuse et assez efficace.


Le seul autre problème que je vois avec l'utilisation de la solution MOSFET est qu'elle est intrinsèquement unidirectionnelle. Votre L293D d'origine est un pilote à demi-pont multiple. Cela permet d'entraîner un moteur dans les deux sens. Imagerie connectant un moteur entre 1Y et 2Y. Le L293D peut faire 1Y = Vdd et 2Y = GND, et le moteur tourne dans une direction. Ou, il peut faire 1Y = GND et 2Y = Vdd, et le moteur tournera dans l'autre sens. Assez pratique.

Bonne chance et amusez-vous bien!

bitsmack
la source
Agréable! Ai-je besoin d'une résistance entre le micro-conducteur et la grille? 220 Ohm est-il une bonne valeur? (3,3 V / 0,02 A = 170 Ohm ~ 220 Ohm)
supergiox
1
Bonne question. Dans le monde idéal, la porte ne coule aucun courant. C'est l'un des avantages des FET sur les BJT. Mais, dans le monde réel, la grille agit comme un petit condensateur, qui doit se charger avant que le courant drain-source ne commence à circuler. Vous voulez qu'il se charge rapidement, pour activer le FET rapidement. Lorsque vous allumez la broche uC pour la première fois, la capacité de la grille apparaît comme un court-circuit. L'ATmega328 peut générer 40 mA par broche. La casquette ne ressemblera qu'à un court instant, donc je ne m'embêterais pas avec trop de marge d'erreur. Disons, 3,3 V, 35 mA: ~ 100 ohms. Je fusionnerai cela plus tard dans la journée!
bitsmack
1
Oh, et si vous commutez le moteur à des fréquences élevées, cette résistance devient un problème. Il ralentit la charge et la décharge de la porte, ce qui ralentit votre fréquence de commutation. De plus, cela prolonge la durée pendant laquelle le transistor FET se trouve dans la région de fonctionnement linéaire, ce qui gaspille de l'énergie. Si vous trouvez que c'est un problème, utilisez un "pilote FET" ou un autre tampon, qui est fait pour générer / absorber un courant beaucoup plus élevé vers / depuis la porte. Ensuite, vous pouvez minimiser (ou éliminer) la résistance.
bitsmack
Je pense que la fréquence de commutation est la fréquence pwm, elle devrait donc être d'environ 500 Hz.
supergiox
1
Sympa :) je suis jaloux; Cela fait un bon moment que je veux construire un quad copter! Faites-nous savoir ...
bitsmack
12

Voici ce que je regarderais pour n'importe quel MOSFET. C'est de la fiche technique du 2SK4033 par la manière: -

entrez la description de l'image ici

Vous dites que 800mA est le courant moyen, mais cela pourrait-il augmenter à plus de 1A sous charge? Quoi qu'il en soit, à 1 A et avec une tension de commande de grille de 3,3 V, le MOSFET chute d'environ 0,15 V à ses bornes lors de l'alimentation d'une charge de 1 A. Pouvez-vous vivre avec cette perte de puissance (150 mW) et, plus important encore, lorsque la tension de la batterie tombe en dessous de 3 V, pouvez-vous vivre avec les performances perdues car la tension de la grille chute inévitablement.

Seulement vous pouvez répondre à cette question. Il y a de meilleurs MOSFET que cela, mais vous devez calculer les courants de charge réels pour le moteur que vous attendez.

MODIFICATIONS

Voici une puce que j'ai rencontrée qui pourrait être très utile à la place des MOSFET. Il s'agit du DRV8850 de TI. Il contient deux demi-ponts et cela signifie qu'il peut piloter indépendamment deux des 4 moteurs sans avoir besoin des diodes flyback (en effet, le FET supérieur fonctionne comme un redresseur synchrone et cela réduit bien sûr les pertes). La résistance à l'état passant pour chaque FET est de 0,045 ohms et elle est évaluée à 5A (la puissance dissipée est d'environ 1,1 watt) mais, étant donné que l'OP veut environ 1A, cela devient très trivial. La plage de tension d'alimentation est de 2V à 5,5V, donc encore une fois cela convient très bien: -

entrez la description de l'image ici

Andy aka
la source
Merci beaucoup. Oui, les moteurs pourraient augmenter le courant à une valeur légèrement supérieure à 1A, mais seulement pendant une courte période. Une règle pratique que je connais est de considérer un courant qui est le double de la moyenne (1,6A). Je pense que 150 mW de perte de puissance ne sont pas un gros problème.
supergiox
Qu'en est-il des tensions de batterie plus faibles lorsque l'entraînement du portail est plus faible et que la perte devient plus importante. Je joue l'avocat des démons bien sûr!
Andy aka
À propos de la tension de la batterie qui tombe sous 3V, je ne sais pas si je comprends ce que vous voulez dire. Quoi qu'il en soit, j'utilise un régulateur de tension (LE33CZ) pour alimenter l'ATmega à 3,3 V. Cela ne signifie-t-il pas que la tension est "toujours" de 3,3 V? Une autre question. Et la diode?
supergiox
1
Lorsque la tension de la batterie chute pour dire 3,4 volts, la sortie du régulateur commencera également à baisser, ce qui signifie que les volts d'entraînement vers la grille commenceront à baisser et que les fets deviendront plus inefficaces. Traitez ce scénario avant les diodes. Les diodes sont triviales en comparaison.
Andy aka
1
Avez-vous besoin d'un Fet pour contrôler chaque moteur ou deux? Laszlo suppose que vous en avez besoin de 2 car vous avez utilisé à l'origine un L293.
Andy aka
6

Puisqu'un moteur CC à balais est utilisé, vous n'avez pas nécessairement besoin d'un pont en H comme entraînement. Seuls deux cas nécessitent vraiment un pont en H; besoin de commuter extérieurement le moteur (pensez aux moteurs PM sans balais par exemple) ou besoin d'inverser le spin. Aucun de ces éléments ne semble s'appliquer ici. L'utilisation d'une seule direction ou d'un seul quadrant (SQD) simplifierait considérablement ce que vous essayez de faire.

Le FET que vous envisagez d'utiliser (2SK4033) ne correspond pas très bien à la tension d'entraînement disponible (Andy a déjà expliqué pourquoi), et nous verrons plus en détail le choix des FET plus tard.

Entraînement de moteurs CC à balais avec un entraînement à quadrant unique (SQD)

Ve

entrez la description de l'image ici

VωRventRgRpdVbVdrv

jemje-pkje-rmsjedemander

  • je-pkjem
  • jed-rms2jem2
  • jedemanderjem

Critères de base pour choisir un FET (sorte de l'ABC du choix d'un FET):

  • VDS1,5VB-max

VDS

  • Vth-maxVDrv-min3

    Vth-maxRds

  • ΔTJ-UNE

    L'élévation de chaleur est vraiment importante. Il tient compte de toutes les pertes ... perte de conduction, perte de porte et perte de commutation.

Exemple de sélection de pièces sur la base de 3 critères:

VB-maxVDrv-minVDSVth-maxRDS

  • VDSVth-max

Re

PTPcondPsw

PcondRdsjem2

Psw12jemVbFPWM(τF+τr)

VgsVdsVgsVmpVds

entrez la description de l'image ici

QmpVmpVdrvRgVmpVdrv

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

jemRdsRds

PT0,9(33mOhm)(1.2A)2(3,3 V)(1.2A)(242nSec)(20 kHz)

jem

Extrémités lâches

  • Placez le circuit d'entraînement et les interrupteurs à proximité du moteur.

  • Bien qu'il soit possible pour le micro de piloter directement le FET, un pilote pour la protection du micro est une bonne idée (quelque chose comme un NC7WZ16 pourrait fonctionner ici).

  • Ciss

  • jem

gsills
la source