1
1ère année
2012-2013
Module INFORMATIQUE INDUSTRIELLE 2ème partie
Cours 2
Philippe Morenton
COURS 2 - PREPARATION AU TD2 ET AU TD3
1 DEPLACEMENT D'UN PETIT ROBOT DONT LE FONCTIONNEMENT EST SIMULE EN TD
Durant les TDs, on simule le fonctionnement
d'un petit robot dont la base est la suivante :
La carte Arduino ne peut pas fournir la puissance
nécessaire au fonctionnement des moteurs. On
intercale donc entre la carte Arduino et les mo-
teurs une carte interface de puissance Ardu-
moto.
Le schéma d'interconnexion des cartes et des
moteurs est le suivant :
Pour simplifier, les alimentations ne sont pas
représentées.
Commande des moteurs simplifiée, en tout ou
rien
DIRn
X
Moteur à l’arrêt
0
Sens 1 de rotation.
Avance
1
Sens 2 de rotation. Recul
2 DETECTION ET EVITEMENT D'OBSTACLES
Pour détecter les obstacles, 3 capteurs sont montés à l'avant du robot. On retient 2 types de cap-
teurs, mais il en existe d'autres.
Pour la détection d'obstacles par contact, on
utilise des interrupteurs avec de longues lan-
guettes.
Pour la détection par infrarouge, on utilise des
modules constitués d'un émetteur et d'un récep-
teur infrarouge. Un tel module délivre une ten-
sion qui dépend de la distance capteur/obstacle.
ARDUINO
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
A0
A1
A2
A3
A4
A5
GND
VIN
5V
ARDUMOTO
MOTB_2
MOTB_1
MOTA_2
MOTA_1
DIRB
DIRA
PWMB
PWMA
GND
VIN
M
M
2
Le fonctionnement retenu pour le déplacement avec évitement d'obstacle est extrêmement simple:
S'il n'y a pas d'obstacles détectés, le robot avance tout droit.
S'il y a un obstacle détecté d'un té, le robot recule en tournant plus du côté opposé à
l'obstacle pendant une certaine durée, puis il continue à avancer tout droit.
Si l'obstacle est détecté au centre, le fonctionnement est le même que si la détection se fait
sur un des côtés choisi au hasard.
Avec des capteurs plus élaborés, on peut retenir des algorithmes qui permettent un meilleur dépla-
cement au milieu d'obstacles. Voir par exemple
http://www.ensta-paristech.fr/~filliat/Courses/2011_projets_C10-
2/BURLOT_FLORINS_PASCAL/evitement_obstacles.html
http://wwwdfr.ensta.fr/Cours/docs/C10-2/chapitre6.pdf
3 COMMANDE DES MOTEURS AVEC UNE VITESSE VARIABLE
Sous certaines conditions, un moteur à
courant continu peut être commandé avec
une tension rectangulaire ou « hachée ».
Ci-contre l’allure de la commande et de la
vitesse en fonction du temps.
On se place dans le cas où DIR = 0
Le moteur tourne pour que le robot
avance.
Période du signal de commande PWM = T.
Fréquence du signal de commande : F = 1/T
Si T (période du signal PWM) est suffisamment faible
Ce n’est pas tout à fait le cas dans la figure ci-dessus.
T est suffisamment faible si << constante de temps principale du moteur + charge entrainée ()
est lié à l’inertie. Lors d’un changement de commande pour la vitesse, celle-ci se stabilise après
quelques .
Ordre de grandeur de pour le moteur d'un petit robot : 0,1s il faut T < 1ms soit F > 1 KHz.
T est constante. TH (= largeur d’impulsion ou durée à l’état haut) change.
Tracé
simplifié
PWM
Vitesse de
rotation
t
t
TB
TH
T
T
1
0
Pour une fréquence suffisamment élevée
de PWM, les ondulations sont négligeables
3
La commande est de type
On peut utiliser une fonction pour commander le rapport cyclique de PWM. Voir TD2.
4 FONCTIONNEMENT DE LA COMPILATION AVEC LA BIBLIOTHEQUE ARDUINO
Le fonctionnement simplifié de la compilation est le suivant :
Le fichier objet contient la traduction des instructions en langage machine. Un appel de fonction est
traduit par un saut à un sous-programme. Le code de la fonction n'est pas dans le fichier objet. Ce
code est extrait de la bibliothèque précompilée et placé dans le fichier pour la programmation.
Le compilateur et l'éditeur de liens font partie d'AVR-GCC.
5 PROGRAMMATION SANS LA BIBLIOTHEQUE ARDUINO
Si on n'utilise pas la bibliothèque Arduino, il faut se contenter des fonctions fournies avec AVR-GCC.
Celles-ci sont peu nombreuses en ce qui concerne les spécificités du µC : gestion des E/S, des péri-
phériques intégrés, etc.
Sans la bibliothèque Arduino, il faut connaitre la structure interne du µC pour pouvoir écrire le
programme.
6 LES ENTREES / SORTIES DU µC ATMEGA328P
Comme chacune des entrées ou des sorties du µC correspond à une variable logique (ou binaire ou
booléenne) qui a pour valeur uniquement 0 ou 1, on appelle fréquemment une connexion un bit =
binary digit (chiffre binaire). On parle de bit d’entrée ou de bit de sortie.
4
Les entrées et sorties du µC sont regroupées
par paquets. Chaque paquet peut être manipu-
lé directement par le programme et s’appelle
un port. En général les ports sont constitués de
8 connexions ou 8 bits.
Le µC utilisé a les ports suivants :
PORTB de 8 bits. Sur la carte Arduino, 6
bits sont disponibles sur connecteur : PB0
à PB5
PORTC de 7 bits. Sur la carte Arduino, 6
bits sont disponibles sur connecteur : PC0
à PC5.
PORTD de 8 bits. Sur la carte Arduino, les
8 bits sont disponibles sur connecteur :
PD0 à PD7.
Le schéma ci-contre monte la relation entre
les ports et les repères des broches des con-
necteurs Arduino.
Sur le µC ATmega328p, 3 registres sont associés à chaque port, dont :
Sur une entrée d’un port, il faut qu’un circuit extérieur puisse appliquer une tension 0V ou 5V.
Sur une sortie d’un port, c’est le µC qui impose une tension 0V ou 5V
Les repères des bits d’un port utilisent le rang car on peut associer une valeur numérique au mot
binaire disponible sur un port.
Exemple :
Mot binaire appliqué en
entrée du port D
1
0
1
1
0
0
1
0
Repères des bits du port
PD7
PD6
PD5
PD4
PD3
PD2
PD1
PD0
Poids des bits du port
27
26
25
24
23
22
21
20
PORTB
PORTD
PORTC
PD0
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PB0
PB1
PB2
PB3
PB4
PB5µC
PC0
PC1
PC2
PC3
PC4
PC5
ARDUINO
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
A0
A1
A2
A3
A4
A5
GND
VIN
5V
PORTC
PORTD
PORTB
5
La valeur numérique en base 10 est :
Pour la plus grande souplesse possible, chaque broche de chaque port peut être utilisée en sortie ou
en entrée. Dans ce dernier cas, on peut ajouter une résistance de rappel interne.
Exemple : DDRD= 0b00001111; // les bits 7 à 4 sont en entrées, les autres en sortie
Le registre DDR permet de réaliser un aiguillage.
lorsque la broche est configurée en entrée.
Voir la synthèse de la documentation constructeur traduite en fran-
çais.
Un dessin qui résume le fonctionnement
extrait de :
http://www.cours.polymtl.ca/inf1995/logiciel/progAvr/inf1995_comp
lement.pdf
DDRx0
DDRx1
DDRx7
PORTx0
PORTx1
PORTx7
PINx0
PINx0
PINx0
Data Direction Register =
Registre sens de transfert
Registre de don-
nées sortantes
ou d’option
Registre de
données en-
trantes
Bus de
données
Broches
du µC
DDRxy = 1
La valeur de
PORTxy sort en PxY
x est le repère du port (B, C, D)
y est le rang de l’E/S (0..7)
Px0
Px1
Px7
DDRxy = 0
PORTxy = 0
DDRxy = 0
PORTxy = 1
PINxy
+5V
PINxy
PORTxy
PINxy
Pxy
R de rappel
rajoutée
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !