dimanche 24 novembre 2013

moteur pas à pas

Dans cette article j'explique comment contrôler un moteur pas à pas . Pour ce démo j'ai utilisé un MSP430 launchpad et un C.I. L293D pour piloter le moteur. Comme moteur j'ai utilisé le mécanisme de transport de la tête de lecture d'un graveur de CD. On retrouve aussi le même type de mécanisme dans les lecteurs de disquettes.

schématique

Le moteur a 2 bobines et comme illustré ci-haut. Il s'agit d'un moteur bipolaire il y a donc 4 connections au moteur. Sur les moteurs unipolaire il y a en 6.

Description

En fait le programme pour contrôler un moteur pas à pas est simple. On a besoin d'un pont H pour chaque bobine et c'est le L293D qui contient 4 demi-pont H qui est utilisé dans ce but. Lorsqu'on alimente une bobine le rotor s'aligne sur le champ magnétique créé par la bobine. Si on alimente les 2 bobines en même temps le champ magnétique résultant est entre les 2 bobines et le rotor s'aligne donc entre celle-ci. Donc pour déplacé le rotor on déplace le champ magnétique du stator en alimentant alternativement les bobines.

Il y a plusieurs façon d'alimenter un moteur pas à pas mais celle qui donne le plus petit angle de rotation à chaque pas est la suivante:

pasa1b1a2b2
1+5v0v0v0v
2+5v+5v0v0v
30v+5v0v0v
40v+5v+5v0v
50v0v+5v0v
60v0v+5v+5v
70v0v0v+5v
8+5v0v0v+5v
Pour faire tourner le moteur en continu dans un direction il suffit de répéter ces 8 pas en boucle et pour le faire tourner dans l'autre sens on les répète à l'envers c'est à dire de 8 à 1. J'ai branché les 4 fils des bobinages sur le même port (PORT1) de sorte qu'il suffit de conserver les valeurs pour chaque pas dans un tableau indicé par la phase. Il faut écrire la valeur correspondant à la phase ou le moteur est rendu dans P1OUT. La valeur de chaque nombre dans le tableau correspond aux étapes de cette table.

Un moteur pas à pas il n'y a pas de rétroaction comme pour le cerveau moteur donc on ne connaît pas la position du moteur. Il faut compter les pas et habituellement on utilise des commutateurs en fin de course pour indiquer que la limite est atteinte. Mais si la charge est trop grande et que le moteur glisse le compteur de pas n'est plus valide il faut voir à ce que la charge ne dépasse pas la capacité du moteur. Il faut aussi tenir compte de l'inertie. Plus la charge est grande plus le moteur va prendre de temps pour s'aligner sur la nouvelle position. Donc le délais de pas doit-être augmenter avec la charge. Comme au départ je ne connaissait pas les caractéristiques du moteur j'ai commencer les tests avec un délais long (50msec), pour le réduire progressivement jusqu'à 1msec. Mais à 1 msec le moteur vibre. A 2msec c'est parfais. Mais si je mettais une charge sur le chariot il faudrait probablement augmenter ce délais.

Pour ce démo j'ai simplement vérifier à quelle vitesse je pouvais déplacer le chariot de tête du graveur en envoyant 200 impulsions dans un sens et ensuite 200 dans l'autre.

déplacement lent, 50msec/pas déplacement rapide 2msec/pas.

Conclusion

Comme on le voie un pilote de moteur pas à pas c'est simple. Il serait facile d'adapter ça en assembleur pour n'importe quel microcontrôleur.

vendredi 15 novembre 2013

indicateur de voltage barre-graphe

IL y a 2 semaines je présentais une alimentation variable éconmique et je concluais l'article en disant que je songeais à ajouter un indicateur de voltage barre-graphe. C'est chose faite.

Schématique

Description

La barre de LEDs contients 10 LEDs qui sont branchées en Charlieplexing sur GP0,GP1,GP2 et GP5. GP4 est configuré en entrée analogique pour la lecture du voltage de sortie de l'alimentation qui varie de 1,25 à 5,5 volt. Le circuit a son propre régulateur de tension 5 volt (7805) branché à la sortie du pont redresseur de l'alimentation.

L'échelle progresse par échelon de 0,5volt mais la logique du code est conçu de sorte que si la valeur lue tombe entre 2 LEDs, ces deux LEDs sont allumées. On a donc environ 0,25 volt de résolution.

Le convertisseur A/N du PIC12F675 a 10 bits de résolution mais le programme utilise seulement les 8 bits les plus significatifs. Ici le calcul pour déterminer quel LED allumée en fonction de la lecture est une simple règle de 3. LED=Vi*10/256. Le programme fait la multiplication par 10 mais il n'est pas nécessaire de faire la division puisque la variable PRODHI contient déjà le résultat de cette division après la multiplication.

Code source

lundi 11 novembre 2013

LED blanche sur 3 volt version 2

Dans l'article précédent je présentais une façon d'augmenter le voltage d'une lampe de poche de 3 volt pour obtenir le maximum d'intensité avec une LED blanche fonctionnant à 120ma. Le circuit d'hier utilisait une inductance. Aujourd'hui je présente un autre type de circuit qui lui permet de doubler le voltage par pompe de charge. Ce type de circuit n'utilise pas d'inductance mais 2 condensateurs.

Principe de fonctionnement

Il s'agit de charger le condensateur C1 et ensuite de transférer la charge accumulée dans C1 vers C2. Comme si on remplissais une chaudière d'eau pour ensuite la vidée dans une autre dont le fond est percé afin de garder son niveau d'eau constant.

Dans la première phase on place le transistor Q2 en conduction de sorte que C1 se charge à travers la diode D1. On bloque Q1 lorsque C1 est chargé. De la même façon que lorsqu'on doit vider une chaudière dans une autre il faut la soulevée au dessus de la première, il faut soulevé le voltage sur l'électrode négative de C1 pour qu'il se vide dans C2. Pour ce faire on met le transistor Q2 en conduction de sorte que le l'électrode négative de C1 est maintenant branchée sur le +3 volt de la pile. Donc le voltage aux bornes de C1 s'additionne à celui de la batterie et l'énergie accumulée dans C1 est transférée dans C2 à travers D2. La diode D3 aide C2 à demeuré chargée à un voltage près de 3 volt de sorte que C1 n'a pas besoin de fournir autant d'énergie pour augmenter le voltage de C1.

Ce circuit nécessite plus de composants que le précédent mais si le courant tirée par la charge était inférieur à 10ma on pourrait brancher le négatif de C1 directement sur une sortie du PIC10F200. Le PIC10F200 pouvant drainer ou sourcer 20ma ça permet un courant de charge moyen de la moitié de cette valeur.

Ce circuit est moins efficace en terme de conversion de voltage. En effet le système inductif permet de monter le voltage beaucoup plus que du double. Sans charge sur le circuit inductif je mesurait 35 volt à la sortie. Par contre avec ce circuit je ne crains pas de griller la LED et je n'utilise donc pas de rétroaction.

voltages aux différents points du circuit.

Voltage au bornes de la LED avec une alimentation de 3 volt. Le voltage maximum est de 4,72 volt et descend à 4,48 volt entre chaque recharge pour un voltage moyen de 4,60 volt.


Voltage à la jonction de Q1 et Q2


Voltage à la jonction de C1 et D1.


voltage aux bornes de la résistance R3. Le courant dans la LED est donc 1,72/15=115ma.

code source