• Aucun résultat trouvé

Classe de problèmes-MECATRO

N/A
N/A
Protected

Academic year: 2021

Partager "Classe de problèmes-MECATRO"

Copied!
44
0
0

Texte intégral

(1)

Classe de problèmes-MECATRO

Asservir en rotation un moteur à courant continu

LYCÉECARNOT(DIJON), 2021 - 2022

Arnaud Maire du Poset & Germain Gondor

(2)

Sommaire

1 Présentation

2 Commande simple d’un moteur avec bouton poussoir

3 Commande d’un moteur avec variation de vitesse

4 Asservissement en vitesse du moteur

5 Évaluation de la vitesse de rotation

(3)

Présentation

Sommaire

1 Présentation Permier Tp Objectifs

Rappel sur la carteArduino-Uno

2 Commande simple d’un moteur avec bouton poussoir

3 Commande d’un moteur avec variation de vitesse

4 Asservissement en vitesse du moteur

5 Évaluation de la vitesse de rotation

(4)

Présentation Permier Tp

Permier Tp

Le premier Tp a permis d’établir la connexion entre l’unité de traitement et le préactionneur pour moduler l’énergie vers l’actionneur.

Unité de traitement Consigne de

vitesse angulaire

Relais Moteur Réducteur et transmission

Position Unité

d’alimentation

(5)

Présentation Objectifs

Objectifs

Dans ce Tp, on s’intéresse dans un premier temps à l’acquisition d’information via les broches analogiques.

L’acquisition d’information permet :

• d’une part, de régler la consigne via un bouton poussoir (commande TOR) ou via un potentiomètre (commande analogique numérisée sur 210 niveaux).

• d’autre part, de réguler l’actionneur en maîtrisant ses paramètres cinématiques

Dans un second temps, l’unité de traitement envoie un ordre quantifié à destination du préactionneur.

(6)

Présentation Rappel sur la carteArduino-Uno

Rappel sur la carte Arduino-Uno

La carteArduino-Unoest un exemple d’unité de traitement. L’élément central de la carte est le microcontrôleur. Son rôle est de traiter les données et d’assigner les sorties.

Les autres éléments principaux sont le connecteur USB, les 14 broches numériques, les 6 broches entrées analogiques et de 4 broches sorties de tensions de référence.

Le connecteur USB assure la communication de la carte avec le micro-ordinateur, et permet son alimentation en l’absence d’une autre source d’alimentation.

(7)

Présentation Rappel sur la carteArduino-Uno

Rappel sur la carte Arduino-Uno

La carteArduino-Unoest un exemple d’unité de traitement. L’élément central de la carte est le microcontrôleur. Son rôle est de traiter les données et d’assigner les sorties.

Les autres éléments principaux sont le connecteur USB, les 14 broches numériques, les 6 broches entrées analogiques et de 4 broches sorties de tensions de référence.

Le connecteur USB assure la communication de la carte avec le micro-ordinateur, et permet son alimentation en l’absence d’une autre source d’alimentation.

(8)

Présentation Rappel sur la carteArduino-Uno

Les broches numériques peuvent être configurées entrée ou sortie.

Lorsqu’elles sont configurées entrée, ce sont obligatoirement des entrées TOR (Tout Ou Rien, 1 ou 0). Pour être à 1, la broche doit être au potentiel 5 V et pour être à 0, au potentiel 0 V. Pour une sortie, il y a deux configurations possibles : soit elle est TOR, soit elle est numérique et codée sur 8 bits (1 octet), soit 256 possibilités (de 0 à 255).

REMARQUE: seules les broches repérées par le symbole ˜ (3, 5, 6, 9, 10 et 11) peuvent être numériques, les autres broches ne peuvent être que TOR.

(9)

Présentation Rappel sur la carteArduino-Uno

Les broches entrées analogiques permettent de mesurer à la ca- dence du quartz de cadencement l’évolution de grandeurs physiques.

Une entrée analogique de la carte Arduino est capable d’enregistrer un signal de 0 à 5 V délivré par un capteur ou par un élément d’interface homme machine (par exemple un potentiomètre). Ce signal est numé- risé sur 10 bits (de 0 à 1023).

Les broches sorties de tensions de référence permettent d’alimen- ter des composants extérieurs (par exemple des capteurs) en 3,3 ou 5V.

(10)

Présentation Rappel sur la carteArduino-Uno

(11)

Commande simple d’un moteur avec bouton poussoir

Sommaire

1 Présentation

2 Commande simple d’un moteur avec bouton poussoir Objectifs

