Contrôler un très petit moteur à courant continu avec PWM?


8

J'ai un très petit moteur à courant continu (d'un Walkman), je voudrais contrôler la vitesse à partir d'un micro-contrôleur. Pour cela je voudrais connecter un MOSFET en série et appliquer un signal PWM à sa grille afin de changer la vitesse du moteur.

J'ai mesuré le L & R du moteur = 4,7 mH, 11,5 Ohm (Tao 0,41 ms).

En exécutant quelques expériences avec le moteur à l'aide d'une alimentation de banc, je peux voir qu'il fonctionne bien d'une tension de 0,2 V à environ 0,4 V - c'est toute la plage dont j'ai besoin.

L'alimentation que j'ai pour cela est réglée sur 1,8 V (utilisée pour la partie numérique du circuit), ce qui rend l'utilisation des MOSFET standard un peu difficile car je ne peux pas fournir la tension requise pour la saturation de la porte. J'ai acheté quelques MOSFET à canal P comme celui-ci .

Donc, même si j'aurais pensé que cette configuration fonctionnerait (Vcc -> moteur -> FET -> GND), je n'arrive pas à obtenir une bonne résolution sur le contrôle et je n'obtiens pas autant de couple du moteur que j'ai utilisé à obtenir lorsqu'il est exécuté à partir d'une alimentation CC.

Je ne sais pas quelle fréquence. Je devrais utiliser et ne pas être sûr des autres paramètres à vérifier pour que cela fonctionne comme prévu. Toute aide à ce sujet sera appréciée.

* MISE À JOUR * Suite à la réponse d'Olin, j'ai construit le circuit qu'il a suggéré. J'ai utilisé un transistor 2N3904, une résistance de 180 Ohms en parallèle avec un capuchon de 4,7 nF. Ci-joint la tension du collecteur lors de l'exécution à partir du code PWM 100 (sur 256). Vcc est de 1,8 V.

entrez la description de l'image ici


1
pourquoi ne pas utiliser un BJT à la place - c'est un petit moteur et vous obtiendrez facilement un signal de 0,6 V pour l'allumer.
JIm Dearden

@JImDearden J'ai essayé quelques 2N5088 que j'avais autour mais la chute de tension à travers le transistor était si grande que presque aucune tension n'était appliquée au moteur, donc il fredonnait juste et ne bougeait pas.
user34920

1
Essayez un transistor de commutation comme le 2N3904 avec une résistance de base 1k. Vous aurez également besoin d'une diode de retour sur le moteur avec autant d'inductance et de surtension. 1 kHz devrait convenir au PWM.
Jon

Réponses:


8

La solution la plus simple serait d'utiliser un commutateur NPN côté bas:

Vous dites que la résistance CC du moteur est de 11,5 Ω, donc le courant maximal qu'il peut tirer est de 1,8 V / 11,5 Ω = 160 mA. En fait, le transistor consommera quelques 100 mV en abaissant le courant maximum possible, c'est donc un maximum sûr à concevoir. Figure le transistor est bon pour un gain de 50 minimum, nous avons donc besoin d'au moins 160 mA / 50 = 3,2 mA de courant de base. 5 mA est alors une bonne cible pour s'assurer que le transistor est solidement saturé lorsqu'il est allumé. Calculez la chute BE à 700 mV, ce qui laisse 1,1 V à travers la résistance lorsqu'elle est allumée. 1,1 V / 5 mA = 220 Ω.

C1 est là pour accélérer l'allumage et l'extinction. (220 Ω) (4,7 nF) = 1 µs, qui est la constante de temps C1-R1.

La fréquence PWM doit être suffisamment rapide pour que le courant traversant le moteur change peu à chaque phase d'activation et de désactivation. L'ondulation provoquée par le PWM est une tension alternative superposée à la tension continue moyenne. Seule la tension continue sert à déplacer le moteur. Le composant AC ne génère aucun couple, uniquement de la chaleur, vous devez donc le maintenir faible par rapport au DC. En général, vous faites fonctionner les moteurs un peu au-dessus de la limite d'audition humaine, qui est également généralement assez rapide pour garder le composant CA petit. À 25 kHz, par exemple, la période PWM est de 40 µs, ce qui devrait vous donner beaucoup de résolution à partir de n'importe quel périphérique PWM raisonnable dans un microcontrôleur.

Ajouté en réponse à la trace de portée du collecteur

