Catégories: Circuits microcontrôleurs
Nombre de fois vus: 19709
Commentaires sur l'article: 0

Contrôle moteur et servo avec Arduino

 

Dans les conceptions simples de systèmes d'automatisation, il est souvent nécessaire non seulement de lire les lectures des capteurs, mais également de mettre en marche des mécanismes. Pour cela, une variété de moteurs électriques sont utilisés. L'option la plus simple et la plus populaire est un moteur à courant continu. Il a gagné l'amour des amoureux avec son accessibilité, sa facilité de réglage de la vitesse. Si la tâche consiste à déplacer un mécanisme à un angle ou à une distance donnés, il est pratique d'utiliser un servomoteur ou un moteur pas à pas.

Dans cet article, nous examinons les servos et les petits moteurs CC, les connectons à une carte Arduino et ajustons le DCT.

Contrôle moteur et servo avec Arduino

Moteur DC

Le moteur électrique le plus courant utilisé dans les appareils portables, les jouets, les modèles radiocommandés et autres appareils. Des aimants permanents sont fixés sur le petit moteur électrique du stator, et un enroulement sur le rotor.

Moteur DC

Du courant est fourni à l'enroulement à travers l'ensemble de brosse. Les brosses sont en graphite, parfois des contacts glissants en cuivre sont trouvés. Les brosses glissent sur les lamelles situées à une extrémité du rotor. Si vous n'entrez pas dans les détails, sa vitesse de rotation dépend du courant d'enroulement de l'armature.

Ancre de moteur de collecteur