Première étape : acquisition tout ou rien de l’état d’un bouton poussoir Deuxième étape : Commande du relais avec le bouton poussoir

3 Commande d’un moteur avec variation de vitesse

4 Asservissement en vitesse du moteur

5 Évaluation de la vitesse de rotation

(12)

Commande simple d’un moteur avec bouton poussoir Objectifs

Commande simple d’un moteur avec bouton poussoir

L’objectif de cette activité est de réaliser la commande en rotation d’un moteur en appuyant sur un bouton poussoir avec une alimentation externe .

(13)

Commande simple d’un moteur avec bouton poussoir

Première étape : acquisition tout ou rien de l’état d’un bouton poussoir

• en transformant, lepinModed’une broche enINPUTau lieu d’OUTPUT, acquérir son niveau avec la commandedigitalRead

• écrire un programme qui permet d’allumer/éteindre la LED avec le même bouton poussoir : un impulsion sur ce bouton fait passer la LED d’un état allumer à éteint et inversement.

(14)

Commande simple d’un moteur avec bouton poussoir

Première étape : acquisition tout ou rien de l’état d’un bouton poussoir

1 / / A f f e c t a t i o n des broches 2 c o n s t i n t pin_LED = 1 3 ; 3 c o n s t i n t pin_BP = 1 2 ; 4

5 / / G e s t i o n des v a r i a b l e s 6 i n t e t a t _ b o u t o n =LOW;

7 i n t etat_LED =LOW;

8 9

10 v o i d set up( ) {

11 / / p u t your set up code here , t o run once : 12 pinMode( pin_LED , OUTPUT) ;

13 pinMode( pin_BP , INPUT) ;

14 }

15

16 v o i d l o o p( ) {

17 e t a t _ b o u t o n = d i g i t a l R e a d( pin_BP ) ; 18 i f ( e t a t _ b o u t o n == HIGH) { 19 i f ( etat_LED ==HIGH) {

20 etat_LED =LOW;

21 }

22 e l s e{

23 etat_LED =HIGH;

24 }

25 d i g i t a l W r i t e( pin_LED , etat_LED ) ;

26 }

27 d e l a y( 2 0 0 ) ; 28 }

(15)

Commande simple d’un moteur avec bouton poussoir Deuxième étape : Commande du relais avec le bouton poussoir

Deuxième étape : Commande du relais avec le bouton

poussoir

(16)

Commande simple d’un moteur avec bouton poussoir Deuxième étape : Commande du relais avec le bouton poussoir

Pour cela on utilise un moteur à courant continu en actionneur et un transistor MOSFET en préactionneur. Le transistor est un composant électronique qui fonctionne comme un contacteur.

Il a trois pattes : deux des pattes doivent être reliées au circuit d’alimen- tation du moteur et la troisième patte permet son pilotage. Lorsque cette troisième patte n’est pas alimentée, le courant ne passe pas, lorsqu’elle est alimentée le courant passe.

(17)

Commande simple d’un moteur avec bouton poussoir Deuxième étape : Commande du relais avec le bouton poussoir

(18)

Commande simple d’un moteur avec bouton poussoir Deuxième étape : Commande du relais avec le bouton poussoir

Pour éviter les retours de charge générés par le moteur en phase de décélération lorsque l’arrêt est demandé, il faut utiliser une diode en parallèle du moteur en faisant attention à sa polarisation. Pour que le transistor fonctionne correctement, il faut relier les GND de la carte Arduino et de l’alimentation externe.

Unité de traitement Consigne de

vitesse angulaire

Relais Moteur Réducteur et transmission

Position Unité

d’alimentation

(19)

Commande simple d’un moteur avec bouton poussoir Deuxième étape : Commande du relais avec le bouton poussoir

Relier le relais à la carte Arduino FIG??(ex : 11)

Relier un côté d’un bouton poussoir à la tension 5 V et l’autre côté du bouton à une résistance de 10 kΩ. Relier l’autre côté de la résistance au GND.

Relier une broche entrée numérique (ex : 8) entre le bouton poussoir et la résistance. Ainsi, si l’interrupteur est fermé, on mesure 5 V, s’il est ouvert en mesure 0 V. L’interrupteur ne fait pas court-circuit, grâce à la résistance.

(20)

Commande simple d’un moteur avec bouton poussoir Deuxième étape : Commande du relais avec le bouton poussoir

Écrire le code correspondant. Pour cela :

Définir deux broches numériques en tant que variables com_moteuretappui_bouton

Définir une variable entieretat_boutonet une autre etat_moteur

