dimanche 28 octobre 2012

expérimentation avec PIC10F322, partie 2

Dans cette deuxième expérience avec le MCU PIC10F322 il s'agit de contrôler la vitesse d'un petit moteur en courant continu en utilisant la modulation de largeur d'impulsion, PWM pour son acronyme anglophone. Voici le schéma du circuit utilisé pour cette expérience.


La broche RA1 est la sortie PWM qui contrôle le transistor Q1 qui lui-même contrôle le moteur en mode ON/OFF. De plus l'entrée RA2 est configuré pour une lecture analogique du voltage au collecteur de Q1. Cette lecture permet de savoir si le moteur tourne vraiment ou s'il est bloqué. Dans l'éventualité d'un blocage le moteur est mis à l'arrêt après un certain délais.

principe de fonctionnement

Le moteur est alimenté par des impulsions plutôt que par un voltage continu comme il le devrait dans un usage normal. Ces impulsions sont répétées à une fréquence régulière mais leur durée varie. Plus la durée des impulsions est longue plus le moteur reçois d'énergie donc il tourne plus vite. A cause de l'inertie lorsque l'alimentation du moteur est coupée celui-ci continue à tourner jusqu'à la prochaine impulsion. Du fait de l'inertie du moteur il se fait naturellement une intégration des impulsions et le résultat est équivalent à celui qu'on obtiendrait si on alimentait le moteur avec un courant continu dont on varie le voltage.

Les petits moteurs de ce type sont fabriqués avec 2 aimants permanents qui servent de stator avec un pôle NORD et un SUD. Le rotor lui est constitué d'un bobinage sur une armature ferro-magnétique et forme donc un électro-aimant. Donc lorsque le rotor est alimenté le champ magnétique résultant du passage du courant dans le bobinage du rotor interagit avec celui du stator pour faire tourner le moteur.

Lorsqu'un conducteur se déplace dans un champ magnétique une force électro-motrice est générée dans le conducdeur. C'est le principe de fonctionnement de toute génératrice électrique. Les moteurs n'échappent pas à cette loi de la physique et se comportent aussi comme des générateurs. Donc lorsque le moteur tourne une force électro-motrice est générée dans le rotor. On l'appelle Force Contre Électro-Motrice car sa polarité s'oppose à celle de l'alimentation du moteur. C'est la raison pour laquelle un moteur tire un maximum de courant lorsqu'il est à l'arrêt et que ce courant diminue avec la vitesse car la F.C.É.M. est soustraite du voltage d'alimentation.

Ir = (Valim. - Vf.é.c.m.)/Rrotor
Ir est le courant circulant dans le rotor
Valim est le voltage d'alimentation
Vf.c.é.m. est le voltage généré par la Force Contre Életro Motrice
Rrotor est la résistance du rotor.

Ce qui est intéressant c'est l'usage qu'on peut faire de cette F.C.É.M. Puisqu'on alimente le moteur par impulsions, entre 2 impulsions Q1 ne conduit pas et donc si on mesure le voltage au collecteur de Q1 pendant cette phase ce qu'on obtient c'est

Vcq1 = Valim - Vf.c.é.m

Mais comme je viens de l'expliquer si le moteur ne tourne pas la Vf.c.é.m. est nulle. Donc on peut savoir si le moteur tourne ou pas en mesurant la valeur de ce voltage. C'est ce que fait le programme. Il mesure 16 fois cette valeur pour en faire une moyenne et si ce voltage moyen est plus grand qu'une certaine valeur il considère que le moteur est mécaniquement bloqué et au bout d'un délais il coupe l' alimentation. Si vous fabriquez un petit robot sur roues vous pouvez savoir si le robot bute sur un obstacle simplement en utilisant cette technique, donc pas besoin de détecteur d'obstacle.

Le code source est disponible ici; controle-moteur-cc-pic10f322.asm


Aucun commentaire:

Enregistrer un commentaire