Documente Academic
Documente Profesional
Documente Cultură
Lionel BUCHMAN
Eddie GARO
Fabien GUILLAUME
Léon LAO
Youenn LE LOREC
Thomas PENNORS
Sommaire
Présentation et Objectifs......................................................................................................................... 3
I) PARTIE FONCTIONNELLE :............................................................................................................... 4
1) Diagramme SADT ......................................................................................................................... 4
2) Diagramme FAST ......................................................................................................................... 5
3) Architecture générale .................................................................................................................. 6
II) SOLUTIONS TECHNIQUES : .............................................................................................................. 7
1) Partie Propulsion ......................................................................................................................... 7
1.1) Les moteurs ......................................................................................................................... 7
1.2) Codeur optique.................................................................................................................... 9
2) Partie commande ...................................................................................................................... 11
2.1) Le pont en H – Circuit de commande de puissance .......................................................... 11
2.2) Le signal PWM – Circuit de commande de puissance ....................................................... 14
2.3) Le microcontrôleur PIC ...................................................................................................... 17
2.4) Le régulateur PID ............................................................................................................... 18
2.5) Synthèse ............................................................................................................................ 19
3) Partie communication ............................................................................................................... 20
3.1) Homme-Ordinateur ........................................................................................................... 20
3.2) Ordinateur-PIC Maitre ....................................................................................................... 21
3.4) PIC Maitre-PIC Esclaves ..................................................................................................... 23
4) Le choix des composants ........................................................................................................... 25
4.1) Choix du microcontrôleur ...................................................................................................... 25
4.2) Estimation des coûts .............................................................................................................. 25
III) Conclusion : ............................................................................................................................... 25
Présentation et Objectifs
En 2ème année de cycle de base, les élèves se voient proposés un projet intégrateur : le
PRIME. Il s’agit de mener à bien un projet à dominante scientifique par équipe de six. Le sujet que
nous avons sélectionné consiste à réaliser une base roulante commandée à partir d’un ordinateur
portable. Ce projet s’inscrit dans le contexte général de la robotique mobile d'assistance à la
personne.
Ce projet s’étend sur plusieurs années ; mis en place il y a deux ans il doit mener à long terme
à la réalisation de robots mobiles roulants autonomes. Nous avions donc déjà un point de départ sur
lequel nous appuyer.
Le rapport suivant est un cahier des charges fonctionnel qui décrit l’architecture générale de
la base roulante dan une première partie, puis qui détaille les 3 sous-ensembles majeurs du robot :
-communication
- commande
- propulsion
I) PARTIE FONCTIONNELLE :
1) Diagramme SADT
Pour décrire notre système nous avons utilisé un diagramme S.A.D.T. (Structured Analysis and
Design Technic). Cette méthode nous permet d’organiser et d’identifier clairement les différentes parties de
notre robot et les interactions qu’elles ont entre-elles. A l’aide de différents niveaux de description, il permet
aux lecteurs de distinguer les principales fonctions de notre base roulante.
Voici le diagramme S.A.D.T au niveau A-0 qui décrit notre système de la façon la plus générale :
Le diagramme S.A.D.T. ci-dessous décrit le niveau A0. Y figure les fonctions composantes de
la fonction principale de la base roulante : Déplacer le robot.
On peut donc identifier clairement les principaux éléments utilisés pour la conception de notre
base roulante à savoir : les microcontrôleurs PIC, le pont en H, les motoréducteurs, le codeur
optique.
2) Diagramme FAST
Le diagramme F.A.S.T. suivant donne aussi une hiérarchie assez précise de notre système. On y
distingue la fonction principale (Déplacer le robot), les fonctions composantes (Propulser le robot,
Commander les moteurs et Acquérir les informations) mais aussi les fonctions élémentaires liées à
chaque fonction composante. Enfin on précise les différents composants utilisés pour chaque
fonction élémentaire.
3) Architecture générale
II) SOLUTIONS TECHNIQUES :
1) Partie Propulsion
Pour la réalisation de notre base roulante, nous devons répondre à certaines contraintes
techniques. Celles-ci
ci correspondent au dimensionnement de la base, à savoir la taille de son châssis,
sa masse… … mais aussi aux performances qui sont imposées. Ainsi nous nous devons respecter les
contraintes suivantes :
Dimensionnement :
• Longueur : = 320
• Largeur : = 320
• Empattement :
= 285
• Hauteur : = 90
• Garde au sol : = 10
• Diamètre des roues : D = 80
• Masse finale : = 6 kg
Performances désirées :
Motoréducteurs
Roues motrices
#$%& ∗ 60
#+,-.
= 238.73 ;<. =>(*
8∗Π
Cette vitesse #+,-. correspond donc à la vitesse souhaitée en sortie du motoréducteur #$,0.-+ .
Posons donc :
Déterminons à présent le couple des moteurs nécessaire et suffisant pour faire avancer le robot. On
admettra que l’effort fourni par chaque roue est egal.
Notons /$,0+12. la force motrice nécessaire à fournir par chaque roue afin de mettre en mouvement
mouv
(*
le robot avec une accélération de )$%& 0.5 . . En projection suivant l’horizontale et en
négligeant tous frottements, on obtient :
∗ )$%&
/$,0+12. 1.5 @
2
MARQUE :Maxon
MODELE : 2140 CLL / GS 38 A
PRIX :
a) Définition :
Un codeur optique est un capteur angulaire ou linéaire. Dans notre cas nous opterons pour
un capteur angulaire composé de deux parties dont une tournera à la même vitesse que la roue et
dont l’autre sera fixe. Ci-dessous sont les deux principaux types de codeurs optiques.
b) Principe de fonctionnement :
• Codeur incrémental :
Un codeur incrémental génère des impulsions qui sont doublées et déphasées électriquement de +
ou - 90° suivant le sens de rotation. Le sens de déplacement du mobile est donné par l’ordre
d’apparition des impulsions. Ses impulsions sont comptabilisées de façon à donner une information
concernant la position (nombre d'impulsions délivrées depuis une position d'origine) ou /et une
information concernant la vitesse (nombre d'impulsions par unité de temps). Toute ces informations
sont données par une diode qui réfléchie la lumière sur les graduations du disque qui les envoie vers
un phototransistor qui se sature et se bloque à la cadence du défilement des graduations.
Le codeur incrémental est largement utilisé pour mesurer la vitesse de rotation d’un moteur à
courant continu. En sortie du codeur incrémental on a en général plusieurs voies : une voie z donnant
une impulsion par tour, une voie A donnant n impulsion par tour, une voie B identique à la A mais
déphasé de 90°.
• Codeur absolu :
Nous avons à faire encore à un disque mais cette fois ci avec plus de piste qui comporte une
alternance de secteurs absorbants et réfléchissants disposés selon le code de Gray. Qui permet de
connaitre le nombre total de rotations de la roue.
Son principal avantage est qu'il donne une information de position absolue, alors que le codeur
incrémental donne la position relative (par rapport à une position initiale variable).
c) Choix :
Le principal avantage d’un codeur absolu est qu'il donne une information de position
absolue, alors que le codeur incrémental donne la position relative (par rapport à une position
initiale variable. Cependant comme nous asservirons le moteur en vitesse nous n’avons besoin que
d’un codeur incrémental. Ce codeur sera alors relié électriquement au comparateur de tension du
PIC.
Source : http://stielec.ac-aix-marseille.fr/cours/abati/captvit.htm
2) Partie commande
2.1) Le pont en H – Circuit de commande de puissance
a) Principe général
Le pont en H est un composant électronique qui va nous permettre de contrôler la polarité
aux bornes du moteur ainsi que sa vitesse. Il se compose de quatre commutateurs positionnés
comme sur le schéma ci-dessous.
En fonction de l’état des commutateurs (0 ou 1) et de leurs combinaisons, on obtient
différents comportements possibles pour le moteur :
S1 S2 S3 S4 Résultat
Aucune tension aux bornes de la
0 0 0 0
charge.
1 0 0 1 Courant positif à travers la charge.
0 1 1 0 Courant négatif à travers la charge.
1 1 0 0 Charge court-circuitée.
court
0 0 1 1 Charge court-circuitée.
court
1 : interrupteur fermé 0: interrupteur ouvert
b) Le pont en H réel
On comprend bien l’intérêt du pont en H dans une application telle que la robotique. Il va
nous permettre de contrôler la direction du robot (marche avant/marche arrière) mais aussi
d’amplifier le signal délivré par le microcontrôleur
microcontrôleur qui est très faible. Cependant, le pont utilisé sera
plus complexe :
Sur ce circuit, ce sont les transistors qui font office d’interrupteur. Ils sont commandés deux
par deux, pour sélectionner le sens de rotation du moteur. Les deux commandes (avant et arrière)
sont directement reliées au PIC, c’est ce dernier qui va permettre
permettre d’activer l’une ou l’autre des 2
commandes. Les diodes ne servent qu’à protéger les transistors des retour de courant induit par le
moteur. Ici un seul signal PWM alimente le pont en H grâce à une porte NAND. Cette solution a été
choisie pour deux raisons :
-d’une part un seul signal PWM permet d’alléger le pic qui n’aura pas à gérer deux signaux en
même temps ce qui permet un gain de place et de stabilité.
-d’autre part l’utilisation de la porte NAND à l’entrée du pont en H permet d’éviter de gérer
les cas limites où la charge est court-circuité puisque ces cas disparaissent.
d) Le choix du pont en H :
Les critères de sélection : fréquence de fonctionnement jusqu’à 100kHz, alimentation
supérieur à 30V, protection contre les retours de courant, deux entrées et deux sorties.
De nombreux pont en H répondent à ces critères, il faut donc choisir en fonction du prix et de
l’encombrement et si possible un pont en H qui possède directement en natif une porte logique
NAND pour limiter le nombre de connections.
Voici un exemple de pont en H à 20 broches qui répond à ces critères :
- La broche enable active le moteur si on lui met un 1 logique par le biais du PIC
- Les inputs reçoivent directement le signal PWM du microcontrôleur, ils permettent donc de
déterminer la vitesse des moteurs et leur sens de rotation (à input 1 correspond un sens, à
input 2 l’autre sens)
- Les outputs sont les sorties moteur
a) Définition :
Le PWM (Pulse Width Modulation) ou MLI (Modulation de largeur d'impulsion) est un signal auquel
on fait varier la tension sans modifier ni l'amplitude ni la fréquence mais la largeur de l'impulsion.
C’est un signal à impulsion qui possède un état haut (1 logique), un état bas (0 logique) et un rapport
de cycle(ou duty cycle) qui permet de moduler le signal.
Voici deux schémas qui illustrent le principe :
Application du signal dans le pont en H :
Les chronogrammes ci-dessous présentent l’évolution des quatre transistors en fonction du rapport
de cycle du PWM.
La vitesse du robot est l’image du signal PWM. Ce signal active ou désactive les transistors en
fonction du rapport de cycle qui est compris entre 0 et 1. Comme ces derniers fonctionnent en
saturé on peut dire que lorsqu’un transistor est désactivé il est équivalent, électriquement, à un
interrupteur ouvert et lorsqu’il est activé il est équivalent à interrupteur fermé. Lorsque le rapport
de cycle vaut 0.5 les transistors 1 et 4 sont en opposition de phase avec les transistors 2 et 3 donc la
vitesse du robot qui va en résulter sera nulle. Si le rapport est inférieur à 0.5 les transistors 2 et 3
sont activés et le robot recule (choix arbitraire) et plus le rapport est proche de 0 plus la vitesse du
robot sera élevé. A l’inverse si le rapport est supérieur à 0.5 le robot avance et plus le rapport
augmente plus le robot sera rapide (en avançant).
Les schémas ci-dessous expliquent de manière plus détaillé l’évolution du courant aux bornes du
moteur en fonction des rapports de cycle.
b) Relation rapide avec le microcontrôleur :
Les 3 fonctions à utiliser pour coder le PWM dans le microcontrôleur sont : PWM_Init(),
PWM_Start(), PWM_Change_Duty().
-PWM_Init();
C’est dans cette fonction que l’on précise entre parenthèses la fréquence du signal PWM(en Hertz)
-PWM_Start();
Cette fonction démarre le module spécifique et donc le signal PWM.
-PWM_Change_Duty();
C'est dans cette fonction que l’on indique le rapport cyclique. Il faut faire attention car ce rapport de
cycle n’est pas indiquer en pourcentage mais en valeur décimale (de 0 à 255).
Pour résumer, des valeurs inférieures à 127 feront reculer le robot tandis que des valeurs
supérieures le feront avancer.
Ces différents éléments sont reliés par des bus que nous expliquerons dans le paragraphe suivant.
b) Fonctionnement général d’un microcontrôleur PIC
A la mise en route du système, le PIC va chercher la 1ère instruction à exécuter à l’adresse 0
dans un registre appelé registre compteur de programmes. Cette instruction est ensuite stockée dans
un le registre d’instruction. Une fois arrivée, l’instruction est exécutée grâce au décodeur automate.
C’est le bus d’adresse qui permet au microcontrôleur d’aller sélectionner l’adresse où est
stockée l’instruction initialement et d’indiquer la case mémoire finale ou l’on va stocker cette
donnée.
Mais c’est le bus de données qui permet de déplacer la donnée d’une case mémoire à
l’autre. C’est lui aussi qui va transférer l’instruction du registre vers le périphérique voulu.
Ces opérations passent par un bus de contrôle qui indique si l'opération en cours est une
lecture ou une écriture, si un périphérique demande une interruption etc.
Le processus se répète à l’identique, le PIC va chercher une nouvelle instruction dans le
registre compteur de programme et elle est traitée à l’identique.
Les opérations sont exécutées les unes à la suite des autres, un PIC ne peut réaliser plusieurs
opérations simultanément ; une horloge va alors fixer la fréquence des opérations.
Le PID (Proportionnel Intégral Dérivé) est un régulateur que l’on place dans la chaine directe
du système afin de modifier la nature de sa réponse. Le PID, placé avant le moteur permet de
corriger l’écart mesuré par le codeur optique entre la tension à l’entrée du système et celle à sa
sortie. Il nous permet donc d’obtenir un comportement optimal du système, sous réserve que l’on
règle correctement les coefficients du système.
La fonction de transfert du régulateur PID est la suivante :
M MO ∗
3KL = M N N
1 N P
Avec:
- K, le gain proportionnel, lorsqu’il augmente, l’erreur statique diminue mais le dépassement
devient plus important
- Ks, le gain de la composante intégrale, lorsque qu’il augmente, l’erreur statique devient
quasi-nulle
nulle mais l’établissement du régime stationnaire est plus long
- Kd, le gain de la composante dérive, lorsqu’il augmente, le dépassement diminue et le
l’établissementt du régime final est plus rapide.
Dans notre modèle, le PID sera programmé dans le microcontrôleur PIC. Il corrigera l’écart
entre la tension délivrée par le PIC esclave et celle reçue par l moteur.
Schéma fonctionnel de la boucle d’asservissement de la base roulante :
2.5) Synthèse
3) Partie communication
Environnement de développement :
Ordinateur Programme
Assembleur : logiciel clef
(Suite d’instructions) - permettant de traduire les
Assembleur instructions (homme) en code
machine binaire (machine).
PIC 1
I2C
3.1) Homme-Ordinateur
a) Le protocole RS232
Cette norme de communication permet, contrairement au protocole I2C, le dialogue entre le
PC et le micro contrôleur maître. La connexion se fait grâce à un câble série connecté sur le PC à un
port série (moyennant un adaptateur ou un vieux PC). Cette norme est aujourd’hui obsolète pour le
transfert de données importantes du fait de sa faible vitesse de débit (7ko/s) toutefois pour la
programmation d’un PIC cette faible vitesse importe peu. Le câble série est connecté au
microcontrôleur. http://fr.wikipedia.org/wiki/RS-232
« La liaison RS232 est une ligne où les bits arrivent successivement à des intervalles
aléatoires, elle est donc asynchrone »
« L'octet à transmettre est envoyé bit par bit (poids faible en premier) par l'émetteur sur la
ligne Tx, vers le récepteur (ligne Rx) qui le reconstitue. La vitesse de transmission de l'émetteur doit
être identique à la vitesse d'acquisition du récepteur. Ces vitesses sont exprimées en BAUDS (1 baud
correspond à 1 bit / seconde, dans notre cas). Il existe différentes vitesses normalisées: 9600, 4800,
2400, 1200... Bauds. La communication peut se faire dans les deux sens (duplex), soit émission
d'abord, puis réception ensuite (half-duplex), soit émission et réception simultanées (full-duplex)
La transmission étant du type asynchrone (pas d'horloge commune entre l'émetteur et le récepteur),
des bits supplémentaires sont indispensables au fonctionnement: bit de début de mot (start), bit(s)
de fin de mot (stop). D'autre part, l'utilisation éventuelle d'un bit de parité, permet la détection
d'erreurs dans la transmission» (extrait du site de Patrick ABATI).
La communication entre le câble RS232 se fait au moyen des broches RB1(Rx) et RB2(Tx) du
PIC.
http://pagesperso-
orange.fr/fabrice.sincere/cm_electronique/projet_pic/aidememoire/usart628/usart628.htm
Il reste
ste cependant à passer de la sortie du câble RS232 à ces entrées.
c) RS232-PIC
Il existe un adaptateur pour faire le lien entre la sortie du câble RS232 et les entrées RX et TX
du microcontrôleur. http://www.coolcircuit.com/circuit/rs232_driver/index.html.
http://www.coolcircuit.com/circuit/rs232_driver/index.html Cet adaptateur est
le MAX 232 et permet une communication entre la prise femelle du RS232 et le Microcontrôleur.
3.3) Le concept Maître Esclave.
Le concept est qu’un composant dicte des instructions à un ou plusieurs autres composants
qui exécutent ces ordres. Ici la communication entre le maître et les esclaves se fera en i2C. Même si
nous choisissons les mêmes microcontrôleurs en maitre et en esclave, le microcontrôleur maitre
imposera son horloge sur celle du microcontrôleur esclave.
a) L’I2C
Le bus I2C (Inter Integrated Circuit bus) a été créé par Philips dans les années 80. Il permet de
relier et de faire communiquer simplement des circuits intégrés (micro processeur, micro contrôleur)
avec d’autres composants électroniques grâce à seulement trois signaux : un signal de données, un
signal d’horloge et un signal électrique de référence. L’I2C utilise la communication série pour
transmettre ses données, ceux-ci sont donc envoyées bit par bit.
L’envoi des informations est contrôlé par le protocole I2C. Cela se passe en définissant les
différents états logiques des signaux de données (SDA) et d’horloge (SCL). Avant que l’information du
maitre (le PIC principal) soit envoyée aux différents esclaves (les destinataires des données
envoyées), il y a différentes étapes.
Il faut tout d’abord une prise de parole du maitre, cela sera possible seulement si les signaux
SDA et SCL sont en état haut. Une fois la prise de parole possible, il faut un signal de départ ou un
Start Bit. Il se traduit par le passage de SDA à 0 (état bas) et le maintien de SCL à 1(état haut).
La condition de départ étant validée, on peut procéder à la transmission d’un octet. Le maitre
passe alors SCL à 0 et applique le bit de poids fort de l’octet à envoyer sur SDA, SCL est alors passé à
1. Lorsque SCL repassera à 0, l’action précédente sera réitérée avec un bit de poids inferieur jusqu’à
ce que l’octet complet soit envoyé.
Pour vérifier que la transmission s’est bien déroulée, le maitre envoie un bit acknowledge à 1
aux esclaves, ceux-ci doivent alors imposer un niveau 0 à leur bit acknowledge. Lorsque le maitre
reçoit cette information, il sait que l’envoi à réussi et peut continuer. La condition d’arrêt marque la
fin de l’envoi de l’octet. SDA passe à 1 et SCL reste à 1.
Source : http://fr.wikipedia.org/wiki/I%C2%B2C ;
http://www.logiclic.org/index.php?option=com_content&task=view&id=12&Itemid=40&limit=1&limi
tstart=2
4) Le choix des composants
Il fait donc office d’un bon microcontrôleur maitre mais il peut également gérer la fonction
d’esclave :
-Il lit le signal I2C ce qui lui permet de recevoir des ordres.
-Il génère un signal PWM ce qui permet de contrôler la vitesse du moteur
Nous dépassons le budget mais les achats groupés permettront de diminuer les coûts
III) CONCLUSION :