Vous êtes sur la page 1sur 136

Fabriquer un

objet connecté
avec Arduino
Pole de l’Etudiant Entrepreneur de Sfax
Sfax 11-13 Fév. 2021

Dr. Ing. Mohamed OULD ELHASSEN


Maitre-assistant
Consultant en IoT et Industrie 4.0
Plan de la formation

Jour 1 : Connaître les bases d’Arduino, cartes


programmables et la programmation embarquée

Jour 2 : Réaliser et programmer un circuit


Arduino à base de capteurs et actionneurs

Jour 3 : Approfondir la programmation Arduino


et la communication entre objets à base
d’Arduino
2
Jour 02

Réaliser et programmer un circuit Arduino à


base de capteurs et actionneurs
Plan de la journée
• Compétence-01: Maitriser l’environnement de
conception et de prototypage de circuits à base
d’Arduino
– Explorer l’environnement « Fritzing » et connaitre ses
caractéristiques essentielles
– Connaitre les entrées sorties numériques et analogiques
• Compétence-02 : Connaitre et travailler avec les
composants électroniques nécessaires pour la mise en
place d’un circuit à base de l’Arduino
– Extraire les données à partir des capteurs
– Savoir manipuler les actionneurs

4
Compétence 01

Maitriser l’environnement de conception et


de prototypage de circuits à base d’Arduino
09h00’-12h00’
Présentation de la compétence
• Cette compétence permet de :
– Explorer l’environnement « Fritzing » et connaitre ses
caractéristiques essentielles
• Concevoir un circuit à base de schématique et comment passer au
prototype
• Réaliser un circuit simple à base d’Arduino
• Prototyper un circuit électronique à base d’Arduino
– Connaitre les entrées sorties numériques et analogiques
• Maitriser les opérations de numérisation et distinguer entre DAC
et ADC
• Comprendre la PWM et Duty Cycle

6
Plan de la compétence
• Activité 01 : Explorer l’environnement «
Fritzing » et connaitre ses caractéristiques
essentielles
• Activité 02 : Connaitre les entrées et les
sorties

7
Activité 01

Explorer l’environnement « Fritzing » et


connaitre ses caractéristiques essentielles
(01h30’)
Objectifs de l’activité
• A la fin de cette activité les apprenants
doivent :
– Explorer les environnements de CAO
– Comprendre les différentes interfaces du logiciel
Fritzing
– Pouvoir utiliser les commandes nécessaires de
l’environnement pour prototyper un circuit à base
de l’Arduino

9
Intro aux CAO des circuits imprimés
• De nos jours l’électronique est présente dans
la moindre de nos activités quotidiennes :
– Voitures, cafetières, téléphones portables,
appareils photo et bien sur particulièrement dans
les ordinateurs.
• Toutes ces applications nécessitent la
réalisation d’une carte électronique.

10
Intro aux CAO des circuits imprimés
• Une carte électronique est un ensemble de
composants tel :
– Résistances, condensateurs ou circuits intégrés
réunis sur une plaque de manière à former un
circuit destiné à un usage précis.
• Cela nous amène donc à nous demander :
– Quels sont les différentes étapes, de la
conception à la fabrication, dans la réalisation
d’une carte électronique?

11
Intro aux CAO des circuits imprimés
• Nous étudierons tout d’abord :
– la conception par ordinateur du circuit
électronique,
– puis la préparation du circuit imprimé

12
Eagle

• EAGLE est un logiciel de


conception PCB
développé par la
société allemande
CadSoft Computer
GmbH créée par Rudolf
Hofer et Klaus-Peter
Schmidiger en 1988.

13
Altium
• Environnement de conception avec
schémas, placement-routage,
documentation et simulation
• Design for Manufacturing (DFM)
pour vous assurer que vos design
de PCB soient fonctionnels, fiables
et puissent facilement être
fabriqués
• Facilité de migration des
informations grâce à des outils de
conversion puissants
• Conception de circuit imprimé
• Conception schématique
• Sorties des fichiers de fabrication

