Commande de vitesse AR-0-AV en PWM
avec un potentiomètre simple et un 12F675
“G.R.E.T.E.L.”
GRETEL = Gestion d'une Référence pour Elaborer une Tension à Evolution de Largeur
Mais GRETEL aussi parce que c´est la première fois qu´on se sert du registre ANSEL
par Jean-Claude Grimaldi
Objectif
Je voulais pouvoir mettre entre les mains de mes petits-enfants un système simple leur permettant de régler la vitesse dans les deux sens de marche avec point milieu comme sur les alimentations du commerce, mais avec un potentiomètre standard (les rhéostats ou potentiomètres à point milieu sont coûteux et difficiles à trouver, sans parler de ceux avec un inverseur au centre) et en fournissant un signal haché de type PWM (Pulse Width Modulation, en français MLI, modulation de largeur d'impulsions).
Rappelons qu´un signal de type PWM améliore notablement la prise de courant puisque, même à très basse vitesse, c´est la tension maximale qui est appliquée (comme en DCC), la variation de vitesse se faisant en modifiant le rapport entre le temps de conduction et le temps de non-conduction à l´intérieur d´un cycle de durée fixe.
Le montage décrit prévoit une inversion du sens de marche par relais mais peut également s´adapter à l´utilisation d´un pont en H.
Il sera possible de faire évoluer également le montage en ajoutant une résistance de puissance en série avec le transistor de puissance et d´utiliser le PIC en mesure d´intensité pour compléter le montage par un disjoncteur électronique dont le réarmement pourra être soit automatique (arrêt pendant une seconde en cas de surintensité) ou manuel (une entrée est encore disponible sur le PIC 12F675.
Assembleur ou Mikrobasic ?
Mes connaissances sur la programmation des PIC ayant été acquises grâce à la rubrique PicTrain (encore merci à Psi), j'ai tout naturellement essayé de faire d´abord le programme en assembleur. Mais j'ai eu des difficultés à le mettre au point de manière “propre” (cela marche parfaitement, mais il m'a fallu me familiariser avec la manière de faire des tests et des soustractions et, pour la mesure analogique, j'ai tâtonné et ne garantis la manière dont tous les paramètres sont utilisés (n´hésitez pas à me faire part de vos remarques).
Ces difficultés m'ont conduit à m´initier à Mikrobasic avec lequel la réalisation a été très facile, mais j´ai découvert, comme avec tout langage de haut niveau, qu´il ne permet pas d'optimiser, au moins de manière simple, toutes les possibilités du processeur. Mais, à moins de se lancer dans du traitement de signal pour décoder du DCC ou une transmission radio, cela ne devrait pas poser de problème pour la plupart des applications objet de la rubrique PicTrain.
Vous trouverez en bas de page les deux programmes, l´un en assembleur, l´autre en Mikrobasic. La simplicité du Mikrobasic est évidente surtout si l´on tient compte du fait que, face à la lourdeur des opérations de test et de soustraction, j´ai abandonné ce programme en assembleur après les premiers pas en Mikrobasic et que la bande morte autour de la vitesse zéro n´y figure pas. (Attention également, la sortie PWM y est sur la patte 7 au lieu de la 5 car cette modification est intervenue tardivement pour faciliter l´implantation de l´option future qui permettra la mesure et le contrôle du courant.)
Je signale à toutes fins utiles (à quoi est-ce dû, le branchement étant le même ?) que le condensateur de filtrage ne s´est avéré nécessaire sur la référence, pour éviter des anomalies lorsque l´on fait varier le potentiomètre, que pour le programme issu du Mikrobasic.
Composants
Coût total maximal : 7 à 8 €, sans l´alimentation (12 à 14 volts alternatif c'est-à-dire la sortie “accessoires” d'un bon vieux transfo de train) :
1 PIC 12F675 (maximum 2,20 €)
1 support à 8 pattes (0,10 €)
6 diodes 1N400x (6 x 0,08 €)
1 régulateur 7805 ou 78L05 (0,40 €)
1 condensateur 100 µF (0,25 €)
1 condensateur 10 µF (0,25 €)
1 condensateur 100 nF (0,10 €)
3 résistances 220 ohms (0,02 €)
1 résistance 10 kohms (0,02 €)
1 led 3 ou 5 mm (0,10 €)
1 transistor NPN genre BC547 (0,15 €)
1 transistor NPN genre BDX53C/BDW93C (0,60 €)
1 relais à deux inverseurs (2,50 €)
Veroboard ou Cimec de 2 x 3 cm environ
Schéma électrique
Difficile de faire plus simple (en gris , les composants futurs pour la mesure de courant).
Le 5 volts, filtré (une diode, un condensateur) et stabilisé (régulateur trois pattes) pour l´alimentation du PIC est tiré de l´alimentation de puissance (transfo train, sortie dite “accessoires”) qui est simplement redressée (pont de diodes), mais pourrait être filtrée si l´on avait besoin de plus de puissance.
Le zéro volt sert de masse commune pour la puissance et le PIC, ce qui permettra, dans une évolution future, la mesure directe de l´intensité.
Le signal PWM sortant du PIC commande un transistor de puissance (T1) qui, fonctionnant en tout ou rien, ne chauffe pas et n´a pas besoin de radiateur (avantage du mode PWM).
L´inversion du sens de marche, fonction de la position du potentiomètre, est commandée par un relais à double inverseur. Le signal de sortie du PIC, étant limité en puissance à 25 mA, passe par un transistor NPN de type BC547 ou équivalent (T2).
Note. — Il serait intéressant de tester la possibilité de commander directement le relais par une sortie du PIC, sans transistor intermédiaire, car il n´y a probablement pas qu´ici que l´on se posera la question de la commande d´un relais par un PIC. Il existe des relais 6 volts à faible consommation, dont la résistance interne est de 165 ohms. En alimentant le montage de telle sorte que la sortie ne fasse que 4,5 V (plage basse de fonctionnement garanti du relais), le courant nécessaire serait alors de 27 mA, ce qui un peu au-delà de la limite maxi mais probablement dans la tolérance du PIC. C´est donc risqué, mais la tenue du PIC mériterait d´être testée.
Référence analogique
La commande se fait par un potentiomètre ordinaire, de valeur non critique, placé entre le + 5 V et le zéro volt, dont le curseur fournit la référence à une entrée analogique du PIC.
Les traitements effectués sont indiqués dans les schémas ci-contre.
1. La tension d´entrée varie de 0 à 5 V environ et entre sur une des trois  entrées analogiques du PIC (le PIC étant très sensible, un condensateur de filtrage s´est avéré utile lorsque la mesure est réalisée en Basic).
La mesure est ramenée de 10 bits à 8, pour limiter la variable à un seul octet, ce qui facilite le traitement, et donne une précision amplement suffisante ici.  
2. Pour déterminer le sens de marche, le PIC détecte si la valeur est supérieure ou inférieure à V/2.
3. Pour élaborer la référence de vitesse, le signal est ensuite traité pour avoir la référence maximale aux extrémités et l´arrêt au milieu (127 — x ou x — 128 selon le sens).
4. Enfin, une “bande morte” est ajoutée de part et d´autre du point d´arrêt central, afin de faciliter l´arrêt et d´éviter au moteur de vibrer si le curseur n´est pas exactement au milieu.
Sortie PWM
[Voir aussi les commentaires inclus dans les programmes.]
Il existe des PIC (comme le 16F628 disposant d´une fonction PWM native, où il suffit d´indiquer le rapport cyclique et la fréquence, sans se préoccuper de la commande elle-même. L´avantage principal est que le cycle se déroule sans être perturbé par le programme principal (dans notre cas le temps de mesure de la référence analogique).
Ce n´est pas le cas du PIC 12F675 qui suffira pourtant à notre application.
La commande PWM est réalisée de manière simple : partant d´une référence x qui, dans notre cas et compte tenu de la bande morte, varie de 0 à 122, la sortie est “haute” pendant qu´une boucle compte de 0 à x, puis “basse” de x à 122. D´ou une fréquence fixe et un rapport cyclique variant de 0 à 100 %.
Le graphique ci-contre (réalisé avec WinOscillo) montre la commande PWM appliquée au transistor de puissance.
En assembleur, le programme n´est arrêté que pendant le temps nécessaire à la mesure, alors qu´en Mikrobasic il y a un délai fixe de 20 microsecondes. Pour ne pas perturber la conduction complète à vitesse maximale, la mesure n´est faite qu´un cycle sur 20. Ce n´est pas critique dans notre application qui fonctionne à 330 Hz, fréquence habituellement conseillée pour nos trains (600 Hz en enlevant la temporisation).
Programme en Mikrobasic
Voir aussi les commentaires dans le programme complet, disponible ici.

Programme en assembleur
Voir aussi les commentaires dans le programme complet, disponible ici.


J.-C.
Grimaldi
11-09-2008

N.B. —Textes, schémas, programmes © J.-C. Grimaldi pour Ptitrain. — Toutes vos remarques et commentaires sont bienvenus, et les pages de Ptitrain ne sont pas statiques : les erreurs sont corrigées sitôt connues, les améliorations, éclaircissements, etc. feront l´objet de mises à jour fréquentes.
Ptitrain, l´e-magazine du train éclectique. — Directeur de la publication : Christophe Franchini.
Rédacteur en chef : Jean-Denis Rondinet