Petite carte de contrôle du moteur brushless

From Eric

Jump to: navigation, search

Contents

Objectif

Piloter un moteur sans balais à courant continu (Brushless DC, BLDC), sans capteur de position (sensorless).

Le montage

Le montage est très simple :

  • un moteur brushless,
  • 2 double ponts en H L298,
  • un ET (74LS08) permettant de "distribuer" le signal PWM,
  • un PIC16F628,
  • quelques bricoles...

En voici une photo de la première version, avec un moteur issu d'un lecteur iomega :

Ctrl brushless.jpg

et voici la deuxième version, avec un moteur de disque dur :

Ctrl brushless dd.jpg

J'utilise des L298 pour ne pas avoir à câbler des ponts en H et bénéficier de la logique d'exclusion mise en œuvre dans le L298. J'aurais pu construire un pont en H à MOSFETs, mais comme le moteur est de faible puissance et qu'il s'agit essentiellement d'expérimenter le côté "sensorless", j'ai fait au plus court.

Principe d'un moteur brushless

Un moteur "brushless" est composé d'un rotor comportant les éléments magnétiques (aimants au néodyme) et d'un stator comportant les bobines. Les bobines sont commandées électroniquement de façon à engendrer la séquence de champs magnétiques ad-hoc.

Pour un moteur à trois phases A, B, C, la séquence de commandes à réaliser est la suivante :

1 : A +         | B flottant   | C - 
2 : A flottant  | B +          | C -
3 : A -         | B +          | C flottant
4 : A -         | B flottant   | C +
5 : A flottant  | B -          | C +
6 : A +         | B -          | C flottant

Voila ce que l'on observe à l'oscilloscope :

Brushless sequence.jpg

On constate qu'il existe toujours une phase parmi les 3 qui "flotte", c'est-à-dire qui est non alimentée.

A un instant donné, le sous-ensemble des bobines à commander dépend naturellement de la position du rotor. Deux solutions peuvent être utilisées pour déterminer cette position :

  • utiliser des capteurs de position, tels des capteurs optiques ou à effets Hall,
  • mesurer la force électromotrice générée dans les bobines.

Nous nous intéressons à la deuxième solution.

L'idée est (dans le principe) assez simple : la position du rotor est déterminée par la mesure de la tension sur la phase flottante.

Sur certain moteurs, le point central (commun) des trois groupes de bobines est accessible : dans ce cas, la mesure de la tension est facile. Dans la plupart des cas, ce point n'est pas accessible et il faut "reconstruire" le point milieu à partir des tensions disponibles. Cela peut se faire en utilisant un pont de trois résistances entre les phases A, B et C.

Une deuxième difficulté apparaît lorsque le moteur est commandé en PWM, car dans ce cas la tension au point commun est très bruitée. Il faut donc la filtrer au moyen d'un filtre passe-bas.

Une troisième difficulté concerne la mesure de la force contre-électromotrice lorsque le moteur tourne lentement (et a fortiori lorsqu'il est à l'arrêt). Le problème concerne notamment le démarrage du moteur, mais dans notre cas où le couple est constant (et faible), on utilise simplement une séquence de commandes adaptée. En effet, et dans une certaine mesure, les moteurs brushless peuvent être contrôlés en boucle ouverte car ils agissent en synchronisme avec la commande.

L'utilisation du PIC 16F628

Le PWM

Le signal PWM est généré de façon autonome par le PIC via le timer 2 et le module CCP (Capture/Compare/PWM). Le signal PWM disponible sur la sortie RB3/CCP and ANDé avec les 3 signaux ENAble destinés aux L298.

L'observation du Zero-Cross event

Contrôle interne

L'observation s'effectue à l'aide de trois comparateurs LM311 câblés ainsi :

Brushless zce lm311.jpg

(Ce schéma est à répéter 3 fois, une fois par phase.)

La photo suivante montre le signal aux bornes d'une des trois bobines : commandé 2 fois sur 3 et flottant la troisième. Le signal devient flottant lorsqu'on cesse de l'alimenter (ce qui se traduit par un pic lors de la coupure). La tension dépend alors de l'angle de rotation du moteur, ce qui se traduit par une tension croissante en fonction du temps.

Brushless comparateur.jpg

Contrôle externe

Le 16F628A ne dispose pas d'entrée ADC, mais il dispose de deux comparateurs qui peuvent être connectés aux broches AN0, AN1, AN2 et AN3. Le chip propose divers schéma de comparaison dont l'un permet la comparaison de l'une quelconque des broches ANi (choisie par configuration) avec une tension de référence VREF générée par le chip.

16f628 comparateurs mode2.jpg

La tension VREF est configurable :

16f628 vref.jpg


Références

  • Application note AVR444, Sensorless control of 3-phase brushless DC motor
  • AN857, Brushless DC Motor Control Made Easy, [1]. ce document d'un quarantaine de page est très détaillé. Il donne notamment les quelques équations à connaître concernant le calcul de la force contre-électromotrice (la BEMF).
  • Direct Back EMF Detection Method for Sensorless Brushless DC (BLDC) Motor Drives de Jianwen Shao [2]
Personal tools