Configurer la broche correspondante à la variablecom_moteuren tant que sortie et la broche correspondante à la variable

appui_boutonen tant que entrée ;

Dans la fonctionloop, écrire le code correspondant au fonctionnement souhaité (voir ci-dessous)

La variableetat_boutonpermet lalecturede l’état de la broche numérique liée à la variableappui_bouton.

Si l’entréeetat_boutonest à 1, on inverse l’état de la variable etat_moteur. On affecte à la sortiecom_moteurla valeur de la variableetat_moteur

Compiler et téléverser le code dans la carte

Tester le fonctionnement du système.

Réaliser le câblage du moteur avec une alimentation extérieure en réglant la

(21)

Commande simple d’un moteur avec bouton poussoir Deuxième étape : Commande du relais avec le bouton poussoir

1 / / A f f e c t a t i o n des broches 2 c o n s t i n t com_moteur = 1 2 ; 3 c o n s t i n t appui_bouton = 8 ; 4

5 / / G e s t i o n des v a r i a b l e s 6 i n t e t a t _ b o u t o n =LOW;

7 i n t e t a t _ m o t e u r =LOW;

8 9

10 v o i d set up( ) {

11 pinMode( com_moteur , OUTPUT) ; 12 pinMode( appui_bouton , INPUT) ; } 13

14 v o i d l o o p( ) {

15 e t a t _ b o u t o n = d i g i t a l R e a d( appui_bouton ) ; 16 i f ( e t a t _ b o u t o n == HIGH) {

17 i f ( e t a t _ m o t e u r == HIGH) { 18 e t a t _ m o t e u r =LOW;

19 }

20 e l s e{

21 e t a t _ m o t e u r = HIGH;

22 }

23 d i g i t a l W r i t e( com_moteur , e t a t _ m o t e u r ) ;

24 }

25 d e l a y( 2 0 0 ) ;

26 }

(22)

Commande d’un moteur avec variation de vitesse

Sommaire

1 Présentation

2 Commande simple d’un moteur avec bouton poussoir

3 Commande d’un moteur avec variation de vitesse

Première étape : acquisition numérique sur 1024 niveaux de l’état d’un potentiomètre

Deuxième étape : Commande du hacheur avec le potentiomètre

4 Asservissement en vitesse du moteur

5 Évaluation de la vitesse de rotation

(23)

Commande d’un moteur avec variation de vitesse

Commande d’un moteur avec variation de vitesse

Dans l’activité précédente, la vitesse de rotation du moteur était fixe et proportionnelle à la tension d’alimentation. L’objectif de cette activité est de réaliser la commande d’un moteur de manière à faire varier sa vitesse de rotation avec un potentiomètre.

Unité de traitement Consigne de

vitesse angulaire

Hacheur Moteur Réducteur et transmission

Position Unité

d’alimentation

(24)

Commande d’un moteur avec variation de vitesse

Pour cela on utilise un hacheur de tension en préactionneur. Son prin- cipe peut être décrit à l’aide du schéma électrique ci-contre :

• Lorsque le contact est fermé, le moteur est sous tension maximale VCC avec GND = 0 V.

• Lorsque le contact est ouvert, le moteur est hors tension.

(25)

Commande d’un moteur avec variation de vitesse

En jouant sur les fréquences d’ouverture et de fermeture du contact (hautes fréquences), la tension d’alimentation du moteur peut être dé- crite par le graphe suivant :

(26)

Commande d’un moteur avec variation de vitesse

GND M

contact VCC

(27)

Commande d’un moteur avec variation de vitesse

On peut définir une périodeT, un rapport cyclique α(avec 0≤ α≤ 1) et une tension moyenneUmoy.

Naturellement, cette tension en créneaux est filtrée par les bobines du moteur, ce qui équivaux à une alimentation à la tension moyenne. La vitesse de rotation du moteur est proportionnelle à la tension Umoy et donc au rapport cycliqueα.

(28)

Commande d’un moteur avec variation de vitesse

Première étape : acquisition numérique sur 1024 niveaux de l’état d’un potentiomètre

Première étape : acquisition numérique sur 1024 niveaux de l’état d’un potentiomètre

On s’intéresse cette fois à une valeur analogique, codée sur 1024 niveaux. On utilisera donc les brochesAi, quatre fois plus précises que les broches i. On utilise alors la commande pinMode(A0, INPUT) pour sélectionner en acquisition la broche A0.

Pour afficher les valeurs de la broche, on peut écrire sur le moniteur sé- rie avec, comme déclaration dans le setup,Serial.begin(9600) pour écrire à une vitesse de 9600 bauds.

