Recherche…


Contrôler un moteur à courant continu via le port série en utilisant PWM

Dans cet exemple, nous visons à accomplir l’une des tâches les plus courantes: un petit moteur à courant continu est installé, comment puis-je utiliser mon Arduino pour le contrôler? Facile, avec communication PWM et série, en utilisant la fonction analogWrite() et la bibliothèque Serial .

Les bases

La modulation de largeur d'impulsion ou PWM en abrégé est une technique permettant d'imiter des signaux analogiques en utilisant une sortie numérique. Comment cela marche-t-il? En utilisant un train d'impulsions dont la relation D (rapport cyclique) entre le temps à haut niveau (numérique 1, généralement 5V) et le temps à bas niveau (numérique 0, 0V) dans chaque période peut être modifiée pour produire une tension moyenne entre ces deux niveaux:

entrer la description de l'image ici

En utilisant la fonction analogWrite(pin,value) Arduino analogWrite(pin,value) nous pouvons faire varier la value du rapport cyclique de la sortie de la pin . Notez que la pin doit être mise en mode de sortie et que la value doit être comprise entre 0 (0V) et 255 (5V). Toute valeur intermédiaire simulera une sortie analogique intermédiaire proportionnelle.

Cependant, la fonction des signaux analogiques est généralement liée au contrôle de systèmes mécaniques qui nécessitent plus de tension et de courant que la carte Arduino seule. Dans cet exemple, nous allons apprendre à amplifier les capacités PWM d'Arduino.

Pour cela, une diode MOSFET est utilisée. Essentiellement, cette diode agit comme un commutateur. Il permet ou interrompt le flux électrique entre ses bornes de source et de drain . Mais au lieu d'un commutateur mécanique, il dispose d'un troisième terminal appelé gate . Un très petit courant (<1mA) "ouvrira" cette porte et permettra au courant de circuler. Ceci est très pratique, car nous pouvons envoyer la sortie PWM d'Arduino à cette porte, créant ainsi un autre train d'impulsions PWM avec le même rapport cyclique à travers le MOSFET, ce qui permet des tensions et des courants qui pourraient détruire l'Arduino.

Bill of materials: de quoi avez-vous besoin pour construire cet exemple?

  • Diode MOSFET: par exemple, le populaire BUZ11
  • Diode de protection pour le moteur: Schottky SB320
  • Résistance: rien 10K ~ 1M Ohm
  • Moteur: Un petit moteur typique (un moteur typique peut être 12V)
  • Une source d'alimentation compatible avec le moteur que vous avez sélectionné
  • Une planche à pain
  • Câbles colorés!
  • Un Arduino, mais tu le savais déjà.

La construction

Mettez tout ensemble! Alimentez les rails de la maquette et placez-y la diode MOSFET. Connectez le moteur entre le rail positif et le drain MOSFET. Connecter la diode de protection de la même manière: entre le drain MOSFET et le rail positif. Connectez la source du MOSFET au rail de terre commun. Enfin, connectez la broche PWM (nous utilisons la broche 10 dans cet exemple) à la grille du MOSFET et également à la terre commune via la résistance (nous avons besoin d'un courant très faible!).

Voici un exemple de l'apparence de cette construction. Si vous préférez un schéma, en voici un.

Schéma physique

Le code

Maintenant, nous pouvons connecter l'Arduino à un ordinateur, télécharger le code et contrôler le moteur en envoyant des valeurs via la communication série. Rappelons que ces valeurs doivent être des entiers compris entre 0 et 255. Le code réel de cet exemple est très simple. Une explication est fournie dans chaque ligne.

int in = 0;                   // Variable to store the desired value
byte pinOut = 10;             // PWM output pin

void setup() {                // This executes once
  Serial.begin(9600);             // Initialize serial port
  pinMode(pinOut, OUTPUT);        // Prepare output pin
}

void loop() {                 // This loops continuously
  if(Serial.available()){         // Check if there's data
    in = Serial.read();           // Read said data into the variable "in"
    analogWrite(pinOut, in);      // Pass the value of "in" to the pin
  }
}

Et c'est tout! Vous pouvez désormais utiliser les fonctionnalités PWM d'Arduino pour contrôler les applications qui nécessitent des signaux analogiques, même lorsque les besoins en énergie dépassent les limites de la carte.

PWM avec un TLC5940

Le TLC5940 est un élément pratique à avoir lorsque vous manquez de ports PWM sur l’Arduino. Il dispose de 16 canaux, chacun individuellement contrôlable avec 12 bits de résolution (0-4095). Une bibliothèque existante est disponible à l' adresse http://playground.arduino.cc/Learning/TLC5940 . Il est utile pour contrôler plusieurs servos ou LED RVB. N'oubliez pas que les LED doivent être des anodes communes pour fonctionner. De plus, les puces peuvent être chaînées en série, permettant encore plus de ports PWM.

Exemple:

// Include the library
#include <Tlc5940.h>

void setup() {
    // Initialize
    Tlc.init();
    Tlc.clear(); 
}

unsigned int level = 0;
void loop() {
    // Set all 16 outputs to same value
    for (int i = 0; i < 16; i++) {
        Tlc.set(i, level);
    }
    level = (level + 1) % 4096;
    // Tell the library to send the values to the chip
    Tlc.update();
    delay(10);
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow