BUT3_Mecatronique
BUT3_Mecatronique
BUT3_Mecatronique
R5.10 - Mécatronique
Support de cours
Thomas Fromentèze
Cours - Mécatronique S5
1 Introduction et objectifs
Des compétences solides en mécanique sont incontournables pour la suite de votre carrière
professionnelle ou pour vos poursuites d’étude, mais vous serez de plus en plus fréquemment
confrontés à des problématiques en lien avec l’automatisation, l’électronique et la programma-
tion. L’ensemble de ces compétences forment la mécatronique (Fig. 1), un domaine d’ingénierie
dont les spécialistes sont particulièrement recherchés.
Automatisation
Systèmes de
commandes Électronique
numériques de contrôle
Électro-
CFAO
mécanique
Mécanique
Ces compétences permettent le développement de systèmes complexes qui trouvent des appli-
cations dans de très nombreux domaines (Fig. 2). Leur maı̂trise permet d’assurer la conception
de machines programmables à la fois performantes, flexibles, fiables et interactives.
1
Cours - Mécatronique S5
Ce cours est organisé autour d’un projet commun ayant pour objectif d’assembler et de
programmer un véhicule autonome.
Pour l’évaluation des travaux pratiques, vous participerez en binômes ou trinômes à une
compétition commune aux trois parcours où votre robot sera évalué pour l’exécution d’un ob-
jectif chronométré.
L’ensemble de ces éléments forme une chaı̂ne d’information décrite dans la figure ci-dessous :
Unité de
Capteur Amplificateur CAN Traitement CNA Amplificateur Actionneur
Numérique
∩ #
# ... ... ∩
Tous les éléments sont organisés autour d’une unité de traitement numérique qui pour
nous sera un microcontrôleur Arduino. Ce dernier est équipé de convertisseurs analogique-
numérique et numérique-analogique (CAN et CNA) qui permettent de traduire les informations
des capteurs et actionneurs en signaux logiques interprétés par le microcontrôleur. Ces systèmes
reposent aussi sur l’exploitation de modules permettant l’amplification et le filtrage des signaux.
Ces deux problématiques seront considérées hors-programme dans cette ressource par manque
de temps mais peuvent s’avérer incontournables dans certaines situations.
2
Cours - Mécatronique S5
Figure 5 – Drone à propulsion omni-directionnelle conçu par Aerix Systems, fondé par
Hugo Mayounove et Clément Picaud, DUT GMP de Limoges en 2017.
Collecte de données par des capteurs : Un drone peut être équipé de plusieurs capteurs,
dont une caméra, un gyroscope, un accéléromètre, un GPS et un altimètre. Ces capteurs four-
nissent des informations en temps réel sur l’environnement du drone et ses mouvements.
Traitement des données et prise de décisions : L’ordinateur de bord traite les données
des capteurs pour déterminer la position actuelle du drone, sa vitesse, son orientation, etc. Il
peut également analyser les images de la caméra pour identifier des objets ou des personnes. Sur
la base des données traitées, l’ordinateur de bord prend des décisions pour piloter le drone. Par
exemple, il peut décider de changer la direction du drone pour éviter un obstacle, de modifier
l’altitude pour suivre une cible, ou d’atterrir si la batterie est faible.
Gestion des actionneurs : Les signaux analogiques sont envoyés aux actuateurs du drone
(moteurs, servomoteurs, etc.) pour exécuter les commandes. Les moteurs sont asservis pour
faire décoller le drone, modifier sa direction ou sa vitesse, ou pour le faire atterrir.
3
Cours - Mécatronique S5
Alimentation
(si nécessaire)
Signal électrique
Grandeur physique
Capteur (analogique,
(T,P,m, ...)
logique TOR)
Figure 6 – Schéma de principe d’un capteur permettant de convertir une grandeur physique
en signal électrique.
Vcc
•
Dans les cas les plus simples et les plus cou-
rants, les capteurs font varier une valeur
Résistance
de résistance électrique en fonction d’une R
du capteur
influence extérieure. La mesure d’un cap-
teur résistif nécessite alors le simple mon-
tage d’un pont diviseur de tension à l’aide
d’une résistance de référence, dont la va- •
leur est stable et précisément connue. Pour
rappel, la formule du pont-diviseur est la
suivante :
R0 Résistance Tension U mesurée
R0
U= Vcc (1) de référence pour déduire R
R + R0
Ces étapes sont généralement programmées dans le microcontrôleur, qui pourra ainsi réaliser
la mesure de tension U et fournir directement la valeur de G, exploitée dans la suite de son
code pour des prises de décisions.
Quelques capteurs sont présentés. Ces exemples sont en partie adaptés de mon précédent
cours d’électricité de BUT1 - Motorisation et Capteurs.
4
Cours - Mécatronique S5
2.1.1 Potentiomètres
Un potentiomètre est un composant permettant de faire
varier une résistance en fonction de la position d’un curseur.
La majorité des potentiomètres sont rotatifs, permettant
de lier une position angulaire à une valeur de résistance
entre deux de ses bornes. Les joysticks des manettes de jeux
vidéo et des interfaces de pilotage sont ainsi généralement
constitués de deux potentiomètres (un par axe). Il existe
aussi des potentiomètres à glissière (aussi appelés slider ) où
la position du curseur en translation permet de faire varier la
résistance entre deux bornes.
Un potentiomètre présente trois pattes d’accès et peut être étudié à partir du schéma
équivalent suivant :
Schéma équivalent
Vcc Vcc
Ra
Rb
En appliquant une tension Vcc sur une de ses bornes, on retrouve le schéma d’un pont divi-
seur de tension sans même avoir besoin d’une résistance supplémentaire. La position du curseur
permet alors de faire varier la tension mesurée entre Vcc et 0V, qui est le potentiel de la masse.
La résistance totale Rpot est nécessairement définie telle que Rpot = Ra + Rb . Pour nos
applications, nous utiliserons le plus souvent des potentiomètres dont la résistance totale est
de l’ordre du kΩ mais il existe toute une variété de composants du commerce compris entre
quelques Ω et quelques dizaines de M Ω.
Exemples d’applications :
— Contrôle de vitesse de moteur : Ajustement de la vitesse d’un moteur DC en modi-
fiant la tension d’entrée.
— Réglage de position : Utilisé comme capteur de position dans des systèmes asservis
pour obtenir un retour d’information sur la position d’un élément mobile.
— Interface utilisateur : Ajustement du volume, de la luminosité ou d’autres paramètres
dans des dispositifs électroniques interactifs.
5
Cours - Mécatronique S5
Vcc
Source : https ://learn.adafruit.com/
Exemples d’applications :
— Systèmes de détection de niveau de remplissage : Utilisé dans des applications où
le poids d’un récipient varie en fonction du niveau de remplissage, comme une cafetière
ou une machine de distribution.
— Contrôle de la préhension en robotique : Mesure de la force de préhension d’une
pince robotique pour éviter d’endommager des objets fragiles.
— Interfaces tactiles : Création d’interfaces utilisateur sensibles à la pression.
6
Cours - Mécatronique S5
Exemples d’applications :
— Gants interactifs : Utilisés pour détecter les mouvements des doigts dans des applica-
tions de réalité virtuelle ou de contrôle robotique.
— Surveillance médicale : Suivi de la mobilité articulaire chez les patients pour la
rééducation ou la détection des anomalies.
— Jouets interactifs : Intégrés dans des jouets pour détecter les mouvements et activer
certaines fonctions ou réponses.
ρLf ρLi F~ • •
F~
∆R = Rf − Ri = −
Sf Si
En lien avec les éléments introduits en BUT1, les jauges d’extensométrie sont généralement
7
Cours - Mécatronique S5
associées à des pont de Wheatstone, un pont en H formé à partir de deux ponts diviseurs pour
gagner en sensibilité sur les variations des jauges et permettre une compensation des effets de
température.
Exemples d’applications :
Quelques avantages et inconvénients pour chaque solution sont rassemblés dans le tableau
suivant :
8
Cours - Mécatronique S5
9
Cours - Mécatronique S5
Ce circuit permet de réaliser un suivi de position relatif, en calculant notamment les vitesses
de déplacement puis les coordonnées spatiales par une série d’intégrations. Il faut donc disposer
d’un point initial pour le calcul de la position, et d’éventuels points de recalages fournis par
d’autres outils. En pratique, le cumul rapide d’erreurs d’intégration liées aux incertitudes de
mesure impose souvent de coupler ces données avec des informations d’autres capteurs, notam-
ment optiques ou par GPS.
Exemples d’applications :
— Stabilisation des caméras : Les IMU fournissent des informations en temps réel sur
les mouvements et les inclinaisons, permettant de stabiliser activement les caméras dans
les drones, les smartphones ou les équipements professionnels de prise de vue.
— Contrôle de la navigation des drones : Les drones utilisent des IMU pour aider à
déterminer leur orientation et leur mouvement, en complément d’autres capteurs comme
le GPS, pour effectuer des vols stables et suivre des trajectoires prédéterminées.
— Suivi des mouvements en réalité virtuelle et augmentée : Les dispositifs de réalité
virtuelle et augmentée utilisent des IMU pour suivre les mouvements de la tête ou des
mains de l’utilisateur, permettant une interaction fluide et immersive avec les environ-
nements virtuels.
2.1.8 Encodeurs
Les encodeurs (ou codeurs dans certaines
ressources) permettent d’assurer le suivi d’un
déplacement, le plus souvent sur des axes en
rotation au moyen d’encodeurs rotatifs. Ils
fournissent ainsi un signal électrique composé
d’impulsions interprétables par un micro-
contrôleur.
10
Cours - Mécatronique S5
Exemples d’applications :
Exemples d’applications :
— Détection d’obstacles : Les robots mobiles utilisent le HC-SR04 pour détecter et éviter
les obstacles sur leur chemin, ce qui leur permet de naviguer de manière autonome sans
collision.
— Mesure de niveau : Le HC-SR04 peut être utilisé pour déterminer le niveau de liquide
dans un réservoir en mesurant la distance entre le capteur et la surface du liquide,
fournissant ainsi des données en temps réel pour des applications comme l’irrigation ou
la gestion de l’eau.
11
Cours - Mécatronique S5
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
V
− − − ~E
− −
− −
− −
−
− −
− −
−
− −
− −
−
− −
− −
−
Lorsqu’un objet est approché du capteur, le champ électrique tend à créer une migration de
charges électriques à sa surface, induisant un effet capacitif parasite venant perturber la valeur
initiale.
+ +
+ +
+
+ +
+ +
+
+ + −
+ − −
+ + −
+ −
+ − −
+ + −
+ − −
+ + −
+ − −
+ + −
−
V
− − − ~E
− −
− + +
− − +
− + +
−
− + +
− − +
− + +
−
− + +
− − +
− + +
−
− −
− −
−
La détection d’une variation de capacité sur un tel montage permet finalement de déterminer
si un objet est présent sans contact.
12
Cours - Mécatronique S5
Source : Heschen.com
Exemples d’applications :
— Détection de niveau de liquides : Les capteurs capacitifs sont utilisés pour détecter
le niveau de liquides dans des réservoirs, même lorsque ces liquides sont contenus dans
des récipients non métalliques.
— Commandes tactiles : Dans les interfaces utilisateur modernes, comme les écrans
tactiles des smartphones et des tablettes, les capteurs capacitifs détectent la présence et
la position des doigts de l’utilisateur.
— Détecteurs de proximité : Contrairement aux capteurs inductifs, les capteurs capa-
citifs peuvent détecter des objets non métalliques, comme le plastique ou le verre, les
rendant utiles dans des applications telles que la détection de la présence d’une bouteille
sur une chaı̂ne de production.
Amplificateur Trigger
de Schmitt Oscillateur
V L
Figure 10 – Induction d’un champ magnétique parasite causé par l’approche d’une pièce
métallique, alors détectée sans contact.
Comme pour les capteurs capacitifs, ces effets ne sont pas observables avec des signaux de
tension continue. On utilise alors la combinaison d’un oscillateur, permettant lé génération d’un
signal alternatif, avec un trigger de Schmitt assurant le déclenchement d’un seuil de détection
traduit en signal de tension Tout-Ou-Rien.
L’ensemble de ces éléments est livré dans un packaging à l’apparence très proche de celle du
capteur capacitif présenté précédemment.
13
Cours - Mécatronique S5
Exemples d’applications :
Il semble donc incontournable de disposer d’un circuit permettant de récupérer des signaux
de tension issus des capteurs et les convertir en informations binaires interprétables par un
microcontrôleur.
Signal Signal
analogique numérique
U
1
• 1
CAN 0
...
1
Figure 11 – Conversion d’un échantillon de tension issu d’un capteur en signal numérique.
Pour aller plus loin, il est nécessaire de différencier deux types de signaux variant de façon
continue ou obéissant à une logique Tout-Ou-Rien. Il sera ensuite utile d’étudier rapidement les
opérations de quantification et de numérisation des informations mesurées.
La conversion d’un signal Tout-Ou-Rien répond à une logique beaucoup plus simple. La
tension d’entrée ne pouvant prendre que deux valeurs, la conversion binaire est donc directe.
14
Cours - Mécatronique S5
Signal Signal
continu Tout-Ou-Rien
U U
t t
Par exemple :
si U (t) = 5V → 1
si U (t) = 0V → 0
Un signal Tout-Ou-Rien issu par exemple d’un bouton est ainsi très proche d’un signal
numérique binaire et nécessite une opération de conversion plus simple.
Ces différences ont un impact direct sur les types de convertisseurs habituellement embarqués
au sein de microcontrôleurs, adaptés au choix aux signaux analogiques ou ”numériques” (jusqu’à
présent appelés Tout-Ou-Rien).
Les caractéristiques d’un convertisseur dépendent du nombre de niveaux de tension qui sont
convertis et de sa fréquence d’échantillonnage Fs . Cette dernière est liée à la durée Ts entre
deux conversions successives, suivant la relation :
1
Fs =
Ts
Le théorème de Shannon impose d’utiliser une fréquence au moins deux fois
supérieure à la fréquence maximale du signal à mesurer.
La résolution en amplitude d’un CAN est quant à elle définie par le nombre de niveaux
disponibles pour la conversion.
Dans l’exemple simplifié illustré pour faciliter les explications, chaque niveau de tension est
codé à l’aide de seulement 3 bits. Le nombre de niveaux répartis sur une dynamique de 5V
15
Cours - Mécatronique S5
Amplitude(V)
111 5V
110 • • •
101 • • •
100 •
011 • • • • • •
010 • • •
q
001 •
000 0V
t(s)
Ts
est alors de 23 = 8. La résolution en amplitude, aussi appelée quantum, est définie pour cet
exemple telle que :
5
q= = 0.625V
23
Cette valeur correspond à la différence de tension nécessaire au passage d’un niveau au
suivant. Dans cet exemple, les codes binaires transmis au microcontrôleur sont donc :
Pour diminuer l’erreur liée à la faible résolution en tension de l’exemple considéré, on utilise
souvent des CAN codés sur au moins 10 bits, impliquant 210 = 1024 niveaux disponibles. De
façon générale, le quantum prend alors la forme :
Vmax − Vmin
q=
2N
avec :
— Vmax − Vmin correspondant à la plage de tension de fonctionnement. On parle aussi de
pleine échelle.
— N est le nombre de bits utilisés pour la conversion.
En fonction des architectures considérées, il existe aussi une variante à cette formule :
Vmax − Vmin
q=
2N − 1
En comparaison du cas précédent, l’information est codée sur un niveau en moins. La for-
mule adaptée à votre convertisseur sera généralement fournie dans sa documentation.
Nos applications seront réalisées à l’aide d’un microcontrôleur Arduino UNO, doté d’un
ensemble de 6 CAN 10 bits fonctionnant entre 0V et 5V. Leurs entrées sont nommées de A0 à
A5. L’information renvoyée par l’Arduino est un code décimal plutôt qu’un code binaire. Les
niveaux de tension seront donc codés entre 0 et 1023.
L’Arduino UNO est aussi équipé d’un maximum de 14 entrées numériques, nommées de 0
à 13, qui permettent la numérisation des signaux Tout-Ou-Rien, par exemple issus de boutons.
16
Cours - Mécatronique S5
Ces entrées sont codées sur 1 bit, soit deux niveaux de tension.
La mécatronique fonctionne selon un principe similaire, plus souvent motivé par les li-
mitations des microcontrôleurs à fournir des puissances électriques importantes. Il sera donc
nécessaire pour le fonctionnement de beaucoup d’actionneurs (notamment des moteurs électriques),
d’utiliser une chaı̂ne de puissance séparée, contrôlée par nos microcontrôleurs.
Contrôlé par
microcontrôleur
V0 M
L’objectif est donc de disposer d’une source capable de délivrer un courant important à
tension constante, par l’intermédiaire d’un élément répondant à un programme informatique.
La commande d’un tel interrupteur piloté peut être réalisée par des relais. Ces derniers sont
notamment fabriqués au moyen d’une bobine dont l’alimentation génère un champ magnétique
permettant d’ouvrir ou de fermer des contacts électriques.
Figure 15 – Relais électriques dans différents boı̂tiers. Le relai de droite est associé à un octo-
coupleur pour améliorer l’isolation de la commande et la puissance. Source : Directindustry
Les relais électromécaniques, bien que robustes, souffrent de limitations telles que des temps
de commutation assez lents et une usure mécanique. Les ponts en H, en revanche, offrent un
contrôle bidirectionnel des moteurs avec une commutation rapide et sans pièces mobiles.
17
Cours - Mécatronique S5
A titre d’exemple, le changement de sens de rotation d’un moteur à balais nécessite d’in-
verser les potentiels électriques appliqués au collecteur. Plutôt que d’échanger manuellement la
position des fils d’alimentation, il est possible d’utiliser ce circuit dédié.
a b
a b
U M espace
I
U M
c d
c d
a b
espace
U M
I
c d
Il faut bien sûr éviter de fermer simultanément les contacts a et c ou les contacts b et d afin
de ne pas court-circuiter la source de tension. Certains ponts en H sont directement câblés pour
interdire de telles combinaisons par sécurité.
L’exemple est ici donné pour le cas le plus simple d’un moteur à courant continu mais le
principe de fonctionnement est équivalent pour un moteur pas à pas, notamment utilisé pour
l’ensemble des machines à commandes numériques comme les imprimantes 3D.
18
Cours - Mécatronique S5
tionneur. La tension à ses bornes est un peu plus faible que celle de l’alimentation, une partie
étant absorbée par les transistors.
Dans la partie suivante, une technique permettant de contrôler le niveau de tension appliquée
à un actionneur à partir d’une tension d’alimentation fixe est détaillée.
Une astuce basée sur la modulation de largeurs d’impulsions est détaillée dans cette partie.
On retrouve généralement le terme PWM sur les applications d’électronique, pour Pulse Width
Modulation. Le principe consiste à commuter rapidement l’état des transistors, formant des
trains d’impulsions dont on contrôle la largeur.
U (V) U (V)
τ
α= T
Vcc Vcc
Après
lissage
αVcc
τ t(s) t(s)
T
U (V) U (V)
τ
α= T
Vcc Vcc
Après
lissage
αVcc
τ t(s) t(s)
T
U (V) U (V)
τ
α= T
Vcc Vcc
Après
αVcc
lissage
τ t(s) t(s)
T
La tension moyenne obtenue après lissage est proportionnelle au rapport cyclique (duty
cycle en anglais), défini telle que :
19
Cours - Mécatronique S5
τ
α=
T
où τ est la durée des impulsions de tension et T la période entre deux impulsions successives.
Dans un circuit sans pertes, la tension continue est alors de αVcc , où Vcc est la tension d’ali-
mentation du pont en H. En pratique, des pertes de tension induisent une variation sur une
plage réduite.
Le lissage des impulsions de tension peut être réalisé au moyen d’un filtre passe-bas, constitué
d’une résistance en série et d’une capacité entre la sortie de la résistance et la masse. Les ali-
mentations à découplage fonctionnent selon un principe analogue.
Dans nos cas, il est possible de connecter directement le pont en H sur un moteur électrique.
Ce sont cette fois les impulsions de courant dans le bobinage qui seront lissés par effet inductif,
permettant de contrôler la vitesse de rotation par alimentation PWM.
Il possible d’alimenter certains petits servo-moteurs directement par Arduino UNO, ce der-
nier étant capable de fournir un courant maximal de l’ordre de 40 mA par broche sur 5V.
Les servo-moteurs plus gros nécessiteront une alimentation séparée pour fournir un couple plus
important. Le microcontrôleur ne servira alors qu’à envoyer le signal de commande PWM pour
asservir la position angulaire du rotor.
20
Cours - Mécatronique S5
Caractéristiques principales :
Entrées/sorties
numériques
0-13 Sortie série 1
Entrée série 0
Bouton reset
Port USB
Microcontrôleur
Régulateur 5V
Alimentation 9V
Entrées
Sortie alimentation Masse analogiques
(3V-5V, 50mA max) (GND) A0-A5
Avec l’ensemble des éléments présents sur la carte permettant l’acquisition, le traitement et
la génération de signaux, il est possible de réaliser des tâches diverses en lien avec la domotique,
la robotique, la réalisation de prototypes et l’électronique embarquée.
Arduino propose sa propre interface de développement (IDE), qui permet à la fois de tester
la compilation des codes et de les téléverser dans la mémoire des microcontrôleurs.
21
Cours - Mécatronique S5
La structure des codes est imposées pour le bon fonctionnement de la carte. Un exemple
est donné à partir du site de simulation tinkercad.com (nécessite une inscription mais gratuit
pour l’instant).
Dans cet exemple, une LED est connectée aux ports 13 et GND de l’Arduino. L’objectif est
de faire clignoter cette dernière. On identifie trois parties dans le programme :
Dans l’exemple proposé, le code commence par une définition de variables qui n’est pas
obligatoire. Tous les codes doivent par contre être composés des fonctions setup() et loop()
qui seront décrites dans une prochaine partie.
22
Cours - Mécatronique S5
Dans cet exemple, si le nombre est positif, il est doublé. S’il est négatif, il est converti en
valeur positive, et s’il est nul, il est défini à 1.
Cet exemple utilise une boucle for pour calculer la somme des nombres de 1 à 5.
Dans cet exemple, la boucle while incrémente la valeur de i tant que celle-ci est inférieure à
5. Une fois la condition fausse (c’est-à-dire que i est égal ou supérieur à 5), le programme sort
de la boucle.
23
Cours - Mécatronique S5
Vous pouvez définir vos propres fonctions pour modulariser votre code et le rendre plus lisible.
Une fonction Arduino est définie par un type de retour, un nom, et éventuellement des pa-
ramètres :
Imaginons que nous souhaitons créer une fonction qui prend deux nombres entiers en tant
que paramètres et renvoie leur somme. Voici comment nous pourrions le faire :
1 int additionner ( int a , int b ) {
2 return a + b ;
3 }
Dans cet exemple, la fonction est nommée additionner et prend deux paramètres de type
int (nombres entiers). Elle renvoie également un résultat de type int. Pour utiliser cette fonc-
tion dans votre code, vous l’appelleriez de cette manière :
1 int resultat = additionner (5 , 3) ; // resultat obtient la valeur 8
Note : Le type de retour des fonctions setup() et loop() est void. Ce type est utilisé pour
les fonctions qui effectuent des tâches mais ne retournent aucun résultat une fois terminées.
La modularité fournie par les fonctions permet de simplifier et d’organiser le code, en parti-
culier pour des programmes plus complexes. Utiliser des fonctions permet également de réduire
la redondance en évitant de répéter plusieurs fois les mêmes instructions.
Quand un pin est configuré comme une entrée, il est utilisé pour lire une tension. Si cette
tension est proche de 0V, la broche lit une valeur LOW. Si elle est proche de 5V (pour un Arduino
Uno standard), elle lit une valeur HIGH.
24
Cours - Mécatronique S5
Un pin configuré comme sortie est utilisé pour envoyer une tension. Il peut envoyer 0V (LOW)
ou 5V (HIGH).
Les pins A0 à A5 sur l’Arduino Uno sont des entrées analogiques et peuvent être utilisées
pour lire une tension variant entre 0 et 5V. Ces pins convertissent la tension lue en une valeur
entre 0 et 1023.
Certains pins, comme les pins 3, 5, 6, 9, 10, et 11, supportent la sortie PWM (modulation
de largeur d’impulsion) qui peut être utilisée pour simuler une sortie analogique, comme le
contrôle de la luminosité d’une LED ou la vitesse d’un moteur. Le rapport cyclique est contrôlé
avec un paramètre codé sur 8 bits, et pouvant donc prendre 28 = 256 niveaux.
25
Cours - Mécatronique S5
Exemple : Lire une donnée envoyée depuis le moniteur série de l’IDE Arduino.
1 void setup () {
2 Serial . begin (9600) ;
3 }
4
5 void loop () {
6 if ( Serial . available () > 0) { // Verifie si des donnees sont disponibles
7 char receivedChar = Serial . read () ; // Lit le caractere recu
8 Serial . print ( " Vous avez envoye : " ) ;
9 Serial . println ( receivedChar ) ; // Affiche le caractere recu
10 }
11 }
Ces fonctions Serial fournissent un moyen simple de communiquer entre votre Arduino et
votre ordinateur. Utiliser la communication série est particulièrement utile pour le débogage,
en vous permettant de voir les sorties de votre programme en temps réel.
26
Cours - Mécatronique S5
Une fois la bibliothèque installée, vous pouvez l’intégrer dans votre code en utilisant la di-
rective #include. Certaines bibliothèques sont disponibles par défaut à l’installation.
27
Cours - Mécatronique S5
Dans cet exemple, une interruption est configurée pour la broche 2 et est déclenchée chaque
fois qu’il y a un changement d’état sur cette broche (passage de LOW à HIGH ou vice versa). La
fonction routineInterruption est alors appelée.
28
Cours - Mécatronique S5
Le paramètre alpha détermine le degré de filtrage. Une valeur plus proche de 1 donne moins
de filtrage, tandis qu’une valeur plus proche de 0 donne plus de filtrage.
Dans l’exemple ci-dessus, l’Arduino pilote un pont en H en envoyant des signaux HIGH ou
LOW aux pins IN1 et IN2. En alternant ces signaux, la direction du moteur change.
29
Cours - Mécatronique S5
8 }
9
10 void loop () {
11 // Faire tourner le servo de 0 a 180 degres
12 for ( pos = 0; pos <= 180; pos += 1) {
13 monServo . write ( pos ) ;
14 delay (15) ;
15 }
16
17 // Faire tourner le servo de 180 a 0 degres
18 for ( pos = 180; pos >= 0; pos -= 1) {
19 monServo . write ( pos ) ;
20 delay (15) ;
21 }
22 }
Dans cet exemple, le servo est commandé pour se déplacer entre 0 et 180 degrés. La méthode
write de l’objet Servo est utilisée pour définir la position souhaitée du servo.
Dans l’exemple ci-dessus, la LED clignote toutes les secondes. Cependant, pendant la tem-
porisation, l’Arduino ne peut pas exécuter d’autres tâches.
30
Cours - Mécatronique S5
Dans cet exemple, la LED clignote également toutes les secondes. Cependant, grâce à l’uti-
lisation de millis(), d’autres fonctions ou tâches peuvent être exécutées simultanément sans
être bloquées par la temporisation.
— Utilisation du moniteur série : Le moniteur série est un outil précieux pour affi-
cher des messages de débogage. Il est par contre nécessaire de disposer d’un ordinateur
connecté à l’Arduino pour afficher ce message.
1 void setup () {
2 Serial . begin (9600) ;
3 Serial . println ( " Setup termine " ) ;
4 }
5
6 void loop () {
7 // Votre code ici ...
8 Serial . println ( " Valeur lue : " + String ( v a l e u r A n a l o g i q u e ) ) ;
9 }
— Diviser pour mieux régner : Testez chaque partie de votre projet séparément. Par
exemple, si vous utilisez plusieurs capteurs, testez chacun individuellement avant de les
combiner.
— Visualisation : Utilisez des LEDs ou d’autres indicateurs visuels pour vérifier le fonc-
tionnement de certaines parties du code.
31
Cours - Mécatronique S5
6
7 void loop () {
8 // Votre code ici ...
9 LowPower . powerDown ( SLEEP_1S , ADC_OFF , BOD_OFF ) ; // Dors pendant 1
seconde
10 }
32
Ingénierie des systèmes cyber-physiques
R5.10 - Mécatronique
Thomas Fromentèze
TD1 - Mesures continues ou en logique Tout-ou-Rien - R5.10 - Mécatronique S5
Résistance
2.1 Montage pull-up de tirage pull-up
R1
1. Calculer la tension mesurée par le CAN dans (résistance
pull-up)
les deux états possibles du bouton BP1, avec
une résistance d’entrée du CAN Rin = 100MΩ entrée CAN
et une résistance de tirage R1 = 10kΩ.
2
TD1 - Mesures continues ou en logique Tout-ou-Rien - R5.10 - Mécatronique S5
5V
2.3 Bilan
Les arduinos disposent d’un mode d’entrée INPUT PULLUP permettant de brancher un
bouton poussoir directement sur un port numérique (D0-D13). En déduire le schéma de
montage de ce bouton. Quelle simplification est permise grâce à ce mode ?
Schéma équivalent
Vcc Vcc
Ra
Rb
1. Lorsque le joueur ne touche pas au joystick, quelle est la valeur de tension mesurée par
l’entrée du CAN connectée au potentiomètre Y ?
2. Représenter alors dans un graphique la tension mesurée en fonction du temps à cette
même entrée lorsqu’un joueur effectue un mouvement du joystick de bas en haut.
3
Ingénierie des systèmes cyber-physiques
R5.10 - Mécatronique
Thomas Fromentèze
TD2 - Quantification et préparation au TP1 - R5.10 - Mécatronique S5
1 Quantification
Suivant les éléments introduits dans le support de cours, l’objectif de cette première partie est de
comprendre comment des signaux analogiques de tension peuvent être convertis en informations
numériques interprétables par un microcontrôleur comme l’Arduino UNO.
Amplitude(V)
Signal Signal
analogique numérique
111 5V
U 110 • • •
1
101 • • •
• 1 100 •
CAN 0 011 • • • • • •
... 010 • • •
q
1 001 •
000 0V
t(s)
t Ts
2
TD2 - Quantification et préparation au TP1 - R5.10 - Mécatronique S5
2 Préparation au TP1
La première séance de travaux pratiques porte sur le contrôle de vitesse d’un moteur.
Une version temporaire du montage est présentée ci-dessous et le code associé est donné à
la page suivante :
Ce montage se compose :
1. Identifier les éléments sur la photo et distinguer les entrées et sorties du point de vue du
microcontrôleur.
Le potentiomètre est alimenté par une tension de 3.3V et relié à la masse. Sa patte cen-
trale est connectée au port A0 de l’Arduino.
3. Quelle est la plage de tension qui peut être mesurée sur le port A0 ?
5. Identifier enfin la partie du code qui exploite ces valeurs pour le contrôle moteur.
Précisions :
volatile indique au compilateur que la variable peut être modifiée à tout moment, en
dehors du flux d’exécution normal du programme (ici dans loop() et pendant une interrup-
tion). Sans le mot-clé volatile, le compilateur pourrait supposer, lors de l’optimisation, que
la variable ne change pas dans la boucle principale et pourrait donc ne pas lire sa valeur réelle
3
TD2 - Quantification et préparation au TP1 - R5.10 - Mécatronique S5
unsigned indique que la variable peut seulement contenir des valeurs positives (y compris
zéro). Pour un type numérique signé (c’est-à-dire sans le mot-clé unsigned), la plage de valeurs
serait divisée entre des valeurs négatives et positives. Dans le cas d’unsigned, toute la plage
est utilisée pour des valeurs positives, ce qui double essentiellement la valeur maximale qu’une
variable peut avoir par rapport à sa version signée.
long est un format de données qui, sur la plupart des architectures Arduino, est codé en
mémoire sur 4 octets (32 bits). Cela signifie qu’une variable unsigned long peut contenir des
valeurs allant de 0 à 4 294 967 295 (23 2 - 1).