14
Proteus
• La solution de CAO électronique
Proteus a été développée par
Labcenter Electronics Ltd.
• Cette solution se compose de deux
logiciels principaux :
– Proteus ISIS : création de schéma
et simulation électrique
– Proteus ARES : solution de
routage de circuit imprimé avec
placement automatique des
composants

15
Autres CAO
• KiCad
• Cadence OrCAD PCB Designer
• DesignSpark
• Cadstar
• Sprint-Layout
• PADS PCB

16
Fritzing
• Fritzing est une initiative open
source qui a comme objectif de
rendre l'électronique accessible
pour tout le monde.
• Un outil logiciel favorable pour
bien travailler sur des projets de
l'Arduino, favorisant un
écosystème créatif qui permet
aux utilisateurs de :
– se monter leurs prototypes,
de les partager avec d'autres,
– d'enseigner l'électronique
– de concevoir et de fabriquer
des circuits imprimés
professionnels.

17
Fritzing : Interfaces

18
Fritzing
• Télécharger Fritzing :
– https://fritzing.org/download/
• Télécharger « For Free »
– https://www.01net.com/telecharger/windows/M
ultimedia/creation_graphique/fiches/149413.html

19
Lancement de l’environnement

20
Les onglets de navigation : Interface de
câblage

21
Les onglets de navigation : Interface du
schéma structurel

22
Les onglets de navigation : Interface de
circuit imprimé

23
Interface de programmation

24
Exemple

Réaliser un circuit à base d’Arduino


Construction d’un circuit

• Les différents outils de conception


qu'offre le logiciel Fritzing :
1. Plan de câblage du circuit,
2. Schéma structurel,
3. Support PCB.

26
1. Plan de câblage du circuit

27
Sélectionner une carte Arduino Uno

28
Sélectionner une résistance

29
Sélectionner une résistance

30
Ajouter la LED

31
Ajouter la LED

32
Ajouter la LED

33
Raccorder les composants
v

v
34
Raccorder les composants

35
Raccorder les composants

36
Raccorder les composants

37
Ajuster le circuit

38
2. Schéma structurel

39
Organiser les composants

40
Aligner les raccordements

41
Autoroutage

42
Autoroutage

43
3. Circuit imprimé

44
Réorganiser les composants

45
4. Câblage et test

46
Test réel

47
Chargement du programme

48
Test de circuit

49
5. Simulation
https://www.tinkercad.com

50
Simulation

51
6. Prototypage
• Conception sur ordinateur
– Réalisation du schéma
– Router le schéma électrique
• Fabrication du circuit imprimé
– Graver le circuit imprimé

52
Etapes de prototypage
• Mise en place et soudure des composants
– Les composants traditionnels
• Percer le circuit
• Souder les composants
– Les composants SMD
• Dépôt de pâte
• Placement des composants
• Soudure

53
Pause café

54
Activité 2

Connaitre les entrées et sorties de l’Arduino


(01h30’)
Objectifs
• A la fin de cette activité les apprenants
doivent :
– Connaitre les entrées sorties numériques et
analogiques
– Maitriser les opérations de numérisation et
distinguer entre DAC et ADC
– Comprendre la PWM et Duty Cycle

56
Entrés et sorties Arduino

57
Les entrées / les sorties digitales
• Ce sont les deux rangées de connecteurs de
part et d'autre de la carte qui permettent sa
connexion au monde extérieur.
– (D0 à D13)

58
Les entrées / les sorties digitales
• Chacun des connecteurs D0 à D13 peut être
configuré dynamiquement par programmation
en entrée ou en sortie.
• Les signaux véhiculés par ces connecteurs sont
des signaux logiques compatibles TTL, c'est-à
dire qu'ils ne peuvent prendre que deux états
HAUT (5 Volts) ou BAS (0 Volt).

59
Les entrées / les sorties digitales
• En pratique, les connecteurs D0 et D1 réservés
pour la liaison série asynchrone (port COM
virtuel via le câble USB) ne sont pas exploités
pour d'autres utilisations.
• Certains connecteurs peuvent être spécialisés
comme sorties PWM (repérées par un ~) .
– Attention : chacun des connecteurs ne peut
fournir ou absorber un courant supérieur à 40 mA

