Générer un signal PWM avec un STM32F4
PWM ou Pulse Width Modulation est la technique utilisée pour générer des signaux analogiques à partir d'un appareil numérique. Dans ce tutoriel, nous allons apprendre les bases de la technique PWM et nous verrons comment mettre en œuvre la génération d'un signal PWM avec le micro-contrôleur STM32F4DISCOVERY et aussi avec le système temps réel ChibiOS/RT.
1- Principe de base du PWM :
Un appareil numérique, comme un micro-contrôleur STM32 ou autres (PIC , Arduino ..)ne peut générer que deux niveaux sur ses lignes de sortie, soit un niveau haut égale à 5v ou 3.3v selon le micro-contrôleur que vous utilisez soit un niveau bas égale à 0V. Mais que faire si nous voulons générer 0.7v ou 2.9V ou n'importe quelle tension de sortie entre 0-V+ ?
Pour ce genre de condition, au lieu de générer une sortie de tension continue, nous générons une onde carrée comme montre la figure.
Donc vous pouvez remarquer que si le pourcentage du temps au niveau haut augmente la tension moyenne à la sortie augmente . Ainsi, si cette sortie est reliée à un moteur ou à une LED lumineuse et on suppose que le rapport cyclique (pulse width) est à 25% de la période, il tourne à 25% de la vitesse maximale à V+ de même pour la LED sa luminosité sera à 25% de la luminosité maximale à V+.
Pour conclure, l'astuce consiste à faire varier le rapport cyclique entre 0-100% et obtenir le même pourcentage de la tension d'entrée à la sortie.
2- Programmer un signal PWM avec les librairies STM32 :
À partir du user manual stm32f4 on remarque que les 4 LEDs de l'stm32f4 sont connectés au port entrée sortie D avec les pins PD12,PD13,PD14 et PD15 et ces derniers sont aussi liés à des canaux PWM de 16 bits du timer 4.
Voici un programme qui génère 4 signaux pwm avec leurs configurations et le calculer de la période et des rapports cycliques.
3- Programmer un signal PWM avec systéme temps réel ChibiOS/RT:
ChibiOS / RT est conçu pour les applications profondément ancrées en temps réel où l'efficacité et l'exécution du code compact sont des exigences importantes.
Il peut être utiliser dans de nombreux domaines applicatifs, par exemple:
- Les applications robotiques.
- L'enseignement et l'apprentissage de la technologie RTOS.
Revenons à notre application pour générer des signaux PWM la couche HAL (Hardware Abstraction Layer) dans ChibiOS/RT fournit un mécanisme très simple.
Et voici un programme très simple qui génère 4 signaux pwm.
La vidéo ci-dessous montre que l'STM32F4 génère 4 signaux pwm et comme les canaux des timers 4 sont relié aux LEDs donc on peut voir nos signaux à travers ces LEDs: