TPs 1
TPs 1
TPs 1
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
Prof. Saad Motahhir ENSA Fès
Photorésistance
2
Prof. Saad Motahhir ENSA Fès
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.
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.
4
Prof. Saad Motahhir ENSA Fès
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.
• Alimentation : 5v.
• Consommation en utilisation : 15 mA.
• Gamme de distance : 2 cm à 5 m.
• Résolution : 0.3 cm.
• Angle de mesure : < 15°.
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 :
5
Prof. Saad Motahhir ENSA Fès
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é.
6
Prof. Saad Motahhir ENSA Fès
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.
Liste du matériel :
Arduino Uno
plaquette d'essai
buzzer
7
Prof. Saad Motahhir ENSA Fès
Câblage : Programme :
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
}
}
8
Prof. Saad Motahhir ENSA Fès
9
Prof. Saad Motahhir ENSA Fès
Code :
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°");
}
Manipulation 6 : Servomoteur
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 :
11
Prof. Saad Motahhir ENSA Fès
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 :
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 :
Brochage :
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.
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.
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);
}
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);
}
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
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.
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.
ENABLE1 - permet d'envoyer (ou pas) la tension sur les sorties du moteur via
OUTPUT1 & OUTPUT2.
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.
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 :
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é.
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.
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.
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()
Syntaxe :
La fonction setSpeed()
Syntaxe :
step(steps)
21
Prof. Saad Motahhir ENSA Fès
Exemple de programme :
#include <Stepper.h>
22
Prof. Saad Motahhir ENSA Fès
23
Prof. Saad Motahhir ENSA Fès
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
• La vitesse angulaire
• La direction
• Le freinage
Câblage
25
Prof. Saad Motahhir ENSA Fès
26
Prof. Saad Motahhir ENSA Fès
Manipulation 11 : Robots
27
Prof. Saad Motahhir ENSA Fès
28
Prof. Saad Motahhir ENSA Fès
29