60
Les entrées analogiques
• Les entrées analogiques peuvent admettre
toute tension analogique comprise entre 0 et
5 Volts.

61
Numérisation d’un signal
• En électronique numérique, on travaille avec des
bits et des octets.
• En analogique, on travaille avec des grandeurs
physiques : tension, courant, résistance,
fréquence, etc.
• Pour pouvoir exploiter des mesures analogiques
avec un microcontrôleur, il faut convertir la
mesure analogique (tension ou courant) en une
grandeur numérique.
– C'est justement le but des convertisseurs
analogique/numérique.

62
Numérisation d’un signal
• Un convertisseur analogique/numérique permet de
mesurer une tension (ou courant) (valeur
analogique) et de représenter cette tension (ou
courant) au moyen d'une valeur numérique.

63
Numérisation d’un signal
• L'idée est simple : associer une valeur
numérique (un nombre entier) pour chaque
valeur analogique d'une plage de tension (ou
courant) bien précise.

64
Numérisation d’un signal
• Analogique et Arduino :
– Dans le cas d'une carte Arduino UNO, il y a 6
entrées analogiques, pouvant mesurer des
tensions comprises entre 0 et 5 V, avec une
précision de 10 bits (soit 1024 points = 210).
• Si on fait rapidement le calcul, 1024 points sur
une plage de 5V donne une précision absolue
de 0,0048828125 V, soit environ 4,89mV.

65
Numérisation d’un signal
• Précautions à prendre !
– Injecter une tension supérieure à 5 volts ou inférieure à 0
volt sur une broche analogique endommagera
immédiatement et définitivement votre carte Arduino.
– La précision de la mesure (10 bits) n'est pas modifiable,
– La mesure prend environ 100µs, cela fait un maximum de
10 000 mesures par seconde,
– Laisser une broche non connectée revient à avoir une
antenne, mesurer une tension sur une broche non
connectée retourne des valeurs de l'ordre de 300 à 500,
même s’il n'y a pas de signal,
– Le résultat est sur 10 bits, soit entre 0 et 1023 (inclus).

66
Comprendre la PWM
• En numérique, les signaux ont toujours une
valeur LOW ou HIGH, le principe de PWM est
de construire un signal qui est alternativement
LOW et HIGH et de répéter très vite cette
alternance.
– La LED est donc alternativement allumée et
éteinte mais le cycle est tellement rapide que la
persistance rétinienne nous donne l’illusion d’une
DEL allumée en permanence.

67
Comprendre la PWM
• Prenons par exemple une période de 10ms,
soit une fréquence de 100Hz.
• Si la LED est allumée pendant 5ms et éteinte
pendant 5ms, l’impression sera une
luminosité de 50% de la luminosité maximum.

68
Comprendre la PWM
• Si la LED est allumée pendant 1ms et éteinte
pendant 9ms, l’impression sera une
luminosité de 10% comme sur la figure ci-
dessous.

69
Comprendre la PWM
• Le pourcentage de temps passé à l’état HIGH
sur la période du signal est appelé le rapport
cyclique.
• Il varie donc de 0%, le signal est tout le temps
LOW, à 100%, le signal est tout le temps HIGH.
– Dutty cycle = 10%

70
Comprendre la PWM
Modèle d’Arduino Broches PWM
Uno, Pro Mini, Nano 3, 5, 6, 9, 10 et 11
Mega 2 à 13, 44 à 46
Leonardo 3, 5, 6, 9, 10, 11 et 13
Due 2 à 13
Zero 2 à 13

Les micro-contrôleurs proposent donc des dispositifs permettant de disposer de


PWM autonomes où le signal voulu est engendré indépendamment de l’exécution
du programme.
Toutes les broches ne sont pas utilisables. Sur l’Arduino Uno, les broches
concernée portent le symbole ’~’

71
Comprendre la PWM

72
Exercice pratique

Controller une LED avec PWM


