TPs 1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 29

Prof.

Saad Motahhir ENSA Fès

Ateliers : Concevoir un robot : capteurs et actionneurs

Manipulation 1 : Capteur de température (LM35)


Le but de cette manipulation est de réaliser un thermomètre en utilisant le capteur de
température (LM35) présenté dans la figure ci-dessous :

Comme mentionné dans la figure, ce capteur génère une tension dans la pin Vout qui est
proportionnelle à la température captée (10 mv/°C).

1. Branchez le capteur avec la carte Arduino Mega.


2. Ecrivez le programme C pour capter la température ambiante et l’afficher dans le
monitor série d’IDE Arduino.
3. Compilez le programme et téléversez l’exécutable à la carte pour afficher la
température ambiante.
4. Proposez une autre application en utilisant ce capteur, vous pouvez utiliser d’autres
composants.

Manipulation 2 : Capteur de lumière (photorésistance)

Une photorésistance est un composant dont la résistivité dépend de la luminosité


ambiante. On va donc s’en servir pour détecter la forte variation de la luminosité.
On peut donc l'utiliser comme capteur lumineux pour :

• Mesure de la lumière ambiante pour une station météo.


• Détecteur de lumière dans une pièce.
• Suiveur de lumière dans un robot.
• Détecteur de passage.
• …

1
Prof. Saad Motahhir ENSA Fès

Photorésistance

On note l’illumination en « lux », voici un graphe qui montre l’évolution en lux en


fonction de la résistance :

On notera notamment ce tableau de valeur indicative :

2
Prof. Saad Motahhir ENSA Fès

Si on regarde la courbe de luminosité (en lux) VS la résistance (en ohms) fournie


par le fabricant, on se rend compte qu'il ne s'agit pas d'une droite, mais bien d'une
courbe. Il est donc assez compliqué de déterminer quelle luminosité (en lux)
correspondant à une valeur mesurée par analogRead().

Il faut aussi prendre en compte le fait qu'une photorésistance est un composant


très peu cher, ce qui explique sa présence dans des jouets ou autres circuits à bas
coût. Les tolérances de fabrication sont en général de ~40% de différences par
rapport aux valeurs nominales de résistances.

De plus, une photorésistance est sensible à la chaleur et réagit différemment en


fonction des couleurs. La mesure sera donc légèrement différente s'il fait très
chaud ou très froid. De même, la valeur mesurée sera différente en fonction de la
couleur de la lumière.

