Robot Vierzon

Transcription

Robot Vierzon
ROBOT Vierzon 2010/2011
Alexandre CASTAN-VARLET
Gauthier CHAVET
Bastien DELRUE
Benoit PAGES
Marius RICHARD
Loïc VOSSIER
Robot Vierzon
REMERCIEMENTS
A
vant de commencer, nous tenons à remercier M. Hochmuth pour nous avoir
fourni la carte de commande des moteurs et soutenu tout au long du projet
Nos remerciements vont aussi à M. Vigneau et M. de Rudnicki, ingénieurs au Cemagref, qui nous
ont épaulés durant l’étude et la réalisation du robot Vierzon. Ils nous ont apporté des solutions
techniques et méthodes de travail, importantes pour la suite de nos études.
Pour finir, nous remercions Mme Forderer pour nous avoir appris les techniques d’expressions
écrite et orale.
-2-
Robot Vierzon
INTRODUCTION
Dans le cadre de notre formation, nous devions entièrement réaliser un projet. Nous
avons choisi de faire un robot pour le concours de robotique de Vierzon. Ce robot doit être
autonome et capable d’aller d’un point A { un point B tout en évitant des obstacles, présent sur la
piste à des emplacements aléatoires.
Pour cela, nous avons tout d’abord effectué une étude théorique (individuelle) pour
définir les solutions possibles. Par la suite, nous avons tout mis en commun pour choisir les
meilleures solutions à adopter. Pour finir, la réalisation du robot a commencé depuis le début du
semestre 4.
Ce projet a nécessité une décomposition en plusieurs parties que nous allons développer ici.
-3-
Robot Vierzon
SOMMAIRE
Remerciements.........................................................................................................2
Introduction……………………………………………………………………………………….3
1) Cahier des charges………………………………………………………………………….5
2) Diagramme de Gantt……………………………………………………………………….6
3) Diagramme FAST……………………………………………………………………………7
4) Commande des servomoteurs………………………………………………………...8
5) Balise / Réception………………………………………………………………………...20
5.1) Balise………………………………………………………………………………………………….20
5.2) Réception…………………………………………………………………………………………...26
6) Evitement d’obstacles…………………………………………………………………..30
6.1) Etude des capteurs…………………………………………………………………………….30
6.2) Evitement d’obstacles………………………………………………………………………..40
6.3) Mise en Œuvre……………………………………………………………………………………43
7) Commande des moteurs……………………………………………………………….50
7.1) Le PIC 18f452…………………………………………………………………………………….50
7.2) Carte de commande des moteurs………………………………………………………56
7.3) Stratégies…………………………………………………………………………………………...69
7.4) Survolteur………………………………………………………………………………………….81
8) L’arrêt…………………………………………………………………………………………..88
8.1) Détecter la ligne…………………………………………………………………………………88
8.2) s’arrêter……………………………………………………………………………………………..89
Conclusion………………………………………………………………………………………..90
-4-
Robot Vierzon
1) CAHIER DES CHARGES
Les règles du concours stipulent que le robot doit parcourir la diagonale d’une piste carrée
de 8m par 8m, le robot détectera son point d’arrivée { l’aide d’une balise située sur celui-ci.
La piste sera également parsemée d’obstacle, le robot devra donc les éviter puis rejoindre son
point d’arrivée.
*
Le robot ne doit se mettre en marche qu’une fois que la prise jack située { l’arrière ait été
débranchée. Une fois cette prise jack débranchée, le robot peut avancer. Dès que le robot
commence { avancer, et tant qu’il est en marche une LED verte voyante doit rester allumée.
La zone d’arrivée est représentée par un arc de cercle blanc de 70 cm de rayon. Une fois
entré dans cette zone le robot doit s’arrêter complètement. Une fois complètement arrêté, le
robot doit éteindre la LED verte, et allumer une LED rouge.
-5-
Robot Vierzon
2) DIAGRAMME DE GANTT
Image 2 : Diagramme de Gantt
-6-
Robot Vierzon
3) DIAGRAMME FAST
Image 3 : Diagramme FAST
-7-
Robot Vierzon
4) COMMANDE DES SERVOMOTEURS
4.1) Fonctionnement d’un servomoteur
Nous devons réaliser un déplacement angulaire. Ceci sera réalisé { l’aide d’un
servomoteur car c’est plus précis qu’un moteur, moins lourd, et plus facile { mettre en œuvre.
Définition : un servomoteur est un moteur conçu pour produire des mouvements
précis d’un élément mécanique selon une commande externe.
En d’autres termes, c’est un moteur qui va à une position précise en fonction du signal
d’entré.
Voici la tension de commande du moteur :
Tension de
Commande (V)
5
0
t0
t (ms)
T=20
t0 est la durée pendant laquelle le signal reste { l’état haut. Il est compris entre 1 et 2ms.
Comme l’explique ce tableau, en jouant sur ce t0 , on va faire varier l’angle du servomoteur.
Angle (°)
180
90
0
Durée de l’impulsion t0 (ms)
2
1.5
1
Pour simplifier la vision des choses et savoir quel nombre placer dans le timer du PIC, on
va trouver une équation permettant d’exprimer le chiffre { placer dans le timer en fonction de
l’angle voulu. Pour cela, on va effectuer quatre étapes :
On en tire donc une équation d’un angle en fonction d’un temps :
y ° = 180 × x t − 180
Avec x(t) en ms et y(°) en degrés.
Cette équation doit rester comprise entre 0° et 180° et entre 1ms et 2ms.
Equation de la valeur placée en fonction du temps désiré.
-8-
Robot Vierzon
Le timer fonctionne sur la fréquence du PIC diviser par 4 : f=107Hz. (Voir configuration
du timer)
De plus, le timer déborde après sa 216 = 65536ème incrémentation soit après 26,2144ms. Pour
avoir la valeur souhaitée, il suffit de la charger dans le registre adéquat de telle sorte que :
Valeurplacée= 26.2144-x(t)
De ce fait, le timer partira de cette valeur et mettra le temps voulu pour déborder et ainsi
générer une interruption.
Conversion durée -> bits.
Pour faire cette conversion, un simple produit en croix suffit.
65536 correspond à 26.2144ms on a donc :
Bits = Valeur_placée ×
65536
26.2144
Avec Valeurplacée en ms.
On arrive à une relation directe entre les bits à placer dans le PIC et notre angle du servomoteur.
Bits = −13.9 × y ° + 63036
Exemple :
On veut placer notre servomoteur { un angle de 60°. En résolvant l’équation, on trouve
qu’il faut charger dans le registre du timer 62202 (0xF2FA). On placera alors 0xF2 dans TMR0H
puis 0xFA dans TMR0L. Ainsi notre compteur démarrera de 62202 pour aller jusqu’{ 65536 ce
qui nous fera un temps de 1.34ms { 1. Le timer va déborder et mettre le drapeau d’interruption {
1 (TMR0IF=1). On doit répéter ceci toutes le 20ms environ pour que le servomoteur reste à 60°.
Il faudra donc recharger le timer pour qu’il mette la sortie à 0 durant 20ms-t0.
On représentera le signal de la manière suivante :
Tension de
Commande (V)
5
0
1.34
T=20
-9-
t (ms)
Robot Vierzon
Seulement un nouveau problème se présente à nous, on a besoin de deux servomoteurs : un
pour le capteur { ultrason et un pour le capteur infrarouge. Dans le but d’économiser un timer,
on propose la solution suivante :
Tension de
Commande (V)
T1=20
5
t1
0
t0
t
(ms)
T0=20
Avec t0 =temps où la sortie du servomoteur 1 reste à 1 et T0 sa période et t1=temps où la sortie
du servomoteur 2 reste à 1 et T1 sa période.
Comme le montre le graphique, on intercale les deux commandes des servomoteurs. Nous
avons ainsi les deux qui sont commandés par un seul timer et l’utilisation des servomoteurs
n’est pas altérée.
On remarquera que lors du chargement du timer pour mettre la sortie à 0, on ne place plus la
valeur 20ms-t0 mais 10ms-t0.
Pour réaliser cette solution en programme, nous devrons suivre l’organigramme d’initiation
suivant :
- 10
-
Robot Vierzon
Initialisation
Début
Initialisation du
TIMER0
Chargement du
TIMER0 avec t0
SM=0b00
Lancement du
TIMER
(TMR0ON=1)
FIN
- 11
-
Robot Vierzon
Programme d’interruption
du TIMER 0
Début
SM == 0b00
SM == 0b01
SM = 0b01
SM == 0b10
SM = 0b10
SM == 0b11
Charger TIMER 0
à 10ms-t0
SM = 0b11
Charger TIMER 0
à t1
SM = 0b00
Charger TIMER 0
à 10ms-t1
Remettre le
drapeau à 0
Remettre le
drapeau à 0
Charger TIMER 0
à t0
Remettre le
drapeau à 0
Relance du
TIMER 0
Relance du
TIMER 0
Remettre le
drapeau à 0
FIN
Relance du
TIMER 0
FIN
Relance du
TIMER 0
FIN
FIN
- 12
-
Robot Vierzon
SM est une variable qui permet de savoir ce que nous devons envoyer aux servomoteurs.
Voici { quoi correspondent les branches de l’organigramme :
Tension de
T1=20
Commande (V)
5
t1
0
t0
t
(ms)
T0=20
La valeur que l’on charge dans le TIMER devra suivre ce fonctionnement :
Valeur à charger dans TIMER 0
TMR0=61785
TMR0=62063
TMR0=61507
Explication du diagramme d’état :
Pour définir les trois zones, nous sommes partis de la première zone (la zone 2) qui doit
être { 90°. Le cône d’émission du capteur ultrason est approximativement de 20°. Les deux
zones sont donc à 90°±20°.
Les valeurs, présentent ci-dessus, correspondent donc aux angles 70°, 90° et 110°.
- 13
-
Robot Vierzon
4.2) Etude du TIMER 0
Nous allons utiliser le TIMER 0 du PIC. Pour cela, il y a différents registre à paramétrer :
Pour les interruptions : INTCON
INTCON2
RCON
Pour le timer 0 : T0CON
INTCON :
Dans ce registre on met
GIE/GIEH à 1 pour autoriser les interruptions en générale.
TMR0IE à 1 pour autoriser les interruptions du timer 0.
Il faudra regarder le bit TMR0IF car c’est lui qui nous signale que le timer a débordé.
INTCON2 :
Dans ce registre, seul le bit TMR0IP est mis { 1 pour dire que c’est une priorité haute.
RCON :
Encore une fois un seul bit nous intéresse : IPEN est à 1 pour autoriser les priorités.
- 14
-
Robot Vierzon
T0CON :
TMR0ON : il doit être mis à 1 pour lancer le timer (début du comptage).
T08BIT : choix du nombre de bit , on met 0 pour 16 bits.
T0CS : choix de l’horloge. On prend l’oscillateur interne donc on met 0.
ATTENTION : en prenant l’oscillateur interne, notre horloge aura une fréquence divisée par 4
par rapport à la fréquence de l’oscillateur interne.
T0SE : choix du front montant de l’incrémentation. Dans notre cas, peu importe donc on laisse {
0.
PSA : choix du prescaler. On n’en veut pas donc 1.
Les 3 derniers bits servent { définir le prescaler. Comme on n’en utilise pas, on les met à 0 (car
ils sont normalement à 1).
ATTENTION : nous avons choisi de paramétrer notre timer en 16bits. De ce fait, nous devrons
charger les valeurs dans deux registres (TMR0H et TMR0L) en respectant bien l’ordre du HIGH
AVANT le LOW.
Résumé :
INTCON = 0xB0
INTCON2 = 0x04
RCON = 0x80
TMR0ON = 1 pour lancer le timer
T0CON = 0x08 quand le timer
TMR0H/TMR0L = registre d’initialisation du compteur
On pourra aussi, si on le souhaite, attaquer les bits un à un comme par exemple
RCONbits.IPEN=1 (cela se fait au niveau de la programmation).
- 15
-
Robot Vierzon
4.3) En pratique
Dans l’état actuel des choses, notre robot n’est pas capable de définir des zones distinctes pour
détecter les obstacles avec l’ultrason. Le servomoteur qui était prévu { cet effet est donc inutile
et est constamment à 90°.
En revanche, le servomoteur de l’infrarouge est bien opérationnel. Il balaye 180° de gauche {
droite puis de droite { gauche. De plus, si le robot a détecté la balise et qu’il tournera dans un
sens pour éviter les obstacles, le servomoteur tournera dans le sens opposé pour éviter de
décrocher la balise.
Pour faire ce programme de gestion des servomoteurs, nous avons utilisé le débordement du
TIMER 0 comme dit dans la partie théorique. Pour cela, nous avons suivis l’organigramme
suivant :
- 16
-
Robot Vierzon
Il n’y a pas de grosses différences entre le pratique et le théorique. On voit apparaitre les 90°
pour l’ultrason et une fonction Calcul_temps_infrarouge qui va être expliquée un peu plus loin.
Pour une question de simplicité, nous pouvons le simplifier par l’organigramme suivant :
- 17
-
Robot Vierzon
Maintenant étudions la fonction Calculer_temps_infrarouge. Cette fonction doit permettre au
servomoteur de balayer 180° dans les deux sens puis de rester à une position fixe lorsque le
capteur infrarouge capte la balise. Pour cela, nous suivrons l’organigramme ci-dessous :
TMR0H_local et TMR0L_local sont deux variables qui nous permettent de gérer les moteurs et de
travailler avec la valeur du servomoteur infrarouge et non pas celle des 10ms ou encore celle des
90° du servomoteur de l’ultrason.
- 18
-
Robot Vierzon
Après avoir programmé le robot, on obtient des signaux suivant :
Ici, les signaux varis de 0.5ms a 2.5ms : c’est le balayage du servomoteur de l’infrarouge.
Ici on a le signal du servomoteur de l’ultrason qui reste à 1.5 ms (90°).
- 19
-
Robot Vierzon
5) BALISE/RECEPTION
Sur la partie Balise on a dû choisir entre plusieurs solutions :
- Ultrason, Infrarouge
- Utilisation d’une boussole
Pour la partie ultrason ou infrarouge, après plusieurs recherche, nous avons choisi l’infrarouge
plus facile à mettre en place et moins cher.
Enfin pour la boussole, on a préféré utiliser uniquement l’infrarouge, suffisant si le robot est
équipé d’un servomoteur pour détecter la balise.
5.1) Balise
On a choisi un système d’émission avec infrarouge, nous avons déjà vu ce système de
transmission en ER1. Nous allons donc utiliser ici le même système.
L’infrarouge présente plusieurs avantages cités ci-dessous :
-
Principe de base assez simple
Utilisation de composant peu onéreux
Aucune dangerosité (pas de laser comme le règlement l’indique)
Rapidité de détection et de suivi
Elles sont moins influençables par les contraintes environnementales qui entourent le
robot que d’autre technologie telles que les ultrasons.
Néanmoins cette technologie possède quelques inconvénients :
-
Sensibilité aux sources lumineuse
Impossibilité de faire une mesure de distance entre le robot et la balise
Sensibilité aux radiations du soleil, nous utiliserons la longueur d’onde λ=940nm où le
soleil est moins perturbateur, De plus nous serons en intérieur nous aurons donc une
perturbation moindre !
Notre balise sera une balise active plus simple { mettre en œuvre.
- 20
-
Robot Vierzon
Cahier des charges :
-
Le robot doit être capable de déterminer si oui ou non il est dans la bonne direction.
Le robot a pour distance maximal la diagonale du terrain soit environ 12m. De plus le
robot peut être n’importe où sur le terrain il faut donc que la balise puisse inonder le
terrain complètement pour que le robot la détecte tout le temps.
Décomposition en schéma bloc :
FP1
FP2
FP3
Générer un signal
infrarouge codé
Recevoir un signal
infrarouge codé
Analyser le signal
Balise IR
Récepteur IR
Décodeur
comparateur
Dans ce chapitre, nous étudierons toutes les parties. Ce système a déjà été étudié en ER1
avec la télécommande infrarouge nous avons décidé d’utiliser le même principe avec un
codage/décodage avec les puces MC145026 et MC145027.
- 21
-
Robot Vierzon
Schéma électronique de la carte d’émission :
Image 4 : Schéma électronique de la balise
Nous souhaitions, à la base, construire notre propre balise. Néanmoins elle est très
similaire à celle utilisé par les concurrents de l’année dernière. On a donc décidé d’utiliser la
même que celle de l’année dernière.
Description du schéma :
En bleu : partie alimentation, C1 et C2 sont ici pour protéger le circuit des pic de tension qu’on
rencontre parfois au borne d’une batterie. D1 et ici pour protéger le circuit ci jamais on venait à
brancher la batterie { l’envers.
En vert clair : un switch pour entrer le code à émettre pour reconnaitre notre balise. Les
résistances RC1 RC2 RC3 RC4 font un effet pull up. Le code est égal à 1 si le switch est ouvert
sinon il est égal à 0, les résistances sont prises grandes pour éviter de gaspiller trop de courant.
- 22
-
Robot Vierzon
En vert foncé : ici c’est un encodeur MC145026. Il permet de mettre le code qu’il y a sur le switch
en série pour être émis. Il y a dans ce signal, à la suite, les adresse de A1 à A5 et les données (ou
code) D6 à D9.
En jaune : un système de porte logique de capacités et de résistances permet de coder le signal à
38KHz. Si un 1 logique sort de l’encodeur alors en sortie des portes il y aura un signal carré
cadencé { 38KHz. S’il y a un 0 logique alors la sortie sera nulle.
En rouge : la partie émission de puissance. Ici il y a 3 branches de 5 diodes infrarouges en série
soit 15 diode IR en tout. On fait passer un courant de 120mA dans les diodes ce qui provoque
une chute de tension de 2.3V { chaque diode soit une chute par branche de 11.5V environ. D’où
R3 à R5 :
R5=
𝑈
𝐼
=
0.5
0.12
= 4.16 On prendra come valeur normalisé 3.9Ω
La diode D2 est ici pour nous confirmer l’émission : c’est une diode électroluminescente simple.
Routage de la carte :
- 23
-
Robot Vierzon
Image 5 : Routage de la Carte d’émission
Pour le routage, les critères principaux ont été les suivant : alignement des composants, un
minimum de « straps » et l’ajout de noms pour se repérer sur la carte une fois imprimée.
Image 6 : Photo de la carte émission
image 7 : photo de la balise telle que nous l’avons eu
Lorsque nous avons eu la balise elle n’avait pas de support et il fallait qu’elle en a un pour
qu’on puisse l’utiliser. Nous avons alors voulu en faire un qui puisse aller de 25 cm environ (la
hauteur de nos détecteur sur le robot) à 5cm hauteur à laquelle elle doit être pour le concours
Vierzon.
Nous avons alors fait le support qui coulisse sur un tube en PVC de 30 cm. Le support se bloque
automatiquement et une vis permet de renforcer le maintien. Un socle est utilisé pour stabiliser
le tout. Sur celui-ci nous avons mis 2 double-face pour pouvoir « fixer » la batterie et la carte
émission au final nous obtenons la balise suivante :
- 24
-
Robot Vierzon
Image 8 : Photo de la balise coulissant sur le tube.
Image 9 : Photo du socle
Image 10 : Photo des diodes IR en émission
Image 11 : Photo de la balise finie
- 25
-
Robot Vierzon
5.2) Réception
Pour la réception nous souhaitions utiliser 2 récepteur TSOP31238 dos à dos sur un
servomoteur. Ainsi nous pourrons à tout moment balayer la piste pour trouver la direction de la
balise, savoir l’angle de différence entre le robot et la balise. Enfin, dans l’éventualité où la balise
se trouverait derrière le robot celui-ci pourrait toujours la suivre car il y aurait le 2ème détecteur
{ l’arrière (un servomoteur ne peut tourner que de 180°). Il était finalement trop difficile de
gérer deux récepteur nous utiliserons qu’un seul récepteur.
Le choix du récepteur à utiliser se fait par le PIC via Vsel sur le port RB6. S’il est { 0 c’est le
capteur avant qui est utilisé, s’il est { 1 c’est le capteur arrière qui est utilisé. Le capteur avant est
utilisé par défaut.
Nous mettrons les adresses à la masse pour avoir la bonne adresse de réception. Nous profitons
de faire cette carte pour rajouter une partie d’aiguillage des ports du pic pour aller directement
sur un capteur ou un actionneur.
Nous obtenons le schéma électronique sur la page suivante.
- 26
-
Robot Vierzon
Image 12 : Schéma électronique de la carte de réception
Dimensionnement :
La partie encadrée en rouge permet d’inverser le signal des capteurs, car le capteur que
nous utilisons inverse le signal reçu. Il y a un montage pour chaque récepteurs : il y en a donc 2.
Ra est ici pour protéger les capteurs IR. La documentation technique nous conseille de mettre
une résistance de 100Ω.
R3 à R6 servent à polariser les transistors Q1 et Q2 pour inverser le signal. On choisit R3 et R5 à
470KΩ pour ne pas beaucoup consommer. Quant à R4 et R6, on choisit 47KΩ pour obtenir un β
de 10.
La partie encadrée en vert permet de choisir quel capteur doit être décodé en fonction de Vsel.
- 27
-
Robot Vierzon
La partie encadrée en bleu décode le signal et le transmet au PIC qui fera la comparaison avec le
code enregistré lui-même.
Fréquence d’oscillation
Nous avons choisi de garder la même balise que l’année dernière, il nous a donc fallu
obtenir une fréquence de décodage égale { celle de l’encodage. Or la fréquence de l’encodage
dépend des valeurs de RTC et de CTC. Pour obtenir la bonne fréquence de décodage associé il faut
suivre c’est formule donnée dans la datasheet.
R1C1=3.95RTCCTC
R2C2=77RTCCTC
On bloque C1=C2=0.1µF et on trouve R1=8.2KΩ et R2=180KΩ
Le reste de la carte sert d’aiguillage ou de circuit partiel pour d’autre utilisation (commande des
servomoteurs, capteur moustache, prise jack…) et sera développée dans d’autre partie.
- 28
-
Robot Vierzon
Image 13 : Routage de la carte réception
Sur le routage de la carte on voit très bien l’aiguillage des différentes fonctions avec en premier
la partie réception à gauche, et sur les bords en commençant de gauche à droite en remontant :
-
Un capteur IR
Le capteur ultrason
Le récepteur de l’arrêt
Le servomoteur de l’ultrason et celui de l’infrarouge
Puis en remontant :
-
Le capteur moustache gauche
Le capteur moustache droit
La prise jack
2 bornes extensions, nous utiliserons la seconde pour commander les diodes de mise en
marche et d’arrêt.
Le but du routage était d’utiliser un minimum de place, puis d’aligner les composants.
- 29
-
Robot Vierzon
6) EVITEMENT D’OBSTACLES
6.1)
Etude des capteurs
Dans cette partie nous allons concentrer l’étude sur les capteurs fournis par l’IUT pour connaître
le meilleur compromis pour effectuer cette fonction.
Capteur infrarouge : Capteur IR Sharp GP2D12
Ce capteur utilise un principe optique pour détecter les obstacles. Il envoie, { l’aide d’une diode
infrarouge, une onde infrarouge qui est réfléchi par un obstacle ou non et réceptionne ou non (si
absence d’obstacle) l’onde grâce { une bande de réception intégré au capteur.
Ce capteur est composé de différentes composantes comme on peut le voir sur le schéma
suivant :
- 30
-
Robot Vierzon
Sur ce schéma on peut en effet distinguer que l’émetteur et le récepteur infrarouge sont intégrés
au capteur. On observe aussi que le signal de sortie est un signal analogique ce qui signifie que
pour le traitement de l’information il faudra convertir ce signal en numérique (utilisation de
convertisseur analogique numérique).
Ce signal de sortie analogique en fonction de la distance est, d’après la documentation, de la
forme suivante :
On peut sur ce document voir que la tension de sortie est de 0,4V pour un obstacle à une
distance de 10 cm et de 2,4V pour un obstacle à 80 cm. On observe un écart de 2V entre la
tension maximale et la tension minimale ce qui fait que la différence de tension pour 1 cm est de
29mV. Cette valeur étant faible, il est possible, qu’il y ait des imprécisions au niveau de la mesure
de distance.
Ce capteur renvoie donc un signal analogique qui varie en fonction de la distance de l’obstacle. Il
faut donc convertir ce signal { l’aide d’un convertisseur analogique numérique pour pouvoir
traiter l’information plus facilement avec le PIC. On peut utiliser l’organigramme suivant pour
réaliser cette conversion :
- 31
-
Robot Vierzon
Configuration du CAN
CAN
CAN ON
Entrée analogique (justifiée à
gauche)
Lancement de la conversion
CAN
Attente de la fin de la
auche) conversion
CANde la valeur
Enregistrement
dans le registre ADRESH
CAN
On peut aussi observer que la tension de sortie pour un objet à une distance fixe varie avec
l’éclairement de cet objet comme on peut le voir sur le schéma suivant :
On peut voir sur ce schéma que l’axe des abscisses est gradué en lux. Un lux est une unité de
mesure de l'éclairement lumineux. Il caractérise le flux lumineux reçu par unité de surface. A
titre de comparaison on peut dire qu’un appartement bien éclairé est éclairé par 200 à 400 lux.
On observe que jusqu’{ ce que l’éclairement soit de plus de 8000 lux la tension de sortie varie
très peu. Sachant que le robot sera amené { fonctionner en intérieur on peut dire que l’éclairage
n’aura que peu d’influence sur la mesure de la distance de l’obstacle { éviter.
- 32
-
Robot Vierzon
Pour la mesure de distance le capteur fonctionne de la façon suivante :
Sur ce schéma on voit que la mesure de distance dure entre 28,7ms et 47,9ms et que la deuxième
mesure commence avant même que la sortie soit mise à la valeur de la première mesure.
En résumé ce capteur infrarouge montre les caractéristiques suivantes :
-
Portée de 10 à 80 cm
Précision relativement faible (surtout pour une distance de 80cm)
Mesure de distance
La couleur et la matière de l’obstacle n’influence peu la détection d’obstacles
Renvoie un signal analogique (entre 0,4 et 2,4V pour une distance de 80 à 10cm)
Faible coût
Facile { mettre en œuvre
Capteur ultrasons : SRF05 Ultra-Sonic Ranger
- 33
-
Robot Vierzon
Le SRF05 est une évolution du SRF04. Il a été conçu pour augmenter la flexibilité et réduire le
prix. Le SRF05 est compatible avec le SRF04. La gamme est augmentée de 3 à 4 mètres. Un
nouveau mode permet d’utiliser une seule broche pour l’impulsion de déclenchement et pour le
retour de l’impulsion de l’écho, économisant ainsi une broche sur le contrôleur. Quand la broche
de mode est non connectée, le SRF05 fonctionne avec l’impulsion de déclanchement et le retour
de l’impulsion séparée, comme pour le SRF04.
Voici la carte du capteur ultrasons SRF05 (en mode 1) :
On observe 5 broches de chaque côté de la carte, celles du côté droit sont réservées à la
programmation du PIC lors de la fabrication de la carte il ne faut donc rien connecté dessus sous
peine que celle-ci ne fonctionne plus. On va donc détailler les broches du côté droit :
-
« 5v Supply » est la broche d’alimentation de la carte
« Echo output » est la broche de sortie qui permet de savoir s’il y a un obstacle ou non.
« Trigger Input » est la broche de sortie qui permet de déclencher l’envoie des ultrasons.
« Mode » est la broche qui permet de changer de mode (les modes seront détaillés par la
suite)
« 0v Ground » est la broche où l’on doit connecter la masse.
Mode 1 – Comptabilité avec le SRF04 - Séparation pulsation et écho
Voici donc le chronogramme de fonctionnement du SRF05 :
- 34
-
Robot Vierzon
“Trigger pulse input to SRF05” correspond { un signal de 10 µs minimum que l’on doit envoyer
{ l’émetteur pour qu’il commence l’envoie des ultrasons.
“Ultrasonic Burst transmitted” correspond aux 8 cycles d’ultrasons { 40kHz envoyés par
l’émetteur afin que le récepteur en reçoive au moins une, la première mettant fin à la
réception sinon la réception s’interrompt au bout de 30ms (ce qui signifie aucun obstacle).
“Echo pulse output from SRF05 to users controller” correspond au signal { traité afin de savoir {
quelle distance ce trouve le potentiel obstacle. La longueur de ce signal est proportionnelle à la
distance où se trouve l’obstacle { éviter. Ce signal dans ce mode est compris entre 100us et 25ms.
Dans ce mode il faut donc envoyer un signal (un 1 logique) pendant une durée minimum de 10
µs pour commencer l’envoi des ultrasons. Ceux-ci sont émis par 8 cycles à 40kHz et la réception
de ces ultrasons est interrompu par la réception du premier cycle (les cycles sont au nombre de
8 pour être sûr d’en recevoir un s’il y a un obstacle). On renvoi au PIC commandant les moteurs
un 1 logique pendant une durée t proportionnelle { la distance d entre le capteur et l’obstacle.
Pour connaître cette distance il suffit, d’après la documentation, d’appliquer la formule suivante :
d=
t(µs)
58
Il sera donc très simple de calculer la distance de l’obstacle par rapport au robot.
Mode 2 – Une boche commune pour la pulsation et l’écho
- 35
-
Robot Vierzon
Ce mode utilise une seule broche pour la pulsation et l’écho. Il est conçu pour économiser des
broches sur le microcontrôleur utilisé pour traiter l’information. Pour utiliser ce mode, il faudra
mettre la broche MODE à la masse. Il y a une broche non connecté puisque l’entrée et la sortie se
font sur la même broche comme le montre l’image suivante :
Le signal d’écho apparaîtra sur la même broche que le signal de pulsation de la façon suivante :
On peut donc observer exactement les mêmes signaux que dans le MODE 1 sauf que les signaux
de déclenchement des ultrasons (en bleu) et le signal d’écho (en rouge) apparaissent en effet sur
- 36
-
Robot Vierzon
la même broche. Le signal d’écho est compris entre 100 us et 25 ms. Ce signal sera d’une durée
supérieure { 30 ms quand il n’y aura aucun obstacle détecté.
Nous utiliserons le capteur dans le mode 1 pour des raisons de simplicité de mise en œuvre et de
nombre de broches suffisantes sur le PIC contrôlant les moteurs. Pour émettre les ultrasons on
pourra se servir de l’organigramme suivant :
- 37
-
Robot Vierzon
- 38
-
Robot Vierzon
Capteur de contact :
Le capteur de contact est un simple interrupteur sous forme de moustaches. Lorsqu’il n’y a pas
de contact (interrupteur ouvert), la résistance de pull up tire le potentiel au +5V. Le PIC reçoit
donc un niveau 1 logique. Au moment où les interrupteurs se ferment, ce qui signifie que les
moustaches ont été poussées, le potentiel est mis à la masse. Le PIC reçoit donc un 0 logique.
On peut utiliser le montage du capteur de contact suivant :
+5V
PIC
Capteur de contact
Si le robot touche un obstacle cela va fermer l’interrupteur ce qui va permettre au PIC de savoir
s’il y a un obstacle qui empêche le robot de suivre son chemin.
Conclusion :
Le capteur infrarouge a une portée de 80 cm et peut avoir une perte de précision à cette distance.
Etant donné que nous voulions détecter les obstacles a environ 1 mètre pour nous permettre
d’anticiper les obstacles et gagner du temps dans l’évitement des obstacles. Nous avons donc
décidé d’utiliser le capteur ultrasons SRF05 pour sa portée relativement importante. L’émetteur
ultrasons { un cône d’émission qui est relativement important et notre stratégie d’évitement va
être basé sur celui-ci. Pour détecter les bords nous avons décidé de mettre simplement deux
capteurs de contact { l’avant du robot.
- 39
-
Robot Vierzon
6.2)
Evitement d’obstacles
Pour éviter les obstacles il est nécessaire que le capteur ultrason communique avec le
PIC qui contrôle la commande des moteurs comme le montre le schéma suivant :
PIC 18F452
Déclenchement de
l’envoi des ultrasons
Capteur Ultrasons
SRF05
Commande des
moteurs
Détection d’obstacles
Présence d’un obstacle
ou absence d’un obstacle
Il nous est apparu important de détecter les obstacles assez tôt afin de pouvoir anticiper
l’évitement de ceux-ci. Nous avons donc choisi de détecter les obstacles dans une zone de 1m
devant le robot. Pour cela nous avons choisi d’utiliser un capteur ultrasons permettant de
détecter les obstacles est de connaître la distance de l’obstacle par rapport au robot. Nous avons
choisi de définir plusieurs zones que l’on va scruter en permanence afin de savoir s’il y a un
obstacle ou non dans celles-ci. Ce qui nous permettra dans la suite de définir l’action que dois
effectuer le robot. Pour se faire nous avons décidé de mettre le capteur ultrasons sur un
servomoteur (passage d’une zone { l’autre) comme le montre le schéma suivant :
Zone 1
Zone 2
- 40
-
Zone 3
Robot Vierzon
L’étude détaillée de la stratégie d’évitement d’obstacle et du servomoteur sera effectuée dans la
partie stratégie.
La taille des zones est définie grâce au schéma du « cône » d’émission du capteur ultrasons :
Ce schéma est gradué en pouce (1 pouce = 2,54cm) et en degré.
On peut voir que l’émission des ultrasons ne se fait pas selon un cône mais plutôt selon
une forme non géométrique. Pour un obstacle à une distance de 91,44 cm, on peut considérer
que le cône d’émission des ultrasons est de 20°. Pour des distances inférieures celui-ci est plus
important.
On a donc choisi de prendre un cône de 20° pour modéliser l’émission des ultrasons
puisque notre objectif est de détecter les objets à une distance environ comprise entre 80 cm et
1 m. Il faut considérer que cette valeur est minimale, c’est donc le cas le plus défavorable. Cette
modélisation va nous permettre d’avoir une idée plus précise du fonctionnement du capteur et
d’effectuer les calculs nécessaires.
- 41
-
Robot Vierzon
d
20
°
1m
1m
On peut calculer la distance « d » grâce à la relation suivante :
d=2∗
cos 10°
1m
donc
d = 34,7 cm
Sachant que 20° est une valeur minimale on peut donc considérer que si le capteur ultrasons ne
distingue pas d’obstacle dans une zone le robot { la place de passer.
- 42
-
Robot Vierzon
6.3) Mise en œuvre
Après avoir étudié théoriquement ce sujet, nous l’avons mis en œuvre petit { petit de la façon
suivante :
-
-
Détection d’obstacle seul (émission d’ultrasons, calcul de distance).
-
Choix de la prise en compte d’un obstacle.
Evitement d’obstacle (gestion des moteurs en fonction des obstacles).
Nous avons commencé par faire un évitement d’obstacle simple, { savoir une seule zone de
détection (en face) et le robot tourne toujours à droite pour les éviter. Ensuite nous avons choisi
de déterminer 3 zones, comme expliqué dans la partie théorique, pour perfectionner l’évitement.
Détection d’obstacle :
Organigramme de l’émission des ultrasons et récupération du temps { 1 du retour du
capteur, cet organigramme est différent de celui présenté dans la partie théorique puisque nous
avons utilisé une solution plus simple sans TIMER pour l’émission de l’ultrason.
- 43
-
Robot Vierzon
Émission ultrasons
Début
V_impulsion=1
Delay de 10us
(mini)
V_impulsion=0
V_retour_US==1
TIMER 1 ON
V_retour_US==0
TIMER 1 OFF
Fin
- 44
-
Robot Vierzon
Légende :
V_impulsion est la broche du PIC qui envoi une impulsion pour déclencher
l’envoi des ultrasons.
V_retour_US est la broche qui reçoit le signal que renvoie le capteur ultrasons
La première partie de l’organigramme permet l’émission d’un pulse de 1µs minimum
Cette partie compte le temps pendant lequel le retour du capteur ultrasons est à 1 (nécessaire
pour le calcul de distance ensuite)
Retour du capteur ultrason pour un obstacle
obstacle à 10 cm
Retour du capteur ultrason pour un
à 52 cm
- 45
-
Robot Vierzon
Organigramme du calcul de distance
Calcul distance
Début
Mise de TMR1L et
TMR1H dans une
seule variable cpt
Il faut récupérer le temps mesuré dans la partie émission ultrasons dans les
registres TMR1L et TMR1H, le cycle machine du PIC que nous utilisons est
1us donc le temps mesuré dans le registre TMR1 est en microseconde. Cela
permet de simplement diviser par 58 cette valeur pour obtenir une distance
en centimètre (donné de la documentation).
Les tests ont montré que la mesure de distance était relativement précise,
au centimètre près.
Distance = cpt/58
Fin
Choix de la prise en compte d’un obstacle :
Cette partie est très simple pour un évitement avec une seule zone.
Prise en compte
d’un obstacle
Nous avons finalement choisi de détecter les obstacles
dangereux à 70 cm du robot, puisque si la détection se
fait plus loin le robot détecte des obstacles trop loin
cela implique qu’il voit des obstacles partout.
Début
Distance < 70
Obstacle détecté =1
Obstacle détecté =0
- 46
-
Robot Vierzon
Dans le cas où il y a plusieurs zones il faut gérer le servomoteur et définir dans quelle zone est
l’obstacle ce qui complique l’organigramme. Nous avons choisi de réaliser 3 zones distinctes.
Gestion des servomoteurs
Début
Initialisation des
variables zone 1,2
et 3 à 0
Zone 1 == 1
Zone 2 == 1
Impulsions >10
Valeur TIMER
pour servomoteur
zone1
Impulsion ++
Impulsion = 0
Impulsions >10
Impulsion = 0
Valeur TIMER
pour servomoteur
zone2
zone 1 = 0
zone 2 = 0
zone 3 = 1
Zone 3 == 1
On initialise la
valeur du TIMER
pour servomoteur
zone1
Impulsion >10
Impulsion = 0
Valeur TIMER
pour servomoteur
zone3
zone1 = 1
zone2 = 0
zone3 = 0
Valeur TIMER
pour servomoteur
zone 3
Valeur TIMER
pour servomoteur
zone1
Zone 1=0
Zone 2=1
Zone 3=0
Valeur TIMER
pour servomoteur
zone 2
Impulsion ++
Valeur TIMER
pour servomoteur
zone 3
Grâce à cet organigramme le servomoteur décrit trois zones ce qui permet d’affiner l’évitement
d’obstacle. Il y a une émission d’ultrasons dans chaque zone. Pour finir il faut déterminer si
l’obstacle doit être détecté et dans quelle zone.
- 47
-
Robot Vierzon
Début
Légende :
O_D_1 = 0
O_D_2 = 0
O_D_3 = 0
O_D_1 => obstacle détecté dans la zone 1
O_D_2 => obstacle détecté dans la zone 2
O_D_3 => obstacle détecté dans la zone 3
Distance < 70
Zone 1 == 1
Zone 2 == 1
O_D_1 = 0
Zone 3 == 1
Zone 1 == 1
O_D_2 = 0
O_D_3 = 0
Zone 2 ==1
O_D_1 = 1
Zone 3 == 1
O_D_2 = 1
O_D_3 = 1
La partie gestion des moteurs manquante pour compléter l’évitement d’obstacle sera
développée par la suite puisque elle dépend aussi de la position du robot par rapport à la balise.
La détection d’obstacle fut simple de mise en œuvre dans la partie où il n’y avait qu’une seule
zone puisque il n’y avait pas de gestion de servomoteur. Néanmoins nous avons rencontré
quelques problèmes pour la mise en œuvre de la détection d’obstacle notamment dans la
programmation qui fut plus longue que prévue.
- 48
-
Robot Vierzon
Les capteurs de contact :
Cet organigramme représente la stratégie utilisée
pour les capteurs moustaches.
Dans un premier temps nous voulions rajouter un
test pour effectuer une action si les deux capteurs
détectaient en même temps un obstacle.
Cependant, il s’est avéré lors des essais que les
deux capteurs ne détectaient jamais en même
temps l’obstacle.
En effet, il y a toujours un capteur qui détecte
l’obstacle en premier. Ainsi, celui-ci effectue
l’action associé et ne laisse pas le temps au
deuxième capteur de détecter l’obstacle.
- 49
-
Robot Vierzon
7) COMMANDES DES MOTEURS
7.1) Le PIC18F452
Caractéristiques techniques :
-
Alimentation : 5V (tolérance entre 4,3V et 5,4V)
Courant Maximal en sortie (20 mA)
5 ports d'entrée sortie
2 modules de modulation de largeur d'impulsion
8 convertisseurs CAN 10 bits
fréquence de travail : jusqu'à 40 MHZ
4 timers
Brochage du PIC18F452
Organisation de la mémoire du PIC18F452 :
-
mémoire FLASH : 32 Kbits
Single Word Instructions : 16384 bits
mémoire RAM : 1536 bits
Data EEPROM : 256 bits
- 50
-
Robot Vierzon
Utilisation des interruptions :
Le robot doit atteindre sa vitesse de pointe le plus vite possible. Cependant quel que soit
la tâche qu'il est en train d'effectuer, il doit laisser la priorité à l'évitement d'obstacle.
Afin de faciliter la gestion des priorités dans les programmes, on choisit de faire appel
aux interruptions du PIC. Une interruption interviendra lorsque le robot détectera un obstacle.
Il s'agira d'une interruption à haute priorité, le robot stoppera donc toute action en cours
pour effectuer la fonction liée à cette interruption.
Utilisation de la commande PWM
Le Timer 2 TMR2 est utilisé pour générer la fréquence de hachage du module CCP1 ou
CCP2. On règle la valeur de la période du signal grâce au registre PR2. La valeur du rapport
cyclique sera chargée dans le registre CCPR1L.
Il faudra configurer le Timer 2 en mode PWM. Pour cela il faudra mettre les bonnes
valeurs dans CCP1CON et CCP2CON. En effet, le Timer 2 dispose de deux commandes PWM et
nous en utiliserons une par moteur.
CCP1CON = 0x0F
CCP2CON = 0x0F
Les deux sont utilisés en mode PWM et utilisent comme ressource le timer 2.
Le Module CCP1 :
Le module Capture/compare/PWM registre 1 (CCPR1) comprend 2 registres de 8 bits : CCPR1L
(poids faible) et CCPR1H (poids fort).
Le registre CCP1CON contrôle les opérations effectuées par le module CCP1
Le Module CCP2 :
Le module Capture/compare/PWM registre 2 (CCPR2) comprend 2 registres de 8 bits : CCPR2L
(poids faible) et CCPR2H (poids fort).
Le registre CCP2CON contrôle les opérations effectuées par le module CCP2
- 51
-
Robot Vierzon
Voici le schéma bloc simplifié d'un module PWM :
La période du PWM est réalisée à l'aide du prescaler et peut être calculée avec la formule qui
suit :
PWM period = [(PR2) + 1] • 4 • TOSC •
Voici les signaux obtenus en sortie d'un module PWM :
- 52
-
Robot Vierzon
Lorsque le TMR2 atteint la valeur de PR2 (période), il se passe trois événements:
Mise à 0 automatique de TMR2
Chargement automatique de CCPR1H avec la valeur de CCPR1L
Mise à 1 de la broche RC2 (fin de l'état bas précédent et début d'une nouvelle
période de hachage)
Lorsque TMR2 atteint la valeur de CCPR1H (rapport cyclique), il se passe un évènement:
-
Mise à 0 automatique de la broche RC2 (fin de l'état haut)
Note : L'étude ci-dessus s'applique aussi bien au registre CCPR2 qu'au registre CCPR1.
Configuration pour des opérations de type PWM :
On peut dénombrer 5 étapes qui doivent être suivies pour configurer le registre CCP en mode
PWM :
Définition de la période du PWM en écrivant dans le registre PR2
Définition du rapport cyclique du PWM en écrivant dans le registre CCPR1L et
CCP1CON<5:4>
Définir le module CCP1 comme une sortie en mettant à 0 le 2nd bit de TRISC
Etablir la valeur du prescaler du timer 2 et valider le timer 2 en écrivant T2CON
Configurer les modules CCP1 et CCP2 pour des opérations PWM.
Choix de fréquence du PWM
Exemple de fréquence pour une fréquence de travail de 40MHz
Etude du Timer 2 :
Le timer 2 peut être utilisé pour le mode PWM. En effet il sert à définir la période du module
PWM (en utilisant le prescaler PR2).
- 53
-
Robot Vierzon
Le prescaler et le postscaler sont remis à 0 quand l'une des choses suivantes arrive :
-
Ecriture dans le registre TMR2
Ecriture dans le registre T2CON
RESET d'un composant
(Note : TMR2 n'est pas remis à 0 lors d'une écriture dans T2CON)
T2CON : Registre de contrôle de TMR2
- 54
-
Robot Vierzon
Schéma bloc du Timer 2 :
- 55
-
Robot Vierzon
7.2) Carte de commande des moteurs
Nous nous proposons d’étudier la partie puissance de notre robot. Cette partie permettra
de commander les deux moteurs ensemble ou séparément, pour se faire, nous devons élaborer
une carte capable de créer deux tensions continues, une de 12V pour alimenter l’ensemble de la
partie puissance comprenant les moteurs ainsi qu’une de 5V pour alimenter le PIC 18F452 que
nous utilisons. Nous devons aussi penser à un système capable de protéger le robot des
surcharges et des inversions de phase qui pourrait survenir lors de l’utilisation.
Cahier des charges :
Créer une tension de 12V.
Créer d’une tension de 5V.
Aller dans ses deux sens de marche, avant et arrière.
S’arrêter lorsque l’ordre lui est donné.
Nous souhaitons des mouvements fluides qui décrivent des courbes pour éviter
les patinages.
Protéger le robot contre les surcharges et l’inversion de phase.
- 56
-
Robot Vierzon
Etude fonctionnelle :
FP1 : Création
d’une tension de
12V
FP4 : Protection
du Robot
FP2 : Création
d’une tension de
5V
FP3 :
Déplacement du
Robot
FP1 : Permet de créer une tension continue de 12V.
FP2 : Permet de créer une tension continue de 5V.
FP3 : Permet de diriger le robot dans tous les sens (marche avant, marche arrière, tourner à
gauche ou { droite, freiner, accélérer…).
FP4 : Protection du robot contre les surcharges et l’inversion de phase.
- 57
-
Robot Vierzon
Etude structurelle :
FP1 : Création d’une tension continue de 12V.
Cette fonction est réalisée par une batterie qui délivre en sortie une tension de 12V continue.
C’est cette tension qui alimentera l’ensemble du robot
FP2 : Création d’une tension continue de 5V.
Cette fonction est réalisée par le régulateur de tension KA7805A. Ce composant permet de
modifier une tension continue reçue en entrée en l’abaissant. En effet, ce dernier permet de
baisser la tension de la batterie de 12V continue et nous permet ainsi d’obtenir la tension de 5V
stable nécessaire au bon fonctionnement de l’ensemble des composants logiques présents sur la
carte.
12V
5V
Régulateur
Schéma de câblage du régulateur :
Les valeurs des condensateurs sont normalisées et elles sont données dans la datasheet du
composant.
On a donc : C1=0.33µF et C0=0.1µF
- 58
-
Robot Vierzon
FP3 : Les déplacements du robot
Nous voulons que les moteurs puissent tourner dans les deux sens de rotations
indépendamment l’un de l’autre. Pour cela nous utiliserons un pont en ‘H’ L298N
Nous devons également contrôler la vitesse, pour cela nous utiliserons 2 signaux PWM fournis
par le PIC. Nous ferons évoluer la tension moyenne de ces signaux, ainsi que les moduler en
changeant leur rapport cyclique, nous obtiendrons donc une tension sous la forme VMot = αVcc.
Le fait d’utiliser 2 signaux PWM différents, nous permet de contrôler indépendamment les deux
moteurs qui permettront de faire tourner le robot (on réduit la vitesse d'un moteur pour
permettre de tourner).
Les PWM sortant directement du microcontrôleur, nous gèrerons donc ces dernières
directement { l’aide d'un programme pour bien diriger notre moteur en fonction des
événements.
Bloc Fonctionnel :
Schéma interne du L298N :
- 59
-
Robot Vierzon
Figure 1: Schéma interne du L298N
Nous remarquons plusieurs entrées et sorties :
Nous avons l'alimentation +Vs (voir doc). Notre moteur est alimenté en 12V par la batterie et
lorsqu’il atteint cette tension à ses bornes, il est à sa vitesse maximum.
Les entrées In1, In2, In3, In4, fonctionnent par paires : In1 & In2 pour le bloc du premier pont
en H ‘’A’’ et In3 & In4 pour le bloc du second pont en H ‘’B’’.
Ces entrées ont pour rôles de déterminer le sens de rotation du moteur, car selon leur valeur
elles bloquent les transistors et définissent le chemin du courant et de la tension, ce qui nous
permet de gérer la rotation du moteur. Nous nous basons donc sur la table de vérité suivante
pour établir les équations de mode de fonctionnement du moteur.
C=In1; D=In2
rapide;
Forward=Marche avant; Reverse=Marche arrière; fast motor stop=freinage
Free Running=Roue libre.
- 60
-
Robot Vierzon
Les entrées EnA et EnB accueillent les signaux modulés PWM qui permet de jouer sur la
commutation des transistors NPN et donc de faire varier la valeur moyenne aux bornes des
moteurs.
Les moteurs sont branchés entre OUT1 & OUT2 (Moteur droit) et OUT3 & OUT4 (Moteur
gauche)
Les sorties SENSE A et SENSE B servent à préciser le sens, c'est une simple résistance qui fait
image du courant qui traverse le moteur.
Nous avons étudié la documentation du L298N et trouvé le schéma pour lequel notre système
répond le mieux.
Ci-dessous nous retrouvons le schéma de câblage d’un moteur dans notre cas
3 et 4 sont les Blocs que nous avions étudié au-dessus (2 paires de transistors NPN, sorties
moteurs entrées IN1, IN2, alimentation, 2 paires de portes AND).
Les quatre diodes sont là pour protéger les moteurs des courts-circuits.
Comme pour le régulateur les valeurs des condensateurs nous sont données par le constructeur,
on a donc C2=100nF.
Type de Signal PWM modulé :
- 61
-
Robot Vierzon
Les signaux PWM sont envoyés sur les entrées ENA et ENB ils font varier la vitesse des moteurs.
Tension de sorties Moteur :
Nous remarquons que la tension aux bornes du moteur est l'image de la tension PWM envoyée,
sauf que le moteur ne voit que la tension moyenne de ce signal.
FP4 : Protection du Robot contre les surcharges et l’inversion de phase.
Pour protéger le robot d’éventuelles surcharges, plusieurs diodes anti-retours ont été placées
sur la carte. Ces dernières empêchent l’USB de fournir une tension parasite.
Pour protéger le robot contre une inversion de phase nous plaçons une diode entre
l’alimentation et le régulateur afin de prévenir d’éventuels dégâts si le courant était inversé.
- 62
-
Robot Vierzon
Différents cas :
Nous allons maintenant expliquer les différents cas que nos moteurs vont rencontrer :
1°) Marche avant :
En premier lieu, le cas où nos deux moteurs tournent à la même vitesse permettant donc à la
machine d’aller tout droit:
Les signaux PWM envoyés au L298N sont en phase et identiques en amplitude.
2°) Marche arrière :
La seconde possibilité rencontrée est la marche arrière. Comme pour la marche avant il faut que
les deux moteurs tournent à la même vitesse mais que la tension aux bornes de ces derniers soit
opposée. Nous utilisons donc le pont en H, en ajustant les entrées In nous déterminons le sens
de marche du robot.
Pour ce qui est des signaux PWM envoyés, rien n’a changé comparé { la marche avant.
- 63
-
Robot Vierzon
3°) Tourner à droite :
Pour tourner à droite nous allons ralentir la roue droite. Nous voulons donc modifier le signal
PWM du moteur droit en lui mettant un signal avec un rapport cyclique de 0,5 par exemple ce
qui va ralentir la vitesse de la roue. La roue droite ira donc moins vite que la roue gauche ce qui
va entraîner une rotation à droite.
- 64
-
Robot Vierzon
4°) Tourner à gauche :
Maintenant pour tourner à gauche nous allons ralentir la roue gauche. Le principe est le même
que pour la roue droite :
- 65
-
Robot Vierzon
5.5.5 Schéma structurel global :
Essais et mesures :
Après avoir fini d’assembler la carte électronique, nous avons testé la carte afin de voir si celle-ci
fonctionne et répond aux attentes du cahier des charges.
Vérification du bon fonctionnement des moteurs ainsi que leurs différents sens de marche :
Nous envoyons une tension de 5V sur les entrées In en En pour voir si les moteurs tournent et
ensuite une tension de 0 à 12V aux bornes de +Vs et nous regardons la tension de démarrage
ainsi que le fonctionnement. Dès lors nous avons eu quelques soucis, en effet lors des premiers
tests du programme de Mr Hochmuth, nous nous sommes aperçus que les moteurs ne tournaient
pas mais en revanche émettaient un son aigu. Nous avons donc vérifié si les bons niveaux de
tensions étaient envoyés au PIC, et qu’il renvoyait bien les PWM requises au bon fonctionnement
des moteurs. Ces dernières étant légèrement parasitées, nous avons soudés directement sur les
moteurs des condensateurs anti parasites afin de lisser les signaux. Pour finir, les moteurs ne
fonctionnant toujours pas nous avons décidé de diminuer la fréquence des PWM en la divisant
par 2. Nous avons alors des moteurs fonctionnant très bien avec des PWM de 2Khz.
Vérification de la stabilité des tensions 12V et 5V :
- 66
-
Robot Vierzon
Après avoir chargé la batterie, nous avons tout branché et vérifier l’amplitude de la tension
envoyée par elle-même ainsi que celle en sortie du régulateur 7805. L’ensemble des signaux
était stable.
Test de l’anti inversion de phase :
Dernier test sur cette carte on regarde si la protection contre l’inversion de phase fonctionne.
Pendant un temps très court nous inversons la phase et nous regardons si le moteur démarre.
En effet le moteur ne démarre pas donc le test est positif. De plus il nous est arrivé quelques
malheurs car nous avons branché malencontreusement la batterie { l’envers. Grace { la présence
des diodes de protection aucun composant de la partie régulation n’a été endommagé, et seul un
condensateur a été détruit pour la partie puissance. D’où l’utilité de l’ensemble des protections.
- 67
-
Robot Vierzon
Dossier de fabrication :
Routage :
Le routage a été effectué par Mr Hochmuth dans sa totalité avec le logiciel ALTIUM DESIGNER.
Le routage comprend 10 straps, ainsi qu’un grand nombre de composants plus ou moins
imposant.
Néanmoins, nous pouvons dire que la carte est relativement bien organisée.
Perçage :
Dès lors que nous avons eu notre carte entre les mains, nous l’avons donc percé pour pouvoir
implanter les composants. La seule difficulté de cette partie fût la différence entre certain trous,
donc il fallait être vigilent.
Implantation des composants :
Enfin, nous avons implanté les composants sur notre carte et nous les avons soudées avec soin.
- 68
-
Robot Vierzon
7.3)
Stratégies
7.3.1) Partie théorique
Cette partie consiste à déterminer la meilleure stratégie à aborder pour éviter au mieux les
obstacles (fixes ou mobiles) et ainsi arriver le plus vite possible à la fin de son parcours.
Autrement dit, gérer les déplacements du robot en fonction de son environnement.
Pour cela, on doit prendre en compte deux signaux :
-
Ceux venant de la réception infrarouge (balise).
Ceux venant de la réception ultrason (obstacle).
Ces signaux doivent être analysés pour ensuite générer une commande des servomoteurs après
avoir déterminé lequel des deux a la priorité. Une fois ceci fait, on doit réorienter les capteurs de
sorte { ce qu’il soit dans la direction de leur cible.
Analyser les
signaux
Gérer la priorité
Commander les
servomoteurs
Orienter les
capteurs
Etude fonctionnelle :
Pour étudier cette partie, nous allons la diviser en quatre sous-parties :
-
L’étude de la commande des servomoteurs en fonction des signaux infrarouges.
L’étude de la commande des servomoteurs en fonction des signaux ultrasonores.
L’assemblage des deux études pour définir la priorité.
Etude de la commande des servomoteurs en fonction des signaux infrarouge
Retour
capteur
Analyser le signal
(position de la
balise)
Commander les
servomoteurs
- 69
-
VMOTEUR
Robot Vierzon
L’étude de la commande des servomoteurs en fonction des signaux reçus par le capteur
infrarouge consiste { diriger le robot sur le parcours qu’il a { faire. Dans notre cas, le robot doit
aller d’un angle de la piste { son angle opposé.
Pour notre robot, nous avons choisis une détection de la balise par un émetteur/capteur
infrarouge. Celui-ci étant monté sur un servomoteur, il ne peut pas rechercher la balise sur 360°.
Nous avons remédié à cela en rajoutant un deuxième en « tête bèche ». De cette façon, les
capteurs recouvriront la totalité des 360° comme on peut le voir sur ce schéma :
Capteur 1
Capteur 2
Dans cette configuration, la position du signal infrarouge aura trois possibilités de position :
0° = Avancer
0°positif→ 180° = tourner à droite
180°→0°négatif = tourner à gauche
- 70
-
Robot Vierzon
Pour être plus représentatif, voici une représentation en image :
Angle = 0°
Action = Avancer
0°<Angle≤180°
Action = Tourner à droite
- 71
-
Robot Vierzon
180°<Angle<360°
Action = Tourner à gauche
- 72
-
Robot Vierzon
Etude de la commande des servomoteurs en fonction des signaux du capteur ultrason
Retour
capteur
VMOTEUR
Commander les
servomoteurs
Analyser le signal
(présence
d’obstacle)
Dans cette étude, notre but est d’éviter les obstacles. Pour cela, il nous faut tout d’abord
trouver un moyen de savoir où sont les obstacles sur le parcours. Nous avons choisis d’utiliser
un capteur à ultrason (voir étude du capteur) sur un servomoteur qui nous donnera la distance
de l’obstacle (capteur) et la position (servomoteur).
Nous avons établi plusieurs stratégies :
Avec une seule zone.
Avec trois zones
Chaque zone vaut 20° et détectent les obstacles { une distance d’environ 1 mètre. S’il y a
présence d’obstacle dans la zone où se trouve le capteur alors celui-ci nous renverra un 1
logique (et par conséquent un 0 logique s’il n’y a rien). Ces deux stratégies peuvent être
représentées par le schéma suivant :
Zone 1
Zone 1
90
°
0
°
Zone 2
Zone 3
90
°
0
°
180°
Capteur
Ultrason
- 73
-
180°
Robot Vierzon
Etude de la première stratégie :
Cette partie est assez simple car le servomoteur n’aura pas { bouger, il restera { 90°. Le
robot ne réagira qu’{ une seule condition : qu’il y ait un obstacle devant lui. Le règlement stipule
que le robot doit tourner en priorité { droite. C’est pour cela que dès que le capteur signalera un
obstacle le robot tournera à droite.
Organigramme :
Pour la fonction émettre un ultrason, se reporter { l’étude du capteur pour voir comment
elle est réalisée.
- 74
-
Robot Vierzon
Etude de la deuxième stratégie :
Nous avons trois zones à gérer. Le servomoteur devra donc tourner pour ensuite nous
renvoyer la présence ou non de l’obstacle. Pour ça, il suivra l’organigramme suivant :
Changement position
servomoteur
Début
Charger nouvelle
valeur t0 dans
TIMER
Temporisation
( temps de prise en
compte de la valeur +
temps de rotation)
FIN
A la fin de cet organigramme, le servomoteur se trouve à la position voulue. Il faut maintenant
savoir s’il y a un obstacle.
- 75
-
Robot Vierzon
Nous compléterons l’organigramme précédent comme suit pour le réaliser :
Détection obstacle
avec trois zones
Début
Charger nouvelle
valeur t0 dans
TIMER
Temporisation
( temps de prise en
compte de la valeur +
temps de rotation)
Emettre un
ultrason
Temporisation de
5.8ms
FIN
Après ça, nous savons s’il y a un obstacle dans la zone où se trouve le servomoteur. Il faut
répéter cette action trois fois (une fois par zone). Les données seront sauvegardées dans un
tableau. De ce tableau on en déduira une action à faire :
ZONE 1
0
0
0
0
1
1
1
1
ZONE 2
0
0
1
1
0
0
1
1
ZONE 3
0
1
0
1
0
1
0
1
- 76
-
ACTION
Avancer
Avancer
Tourner à droite
Tourner à gauche
Avancer
Avancer
Tourner à droite
Tourner vite à droite
Robot Vierzon
Explication du tableau :
Lorsqu’il n’y a rien dans la zone 2, on considère que le robot peut passer. On le fait donc
avancer. Si les zones 1 et 3 sont vides, la priorité est de tourner à droite (ligne 3). Si toutes les
zones sont occupées, pour ne pas perdre de temps, nous choisissons de tourner vite à droite
(ligne 8).
Assemblage des deux études pour définir la priorité :
Capteur infrarouge
Capteur ultrason
Commander les
servomoteurs
Choisir la priorité
VMOTEUR
Dans les deux parties précédentes, on a étudié séparément les signaux du capteur
infrarouge et celui du capteur ultrason. Dans cette partie, le but sera de définir à qui donne-t-on
la priorité.
En toute logique, la priorité sera donnée au capteur ultrason car nous ne pouvons pas
suivre la balise infrarouge si un obstacle nous barre la route. Le fonctionnement final sera :
- 77
-
Robot Vierzon
Gestion des priorités
Début
Présence
obstacle?
Rechercher balise
Eviter obstacle
Commander les
moteurs
FIN
- 78
-
Robot Vierzon
7.3.2) Partie pratique
Dans la pratique, nous avons dû prendre en compte d’autre évènement tels que :
-
Les capteurs moustaches
L’arret
La balise
L’ultrason
La fonction Calcul_temps_infrarouge
Le programme final deviendra donc le suivant :
Les fonctions arrêt, moustaches, calcul_temps_infrarouge et ultrason ont été développées dans
une autre partie du dossier.
- 79
-
Robot Vierzon
7.3.3) La gestion des moteurs
Nous ne nous étions pas penchés sur cette partie lors de l’étude théorique. Nous
n’aurons donc qu’une partie pratique.
Cette partie va nous permettre de faire bouger notre robot et est en accord avec la partie
stratégie. L’organigramme sera donc le même que la stratégie mais complété par les valeurs à
ajouter dans les registres CCPR1L et CCPR2L, qui sont les registres des PWM.
Arrêt : On recule en
tournant à droite pendant 2
secondes.
Moustaches :
 si c’est la moustache
droite, on recule en
tournant à droite pendant 2
secondes.
 si c’est la moustache
gauche, on recule en
tournant à gauche pendant
2 secondes.
Aller tout droit : on va tout
droit.
Aller à gauche : on tourne à
gauche.
Aller à droite : on tourne à
droite.
Eviter obstacle : on tourne à
droite jusqu’{ qu’on ne voit
plus d’obstacle.
- 80
-
Robot Vierzon
7.4)
Survolteur
Afin d’augmenter les performances de notre robot, nous avons décidé d’utilisé un
montage hacheur survolteur.
Ce dispositif de l’électronique de puissance est un convertisseur continu – continu, mettant en
œuvre un ou plusieurs interrupteurs commandés et qui permet de modifier la valeur de la tension
d'une source de tension continue avec un rendement élevé.
Les hacheurs de puissance sont utilisés pour la variation de vitesse des moteurs à courant continu.
De même, les véhicules hybrides ainsi que les systèmes d'éclairage sont deux exemples typiques
d'utilisation de ces hacheurs.
Le montage d’un hacheur survolteur est le suivant :
Le hacheur survolteur est composé d’une inductance, d’une diode, d’un condensateur de sortie, et
d’un interrupteur de puissance.
Dans notre cas, le hacheur survolteur aura pour but d’alimenter les moteurs du robot en 24V, {
l’aide d’une batterie 12V.
- 81
-
Robot Vierzon
Principe de fonctionnement :
Nous allons diviser en deux phases distinctes le fonctionnement du hacheur survolteur selon l'état de
l'interrupteur Tp :
De 0 a αT : phase d'accumulation d'énergie
L’interrupteur Tp est ferme (état passant), cela entraine l'augmentation du courant dans l'inductance
donc le stockage d'une quantité d'énergie sous forme d'énergie magnétique. La diode D est alors
bloquée et la charge est alors déconnectée de l'alimentation.
De αT a T : phase de roue libre
L'interrupteur est ouvert, l'inductance se trouve alors en série avec le générateur.
Sa force électromotrice s'additionne à celle du générateur (effet survolteur). Le courant traversant
l'inductance traverse ne passe plus par l’interrupteur Tp mais par la diode D. Il en résulte un transfert
de l'énergie accumulée dans l'inductance vers la capacité, qui va fixer la tension de sortie.
- 82
-
Robot Vierzon
Choix des composants :
MC34063A
Après avoir étudié plusieurs composants, nous avons préféré utiliser le MC34063A de ST
Microelectronics pour la réalisation de notre survolteur. Ce convertisseur continu-continu est un
composant d’aide à la commutation du transistor. Il se connecte à la base du transistor et envoie un
courant suffisamment important pour assurer la commutation de l’état ouvert à l’état fermé.
- 83
-
Robot Vierzon
Transistor Bipolaire TIP3055 :
Le transistor choisi doit pouvoir supporter à ses bornes la tension qui va lui être imposée, et
doit également fonctionner à la fréquence désirée.
Nous avons donc choisi un transistor Bipolaire TIP3055 de ST Microelectronics câblé en
émetteur commun qui supporte des tensions et des fréquences élevées. Ses caractéristiques sont
disponibles dans la datasheet.
Pont diviseur de tension :
Le pont diviseur de tension réalisé par les résistances (R1 et R2) branché à l'entrée VIN du
MC34063A permet de limiter la tension de sortie du survolteur.
Diode :
La diode utilisée doit être extrêmement rapide. On a donc choisi d’utiliser une diode zener 1N3819
pouvant supporter une grande tension d'alimentation, un courant important et disposant d'une
grande vitesse de commutation état passant - état bloqué.
- 84
-
Robot Vierzon
Dimensionnement :
𝑡 𝑜𝑛
𝑡 𝑜𝑓𝑓
=
𝑉𝑜𝑢𝑡 + 𝑉𝐹 − 𝑉𝑖𝑛 (𝑚𝑖𝑛 )
𝑉 𝑖𝑛 𝑚𝑖𝑛 − 𝑉𝑠𝑎𝑡
(𝑡𝑜𝑛 + 𝑡𝑜𝑓𝑓 )𝑚𝑎𝑥 =
𝑡𝑜𝑓𝑓 =
=
24 + 0,6 − 12
12 – 0,8
= 1,125
1
1
=
= 33 𝜇𝑠
𝑓𝑚𝑖𝑛
30000
(𝑡𝑜𝑛 + 𝑡𝑜𝑓𝑓 )𝑚𝑎𝑥
= 15,5 𝜇𝑠
𝑡𝑜𝑛
+
1
𝑡𝑜𝑓𝑓
𝑡𝑜𝑛 = 17,5 𝜇𝑠
𝐶𝑇 = 4,5 × 𝑡𝑜𝑛 = 78,75 × 10−11 = 787,5 𝑝𝐹
- 85
-
Robot Vierzon
Valeur normalisée : 1 nF
𝐼𝑃𝐾(𝑠𝑤𝑖𝑡𝑐 ℎ) = 2 × 𝐼𝑜𝑢𝑡 (max ) ×
𝑅𝑆𝐶 =
0,3
𝐼𝑃𝐾(𝑠𝑤𝑖𝑡𝑐 ℎ)
𝑡𝑜𝑛
+ 1 = 3,4 𝐴
𝑡𝑜𝑓𝑓
= 0,088 Ω
Valeur normalisée : 2*0,033 Ω
𝑉𝑅𝑖𝑝𝑝𝑙𝑒 (𝑝−𝑝) =
𝐶0 =
𝑉𝑜𝑢𝑡
𝑉𝑟𝑒𝑓
× 1,5 × 10−3 =
24
× 1,5 × 10−3 = 28,8 𝑚𝑉
1,25
𝐼𝑜𝑢𝑡 × 𝑡𝑜𝑛
0,8 × 17,5 × 10−6
=
= 486 𝜇𝐹
𝑉𝑅𝑖𝑝𝑝𝑙𝑒 (𝑝−𝑝)
28,8 × 10−3
Valeur normalisée : 680 µF
𝐿𝑚𝑖𝑛 =
𝑉𝑖𝑛 (min ) − 𝑉𝑠𝑎𝑡
× 𝑡𝑜𝑛 = 56,6 𝜇𝐻
𝐼𝑃𝐾(𝑠𝑤𝑖𝑡𝑐 ℎ)
𝑅2 = 𝑅1 ×
𝑉𝑜𝑢𝑡
− 1 = 19 𝑅1
𝑉𝑟𝑒𝑓
Valeur normalisées : R1 = 2,2 kΩ et R2 = 47 kΩ
- 86
-
Robot Vierzon
Partie pratique :
Lors de la mise en œuvre du survolteur, nous avons choisis de réutiliser certain composant des
années précédentes.
Ainsi, la diode 1N3819 est remplacée par une 1N5822. Cela n’a aucune conséquence sur le bon
fonctionnement du survolteur car elles ont toutes deux les mêmes caractéristiques.
Nous avons aussi réutilisé une bobine dont il a fallu déterminer la valeur pour être sûr qu’elle était
bien adaptée au montage.
Pour cela, nous avons relevé la fréquence à la résonnance d’un circuit RLC, c'est à dire lorsque la
tension est égale à 0.
On trouve f = 800Hz avec C = 330µF.
𝑓=
1
𝐿=
2𝜋× 𝐿𝐶
1
(2𝜋𝑓 )2 ×𝐶
On trouve, à l’aide de cette formule, une inductance L = 119µH.
A plusieurs reprises, lors des essais sur la plaquette de câblage, le montage a rencontré des petits
problèmes de fonctionnement.
Le premier était dû à l’alimentation qui ne délivrait pas assez de courant. Une fois que l’on s’en est
rendu compte, nous avons tout simplement utilisé une alimentation de puissance.
Le deuxième concerné le transistor. En effet, celui-ci chauffait beaucoup trop et cessé de fonctionner.
La mise en place d’un radiateur a donc était nécessaire.
Une fois finis, le test a était concluant, la seule différence avec la théorie c’est qu’il délivre 28V au
lieu de 24V.
- 87
-
Robot Vierzon
8) L’ARRET
Dans les règles Du concours, il est précisé que le robot doit d’arrêter lorsqu’il détecte le scotch
blanc réfléchissant placer dans l’angle de son point d’arrivée. Le but de cette fonction est donc de
remplir cette tâche.
5.6.1 Cahier des charges
Le robot doit s’arrêter une fois arrivé sur le scotch et allumer une LED rouge visible.
5.6.2 Découpage en bloc fonctionnel
Pour réaliser cette fonction, nous allons réutiliser le principe du robot suiveur de ligne
vu en première année.
Nous pourrons diviser cette fonction en plusieurs blocs fonctionnels :
FP1 : Détecter la ligne
FP2 : S’arrêter
8.1) détecter la ligne
Pour réaliser cette fonction, nous allons utiliser un capteur Infrarouge OPB704 :
Analyse du capteur OPB704 :
La diode infrarouge envoie des photons
qui sont réfléchis par la surface de la ligne blanche,
et sont ensuite captés par le phototransistor.
Lorsque la lumière émise par la diode est
réfléchie par la ligne blanche, le phototransistor la
capte et passe en régime saturé, la tension de
sortie est alors nulle.
Lorsque le transistor ne capte pas de
lumière (le capteur n’est pas sur la ligne blanche),
il devient bloqué et la tension de sortie est égale à
Vcapt
- 88
-
Robot Vierzon
8.2) S’arrêter sur détection du scotch
Cette fonction est réalisée avec le PIC. On connecte directement le capteur sur la broche
RA2 du PIC, et on teste le niveau de celle-ci pour déterminer si le robot doit avancer ou s’arrêter.
Le problème rencontré est le fait que le robot démarre également sur une surface
réfléchissante. Pour éviter de perdre du temps en réalisant une temporisation, il faut tester deux
fois d’affilées le capteur de manière { éviter la première zone blanche.
voici l’organigramme du programme gérant l’arrêt :
Debut
Déclaration des variables
Initialisation des ports
RA2 == 0 ?
Avance
RA2 == 0 ?
Avance
STOP
Allumer LED rouge
- 89
-
Robot Vierzon
CONCLUSION
Tout au long de l’année, nous nous sommes penchés sur l’étude de ce robot, que ce soit
dans le cadre des heures d’étude et réalisations ou en dehors.
Ce projet a été divisé en deux parties, à savoir une étude théorique des solutions possibles puis
la réalisation pratique.
Nous nous sommes heurtés { divers problèmes techniques, qu’ils viennent du matériel ou de nos
travaux, que nous avons réussi surmonter grâce { l’aide du tuteur de projet.
Durant cette période, nous avons pu apprendre à travailler en équipe et dans un but
commun, à accepter le caractère de chacun et à travailler en fonction.
Ce projet est une parfaite initiation à notre stage en entreprise, puis à notre future vie
professionnelle.
- 90
-
Robot Vierzon
RESUME
Dans le cadre de notre formation, nous devions entièrement réaliser un projet. Nous
avons choisi de faire un robot pour le concours de robotique de Vierzon. Ce robot doit être
autonome et capable d’aller d’un point A { un point B tout en évitant des obstacles, présent sur la
piste à des emplacements aléatoires.
Pour cela, nous avons tout d’abord effectué une étude théorique (individuelle) pour
définir les solutions possibles. Par la suite, nous avons tout mis en commun pour choisir les
meilleures solutions à adopter. Pour finir, la réalisation du robot a commencé depuis le début du
semestre 4.
Tout au long de l’année, nous nous sommes penchés sur l’étude de ce robot, que ce soit dans le
cadre des heures d’étude et réalisations ou en dehors.
Nous nous sommes heurtés à divers problèmes techniques, qu’ils viennent du matériel ou de nos
travaux, que nous avons réussi surmonter grâce { l’aide du tuteur de projet.
- 91
-

Documents pareils