Liste de composants
• Une carte Arduino
• Une carte d’essai
• Un potentiomètre
• Une LED
• Une Resistance à 220Ohm

74
Contrôler l’intensité d’une LED avec PWM

75
Programme

const int analogPin = 0; void loop()


const int ledPin = 9; {
int inputValue = 0; inputValue = analogRead(analogPin);//read the
int outputValue = 0; value from the potentiometer
void setup() Serial.print("Input: ");
{ Serial.println(inputValue);
Serial.begin(9600);//set the serial outputValue = map(inputValue, 0, 1023,
communication baudrate as 9600 0,255);
} Serial.print("Output: ");
Serial.println(outputValue);
analogWrite(ledPin, outputValue);
delay(1000);
}

76
Pause déjeuner

77
Compétence 02

Connaitre et travailler avec les composants


électroniques nécessaires pour la mise en place
d’un circuit à base de l’Arduino
13h30’-16h30’
Présentation de la compétence
• Cette compétence permet de :
– Extraire les données à partir des capteurs : DHT11,
DHT22, LDR, LM35
– Savoir manipuler les moteurs : Pas à pas, courant
continu, servomoteur

79
Plan de la compétence
• Activité 01 : Présentation des capteurs et leurs
utilisations dans un circuit à base de l’Arduino
• Activité 02 : Présentation des actionneurs et
leurs utilisations dans un circuit à base de
l’Arduino

80
Activité 01

Présenter les capteurs et leurs utilisations


dans un circuit à base de l’Arduino
(01h30’)
Objectifs de l’activité
• A la fin de cette activité les apprenants
doivent :
– Comprendre le fonctionnement de capteurs
– Extraire les données à partir des capteurs : DHT11,
DHT22,
– Capteurs analogique : LDR, LM35

82
Capteur
Capteur : dispositif utilisé pour détecter un événement ou une
grandeur physique, tels que luminosité, température, humidité du
sol, pression, etc. et qui fournit un signal électrique correspondant.

• Les signaux produits par


un capteur sont traités par
un micro-contrôleur pour
l’interprétation, l’analyse et
la prise de décision.
• Exemple : Microphones qui
convertissent les ondes
sonores (acoustiques) en
signaux électriques.
Encore des capteurs
Capteur Description Capteur Description
Interrupteur , poussoir, Capteur de Lumière: détecter
switch la présence de lumière
Application : fin de couse, Application : allumage
interactions avec l’utilisateur, automatique de lumière en
etc.. fonction de
Récupérer : sur de vieux la lumière ambiante, mesure
appareils électroniques, de l’éclairement pour la photo
lecteurs dvd, et
etc… le déclenchement
automatique d’un flash, etc…
Récupérer : Difficile d’en
récupérer.. mais pas cher
neuf.
Potentiomètre : détecter une Joystick : détecter une
rotation variation continue sur 2 axes
Application : interaction avec (souvent
l’utilisateur, réglage, détection avec un interrupteur en plus
d’angle de rotation (voir servo lorsque l’on le pousse)
moteur) Application : Jeu video,
Récupérer : sur de vieux contrôle d’un robot,
appareils audio (amplis, etc..) interaction avec
l’utilisateur, réglages, etc…
Récupérer : sur de veilles
manettes de console.

84
Encore des capteurs
Capteur Description Capteur Description
Température : Mesurer la Humidité : mesure de l’humidité
température ambiante
Application : mesure de la Application : détecter si il pleut,
température ambiante, d’un Récupérer : Difficile d’en récupérer..
liquide mais pas cher neuf.
(ex : aquarium), d’un plat
(thermomètre de cuisine),
d’une carte
électronique, d’un moteur,
etc..
Récupérer : parfois sur de
vieux PC
Présence d’eau : détecte la présence Détecteur magnétique tout ou rien
d’un liquide Application : détecter qu’une porte
Application : arrosage automatique de est ouverte ou fermée
plantes en fonction de l’humidité (alarme)
détectée dans le pot, niveau Récupérer : Sur des alarmes de
automatique d’un liquide (ex :piscine, maison
chasse d’eau..)
Récupérer : Difficile d’en récupérer..
mais pas cher neuf.

