0% ont trouvé ce document utile (0 vote)
203 vues12 pages

Contrôle PWM d'un moteur AC avec Arduino

Ce document décrit la commande PWM d'un moteur à induction utilisant un microcontrôleur Arduino. Il explique le fonctionnement du PWM, les composants nécessaires pour commander la vitesse d'un moteur AC avec Arduino, notamment un détecteur de passage à zéro et un circuit de commande d'angle de phase utilisant un TRIAC.

Transféré par

nouhayla nouhayla
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
203 vues12 pages

Contrôle PWM d'un moteur AC avec Arduino

Ce document décrit la commande PWM d'un moteur à induction utilisant un microcontrôleur Arduino. Il explique le fonctionnement du PWM, les composants nécessaires pour commander la vitesse d'un moteur AC avec Arduino, notamment un détecteur de passage à zéro et un circuit de commande d'angle de phase utilisant un TRIAC.

Transféré par

nouhayla nouhayla
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Commande PWM d’un moteur à induction utilisant un

microcontrôleur

I. Introduction :

Il est facile d'allumer ou d'éteindre n'importe quel appareil domestique en


utilisant un interrupteur ou en utilisant un mécanisme de contrôle basé sur
Arduino. Mais il existe de nombreuses applications où nous devons contrôler
partiellement l'alimentation secteur, par exemple, pour contrôler la vitesse du
moteur ou l'intensité d'une lampe. Dans ce cas, la technique PWM est utilisée,
nous allons donc ici apprendre à utiliser le PWM généré par Arduino pour
contrôler la vitesse du moteur AC avec Arduino.

II. Le PWM (Pulse Width Modulation):


PWM signifie Pulse Width Modulation; nous verrons la raison d'un tel nom plus
tard. Mais, pour l'instant, comprendre PWM comme un type de signal qui peut
être produit à partir d'un CI numérique tel qu'un microcontrôleur ou une 555
timer . Le signal ainsi produit aura un train d'impulsions et ces impulsions
seront sous la forme d'une onde carrée. C'est-à-dire qu'à tout moment donné,
l'onde sera soit haute, soit basse. Pour la facilité de compréhension,
considérons un signal PWM 5V, dans ce cas, le signal PWM sera soit 5V (haut)
soit au niveau du sol 0V (bas). La durée à laquelle les signaux restent élevés est
appelée  “on time” et la durée à laquelle le signal reste bas est appelée “off
time”.

Pour un signal PWM, nous devons examiner deux paramètres importants qui lui
sont associés, l'un est le rapport cyclique PWM et l'autre est la fréquence PWM.

 Cycle d'utilisation du PWM (Duty cycle of the PWM) :

Comme indiqué précédemment, un signal PWM reste allumé pendant un