La forme de base de la forme d'onde semble bonne, il semble donc que le transistor commute correctement et que la tension soit appliquée correctement sur le moteur.

Les pointes à l'arrêt sont inquiétantes. Ils peuvent éventuellement être des artefacts de portée, mais si votre trace de portée est précise, la diode ne fonctionne pas ou n'est pas connectée correctement. Les pointes ne doivent pas être supérieures à un volt ou plus au-dessus de l'alimentation.

D1 empêche non seulement le transistor de frire, mais il préserve une grande partie du courant du moteur pendant le temps d'arrêt. Le premier est nécessaire et le second augmente l'efficacité.

Ajouté 2

En regardant de plus près votre trace de portée, je vois que la tension du collecteur lorsque le moteur est éteint est de 2,48 V. Vous dites que l'alimentation est de 1,8 V, ce qui rend la tension de coupure 680 mV supérieure à l'alimentation. Cela signifie que vous n'avez pas construit le circuit comme je l'ai dit. Vous avez évidemment utilisé une diode au silicium ordinaire, probablement lente comme un 1N400x. Le temps d'activation lent de la diode explique la pointe de tension et réduit un peu les niveaux globaux du variateur à un rapport cyclique PWM spécifique. Cela provoquera également un effet de coupure pendant un certain temps lorsque le transistor sera à nouveau activé, car la diode est toujours conductrice. Une diode Schottky aura une baisse avant plus faible et une récupération inverse instantanée effective dans le contexte de ce circuit.

Le système devrait toujours fonctionner généralement, mais essayez avec une diode Schottky comme je l'ai spécifié.


J'ai assemblé ce circuit en ce moment. PWM freq. est d'environ 31 KHz. J'ai utilisé un transistor 2N3904 avec une résistance de 180 Ohms à la base et un cap d'accélération de 4,7 nF. J'ai une résolution PWM 8 bits de mon MCU. À environ code 100 (sur 256), je peux voir le moteur commencer à tourner. Des réflexions sur la façon d'augmenter la résolution? Peut-être ajouter un décalage DC à la base? Je tiens également à souligner que les moteurs fonctionnent avec le code 100, mais il fonctionne un peu plus vite que le min. vitesse dont j'ai besoin. Je ne peux pas abaisser le code PWM car il s'arrêtera.
user34920

merci Olin pour la gentille réponse. pourriez-vous préciser le choix de C1? Vous parlez de la constante de temps, je comprends qu'elle devrait être d'environ 1/10 de la période de commutation, mais je m'attendrais à ce que la taille C1 seule soit importante pour le temps d'activation / désactivation car elle fournit une charge "instantanée".
Vladimir Cravero

1
@vlad: déverser des frais supplémentaires dans la base à la mise sous tension et aspirer certains des transporteurs gratuits à la mise hors tension sont deux événements à court terme. Ils ne durent probablement que quelques 100 ns après chaque front. Vous voulez que la constante de temps soit un peu plus longue que cela, mais aussi suffisamment courte pour que le capuchon se "réinitialise" avant le bord suivant. 1 nous semblait être un bon compromis, mais de nombreux facteurs peuvent être difficiles à prévoir. Je commencerais par les valeurs affichées, puis regarderais les formes d'onde et ajusterais si nécessaire.
Olin Lathrop

@user: jetez un œil à la forme d'onde du collecteur. Peut-être que les choses ne se passent pas comme prévu. Que fait le moteur avec une tension continue variable? Y a-t-il une tension là où elle commence mais qui ne va pas trop vite une fois en route?
Olin Lathrop

@OlinLathrop J'ai ajouté une photo de la forme d'onde du collecteur (cette mesure est prise à travers le CE du transistor). Lorsque vous utilisez une alimentation CC, le moteur commence à tourner à 0,2 V et cette vitesse est celle que je voudrais au minimum (environ 50 à 60 tr / min).
user34920

0

Supposons que vous ayez une expérience de base avec les microcontrôleurs et que vous puissiez construire un circuit.

La façon la plus simple de piloter le moteur est d'utiliser un pont en H, une résistance de détection de courant et un PWM. Fondamentalement, le pont en H permettra d'utiliser 3,3 V ou 5 V, selon ce qui est le plus pratique.

En fait, selon l'application, vous pouvez même ignorer le contrôle actuel, vous ne causerez probablement aucun dommage même si le moteur est au point mort.

Au fait, avez-vous besoin d'un contrôle de vitesse ou de position?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.