85
Encore des capteurs
Capteur Description Capteur Description
Détecteur magnétique Distance
proportionnel (effet hall) Application : mesurer la distance par
Application : détection d’angle sur un rapport à un objet
moteur, de proximité (robot), la taille d’une pièce, etc..
(distance), Récupérer : Difficile d’en récupérer
Récupérer : sur de vieilles
imprimantes laser, sur des lecteurs
cd ou dvd
Détecteur de vibration Son (micro)
Application : Capter un choc, le Application : enregistrer du son,
mouvement d’un objet (ex mesurer du bruit,
:antivol moto ou vélo) Récupérer : Difficile, car même si le
Récupérer : difficile d’en récupérer, micro est présent partout, il faut une
mais pas cher neuf. électronique pour pouvoir l’adapter
sur arduino.

86
Encore des capteurs
Capteur Description Capteur Description
Capteur infra rouge Capteur de mesure de force (FSR)
Application : Recevoir et comprendre Applications: Détecter une pression
la lumière émise par une d’appui, un poids
télécommande télévision, de lecteur Récupérer : C’est pratiquement
dvd impossible à trouver. Par
Récupérer : Sur de veilles télé, de contre, se trouve assez facilement
vieux appareils qui étaient neuf sur les boutiques
commandables par une télécommande arduino.
(lecteurs dvd, etc…)
Accéléromètre Capteur linéaire de mesure de
Application : détecter la position ou force
l’orientation du capteur (ex : tablette, Applications : Détecter une pression
iphone), l’accélération d’un objet en sur une grande longueur
mouvement (robot) (ex: un synthétiseur), une position,
Récupérer : Difficile d’en récupérer.. etc..
mais pas cher neuf. Récupérer : C’est pratiquement
impossible à trouver. Par
contre, se trouve assez facilement
neuf sur les boutiques
arduino.

87
Capteur de mouvement
• Le capteur renvoie un signal qui possède deux états :
un état bas (0 V) lorsque le capteur est au repos, et un
état haut (3,3 V) si un mouvement est détecté.
• Quand un mouvement a été pris en compte, le signal
passe à l'état haut et un délai est déclenché. Une fois
que le délai est terminé, le signal retourne à l'état bas.
• Ce capteur infrarouge a la possibilité d'être paramétré
par son utilisateur. Pour cela, il dispose de deux
potentiomètres pour régler la distance de détection et
la durée de l'état haut. Il y a aussi la possibilité de le
configurer dans deux modes de fonctionnement grâce
à un cavalier à placer entre deux broches.

88
Capteur de mouvement

89
Capteur de mouvement

