Contrôle de la vitesse d'un moteur à courant continue par PWM I) Introduction : 1- Microcontrôleurs PIC: Un microcontrôleur est une unité de traitement et d’exécution de l'information à laquelle on a ajouté des périphériques internes permettant de réaliser des montages sans nécessiter l’ajout de composants annexes. Un microcontrôleur peut donc fonctionner de façon autonome après programmation. Les PIC intègrent une mémoire de programme, une mémoire de données, des ports d'entrée-sortie (numériques, analogiques, MLI, UART, bus I²C, etc.), et même une horloge, bien que des bases de temps externes puissent être employées. Certains modèles disposent de port et unités de traitement de l'USB. PIC 16F: Les PIC de la famille 16C ou 16F sont des composants de milieu de gamme. C'est la famille la plus riche en termes de dérivés. La Famille 16F dispose dorénavant de 3 sous-familles : - La sous-famille avec le cœur Baseline : instructions sur 12 bits (PIC16Fxxx) - La sous-famille avec le cœur Middle-Range : instructions sur 14 bits (PIC16Fxxx) - La sous-famille avec le cœur Enhanced : instructions sur 14 bits (PIC16F1xxx) 2- PWM (Pulse-width modulation) : Pulse-width modulation (ou modulation de largeur d'impulsions) est une technique couramment utilisée pour synthétiser des signaux continus à l'aide de circuits à fonctionnement tout ou rien, ou plus généralement à états discrets. 1 Le principe général est qu'en appliquant une succession d'états discrets pendant des durées bien choisies, on peut obtenir en moyenne sur une certaine durée n'importe quelle valeur intermédiaire. Dans cette image, la PWM est simplement une impulsion qui a : Ton Toff T (totale) Quel est l'avantage d'utiliser PWM ? - Contrôle des signaux analogiques en utilisant des signaux numériques. Comment ? - Le Rapport Cyclique (Duty Cycle) : La relation entre Vout, Vin et D : 2 Exemple : Dans le PIC Microcontrôleur, Vin= 5 V Si D = 0.5 (50%) alors : Vout = 0.5 * Vin = 2.5 V Alors, la tension de sortie d’un PIC est limitée entre 0-5V (se varie selon le rapport cyclique). Dans le PIC 16F876A, le signal PWM peut être généré d’un les deux ports (RC1, RC2). 3 * Notre intérêt est d’appliquer cette technique pour contrôler la vitesse d’un MCC. Si on alimente un Moteur à courant continue avec un signal PWM (avec une amplitude constante), la vitesse du moteur va se varier en fonction de la vitesse moyenne (Vout). On peut clairement noter que la vitesse du M2 est plus grande que celle-ci du M1, à cause de la différence du rapport cyclique. 4 II) Câblage : Composants principaux : - PIC 16F876A ; 2 Boutons ; Circuit L298 (ou transistor) ; Moteur à courant continu (6 V) Pourquoi utilise-t-on un PIC16F876A ? - Ce genre des microcontrôleurs est capable de générer un signal PWM (qu'on peut changer son rapport cyclique), ainsi qu’il y est très disponible dans le marché. 5 Pourquoi utilise-t-on L 298 ? - Ce circuit peut transformer un signal de commande à un signal de puissance sans changer la nature du signal (PWM-PWM). Et parce que la tension de sortie du PIC est de 5V, et notre Moteur et de 6 V, alors on a besoin d’un moyen pour changer l’amplitude de ce signal sans changer sa nature. Remarque : on peut faire une modification, à la place du L298 on peut utiliser un transistor. III) Principe du fonctionnement : 6 Comme on a cité auparavant, on va réaliser un circuit qui nous permet de contrôler (varier) la vitesse d’un MCC, alors on a besoin des composant de contrôle d’entré, c’est pourquoi on utilise les boutons. Avec ces 2 boutons, on va varier la vitesse de ce moteur comme-ci : Le bouton « Higher » pour augmenter la vitesse ; Le bouton « Lower » pour diminuer la vitesse. Comment ? La vitesse de ce moteur se varie selon le rapport cyclique, ces 2 boutons sont capables de varier le rapport cyclique venant du PIC par changement des commandes du programme qu’on va écrire. Le signal venant du PIC a une tension de 5 V, ce signal va être utilisé comme commande du circuit L298 (ou transistor) qui a une tension de puissance de 6 V. sa veut dire ce circuit reçoit un signal PWM de 5V et après il le transformer en un autre signal PWM, mais de 6V, capable de tourner le moteur. On va utiliser Les ports RB0 et RB1 comme entrées de commande, RB0 = Higher ; RB1 = Lower, le port RC2/CCP1 comme sortie de PWM. Le Programme : 7 Explication du programme : « Count » c’est la variable qu’on va utiliser comme la valeur du rapport cyclique. Initialement elle est égale à 0. On définit la fréquence du signal PWM par PWM1_ Init(500), le numéro 1 veut dire que ce signal est généré du port CCP1. If (!portb.f0) veut dire : si on désactive le port b0 (qui été initialement activé) la valeur du « count » va s’incrémenter par 51. Et par l’instruction PWM1_Set duty (count), le PIC va générer un signal PWM qui a un rapport cyclique de 51 (51/255=0.2=20%) Comme ceci, à chaque fois qu’on clique sur Higher, le rapport cyclique va s’incrémenter par 51 jusqu’on arrive à la valeur 255(100%) alors le rapport cyclique ca toujours s’arrêter à cette valeur grâce à l’instruction « if (count>255) count=255 ». 8 La même chose si on veut diminuer le rapport cyclique, on clique sur Lower (RB1), la valeur du rapport cyclique se décrémente par 51 (20%) jusqu’à la valeur du 0, quand elle s’arrête grâce à « if (count<0) count=0 ». Remarque : dans le programme, on utilise les valeurs 0-255 pour définir la valeur du rapport cyclique, 255=100% (alors 127.5=50%...etc.) 9 Bibliographie : - Microchip Technology Inc, 2001, PIC16F87X Data Sheet- 28/40-Pin 8-Bit CMOS FLASH - MikroElektronika, 2005, MikroC Making it Simple - Ea Ai Choon 2005, DC motor speed control using microcontroller pic 16f877a -Master Thesis-Universiti Teknologi Malasya- Googlium Electronics, 2012, Introduction to Pic programming 10