Les photorésistances sont principalement utilisées pour détecter la présence (ou


l'absence) de lumière dans une pièce ou à l'extérieur. Pour faire de véritable
mesure de luminosité (en lux, avec une précision fixe qu'importent la température
et la couleur), il existe des capteurs spécialisés pour cela comme le capteur
TSL2561.

Il faut noter aussi qu’il existe différents types de ce capteur même leur forme
est la même mais chaque type est fabriqué par un matériau différent. Donc, chaque
type peut donner une réponse différente de l’autre pour la même intensité de
lumière.

3
Prof. Saad Motahhir ENSA Fès

Les pins de la carte Arduino ne sont capables de lire qu’une tension entre 0 et 5
V, alors que la photorésistance est un capteur passif et résistif. Proposez le circuit
électronique qui permet de transformer la résistance du capteur à une tension.

1. Réalisez le circuit électronique proposé pour connecter la photorésistance


avec la carte Arduino.
2. Ecrivez un code C pour afficher la valeur retournée par la fonction
analogRead pour la broche utilisée.
3. Exécutez l’application et faites variez la luminosité exposée sur la
photorésistance. Qu’est que vous remarquez ?
4. Modifier votre programme pour détecter tous les niveaux suivants de
l’intensité lumineuse : Noir, Sombre, Lumière, Lumineux, Très lumineux.
5. Proposez une autre application en utilisant ce capteur, vous pouvez utiliser
d’autres composants.

N.B. La valeur mesurée n'a pas d'unité ! C'est une valeur purement indicative. Si vous
voulez avoir une mesure en lux, il va falloir calibrer votre photorésistance et intégrer les
données de calibration dans le code. Savoir calibrer un capteur n'est pas le but de ce
tutoriel, on en parlera une prochaine fois.

Manipulation 3 : Capteur de distance et obstacle (ultrason)

Dans cette manipulation, vous allez apprendre à utiliser un capteur de distance à


ultrason de référence HC-SR04 avec une carte Arduino

4
Prof. Saad Motahhir ENSA Fès

Parfois quand on réalise un projet, on a besoin de mesurer des distances, détecter


des obstacles, etc.

En robotique par exemple, il est très classique d'avoir un capteur de distance sur
l'avant du robot pour éviter de se prendre un mur en pleine face.

Les caractéristiques techniques du module sont les suivantes :

• Alimentation : 5v.
• Consommation en utilisation : 15 mA.
• Gamme de distance : 2 cm à 5 m.
• Résolution : 0.3 cm.
• Angle de mesure : < 15°.

Le brochage du module est le suivant :

Le fonctionnement du module est le suivant :

Il faut envoyer une impulsion niveau haut (à + 5v) pendant au moins 10 µs sur la
broche ‘Trig Input’; cela déclenche la mesure. En retour la sortie ‘Output’ ou ‘Echo’,
va fournir une impulsion + 5v dont la durée est proportionnelle à la distance si le
module détecte un objet. Afin de pouvoir calculer la distance en cm, on utilisera la
formule suivante :

Distance = (durée de l’impulsion (en µs) / 58

Voici une représentation graphique de la séquence de fonctionnement du module :

5
Prof. Saad Motahhir ENSA Fès

1. Câblez le module HC SR04 avec la carte Arduino.


2. Ecrivez le programme qui permet d’afficher la distance par rapport à un
objet dans le monitor série. Pensez à utiliser la fonction :

pulseIn(pin, value) : Lit la durée d'une impulsion (soit niveau HAUT, soit niveau
BAS) appliquée sur une broche (configurée en ENTREE). Par exemple, si le
paramètre value est HAUT, l'instruction pulseIn() attend que la broche passe à
HAUT, commence alors le chronométrage, attend que la broche repasse au niveau
BAS et stoppe alors le chronométrage. L'instruction renvoie la durée de
l'impulsion en microsecondes (1 millions de microsecondes par secondes).
L'instruction s'arrête et renvoie 0 si aucune impulsion n'est survenue dans un
temps spécifié.

• Pin : le numéro de la broche sur laquelle vous voulez lire la durée de


l'impulsion. (type int)
• Value : le type d'impulsion à "lire" : soit HIGH (niveau HAUT) ou LOW
(niveau BAS). (type int)

Valeur renvoyée : la durée de l'impulsion (en microseconds) ou 0 si aucune


impulsion n'a démarré avant le délai de sortie. (type unsigned long)

3. Compilez le programme et téléversez l’exécutable à la carte pour afficher


la distance.
4. Proposez une autre application en utilisant ce capteur, vous pouvez utiliser
d’autres composants.

Manipulation 4 : Système anti-collusion (ultrason et buzzer)

6
Prof. Saad Motahhir ENSA Fès

Le buzzer est un composant constitué essentiellement d'une lamelle réagissant


à l'effet piézoélectrique. La piézoélectricité est la propriété que possèdent
certains minéraux de se déformer lorsqu'ils sont soumis à un champ électrique.
Ce phénomène est réversible ; si nous déformons ce minéral, il produit de
l'énergie électrique

Dans l'univers Arduino, le buzzer est principalement utilisé pour émettre un


son.

Le langage Arduino possède deux instructions permettant de :

Générer un signal carré dont la fréquence est image des notes de musique.
Cette instruction est tone(broche, fréquence, durée) où les
paramètres représentent la broche de l'Arduino, la fréquence émise par la
broche et la durée du signal. Si le paramètre durée n'est pas présent dans
l'instruction, le buzzer sonnera en permanence.

Stopper l'émission du signal carré. Cette instruction est noTone(broche) où


broche représente la broche de l'Arduino.

1. Nous souhaitons jouer toutes les notes de la gamme pendant 0,5


secondes. Si vous utilisez Proteus changez la tension du buzzer en 5V et
load resitance à 1000 ohm.

Liste du matériel :

Arduino Uno

plaquette d'essai

buzzer

7
Prof. Saad Motahhir ENSA Fès

Câblage : Programme :

/* Buzzer est un programme qui joue la


gamme musicale */

// affectation des broches


int frequence[] = {262, 294, 330, 349,
370, 392, 440, 494}; // tableau de
fréquence des notes

void setup()
{
}

void loop()
{
for (int i = 0; i < 8; i++)
{
tone(8, frequence[i], 500);
// la note est jouée pendant 500 ms
delay(500);
// attente de 500 ms entre chaque note
}
}

2. Proposez un système embraqué d’anti-collusion en utilisant un capteur


ultrason et un buzzer.

Manipulation 5 : Capteur de température numérique (sonde de dallas)

Cette manipulation utilisera la carte Arduino Mega associée au capteur de


température 1-Wire DS18S80 en format "sonde" étanche.

8
Prof. Saad Motahhir ENSA Fès

Les caractéristiques techniques de ce capteur :

• Plage de mesure : de -55°C à 125°C avec une tolérance comprise entre -


0.5°C/+0.5°.
• Résolution : la température peut être codée dans une variable allant de 9 à
12 bits.
• Capteur de température numérique : L’avantage d’être un capteur numérique
est que l’on peut le brancher sur n’importe quelle borne de l’Arduino (et non
pas uniquement sur l’une des 6 entrées analogique), et qu’il est moins sujet
aux parasites.
• La technologie one wire : permet de pouvoir brancher plusieurs capteurs sur
la même broche de l’arduino. En fait chaque capteur possède une adresse
unique codée sur 64 bits qui associé à une librairie chargée dans l’arduino,
permet de dissocier chacun des DS18X20. Autrement dit, là où il vous fallait
une carte arduino UNO complète pour brancher 16 capteurs, avec le
DS18B20, vous pourrez tout mettre sur 1 seule entrée Tout Ou Rien (car
c’est un capteur numérique, et non pas analogique).
• Polarisation : Rouge=>Vcc, Noire => masse et jaune => data.

Câblage du DS18B20 avec un Arduino :

9
Prof. Saad Motahhir ENSA Fès

1. Câbler la sonde avec la carte Arduino.


2. Pour écrire le programme, nous allons utiliser les fonctions des deux
bibliothèques OneWire.h (Librairie du bus OneWire) et
DallasTemperature.h (Librairie du capteur) que vous devez les
importer comme suit :

Vous trouvez les deux bibliothèques dans la clé USB de Prof.

Code :

#include <OneWire.h> //Librairie du bus OneWire


#include <DallasTemperature.h> //Librairie du capteur

OneWire oneWire(10); //Bus One Wire sur la pin 2 de l'arduino


DallasTemperature sensors(&oneWire); //Utilistion du bus Onewire pour les capteurs
DeviceAddress sensorDeviceAddress; //Vérifie la compatibilité des capteurs avec la librairie

void setup(void){
Serial.begin(9600); //Permet la communication en serial
sensors.begin(); //Activation des capteurs
sensors.getAddress(sensorDeviceAddress, 0); //Demande l'adresse du capteur à l'index 0 du
bus
sensors.setResolution(sensorDeviceAddress, 12); //Résolutions possibles: 9,10,11,12
}

10
Prof. Saad Motahhir ENSA Fès

void loop(void){
sensors.requestTemperatures(); //Demande la température aux capteurs
Serial.print("La température est: ");
Serial.print(sensors.getTempCByIndex(0)); //Récupération de la température en celsius du
capteur n°0
Serial.println(" C°");
}

3. Compilez le programme et téléversez l’exécutable à la carte pour


afficher la température ambiante ou d’un liquide.
4. Proposez une autre application en utilisant ce capteur, vous pouvez
utiliser d’autres composants.

Manipulation 6 : Servomoteur

Un servomoteur (souvent abrégé en « servo ») est un moteur capable de maintenir


une opposition à un effort statique et dont la position est vérifiée en continu et
corrigée en fonction de la mesure. C'est donc un système asservi. Un servomoteur
est un système motorisé capable d'atteindre des positions prédéterminées, puis
de les maintenir.

Sur un servomoteur, l'angle de de l'axe reste fixé dans une position et peut varier
entre 0 et 180° en fonction du signal envoyé. Un servomoteur comprend :

• Un moteur électrique (continu), généralement assez petit.


• Des engrenages réducteurs en sortie du ce moteur (pour avoir moins de
vitesse et plus de couple ou de force).
• Un capteur type "potentiomètre" raccordé sur la sortie :
ü Il s'agit donc d'une résistance qui varie en fonction de l'angle, ce qui
permet de mesurer l'angle de rotation sur l'axe de sortie.

11
Prof. Saad Motahhir ENSA Fès

ü Un asservissement électronique pour contrôler la position/rotation,


de cet axe de sortie pour le maintenir à la bonne position.

Commande électronique d'un servomoteur :

Il suffit d'envoyer une impulsion et c'est le temps que durera cette impulsion qui
déterminera l'angle du servomoteur. Ce temps d'impulsion est de quelques
millisecondes et doit être répété d’une manière périodique (toutes les 20 ms). Si
le temps d'impulsion varie d'un fabricant à l'autre, les valeurs suivantes sont assez
standard :

• 1 ms = 0 degré
• 1.50 ms = 90 degrés
• 2 ms = 180 degrés

12
Prof. Saad Motahhir ENSA Fès

Câblage du moteur :

•Marrons : Raccordé à la Masse.


•Rouge : Alimentation moteur et logique de commande. Raccordé à VCC
5V.
• Jaune : Commande de la position du servomoteur.
1. Câbler le servomoteur avec la carte Arduino.
2. Ecrivez le programme qui permet de commander le servomoteur à tourner
avec différents angles en utilisant les instructions suivantes :

#include <Servo.h> // importer la bibliothèque Servo

Servo servo_1; // Déclarer un objet Servo nommé servo_1

servo_1.attach(PIN); // Relier l'objet au pin de commande

servo_1.write(angle); // Définir l’angle de position souhaité

3. Compilez le programme et téléversez l’exécutable à la carte.


4. Votre mission, consistera à fabriquer un petit robot avec uniquement un
capteur - ici un capteur de distance - et un actionneur - ici un moteur. Si le
capteur de distance détecte quelque chose, alors votre moteur devra se
mettre à tourner. S’il ne détecte rien, votre moteur ne tournera pas.
5. Réaliser un solar tracker.

Manipulation 7 : LED RGB

13
Prof. Saad Motahhir ENSA Fès

Une RGB LED est une LED qui peut s’allumer dans toutes les couleurs en fonction
de trois couleurs : le rouge, le vert et le bleu (d’où son nom RGB des trois couleurs
en anglais). Cette LED comporte 4 broches, mais comment peut-on l’allumer alors
? Ces broches correspondent chacun à un facteur de la LED, une par exemple
correspond à la couleur rouge, une autre à la couleur bleue, une autre à la couleur
verte et la dernière est l’anode pour une LED de type anode commune.

Pour bien comprendre le fonctionnement d'une LED RGB, nous allons faire l’application
suivante en utilisant une LED de type anode commune :

1. Réalisez le montage suivant :

Brochage :

2. À l’intérieur de la led RGB, il y a en principe trois LED. Donc, en modifiant


la luminosité de ces leds, nous pouvons obtenir de nombreuses autres
couleurs. Pour ce faire, nous pouvons utiliser les broches PWM d’Arduino.
Ecrivez le programme qui permet de générer les couleurs suivantes : Red (0,

14
Prof. Saad Motahhir ENSA Fès

255, 255), Green (255, 0, 255), Blue (255, 255, 0), Raspberry (0, 0, 125),
Cyan (255, 0, 0), Magenta (0, 255, 0), Yellow (0, 0, 255), White (0, 0, 0),
chaque couleur pendant une seconde.
3. Compilez le programme et téléversez l’exécutable à la carte.
4. Proposez une autre application en utilisant la LED RGB, vous pouvez utiliser
d’autres composants.

Manipulation 8 : Commande d’un MCC avec Arduino

Les moteurs à courant continu forment une classe des moteurs électriques qui
convertit l'énergie électrique sous forme d’un courant continu en puissance
mécanique. Généralement ces moteurs ont deux bornes, l’application d’une tension
continue à ces bornes conduit à la rotation du moteur dans un sens, l’inversion de
la polarité de la tension le conduit à tourner dans le sens contraire. Actionner un
moteur DC dans les deux sens manuellement est si facile, mais pour automatiser
sa commande, c’est là ou intervient l’électronique.

Commande unidirectionnelle par transistor

Réalisons un circuit de commande d’un moteur DC 12V unidirectionnel à l’aide d’un


transistor NPN (Darlington) TIP122. Deux boutons poussoirs relié à l’Arduino,
seront responsables de la mise en marche/arrêt du moteur.

Câblage : Programme :

int moteur=13;
int boutonON=A0;
int boutonOFF=A1;
void setup() {
pinMode(moteur, OUTPUT);
pinMode(boutonON, INPUT);
pinMode(boutonOFF, INPUT);

}
void loop() {
if(!digitalRead(boutonON))
digitalWrite(moteur, HIGH);
if(!digitalRead(boutonOFF))
digitalWrite(moteur, LOW);
delay(10);
}

Commande unidirectionnelle par relai

15
Prof. Saad Motahhir ENSA Fès

Reprenons l’exercice 12, mais nous allons choisir de commander un moteur DC 120V
par un relai au lieu d’un transistor.

Câblage : Programme :

int moteur=13;
int boutonON=A0;
int boutonOFF=A1;
void setup() {
pinMode(moteur, OUTPUT);
pinMode(boutonON, INPUT);
pinMode(boutonOFF, INPUT);

}
void loop() {
if(!digitalRead(boutonON))
digitalWrite(moteur, HIGH);
if(!digitalRead(boutonOFF))
digitalWrite(moteur, LOW);
delay(10);
}

Commande bidirectionnelle par Motor Driver

Alors, tout d'abord, voyons pourquoi nous utilisons Motor Driver Circuit? Les
moteurs CC normaux nécessitent un courant de plus de 250 mA. Le contrôle des
circuits intégrés sur les pilotes de moteur comme Atmega16 / 32, 8051 ne peut
pas produire autant de courant directement sur ses broches. Si nous connectons
directement les moteurs à un circuit intégré, ils seront endommagés. Également
en termes de tension de fonctionnement requise pour entraîner les moteurs à
haute vitesse, nous avons besoin d'un niveau de tension plus élevé en fonction des
spécifications du moteur, nous avons donc besoin ici de circuits de commande de
moteur. Pour piloter un moteur, nous ne pouvons tout simplement pas le connecter
directement au microcontrôleur. Pourquoi ? Parce que le microcontrôleur générera
des signaux sous la forme de HIGH (Vcc = 5v) ou LOW (zéro). Mais cette tension
est insuffisante pour faire fonctionner un moteur. C’est pourquoi nous devons
utiliser un pilote de moteur. Les circuits intégrés de commande de moteur les plus
couramment utilisés sont les séries L293 et L298 telles que L293D, L293NE et
L298N, etc. Ces circuits intégrés sont conçus pour contrôler 2 moteurs CC
simultanément. Les deux pilotes de moteur sont constitués d'un pont en H.

16
Prof. Saad Motahhir ENSA Fès

Un pont en H est un circuit électronique qui permet à une tension appliquée à


travers une charge dans les deux sens. Ces circuits sont souvent utilisés en
robotique et autres applications pour permettre aux moteurs à courant continu de
tourner dans les deux sens. Dans cette manipulation, un L293D est utilisé.

Vss - Alimentation de la logique de commande (5V).

A raccorder à la borne +5V d'Arduino (donc sur le régulateur d'Arduino).