Si valeur est une variable de type long, on peut écrire la valeur sur le moniteur série avecSerial.println(valeur);.

(29)

Commande d’un moteur avec variation de vitesse

Première étape : acquisition numérique sur 1024 niveaux de l’état d’un potentiomètre

On cherche donc :

• dans un premier temps, à obtenir sur le moniteur les valeurs liées à l’état du potentiomètre

• dans un second temps , à régler l’intensité de la LED en fonction de l’état du potentiomètre

Nous sommes donc près à envoyer au hacheur un signal analogique proportionnel à l’état du potentiomètre.

(30)

Commande d’un moteur avec variation de vitesse Deuxième étape : Commande du hacheur avec le potentiomètre

Deuxième étape : Commande du hacheur avec le

potentiomètre

(31)

Commande d’un moteur avec variation de vitesse Deuxième étape : Commande du hacheur avec le potentiomètre

Pour cette activité on va utiliser le motoréducteur IG220053X00069R et le composant PmodHB5.

Le motoréducteur est équipé de 6 fils qui se connectent directement sur le composant PmodHB5 qui a 6 broches correspondantes au niveau du connecteur J2. Il y a aussi 6 broches au niveau du connecteur J1. Le connecteur J3 permet l’alimentation externe du moteur.

(32)

Commande d’un moteur avec variation de vitesse Deuxième étape : Commande du hacheur avec le potentiomètre

(33)

Commande d’un moteur avec variation de vitesse Deuxième étape : Commande du hacheur avec le potentiomètre

(34)

Commande d’un moteur avec variation de vitesse Deuxième étape : Commande du hacheur avec le potentiomètre

1 c o n s t i n t com_moteur = 1 1 ; 2 c o n s t i n t appui_bouton = 8 ; 3 i n t e t a t _ b o u t o n =LOW;

4 i n t sens =LOW;

5 i n t v i t e s s e = 0 ;

6 c o n s t i n t c o n s i g n e _ v i t e s s e = 0 ; 7 \ img

8 v o i d set up( ) {

9 pinMode( com_moteur , OUTPUT) ; 10 pinMode( appui_bouton , INPUT) ; 11 pinMode( c o n s i g n e _ v i t e s s e ,INPUT) ; 12 }

13

14 v o i d l o o p( ) {

15 v i t e s s e = analogRead( c o n s i g n e _ v i t e s s e ) / 4 ; 16 e t a t _ b o u t o n =d i g i t a l R e a d( appui_bouton ) ; 17 i f ( e t a t _ b o u t o n == HIGH) {

18 a n a l o g W r i t e( com_moteur , v i t e s s e ) ;

19 }

20 e l s e{

21 a n a l o g W r i t e( com_moteur , 0 ) ;

22 }

23 }

(35)

Commande d’un moteur avec variation de vitesse Deuxième étape : Commande du hacheur avec le potentiomètre

La broche 1 (DIR) de J1 doit définir le sens de rotation du moteur, elle doit être reliée à une sortie TOR de la carte de commande. Si cette broche est à 0, le moteur tourne dans un sens, si elle est à 1, le moteur tourne dans l’autre sens.

La broche 2 (EN) de J1 doit définir la valeur de la vitesse de rotation du moteur, elle doit être reliée à une sortie numérique de la carte de commande. Les sorties numériques de la carte Arduino sont codées sur 8 bites soit 256 possibilités. Lorsque la sortie est à 0, le moteur ne tourne pas, lorsque la sortie est à 255, la vitesse du moteur est maximale, entre ces deux valeurs, la vitesse est proportionnelle.

Les broches 5 et 6 doivent assurer l’alimentation du composant sous une tension de 5 V, et doivent donc être reliées aux broches d’alimen- tation de la carte de commande.

(36)

Asservissement en vitesse du moteur

Sommaire

1 Présentation

2 Commande simple d’un moteur avec bouton poussoir

3 Commande d’un moteur avec variation de vitesse

4 Asservissement en vitesse du moteur

5 Évaluation de la vitesse de rotation

(37)

Asservissement en vitesse du moteur

Asservissement en vitesse du moteur

Le motoréducteur est équipé de deux codeurs magnétiques qui dé- livrent chacun un signal de 0 ou 5 V.

Ces codeurs sont décalés de 90, le graphe ci-contre donne le profil des signaux délivrés lorsque le moteur tourne.

Les broches 3 et 4 délivrent ces signaux. Nous les utiliserons lors de l’activité suivante.

