Contacts
Enseignant: Jérôme Collin, responsable (local M-4013, poste 5060)
Support technique supplémentaire: Laurent Tremblay (local M-4011, poste 7181)
Chargés de laboratoire: Section 1: Kais Fallouh (Lundi AM)
Romain Lebbadi-Breteau (Mercredi PM)
Section 2: Tristan Rioux (Mardi PM)
Gaëtan Florio (Jeudi AM)
Section 3: Luciano Garin-Iriarte (Lundi PM)
Ely-Cheikh Abass (Jeudi PM)
Section 4: Dorine Dantrun (Mardi AM)
Meriam Ben Rabia (Vendredi AM)
Section 5: Amélie Simard (Mercredi AM)
Abdul-Wahab Chaarani (Vendredi PM)
Section 6: Marc-Antoine Manningham (Mardi soir)
Laurent Bourgon (Jeudi soir)

INF1900

Projet initial de système embarqué

Travail pratique No. 3

Le PWM de façon logicielle



Objectif: Pouvoir contrôler les moteurs du robot

Durée: Une semaine

Travail préparatoire: Aucun

Documents à remettre: Aucun (mais sujet à un quiz d'ici quelques semaines)

Présentation en classe: fichier PowerPoint



«Celui qui trouva le premier les roues et les pignons, eût inventé les montres dans un autre siècle.»

-

Jean le Rond d'Alembert


Situation


Durant les deux dernières semaines, vous vous êtes familiarisés avec la carte à microcontrôleur et sa programmation mais aussi avec le simulateur SimulIDE. Ce laboratoire sera également axé sur la programmation en introduisant la motricité du robot. Nous utiliserons ce qui a été vu dans les semaines précédentes pour commencer à contrôler un moteur à courant continu.


Pour bien comprendre comment contrôler les moteurs, on doit d'abord avoir une idée du rôle du circuit du pont en H sur le robot. Initialement, il est impératif de lire cette brève description de son fonctionnement. De plus, la mise au point de ce circuit peut présenter des difficultés. Un guide de mise au point a été rédigé pour faciliter cette expérience. Pour approfondir les outils de mise au point, il faut consulter la section sur les appareils de laboratoire et la section vidéo.


Le PWM


Les signaux périodiques sont très importants en électricité et en informatique. Par exemple, les signaux d'horloge ont cette caractéristique de périodicité. C'est aussi dans cette catégorie que se trouvent les signaux de type PWM (pour «Pulse Width Modulation» en anglais, modulation d'impulsion en durée en français). Il s'agit tout simplement d'une onde plus ou moins carrée et périodique dont on contrôle la période active ou haute («duty cycle», en anglais) par rapport à la période totale de l'onde (rapport a/b de la figure 1). Ce rapport est souvent mesuré en pourcentage. Un PWM de 50% est une onde carrée parfaite.




Figure 1 : Onde PWM avec rapport a/b


Pouvoir générer des ondes PWM est très important dans de nombreuses situations de contrôle, en particulier pour varier la vitesse des moteurs à courant continu tels que ceux du robot. Plus le rapport a/b sera élevé (disons 90%), plus les moteurs tourneront rapidement. À l'inverse, si la durée de «a» est faible par rapport à «b» (10% par exemple), les moteurs tourneront à basse vitesse. De plus, comme la fréquence d'un signal se définit comme l'inverse de la période, il faudra prendre une valeur de «b» qui est raisonnable. Si cette valeur est vraiment trop grande, vos moteurs risquent d'avancer par coups répétés («toussé»)! On peut même entendre un signal PWM si la fréquence est dans l'intervalle audible ce qui peut être agaçant. Cet autre site peut aussi être consulté au besoin pour une bonne explication du PWM: https://barrgroup.com/Embedded-Systems/How-To/PWM-Pulse-Width-Modulation.


Problèmes


Problème 1: Atténuation d'une DEL


Comme on l'a vu durant la première semaine, une DEL ne peut qu'être éteinte ou allumée. Par contre, on peut tromper l'œil humain. L'exercice demandé ici consiste à faire atténuer progressivement la luminosité d'une DEL. Autrement dit, de faire comme si la DEL s'éteignait en 3 secondes plutôt qu'abruptement. Cet objectif est réalisable facilement en diminuant tranquillement le rapport a/b d'un signal PWM qui alimente une DEL. On devra donc retourner au code écrit pour la première semaine, mais en générant un signal PWM pour alimenter la DEL. De plus, on devra contrôler encore une fois le moment où la valeur d'un signal de sortie passe de 0 à 1 et de 1 à 0 et compter les durées passées au niveau haut et au niveau bas. Par contre, la fréquence (inverse de la valeur de «b») devra demeurer constante à 1 kHz. Faites cette atténuation pour la couleur rouge dans un premier temps et la couleur verte dans un deuxième temps (ou l'inverse). Comme le microcontrôleur tourne à 8 MHz, il faudra encore lui faire perdre beaucoup de temps. Bien optimiser votre code pour vous assurer que le microcontrôleur fasse le minimum de calculs dans vos boucles.


Problème 2: Contrôle des moteurs du robot


Ici, on utilisera le robot au complet pour la première fois, et non seulement la carte mère. On fera tourner une seule roue pour l'instant. Par contre, nous imposerons des fréquences de 60 Hz pour la fréquence de la période du signal PWM dans un premier temps et de 400 Hz dans un deuxième temps. De plus, nous vous demandons de faire fonctionner le PWM pour un rapport a/b de 0%, 25%, 50% et 75% et 100% pendant 2 secondes chaque. Votre roue tournera donc 20 secondes au total (les 10 premières à 60 Hz et à 400 Hz pour les 10 autres). Le chargé de laboratoire vérifiera avec l'oscilloscope que vous générez les signaux correctement.


Directives de montage avec le robot



Variante dans SimulIDE


Il est tout à fait possible d’arriver au même résultat dans SimulIDE avec exactement le même code. Il faut cependant connecter le matériel avec des «fils» virtuels et les composantes de la figure 2. Il faudra sauvegarder cette description matérielle dans un fichier à l’extension .simu. Il s’agit d’un fichier ASCII qui peut même être visualisé dans un éditeur comme VS Code ou avec une commande Linux cat ou more par exemple. Vous pourrez voir comment les connexions sont décrites dans le fichier.




Figure 2 : Composantes pour le montage équivalent dans SimulIDE



Alimentation du pont en H


Le pont en H peut, bien entendu, être alimenté pas 6 piles AA insérées dans les 2 réceptacles noirs sur et sous la base du robot. Pour bien des tests, il est par contre recommandé de limiter l'utilisation de piles et réduire les coûts en laboratoire. La remarque est d'autant plus intéressante qu'une très bonne source de tension est disponible au laboratoire pour fournir la tension nécessaire. Pour en savoir plus sur l’alimentation du robot, il est important de relire le document «Pour débuter avec le robot».


La photographie ci-dessous montre qu'en utilisant les fils d'alimentation noir et rouge (attention, la polarité est importante), on peut relier une source de tension au pont en H. La pince crocodile du fil noir (à la masse) peut être placé sur le point de test noir (GND) du pont en H. La pince crocodile du fil rouge doit se brancher à l'interrupteur rouge sous la base du robot.




La masse est la même pour le pont en H et la carte mère et les trous de montage et les tiges qui les traversent peuvent aussi offrir une prise alternative si l'option vous semble plus intéressante. Un vis peut être placée tout au haut d'une tige de montage pour procurer une bonne prise à la pince noire par exemple:




L'interrupteur rouge sous la base du robot en est un à trois positions. Celle du centre est reliée réellement au pont en H. La seconde est reliée à l'alimentation par piles AA. Comme la dernière position est inutilisée, il peut être intéressant de s'en servir pour ajouter une extension de quelques millimètres avec du fil monobrin pour favoriser une bonne prise avec la pince crocodile rouge. De cette façon, la bascule de l'interrupteur permettra d'être en position sans alimentation (OFF), alimenté par pile ou alimenté par la source de tension.




Il faut, à tout prix, ne jamais brancher le pont-en-H un plaçant l’alimentation sur les points de test Vbatt (rouge) ou 5V (blanc) du pont-en-H. Catastrophe garantie, peut-être avec un bon dégagement de fumée en prime…







Dans SimulIDE, le pont-en-H n’a pas à être alimenté par un voltage séparé plus élevé que celui du microcontrôleur. On considère que ça se fait «automatiquement». On voit cependant que ceci est loin de la réalité du vrai robot! Par contre, le code peut être le même dans les deux formes de système ce qui reste un grand avantage.


Qualités du code


Cette semaine, la règle 55 et 65 est vraiment appropriée pour le type de code à écrire puisqu’elle concerne la boucle while. Les règles 13, 36 à 38, 64 et 65 sont très importantes et on doit les respecter tôt en session.


Suivi logiciel


Le code développé pour résoudre ces deux problèmes devra être placé dans votre entrepôt Git. Les noms des fichiers et les répertoires où ils doivent être placés sont laissés à votre discrétion mais le plus naturel est de rester avec tp/tp3 évidemment. Si vous utiliser le simulateur SimulIDE (aucune obligation), le fichier avec l’extension .simu décrivant le matériel dans SimulIDE peut être placé dans ce répertoire également. On vous encourage à soumettre votre code (commit) souvent et non pas en une seule fois à la fin du TP. Vous aurez besoin de ce code plus tard dans la session.