Sur les gros moteurs à courant continu, sur le stator, il y a un enroulement d'excitation connecté à l'enroulement du rotor (à travers l'ensemble de balais) d'une certaine manière (excitation séquentielle, parallèle ou mixte). Ainsi, le couple et le nombre de tours souhaités sont atteints.


Contrôle de vitesse

Moteur électrique à courant continu

Lorsqu'il est connecté au secteur, le moteur à courant continu commence à tourner à la vitesse nominale. Pour réduire la vitesse, vous devez limiter le courant. Pour ce faire, des résistances de ballast sont introduites, mais cela réduit l'efficacité de l'installation dans son ensemble et une source de chaleur en excès apparaît. Pour une régulation plus efficace de la tension et du courant, une autre méthode est utilisée - Régulation PWM.

Régulation PWM

Un procédé de commande du signal modulé en largeur d'impulsion (tension) consiste à générer la valeur de tension souhaitée en modifiant la largeur d'impulsion, avec une durée constante de la période (fréquence).

Autrement dit, la période est divisée en deux parties:

1. Temps d'impulsion.

2. Temps de pause.

Le rapport entre le temps d'impulsion et le temps total de la période est appelé rapport cyclique:

Ks = ti / tper

l'inverse est appelé "cycle de service":

D = 1 / KZ = tper / t et

Pour décrire le mode de fonctionnement du contrôleur PWM, les deux concepts sont utilisés: rapport cyclique et rapport cyclique.

La consommation actuelle du moteur dépend de sa puissance. Le nombre de révolutions, comme on l'a dit, dépend du courant. Le courant peut être ajusté en modifiant la quantité de tension appliquée aux enroulements. En fait, lorsqu'elle est alimentée par une tension qui dépasse la valeur nominale selon le passeport du moteur, sa vitesse dépassera également la vitesse nominale. Cependant, de tels modes de fonctionnement sont dangereux pour le moteur, car un courant plus important circule dans les enroulements, ce qui provoque leur échauffement accru.

Si les dommages au moteur dus à des impulsions à court terme ou à des modes de fonctionnement à court terme répétés sont minimes, alors pendant un fonctionnement prolongé à haute tension et à régime, il brûlera ou ses roulements chaufferont et se coinceront, puis les enroulements brûleront si l'alimentation n'est pas déconnectée.

Si la tension d'entrée est trop faible, le petit moteur peut tout simplement ne pas avoir suffisamment de puissance pour se déplacer. Par conséquent, il est nécessaire de connaître expérimentalement la vitesse et la tension normales pour un moteur particulier ne dépassant pas la valeur nominale.


Nous nous connectons à Arduino

J'avais un petit moteur, semble-t-il d'un lecteur de cassette, ce qui signifie que sa tension nominale sera inférieure à 5 volts, alors la puissance de sortie de l'arduino sera suffisante. Je vais l'alimenter à partir de la broche 5V, c'est-à-dire de la sortie du stabilisateur linéaire situé sur la carte. Selon le schéma que vous voyez ci-dessous.

Je ne connais pas le courant de ce moteur, alors je l'ai connecté à l'alimentation, et j'ai installé un transistor à effet de champ entre le moteur et la broche d'alimentation, sur la grille sur laquelle un signal de la sortie PWM a été appliqué, n'importe lequel des disponibles peut être utilisé.

Diagramme de connexion du moteur à courant continu Arduino

Pour régler la vitesse, j'ai ajouté une résistance variable au circuit, en la connectant à l'entrée analogique A0. Pour une connexion rapide, j'ai utilisé une planche à pain sans soudure, également appelée planche à pain.

J'ai installé une résistance de limitation de courant dans le câblage du transistor (pour réduire le courant de charge de la grille, cela sauvera le port de la combustion et de l'alimentation du microcontrôleur de l'affaissement et de son gel) de 240 Ohms, et je l'ai tiré au sol avec une résistance de 12 kOhm, cela doit être fait pour le rendre plus stable le réservoir d'obturation a fonctionné et s'est déchargé plus rapidement.

Description des transistors à effet de champ dans un article sur notre site internet. J'ai utilisé un mosfet puissant, commun et pas trop cher avec un canal n et une diode inverse IRF840 intégrée.

Exécutif et définissant une partie du circuit

Voici à quoi ressemble mon support de laboratoire:

Moteur à courant continu et Arduino

La fonction de contrôle PWM est appelée lors de l'écriture sur les valeurs de sortie correspondantes (3, 5, 6, 9, 10, 11) de 0 à 255 avec la commande AnalogWrite (broche, valeur). La logique de son travail est illustrée dans les graphiques ci-dessous.

Fonction de contrôle PWM

Un tel signal est appliqué à la grille du transistor:

Un tel signal est appliqué à la grille du transistor

Le code du programme à la disgrâce est court et simple, en détail toutes ces fonctions ont été décrites dans les articles précédents sur l'arduino.

int sensorPin = A0; // entrée du potentiomètre

int motorPin = 3; // Sortie PWM vers la porte de la caméra

void setup () {

pinMode (motorPin, OUTPUT);

}

boucle vide () {

analogWrite (motorPin, map (analogRead (sensorPin), 0, 1023, 0, 256));

}

Dans la fonction analogWrite, j'attribue une valeur à la sortie PWM, via la commande map, son utilisation vous permet de supprimer plusieurs lignes de code et une variable.


Il s'agit d'un schéma de travail et il est idéal pour observer les processus lors du réglage de la puissance de charge, de la luminosité des LED, du régime moteur, il vous suffit de connecter la charge souhaitée au lieu du moteur. Dans ce cas, au lieu de 5V, n'importe quelle tension peut être appliquée à la charge, par exemple 12V, n'oubliez pas de connecter l'alimentation négative au contact, par exemple 12V, n'oubliez pas de connecter l'alimentation négative à la broche GND sur la carte du microcontrôleur.

En arduino, la fréquence PWM, lorsqu'elle est appelée via la fonction analogWrite, n'est que de 400 Hz, aux valeurs de tension minimales, un bourdonnement de la fréquence correspondante a été entendu des enroulements du moteur.

Arduino et servo

Servos

Un moteur qui peut être dans une position prédéterminée et lorsqu'il est exposé à des facteurs externes, par exemple une déviation forcée de l'arbre, conserve sa position inchangée - est appelé un servo-entraînement. En général, la définition semble un peu différente:

Le servo est un moteur à rétroaction négative.

En règle générale, trois fils sortent d'un servomoteur:

  • Plus de puissance.

  • Moins de puissance.

  • Signal de commande.

Le servo variateur se compose de:

  • Moteur à courant continu (ou moteur sans balais);

  • Frais de gestion;

  • Capteur de position (encodeur pour servos avec un angle de rotation de 360 ​​° ou potentiomètre pour servos avec un angle de rotation de 180 °);

  • Réducteur (réduit le régime moteur et augmente le couple sur l'arbre d'entraînement).

L'unité de commande compare le signal sur le capteur de position intégré et le signal qui est passé par le fil de commande, s'ils diffèrent, il y a alors une rotation à un angle auquel la différence entre le signal est nivelée.

Le principe de fonctionnement du servo

Caractéristiques principales des servos:

  • Vitesse de rotation (temps pendant lequel l'arbre tourne sur un angle de 60 °);

  • Couple (kg / cm, c'est-à-dire combien de kilogrammes le moteur peut supporter sur le levier à 1 cm de l'arbre);

  • Tension d'alimentation;

  • Consommation actuelle;

  • Par la méthode de contrôle (analogique ou numérique, il n'y a pas de différence significative, mais le numérique est plus rapide et plus stable).

En règle générale, la période du signal est de 20 ms et la durée de l'impulsion de commande:

  • 544 μs - correspond à 0 °;

  • 2400 μs - correspond à un angle de 180 °.

Dans de rares cas, la longueur d'impulsion peut différer, par exemple, 760 et 1520 μs, respectivement, ces informations peuvent être clarifiées dans la documentation technique du variateur. L'un des servos de loisirs les plus populaires est le Tower Pro SG90 et les modèles similaires.C'est bon marché - environ 4 dollars.

Sevroprivod pour arduino

Il détient 1,8 kg / cm sur l'arbre, et avec lui sont des vis de montage et des leviers avec des cannelures pour l'arbre. En fait, ce bébé est assez fort, et il est très problématique de l'arrêter avec un seul doigt - le lecteur lui-même commence à tomber des doigts - telle est sa force.


Servocommande et Arduino

Comme déjà mentionné, le contrôle s'effectue en modifiant la durée d'impulsion, mais ne confondez pas cette méthode avec PWM (PWM), son nom correct est PDM (Pulse Duration Modulation). De légères déviations dans la fréquence du signal (20 ms - durée, fréquence 50 Hz) ne jouent pas un rôle particulier. Mais ne déviez pas de la fréquence de plus de 10 Hz, le moteur peut tourner saccadé ou griller.

Servocommande et Arduino

La connexion à l'arduino est assez simple, vous pouvez également alimenter le lecteur à partir d'une broche 5v, mais ce n'est pas souhaitable. Le fait est qu'au début il y a un petit saut de courant, cela peut provoquer une baisse de puissance et Fausse sortie du microcontrôleur. Bien qu'un petit lecteur (type SG90) soit possible, mais pas plus.

Pour contrôler ces servos avec Arduino, vous avez la bibliothèque Servo intégrée à l'IDE, elle a un petit ensemble de commandes:

  • attach () - ajoute une variable à la broche. Exemple: drive name.attach (9) - connectez un servo à la broche 9. Si votre variateur a besoin de longueurs d'impulsions de commande non standard (544 et 2400 μs), elles peuvent être spécifiées séparées par une virgule après le numéro de broche, par exemple: servo.attach (broche, angle min (μs), angle max dans l'ISS));

  • write () - définit l'angle de rotation de l'arbre en degrés;

  • writeMicroseconds () - définit l'angle à travers la longueur d'impulsion en microsecondes;

  • read () - détermine la position actuelle de l'arbre;

  • attaché () - Vérifie si une broche est réglée avec un servo connecté;

  • detach () - annule la commande attach.

Cette bibliothèque vous permet de contrôler 12 servos depuis UNO, Nano et les cartes similaires (mega368 et 168), tandis que la possibilité d'utiliser PWM sur les broches 9 et 10 disparaît. Si vous avez MEGA, vous pouvez contrôler les 48e serveurs, mais le PWM sur les broches 11 et 12 disparaîtra, si vous utilisez jusqu'à 12 servos, alors le PWM restera pleinement fonctionnel sur tous les contacts.

Si vous avez connecté cette bibliothèque, vous ne pourrez pas travailler avec des récepteurs / émetteurs 433 MHz. Il existe une bibliothèque Servo2 pour cela, qui est par ailleurs identique.

Bibliothèque Servo2

Voici un exemple du code que j'ai utilisé pour des expériences avec un servo variateur, il est dans l'ensemble d'exemples standard:

#include // connecte la bibliothèque

Servo myservo; // nom de variable déclaré pour servo myservo

int potpin = 0; // broche pour connecter le potentiomètre de réglage

int val; // variable pour enregistrer les résultats de la lecture du signal du potentiomètre

void setup () {

myservo.attach (9); // définir 9 broches comme sortie de contrôle pour le servo

}

boucle vide () {

val = analogRead (potpin); // résultats de la lecture du potentiomètre enregistré en trans. val, ils seront compris entre 0 et 1023

val = carte (val, 0, 1023, 0, 180); // traduire la plage de mesure de l'entrée analogique 0-1023

// dans la plage de tâches pour le servo 0-180 degrés

myservo.write (val); // passe la conversion signal de pot-ra pour contrôler entrée servo

retard (15); // un délai est nécessaire pour un fonctionnement stable du système

 

Nous connectons le servo à Arduino

Conclusion

L'utilisation des moteurs électriques les plus simples associés à un arduino est une tâche assez simple, tandis que la maîtrise de ce matériau élargit vos capacités dans le domaine de l'automatisation et de la robotique. Les robots les plus simples ou les modèles de voitures radiocommandées sont constitués de tels moteurs, et des servos sont utilisés pour contrôler la rotation des roues.

Dans les exemples considérés, un potentiomètre a été utilisé pour définir l'angle de rotation ou la vitesse de rotation, toute autre source de signal peut être utilisée à la place, par exemple, une rotation ou un changement de vitesse peut se produire à la suite d'informations reçues des capteurs.

Un exemple de l'utilisation de servos dans les énergies alternatives: suivre l'angle d'incidence de la lumière solaire et ajuster la position des panneaux solaires dans les centrales électriques.

Pour implémenter un tel algorithme, vous pouvez utiliser plusieurs photorésistances ou d'autres dispositifs optoélectroniques pour mesurer la quantité de lumière incidente et, en fonction de leurs lectures, régler l'angle de rotation du panneau solaire.

Voir aussi sur e.imadeself.com:

  • Comment le servo est organisé et fonctionne
  • Arduino et moteur pas à pas: principes de base, schémas, connexion et contrôle
  • Comprend la connexion d'appareils à Arduino
  • Comment distinguer un moteur à induction d'un moteur à courant continu
  • Comment connecter un encodeur incrémental à Arduino

  •