(38)

Asservissement en vitesse du moteur

• réaliser le câblage du composant PmodHB5 ;

• réaliser le câblage du potentiomètre avec une entrée analogique ;

• écrire le code correspondant. Pour cela :

définir trois broches numériques en tant que variables

consigne_sens,sens_brocheetvitesse_broche(attention, choisir une broche numérique marquée symbole˜pour la variable vitesse_broche)

définir une broche analogique en tant que variable consigne_vitesse

définir deux variables entièressensetvitesse

configurer les broches correspondantes aux variables

sens_brocheetvitesse_brocheen tant que sorties et la broche correspondante à la variableconsigne_sensen tant que entrée

dans la fonctionloop, écrire le code correspondant au fonctionnement souhaité

REMARQUE:Pourquoi diviser par 4 ?

(39)

Asservissement en vitesse du moteur

Une entrée analogique est codée sur 10 bits (1024 possibilités) alors qu’une sortie numérique est codée sur 8 bits (256 possibilités). Il y a donc un rapport de 4. Si on est à 5 V en entrée le microcontrôleur lit 1023 et il faut mettre la sortie à 5 V soit 255.

• compiler et téléverser le code dans la carte

• tester le fonctionnement du système

(40)

Évaluation de la vitesse de rotation

Sommaire

1 Présentation

2 Commande simple d’un moteur avec bouton poussoir

3 Commande d’un moteur avec variation de vitesse

4 Asservissement en vitesse du moteur

5 Évaluation de la vitesse de rotation Objectif

Compteur

(41)

Évaluation de la vitesse de rotation Objectif

Évaluation de la vitesse de rotation

L’objectif de cette activité est d’évaluer la vitesse de rotation du moteur à l’aide des signaux fournis par les codeurs.

(42)

Évaluation de la vitesse de rotation Compteur

Compteur

Les broches 3 et 4 du composant PmodHB5 délivrent chacune un signal de 0 ou 5 V. Il faut donc relier chacune de ces broches à une broche entrée TOR de la carte Arduino de manière à pouvoir compter le nombre d’impulsions à des intervalles de temps réguliers.

De cette façon, on peut déterminer la vitesse de rotation du moteur.

Pour un seul codeur, si on compte les fronts montants et descendants du signal, et que l’on a évalué 6 impulsions en 10 ms, cela veut dire que le moteur effectuerait 3 tours en 10 ms et donc qu’il tournerait à 300 trs/s soit 18 000 trs/min. Pour 2 codeurs, il y aura 4 impulsions par tour.

(43)

Évaluation de la vitesse de rotation Compteur

(44)

Évaluation de la vitesse de rotation Compteur

Comme cela a été indiqué précédemment, un programme Arduino se compose de deux fonctions essentielles :setup etloop. La fonction setupest appelée une seule fois lorsque le programme commence et la fonctionloopest appelée en permanence.

Il est possible d’arrêter brièvement et temporairement la fonctionloop à chaque fois qu’un événement (changement d’état d’une entrée TOR) se produit. Pour cela il faut utiliser les broches numériques d’interrup- tion, les broches 2 et 3, numérotées 0 et 1. A chaque changement d’état des signaux des codeurs, on va incrémenter un compteur.

REMARQUE: Le faite d’avoir deux codeurs peut permettre de détecter le sens de rotation. On peut aussi décrémenter le compteur.

Références

Documents relatifs

à Le projet de la classe est de réaliser un album de monstre imitant la structure de « va-t’en grand monstre

Dans le second type de tableaux l'auteur rassemble des verbes qui constituent des classes de sens homogène, c'est-à-dire verbes causatifs de sentiment, verbes d'effort,

Pour nom :x Crée une procédure nommée « nom » de paramètre x Fin Termine la création d'une procédure..

Préparé par Mr... Préparé

Choisissez le nombre de téléspectateurs que vous souhaitez atteindre et dites à votre public au début de votre flux que vous avez un super cadeau que vous

L’emplacement de l’obturateur et du bouton d’arrêt d’urgence (déclencheur manuel” sont indiqués sur le “Plan de localisation des moyens de lutte

Nous vous soutenons dans votre projet pour toutes questions fondamentales ou complexes (portes de grandes dimensions, lourdes, à deux vantaux, etc.).. Conseil: L’étude de

Die Programme P18 bis P22 sind Pulsschlag-Kontroll-Programme, wobei P22 für das Programm zum individuell angestrebten Pulsschlag steht. Training mit Ihrem individuellen Zielpuls.