Vs - Alimentation de puissance des moteurs.

Par exemple, s'il s'agit d’un ancien véhicule téléguidé que vous avez cannibalisé, il
s'agira de la borne positive (+9.2v) de votre accumulateur.

GND - Doit être raccorder à la masse (GND) de la source d'alimentation de


puissance Vs (donc le négatif de l'accumulateur) et à la masse de la source
d'alimentation de Vss (donc GND Arduino).

17
Prof. Saad Motahhir ENSA Fès

Si vous n'avez qu'une source d'alimentation pour le tout, c'est forcément plus
simple.

OUTPUT1, OUTPUT2 - Broches à raccorder à la charge (le moteur).

INPUT1, INPUT2 - Broche de commande du Pont-H. Se raccorde à Arduino.

ENABLE1 - permet d'envoyer (ou pas) la tension sur les sorties du moteur via
OUTPUT1 & OUTPUT2.

ENABLE1 commande l'activation du premier Pont-H.

Si ENABLE1 = GND, le pont-H est déconnecté et le moteur ne fonctionne pas.

Si ENABLE1 = Vss, le pont-H est connecté aux sorties et le moteur fonctionne


dans un sens ou l'autre ou pas en fonction des tensions appliquée sur INPUT1 &
INPUT2.

Importance de la broche ENABLE1:

Si l'on ne désire pas faire de commande en vitesse et que le Pont-H sert


uniquement en commande tout ou rien, alors dans ce cas, il suffit de raccorder
ENABLE1 à Vss.

Par contre, ENABLE1 offre l'avantage de pouvoir moduler la vitesse du moteur en


y appliquant un train d'onde PWM.

Il est ainsi possible de commander assez finement une moteur DC avec 3 broches
Arduino (dont une PWM).

Pour bien comprendre le fonctionnement du Pont H, nous allons commander la vitesse d’un
moteur DC en utilisant un potentiomètre et inverser le sens avec un interrupteur.

1. Réaliser le circuit.
2. Développer le programme.
3. Compilez le programme et téléversez l’exécutable à la carte.

Manipulation 9 : Commande d’un moteur pas à pas avec Arduino

18
Prof. Saad Motahhir ENSA Fès

Un moteur pas à pas est un moteur commandé par une série de bobines
électromagnétiques. L'arbre central comporte une série d'aimants montés sur elle, les
bobines entourant l'arbre sont excitées à tour de rôle par un courant continu. La création
de champs magnétiques qui repoussent ou attirent les aimants sur l'arbre, provoque la
rotation du moteur (rotor).

Cette conception permet un contrôle très précis du moteur: par pulsation correcte, il peut
être tourné dans des mesures très précises (exemple 1.8° par pas). Ils sont utilisés dans
les imprimantes, disques durs, les robots et autres périphériques où un positionnement
précis du moteur est nécessaire.

Il y a deux types de base de moteurs pas à pas, les moteurs unipolaires et bipolaires :

Moteurs pas à pas unipolaires

Le moteur pas à pas unipolaire a cinq ou six fils et quatre bobines. Les connexions centrales
des bobines sont attachées ensemble et sont utilisés en tant que connexion
d'alimentation. Ils sont appelés steppers unipolaires parce que l’alimentation est toujours
connectée au pôle commun. Une de chaque paire de bobines est activée à un moment donné.

Brochage du moteur pas à pas

Moteurs pas à pas bipolaires

19
Prof. Saad Motahhir ENSA Fès

Le moteur pas à pas bipolaire comporte généralement quatre fils. Contrairement aux
steppers unipolaires, les bipolaires n’ont aucune broche commune. Ils ont deux ensembles
indépendants de bobines.

Moteur pas-à-pas bipolaire

Contrôle d’un moteur unipolaire pas-à-pas par Arduino

Les steppers comme les servomoteurs ne peuvent être contrôlé par simple circuiterie
électronique. Avec une carte Arduino vous avez le choix de concevoir un circuit de
commande d’un stepper à base d’un vecteur de transistor Darlington (ULN2003A) ou d’un
contrôleur de moteur spécialement conçu pour un type de moteur donné, comme le L298n
qui peut aussi servir à contrôler un stepper bipolaire.

La figure ci-dessous montre comment on peut Controller un stepper :

20
Prof. Saad Motahhir ENSA Fès

Sinon, la bibliothèque stepper.h d’Arduino offre un jeu de fonctions qui facilite le contrôle
d’un stepper :

La fonction stepper()

Cette fonction crée une nouvelle instance de la classe Stepper qui


représente un moteur pas-à-pas particulier attaché à votre carte Arduino. (A
utiliser avant le setup() et loop() ).

Syntaxe :

Stepper(steps, 1b, 3b, 2b, 4b)

Steps : le nombre de pas dans d'une révolution de votre moteur.

pinX : les broches sur lesquels votre stepper est connecté.

La fonction setSpeed()

Règle la vitesse du moteur en tours par minute (RPM). Syntaxe :


setSpeed(rpms)

rpms : vitesse désirée en tours par minute.


La fonction step()

Syntaxe :

step(steps)

21
Prof. Saad Motahhir ENSA Fès

steps : nombre de pas à effectuer.

Exemple de programme :

#include <Stepper.h>

Stepper stepper(100, 4, 6, 5, 7);


void setup()
{
stepper.setSpeed(180);
}
void loop()
{
stepper.step(4);
}

1. Contrôler le moteur pas à pas sans utiliser la bibliothèque stepper.h d’IDE.


Après chaque temporisation, tourner le moteur avec un pas.

Brochage du moteur dans Proteus

2. Programmer le moteur unipolaire à mi-pas. Ce code permet que le moteur


tourne dans un angle plus petit gagnant une majeure précision.

22
Prof. Saad Motahhir ENSA Fès

3. Réaliser un circuit de commande d’un stepper unipolaire à l’aide d’un


Darlington ULN2003A et un Arduino UNO. Un bouton poussoir maintenu
permettra de tourner le moteur à un pas chaque seconde dans un sens, un
autre bouton poussoir permet de faire la même chose dans l’autre sens.
4. Ajouter deux bottons poussoirs, un pour augmenter la vitesse et l’autre pour
la diminuer.

23
Prof. Saad Motahhir ENSA Fès

5. Refaire la même chose pratiquement avec le moteur 28BYJ H48 5Vdc. En


somme, un cycle exige 4 pas, un tour complet du rotor exige 8 cycles et un
tour complet de l’axe extérieur demande 64 tours du rotor, c’est pour cette
raison qu’on nécessite 2048 pas pour une révolution (tour) du moteur.

Manipulation 10 : moteur Brushless

Les moteurs Brushless sont de plus en plus fréquemment utilisés en raison de leurs
performances nettement supérieures à celles des moteurs à courant
continu « classiques ». Mais contrairement à ces derniers, leur commande est plus
complexe. Par contre pour faciliter leur commande, on peut utiliser un ESC
(Electronic Speed Control) est un circuit électronique dédié au contrôle de
moteurs électriques.

24
Prof. Saad Motahhir ENSA Fès

Ils possèdent un microcontrôleur (parfois paramétrable), un circuit de puissance


(régulation, pont en H, …) et dans le cas des moteurs brushless, un dispositif
d’acquisition. Ils permettent de gérer :

• La vitesse angulaire
• La direction
• Le freinage

Ils sont couramment utilisés dans les systèmes radio-commandés et par


conséquent possèdent une interface de commande de type servomoteur.

Câblage

25
Prof. Saad Motahhir ENSA Fès

Les ESC possèdent une interface de commande de type servomoteur à 3 fils


(voir contrôle d’un servomoteur). Les deux fils d’alimentation (noir/marron et
rouge) sont censés être utiliser pour alimenter les autres composant reliés au
même système, généralement reliés au même récepteur d’une radiocommande.
Le connecteur rouge de l’ESC ne doit être connecté au 5V de l’Arduino que si la
tension fournie par l’ESC est compatible avec ce dernier ! (souvent, les ESC
fournissent 3.3V seulement : un Arduino UNO devra par conséquent posséder sa
propre source d’énergie).

26
Prof. Saad Motahhir ENSA Fès

1. Développer un programme qui permet de varier la vitesse du moteur


brushless en utilisant un potentiomètre.

Manipulation 11 : Robots

1. Votre mission, consistera à fabriquer un petit robot avec uniquement un


capteur - ici un capteur de distance - et un actionneur - ici un moteur. Si le
capteur de distance détecte quelque chose, alors votre moteur devra se
mettre à tourner. S’il ne détecte rien, votre moteur ne tournera pas.
2. Réaliser un robot détecteur d’obstacle :

27
Prof. Saad Motahhir ENSA Fès

3. Réaliser un solar tracker.


• Ldr top Right est connectée avec la pin A2
• Ldr top left est connectée avec la pin A3
• Ldr Buttom right est connectée avec la pin A4
• Ldr bottom left est connectée avec la pin A5
• Servo moteur up-down est connecté avec la pin 5
• Servo moteur left right est connecté avec la pin 6

28
Prof. Saad Motahhir ENSA Fès

4. Réaliser un bras manipulateur 3 axes (RRR).

29

Vous aimerez peut-être aussi