certain temps, puis reste éteint pendant le reste de la période. Ce qui rend ce
signal PWM spécial et plus utile, c'est que nous pouvons définir la durée
pendant laquelle il doit rester allumé en contrôlant le rapport cyclique du signal
PWM.
Le pourcentage de temps pendant lequel le signal PWM reste ÉLEVÉ (à l'heure)
est appelé cycle de service. Si le signal est toujours sur ON, il est dans un
rapport cyclique de 100% et s'il est toujours éteint, il est sur un rapport cyclique
de 0%. Les formules pour calculer le rapport cyclique sont présentées ci-
dessous.

Duty Cycle =Turn ON time/ (Turn ON time + Turn OFF time)

L'image suivante représente un signal PWM avec un rapport cyclique de 50%.


Comme vous pouvez le voir, en considérant une période de temps entière
(temps de Marche + temps d'arrêt), le signal PWM ne reste actif que pendant
50% de la période.

En contrôlant le rapport cyclique de 0% à 100%, nous pouvons contrôler le


«temps d'activation» du signal PWM et donc la largeur du signal. Comme nous
pouvons moduler la largeur de l'impulsion, il a obtenu son nom emblématique
«Modulation de largeur d'impulsion».

 Fréquence d'un PWM (Frequency of a PWM) ;

La fréquence d'un signal PWM détermine la vitesse à laquelle un PWM termine


une période. Une période correspond à la durée complète d'activation et de
désactivation d'un signal PWM, comme illustré dans la figure ci-dessus. Les
formules pour calculer la fréquence sont données ci-dessous

Frequency = 1/Time Period

Time Period = On time + Off time

Normalement, les signaux PWM générés par le microcontrôleur seront


d'environ 500 Hz, de telles hautes fréquences seront utilisées dans des
dispositifs de commutation à grande vitesse comme des onduleurs ou des
convertisseurs. Mais toutes les applications ne nécessitent pas une fréquence
élevée. Par exemple, pour contrôler un servomoteur, nous devons produire des
signaux PWM avec une fréquence de 50 Hz, de sorte que la fréquence d'un
signal PWM est également contrôlable par programme pour tous les
microcontrôleurs.

I. Présentation générale de l’ARDUINO

Le système Arduino est une carte électronique basée autour d’un


microcontrôleur et de composants minimum pour réaliser des fonctions plus ou
moins évoluées à bas coût. Elle possède une interface usb pour la programmer.
C’est une plateforme open-source qui est basée sur une simple carte à
microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de
développement intégré, pour écrire, compiler et transférer le programme vers
la carte à microcontrôleur.

Arduino peut être utilisé pour développer des applications matérielles


industrielles légères ou des objets interactifs (création artistiques par exemple),
et peut recevoir en entrées une très grande variété de capteurs. Arduino peut
aussi controler une grande variété d’actionneurs (lumières, moteurs ou toutes
autres sorties matériels). Les projets Arduino peuvent être autonomes, ou
communiquer avec des logiciels sur un ordinateur (Flash, Processing ou
MaxMSP). Les cartes électroniques peuvent être fabriquées manuellement ou
bien être achetées préassemblées ; le logiciel de développement open-source
est téléchargeable gratuitement.

Figure 2 : carte ARDUINO UNO


 Synthèse des caractéristiques

 Microcontrôleur : Atmega328
 Tension de fonctionnement : 5V
 Tension d’alimentation (recommandée) : 7-12V
 Tension d’alimentation (limites) : 6-20V
 Broches E/S numériques : 14 (dont 6 disposent d’une sortie PWM)
 Broches d’entrées analogiques : 6 (utilisables en broches E/S numériques)
 Intensité maxi disponible par broche E/S (5V) : 40 mA (ATTENTION :
200mA cumulé pour l’ensemble des broches E/S)
 Intensité maxi disponible pour la sortie 3.3V : 50 mA
 Intensité maxi disponible pour la sortie 5V : Fonction de l’alimentation
utilisée – 500 mA max si port USB utilisé seul
 Mémoire Programme Flash : 32 KB (Atmega328) dont 0.5 KB sont utilisés
par le bootloader
 Mémoire SRAM (mémoire volatile) : 2 KB (Atmega328)
 Mémoire EEPROM (mémoire non volatile) : 1 KB (Atmega328)
 Vitesse d’horloge : 16 MHz

 Le logiciel Arduino :

Le logiciel Arduino a pour fonctions principales :


 de pouvoir écrire et compiler des programmes pour la carte Arduino
 de se connecter avec la carte Arduino pour y transférer les programmes
 de communiquer avec la carte Arduino

Cet espace de développement intégré (EDI) dédié au langage Arduino et à la


programmation des cartes Arduino comporte :
 une BARRE DE MENUS comme pour tout logiciel une interface graphique
(GUI),
 une BARRE DE BOUTONS qui donne un accès direct aux fonctions
essentielles du logiciel et fait toute sa simplicité d'utilisation,
 un EDITEUR (à coloration syntaxique) pour écrire le code de vos
programmes, avec onglets de navigation,
 une ZONE DE MESSAGES qui affiche indique l'état des actions en cours,
 une CONSOLE TEXTE qui affiche les messages concernant le résultat de la
compilation du programme
 un TERMINAL SERIE (fenêtre séparée) qui permet d'afficher des messages
textes reçus de la carte Arduino et d'envoyer des caractères vers la carte
Arduino.
Cette fonctionnalité permet une mise au point facilitée des programmes,
permettant d'afficher sur l'ordinateur l'état de variables, de résultats de calculs
ou de conversions analogique-numérique : un élément essentiel pour
améliorer, tester et corriger ses programmes.

Figure 5 : présentation des éléments de l'ARDUINO software

II. Commande PWM d’un moteur à induction utilisant un arduino


Dans ce projet, nous démontrerons le contrôle de la vitesse du moteur AC
Arduino en utilisant TRIAC. Ici, la méthode de contrôle de phase du signal AC
est utilisée pour contrôler la vitesse du moteur AC, en utilisant des signaux
PWM générés par Arduino.

 Composants requis

 Arduino UNO
 4N25 (Zero crossing detector)
 10k Potentiometer
 MOC3021 0pto-coupler
 (0-9)V, 500 mA Stepdown Transformer
 BT136 TRIAC
 230 VAC Axial AC fan
 Connecting wires
 Resistors

 Fonctionnement de la commande de moteur AC en utilisant Arduino


Le travail peut être divisé en quatre parties différentes. Ils sont comme suit

1. Détecteur de passage à zéro


2. Circuit de contrôle d'angle de phase
3. Potentiomètre pour contrôler la vitesse du moteur
4. Circuit de génération de signal PWM

1. Détecteur de passage à zéro (Zero-Crossing Detector) ;

L'alimentation AC que nous obtenons dans notre foyer est de 220v AC RMS, 50
HZ. Ce signal alternatif est de nature alternée et change périodiquement de
polarité. Dans la première moitié de chaque cycle, il circule dans une direction
pour atteindre une tension de crête puis diminue jusqu'à zéro. Ensuite, dans le
demi-cycle suivant, il circule dans une direction alternative (négative) jusqu'à
une tension de crête, puis revient à zéro. Pour contrôler la vitesse du moteur à
courant alternatif, la tension de crête des deux demi-cycles doit être hachée ou
contrôlée. Pour cela, nous devons détecter le point zéro à partir duquel le signal
doit être contrôlé / haché. Ce point sur la courbe de tension où la tension
change de direction est appelé passage à tension nulle.

2. Circuit de commande d'angle de phase ;

Après avoir détecté le point de passage à zéro, nous devons maintenant


contrôler la quantité de synchronisation pour laquelle l'alimentation sera
activée et désactivée. Ce signal PWM décidera de la quantité de tension de
sortie vers le moteur AC, qui à son tour contrôle la vitesse de celui-ci. Ici, un
BT136 TRIAC est utilisé, qui contrôle la tension alternative car il s'agit d'un
interrupteur électronique de puissance pour contrôler un signal de tension
alternative.
TRIAC est un commutateur AC à trois bornes qui peut être déclenché par un
signal de faible énergie à sa borne de grille. Dans les SCR, il ne conduit que dans
une seule direction, mais dans le cas de TRIAC, la puissance peut être contrôlée
dans les deux directions. Pour en savoir plus sur TRIAC et SCR, suivez nos
articles précédents.

Comme le montre la figure ci-dessus, le TRIAC est déclenché à un angle de tir


de 90 degrés en lui appliquant un petit signal d'impulsion de grille. Le temps
"t1" est le temps de retard qui est donné selon l'exigence de variation. Par
exemple, dans ce cas, l'angle de tir est de 90%, donc la puissance de sortie sera
également divisée par deux et donc la lampe brillera également avec une demi-
intensité.

Nous savons que la fréquence du signal AC est de 50 Hz ici. La période sera


donc de 1 / f, soit 20 ms. Pour un demi-cycle, ce sera 10 ms ou 10 000
microsecondes. Par conséquent, pour contrôler la puissance d'une lampe à
courant alternatif, la plage de «t1» peut varier de 0 à 1 000 microsecondes.

Optocoupleur:

L'optocoupleur est également connu sous le nom d'Optoisolator. Il est utilisé


pour maintenir l'isolement entre deux circuits électriques tels que les signaux
DC et AC. Fondamentalement, il se compose d'une LED qui émet de la lumière
infrarouge et du photocapteur qui la détecte. Ici, un optocoupleur MOC3021
est utilisé pour contrôler le moteur AC à partir des signaux du microcontrôleur,
qui est un signal DC.

Diagramme de connexion TRIAC et optocoupleur:

3. Potentiomètre pour contrôler la vitesse du moteur


Ici, un potentiomètre est utilisé pour faire varier la vitesse du moteur à courant
alternatif. Nous savons qu'un potentiomètre est un appareil à 3 bornes qui agit
comme un diviseur de tension et fournit une sortie de tension variable. Cette
tension de sortie analogique variable est donnée à la borne d'entrée
analogique Arduino pour définir la valeur de vitesse du moteur AC.

4. Unité de génération de signal PWM

Dans la dernière étape, une impulsion PWM est donnée au TRIAC selon les
exigences de vitesse, ce qui à son tour fait varier la synchronisation ON / OFF du
signal AC et fournit une sortie variable pour contrôler la vitesse du moteur. Ici,
Arduino est utilisé pour générer l'impulsion PWM, qui prend l'entrée du
potentiomètre et fournit une sortie de signal PWM au TRIAC et au circuit
optocoupleur qui entraîne en outre le moteur AC à la vitesse souhaitée.

Schéma :
Le schéma de circuit pour ce circuit de contrôle de vitesse de moteur basé sur
Arduino 230v est donné ci-dessous:

 Programmation de l'Arduino pour le contrôle de la vitesse du moteur


AC
Dans la première étape, déclarez toutes les variables requises, qui vont être
utilisées dans tout le code. Ici, le BT136 TRIAC est connecté à la broche 6
d'Arduino. Et la variable speed_val est déclarée pour stocker la valeur du pas de
vitesse.

int TRIAC = 6;

int speed_val =0;

Ensuite, dans la fonction de configuration, déclarez la broche TRIAC comme


sortie car la sortie PWM sera générée via cette broche. Ensuite, configurez une
interruption pour détecter le passage par zéro. Ici, nous avons utilisé une
fonction appelée attachInterrupt, qui configurera la broche numérique 3
d'Arduino en tant qu'interruption externe et appellera la fonction nommée
zero_crossing lorsqu'il détectera des interruptions sur sa broche.
void setup()

pinMode(LAMP, OUTPUT);

attachInterrupt(digitalPinToInterrupt(3), zero_crossing, CHANGE);

À l'intérieur de la boucle infinie, lisez la valeur analogique du potentiomètre qui


est connecté en A0 et mappez-la sur une plage de valeurs (10-49).

Pour connaître cette plage, nous devons faire un petit calcul. Plus tôt, il est dit
que chaque demi-cycle équivaut à 10 000 microsecondes. Donc, ici, la gradation
sera contrôlée en 50 étapes, ce qui est une valeur arbitraire et peut être
modifiée. Ici, les étapes minimales sont prises à 10, pas à zéro car les étapes 0 à
9 donnent approximativement la même puissance de sortie et les étapes
maximales sont prises à 49 car il n'est pas recommandé de prendre
pratiquement la limite supérieure (qui est 50 dans ce cas).

Ensuite, chaque temps de pas peut être calculé comme 10000/50 = 200
microsecondes. Cela sera utilisé dans la prochaine partie du code.
void loop()

int pot=analogRead(A0);

int data1 = map(pot, 0, 1023,10,49);

speed_val=data1;

Dans la dernière étape, configurez la fonction déclenchée par interruption


zero_crossing. Ici, le temps de variation peut être calculé en multipliant le
temps de pas individuel par no. d'étapes. Ensuite, après ce délai, le TRIAC peut
être déclenché à l'aide d'une petite impulsion élevée de 10 microsecondes, ce
qui est suffisant pour allumer un TRIAC.

void zero_crossing()

int chop_time = (200*speed_val);

delayMicroseconds(chop_time);

digitalWrite(TRIAC, HIGH);

delayMicroseconds(10);

digitalWrite(TRIAC, LOW);

}
Le code complet avec une vidéo de travail pour ce contrôle de moteur AC
utilisant Arduino et PWM est donné ci-dessous.

Vous aimerez peut-être aussi