#define IR_output 2
#define IR_output 2
void setup() {
void setup() {
pinMode(IR_output,INPUT);
pinMode(IR_output,INPUT);
attachInterrupt(digitalPinToInterrupt(IR_outpu
Serial.begin(9600);}
t),detection_IR,CHANGE);
void loop() {
//détecte un changement d'état
if(digitalRead(IR_output)==HIGH){
//sur le signal du capteurSerial.begin(9600);}
Serial.println("mouvement detecte"); }
void loop() {
if(digitalRead(IR_output)==LOW){
}
Serial.println("pas de mouvement
void detection_IR(){
detecte"); }
if(digitalRead(IR_output)==HIGH){
delay(200);
//si le signal est à l'état haut
}
Serial.println("mouvement detecte"); }
if(digitalRead(IR_output)==LOW){
//si le signal est à l'état bas Serial.println("pas
de mouvement detecte"); }}

90
Notion d’interruption pour Arduino
• Problèmes d'entrées/sorties non bloquantes : Il
faut être conscient qu'on peut « rater » des états.
• L'inconvénient est que l'on ne fait rien d'autre
que lire, dans l'attente d'un changement, alors
que dans le code qui suit cette attente, il y a peut
être des tâches indépendantes de la valeur val
qui pourraient être exécutées (mais en les
exécutant, on risque de « rater » le changement
d'état) On consomme beaucoup de cycles CPU
pour rien

91
Notion d’interruption pour Arduino
• On peut faire du Polling (attente active ou «
scrutation »)
– Par exemple dans le loop si on veut attendre que
la broche inPin passe à un état LOW, on peut
utiliser le code suivant :

int val;
do
{
val = digitalRead(inPin);
} while (val!= LOW);
// ici du code à exécuter

92
Capteur d’obstacle Ultrason
Fonctionnement:
Ce module émet un ultrason à 40 KHz qui se déplace dans l'air et s'il
y a un objet ou un obstacle sur son chemin Il se renverra au
module. Compte tenu du temps de déplacement et de la vitesse du
son, vous pouvez calculer la distance.
Les caractéristiques du composant:
Alimentation : 5 Volts
Consommation : 15 milliAmpères
Portée : 3 cm à 250 cm (soit 2.5m)
Typé d'émission : Impulsion TTL de 10µs
Fréquence d'émission : 40k Hertz
Cône d'émission : 30° (soit +/- 15°)

93
Capteur d’obstacle Ultrason

94
• Pour générer l‘ultrason, vous devez régler
le Trig sur un état élevé pour 10 μs. Cela
enverra un éclat sonore à 8 cycles qui se
déplacera au son de la vitesse et il sera
reçu dans la broche Echo.
• Par exemple, si l'objet est à 10 cm du
capteur et que la vitesse du son est de 340
m / s ou de 0,034 cm / μs, l'onde sonore
devra parcourir environ 294 secondes.
Mais ce que vous obtiendrez de la broche
Echo sera le double de ce nombre car la
sonne doit se déplacer vers l'avant et
rebondir. Donc, afin d'obtenir la distance
en cm, il faut multiplier par 0.034 la valeur
de temps de trajet reçue de la broche
d'écho et diviser par 2.
95
Capteur d’obstacle Ultrason

int trigPin = 11; // Trigger


int echoPin = 12; // Echo
long duration, cm, inches;

void setup() {
//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

96
Capteur d’obstacle Ultrason
void loop() { pinMode(echoPin, INPUT);
digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
// Convert the time into a distance
delayMicroseconds(10);
digitalWrite(trigPin, LOW); cm = (duration/2) / 29.1
inches = (duration/2) / 74;
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(250);
}

97
Capteur de température DHT11

98
Capteur de température DHT11
#include <dht11.h> void loop()
#define DHT11PIN A0 {
dht11 DHT11; DHT11.read(DHT11PIN);
void setup()
{ Serial.print("Humidité (%): ");
Serial.begin(9600); Serial.print((float)DHT11.humidity, 2);
Serial.println("DHT11 programme d'essai "); Serial.print("\t");
Serial.println(); Serial.print("Température (°C): ");
} Serial.println((float)DHT11.temperature, 2);

delay(2000);
}

99
Ateliers pratiques

Réaliser une station météo


Matériels nécessaires
• Carte Arduino
• Capteur DHT11
• Plaque d’essai
• Afficheur 7 segments avec bibliothèque
« SevSeg »

101
Afficheur 7 segments
• L’affichage sur un afficheur 7 segments est une
solution pour l’affichage de la valeur de température.

102
Station metéo

103
Calcul de la valeur de température
#include "SevSeg.h"
SevSeg sevseg;

void setup(){
byte numDigits = 4;
byte digitPins[] = {10, 11, 12, 13};
byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};

bool resistorsOnSegments = true;


bool updateWithDelaysIn = true;
byte hardwareConfig = COMMON_CATHODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}

void loop(){
sevseg.setNumber(4999, 3);
sevseg.refreshDisplay();
}

104
Pause café

105
Activité 2

Présenter les actionneurs et leurs utilisations


dans un circuit à base de l’Arduino
(01h30’)
Objectifs
• A la fin de cette activité les apprenants
doivent :
– Comprendre le principe d’actionneurs
– Savoir manipuler les moteurs : Pas à pas, courant
continu, servomoteur
– Câbler un circuit à moteur en utilisant un driver
L298

107
Actionneur

Actionneur : une technologique


complémentaire aux capteurs, convertit
l'énergie électrique en mouvement ou
énergie mécanique.

• Les Actionneurs permettent de


transformer l’énergie reçue en un
phénomène physique (déplacement,
dégagement de chaleur, émission de
lumière …).
• Exemple : Haut-parleurs qui
convertissent les signaux électriques
correspondants en sons ondes
(acoustiques).l
Encore des actionneurs
Capteur Description Capteur Description
Led Relais
Application : Signaler un évènement Application : Commander un
avec de la lumière diapositive électrique en tout ou
Récupérer : très facile, pratiquement rien, mais qui consomme beaucoup
tous les appareils électroniques en (ex: radiateur)
ont.. Récupérer: Cela nécessite une
électronique d’adaptation, donc
préférer l’achat d’un module arduino
neuf.
Matrices de led Ecran texte
Application : Afficher des signes, Application : Signaler des choses ou
dessiner, journal lumineux, dialoguer avec l’utilisateur
etc.. Récupérer : Assez facile à récupérer
Récupérer : C’est pratiquement sur des imprimantes, ou
impossible à trouver. Par contre, se de vieux copieurs (les récents ont des
trouve assez facilement neuf sur les afficheurs graphiques).
boutiques
arduino.

109
Encore des actionneurs
Capteur Description Capteur Description
Ecran Graphique Moteurs pas à pas
Application : Signaler des choses ou Application : Déplacer précisément
dialoguer avec l’utilisateur d’une certaine rotation, ou Controller
Récupérer : Il y en a sur tous les la vitesse de rotation, par exemple sur
téléphones, mais la connexion avec une machine
une arduino nécessite d’être fort en outil, un robot, une imprimante, etc..
électronique. Préférer l’achat neuf Nécessite une carte électronique.
d’un kit pour arduino. Récupérer : Sur de veilles
imprimantes ou de vieux
photocopieurs (gros).
Moteur continu Servos moteurs de modélisme
Application : faire des mouvements Application : déplacer précisément
rotatifs tout ou rien (facile) ou (rotation ou translation).
contrôlés en vitesse (plus dur) pour Facile à piloter, mais peu puissant. Ne
bouger un robot ou un permet pas la rotation continue, mais
volet roulant par exemple que d’une fraction de tour (3/4 a peu
Récupérer : sur de vieux jouets près).
Récupérer : Difficile, à moins d’en
récupérer sur un modèle réduit, pas
cher à l’achat.

110
Moteur pas à pas
• Les moteurs pas-à-pas possèdent différentes
phases qui permettent d’orienter la position du
rotor.
• On peut donc transformer une séquence
d’impulsions sur les différentes phases en
déplacement angulaire.
• Comme la séquence à envoyer pour obtenir un
certain déplacement est connue, on peut
connaitre la position sans capteur
supplémentaire et donc de piloter le moteur
précisément en boucle ouverte.

111
Moteur pas à pas

112
Moteur pas à pas

113
Bibliothèque « Stepper.h »
#include <Stepper.h>
double stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); // Pin inversion to make the library work
void setup() {
myStepper.setSpeed(10);
Serial.begin(9600);
}

void loop() {
// 1 rotation counterclockwise:
Serial.println("counterclockwise");
myStepper.step(stepsPerRevolution);
delay(1000);

// 1 rotation clockwise:
Serial.println("clockwise");
myStepper.step(-stepsPerRevolution);
delay(1000);
}

114
Servomoteur
• On appelle « servomoteur », un moteur asservi
(rien à voir avec le cerveau !).
• Asservir un système, c’est le commander de
manière à ce que la consigne (ce que l’on attend
de lui = ce qu’on lui demande de faire) soit en
permanence comparée à sa sortie mesurée (ce
qu’il fait réellement).
• Il existe des servomoteurs asservis :
– en position : la consigne est un angle
– en vitesse : la consigne est une vitesse angulaire

115
Servomoteur
• En robotique, on utilise souvent des petits
servomoteurs d’aéromodélisme comprenant :
– un moteur à courant continu de très petite taille ;
– un réducteur diminuant la vitesse mais augmentant le
couple ;
– un potentiomètre qui génère une tension variable,
proportionnelle à l’angle de l’axe de sortie ;
– un dispositif électronique d’asservissement ;
– un axe dépassant hors du boîtier avec différents bras
ou roues de fixation.

116
Servomoteur

117
Servomoteur
• Ces servomoteurs sont commandés par
l’intermédiaire d’un câble électrique à trois fils
:
– Masse : Noir ou Marron
– 5V : Rouge
– Signal : Jaune ou Blanc ou Bleu

118
Servomoteur

119
Faire bouger le bras d'un servomoteur
dans les deux sens
Servo monServo;
void setup()
{
monServo.attach(9); //on définit le Pin utilisé par le servomoteur
}
void loop()
{
for (int position = 0; position <=180; position ++){
//on crée une variable position qui prend des valeurs entre 0 à 180 degrés
monServo.write(position);
delay(15);
}
for (int position = 180; position >=0; position --){
monServo.write(position);
delay(15);
}
}

120
Moteur à courant continu
• Un moteur à courant continu est une machine
électrique de type convertisseur
électromécanique.
• En fonctionnement « moteur », il réalise la
conversion d’énergie électrique en énergie
mécanique.

121
Contrôler un 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, étant donné qu’il s’agit de moteurs synchrones : il
faut générer 3 signaux de fréquence multiple de la fréquence
de rotation, et déphasés de 120°.

122
Contrôler un moteur Brushless

123
Pont en H L298N
• Ce circuit, très populaire et bon marché
(moins de 3€), offre un bon moyen de piloter
jusqu’à deux moteurs à courant continu, ou
bien un moteur pas à pas, voire même un
moteur brushless.
• Il peut délivrer jusqu’à 2A en pointe et 20W en
continu.
• Il possède son propre circuit d’alimentation
logique (permettant d’alimenter l’Arduino)

124
Pont en H L298N

125
Pont en H L298N
• Les ports ENA et ENB permettent de gérer
l’amplitude de la tension délivrée au moteur,
grâce à un signal PWM.
• Les ports In1, In2 pour le moteur A et In3, In4
pour le moteur B, permettent de contrôler le
pont en H et par conséquent le sens de
rotation des moteurs.

126
Câblage

127
Programmation
// Pont en H L298N

//Ports de commande du moteur B


int motorPin1 = 8;
int motorPin2 = 9;
int enablePin = 5;

// Vitesse du moteur
int state = 0;

void setup() {
// Configuration des ports en mode "sortie"
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(enablePin, OUTPUT);

// Initialisation du port série


Serial.begin(9600);
}

128
Programmation
void loop() {
if (Serial.available() > 0)
{
// Lecture de l'entier passé au port série
state = Serial.parseInt();

//
// Sens du mouvement
//
if (state > 0) // avant
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
Serial.print("Avant ");
Serial.println(state);
}

129
Programmation
else if (state < 0) // arrière
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
Serial.print("Arriere ");
Serial.println(state);
}
else // Stop (freinage)
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
Serial.println("Stop");
}

//
// Vitesse du mouvement
//
analogWrite(enablePin, abs(state));
}
delay(100);
}

130
Atelier pratique

Controller un servomoteur en utilisant un


potentiomètre
Objectifs
• L’objectif ici est de :
– Se familiariser avec les moteurs
– Commander un servomoteur
– Faire varier la position en utilisant un
potentiomètre

132
Liste de composants
• Carte Arduino
• Potentiomètre
• Servomoteur
• Carte d’essai

133
Contrôller un servomoteur

134
Programme

#include <Servo.h> void loop()


Servo myservo; {
int potpin = 0; val = analogRead(potpin);
int val; val = map(val, 0, 1023, 0, 180);
Int serv = 9; myservo.write(val);
delay(15);
void setup() }
{
myservo.attach(serv);
}

135
Bonne fin de la journée

Dr. Mohamed OULD ELHASSEN 136

Vous aimerez peut-être aussi