- Modulation de largeur d'impulsion:
- Matériel requis
- Schéma
- Code et explication
- Contrôle de la vitesse du moteur à courant continu à l'aide d'Arduino
Le moteur à courant continu est le moteur le plus utilisé dans les projets de robotique et d'électronique. Pour contrôler la vitesse du moteur à courant continu, nous avons diverses méthodes, comme la vitesse peut être automatiquement contrôlée en fonction de la température, mais dans ce projet, la méthode PWM sera utilisée pour contrôler la vitesse du moteur à courant continu. Ici, dans ce projet de contrôle de la vitesse du moteur Arduino, la vitesse peut être contrôlée en tournant le bouton du potentiomètre.
Modulation de largeur d'impulsion:
Qu'est-ce que PWM? PWM est une technique en utilisant nous pouvons contrôler la tension ou la puissance. Pour le comprendre plus simplement, si vous appliquez 5 volts pour entraîner un moteur, le moteur se déplacera avec une certaine vitesse, maintenant si nous réduisons la tension appliquée de 2, nous appliquons 3 volts au moteur, la vitesse du moteur diminue également. Ce concept est utilisé dans le projet pour contrôler la tension à l'aide de PWM. Nous avons expliqué PWM en détail dans cet article. Vérifiez également ce circuit où PWM est utilisé pour contrôler la luminosité de la LED: 1 Watt LED Dimmer.
% Facteur de marche = (TON / (TON + TOFF)) * 100 Où, T ON = temps HIGH de l'onde carrée T OFF = temps LOW de l'onde carrée
Maintenant, si l'interrupteur de la figure est fermé en continu pendant une période de temps, le moteur fonctionnera en continu pendant ce temps. Si l'interrupteur est fermé pendant 8 ms et ouvert pendant 2 ms sur un cycle de 10 ms, le moteur ne sera en marche que dans le délai de 8 ms. Maintenant, le terminal moyen sur une période de 10 ms = temps d'activation / (temps d'activation + temps d'arrêt), cela s'appelle le cycle de service et est de 80% (8 / (8 + 2)), donc la moyenne la tension de sortie sera de 80% de la tension de la batterie. Maintenant, l'œil humain ne peut pas voir que le moteur est allumé pendant 8 ms et éteint pendant 2 ms, il semblera donc que le moteur à courant continu tourne à une vitesse de 80%.
Dans le second cas, l'interrupteur est fermé pendant 5 ms et ouvert pendant 5 ms sur une période de 10 ms, de sorte que la tension moyenne aux bornes à la sortie sera de 50% de la tension de la batterie. Dites si la tension de la batterie est de 5V et le cycle de service est de 50% et donc la tension moyenne aux bornes sera de 2,5V.
Dans le troisième cas, le cycle de service est de 20% et la tension moyenne aux bornes est de 20% de la tension de la batterie.
Nous avons utilisé PWM avec Arduino dans plusieurs de nos projets:
- Gradateur LED basé sur Arduino utilisant PWM
- Ventilateur à température contrôlée utilisant Arduino
- Contrôle de moteur CC à l'aide d'Arduino
- Contrôle de la vitesse du ventilateur CA à l'aide d'Arduino et TRIAC
Vous pouvez en apprendre plus sur PWM en passant par divers projets basés sur PWM.
Matériel requis
- Arduino UNO
- docteur moteur
- Transistor 2N2222
- Potentiomètre 100k ohm
- Condensateur 0.1uF
- Planche à pain
- Fils sautants
Schéma
Le schéma de circuit pour le contrôle de la vitesse du moteur Arduino DC utilisant PWM est ci-dessous:
Code et explication
Le code complet pour la commande de moteur à courant continu Arduino à l' aide d'un potentiomètre est donné à la fin.
Dans le Code ci - dessous, nous avons initialisé la variable c1 et c2 et A0 broches analogique attribué pour la sortie du potentiomètre et 12 e Pin pour « MLI ».
int pwmPin = 12; pot int = A0; int c1 = 0; int c2 = 0;
Maintenant, dans le code ci-dessous, définissez la broche A0 comme entrée et 12 (qui est la broche PWM) comme sortie.
void setup () { pinMode (pwmPin, OUTPUT); // déclare la broche 12 comme sortie pinMode (pot, INPUT); // déclare la broche A0 comme entrée }
Maintenant, dans void loop (), nous lisons la valeur analogique (de A0) en utilisant analogRead (pot), et la sauvegardons dans la variable c2. Ensuite, soustrayez la valeur c2 de 1024 et enregistrez le résultat dans c1. Ensuite, faites la broche PWM 12 ème de Arduino HIGH, puis après un retard de valeur c1, rendez cette broche BAS. De nouveau, après un délai de valeur c2, la boucle continue.
La raison de la soustraction de la valeur analogique de 1024 est que l' ADC Arduino Uno a une résolution de 10 bits (donc les valeurs entières de 0 - 2 ^ 10 = 1024 valeurs). Cela signifie qu'il mappera les tensions d'entrée entre 0 et 5 volts en valeurs entières entre 0 et 1024. Donc, si nous multiplions l'entrée anlogValue par (5/1024), alors nous obtenons la valeur numérique de la tension d'entrée. Apprenez ici comment utiliser l'entrée ADC dans Arduino.
boucle vide () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // définit la broche 12 HIGH delayMicroseconds (c1); // attend c1 uS (high time) digitalWrite (pwmPin, LOW); // définit la broche 12 LOW delayMicroseconds (c2); // attend c2 uS (temps bas) }
Contrôle de la vitesse du moteur à courant continu à l'aide d'Arduino
Dans ce circuit, pour contrôler la vitesse du moteur à courant continu, nous utilisons un potentiomètre de 100K ohms pour modifier le cycle de service du signal PWM. Le potentiomètre 100K ohm est connecté à la broche d'entrée analogique A0 de l'Arduino UNO et le moteur à courant continu est connecté à la 12ème broche de l'Arduino (qui est la broche PWM). Le fonctionnement du programme Arduino est très simple, car il lit la tension de la broche analogique A0. La tension sur la broche analogique est modifiée à l'aide du potentiomètre. Après avoir fait quelques calculs nécessaires, le cycle de service est ajusté en conséquence.
Par exemple, si nous fournissons une valeur de 256 à l'entrée analogique, alors le temps HIGH sera de 768 ms (1024-256) et le temps LOW sera de 256 ms. Par conséquent, cela signifie simplement que le cycle de service est de 75%. Nos yeux ne peuvent pas voir une telle oscillation à haute fréquence et il semble que le moteur est allumé en continu à 75% de la vitesse. C'est ainsi que nous pouvons effectuer le contrôle de la vitesse du moteur à l'aide d'Arduino.