Sunteți pe pagina 1din 25

PRIME

Projet Base Roulante

Cahier des Charges


Fonctionnel

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 :

• Vitesse max. : #$%& = 1 .  (*


(

• Accélération max. : )$%& = 0..5 .  (*

1.1) Les moteurs

a) Choix techniques et montage


Notre base roulante sera à roues différentielles. Cela signifie que les roues se trouvent dans
un même axe et que chacune possède son propre système de propulsion, à savoir son propre
moteur. Ce système de roues différentielles permet le changement de direction de la base, qu’elle
soit en mouvement ou à l’arrêt.

Par soucis de simplicité


té de montage et de performance, nous utiliserons des motoréducteurs
à courant continu. Un motoréducteur est composé par un réducteur déjà équipé d’un moteur
électrique formant ainsi un seul bloc. Celui-ci
Celui ci pourra alors être directement fixé au châssis. Quant
Qua
aux roues motrices elles viendront directement se fixer sur l’arbre rotatif du moteur et sans autre
réducteur intermédiaire.

Chaque motoréducteur va transformer l’énergie électrique en provenance du


microcontrôleur PIC en énergie mécanique.
Roue libre
sphérique

Motoréducteurs

Roues motrices

b) Dimensionnement des moteurs :


Admettons que l’on désire atteindre la vitesse maximale #$%& du robot en ligne droite. La vitesse de
rotation des roues #+,-. en tours par minute est alors de :

#$%& ∗ 60
#+,-. 
=  238.73 ;<. =>(*
8∗Π
Cette vitesse #+,-. correspond donc à la vitesse souhaitée en sortie du motoréducteur #$,0.-+ .
Posons donc :

#+,-.  #$,0.-+  240 ;<. =>(*

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

Le couple nécessaire 345 6$,0.-+ en sortie de chaque motoréducteur est donc de :


8
345 6$,0.-+ = /$,0+12. ∗ = 0.06 @. 
2
A partir des paramètres VBCDEFG et CoupleBCDEFG et d’une tension d’alimentation de 12 V, on peut
désormais choisir un moteur répondant à ces critères.

Nous choisissons donc le moteur suivant :

MARQUE :Maxon
MODELE : 2140 CLL / GS 38 A
PRIX :

Références moteurs : www.mdpmotor.com

1.2) Codeur optique

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 :

Schéma adopté pour le pont en H

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.

c) Le choix de la porte NAND


Critère de sélection : 2 entrées et 1 sortie.
On remarque qu’il existe deux types de technologie de porte NAND : les TTL et les CMOS.
La série TTL-LS présente les caractéristiques suivantes:
- dissipation de puissance faible
- temps de propagation courts
- tension de claquage supérieure à 15 V
- alimentation de 4.75 V à 5.25 V
La famille CMOS 4000 présente les caractéristiques suivantes:
- très faible dissipation de puissance
- haute immunité au bruit
- alimentation de 3 V à 15 V
Les caractéristiques étant assez proches le choix s’est porté sur le composant le moins cher :
-Le CD4011 qui possède 4 portes NAND à 2 entrées, un boitier DIL14 et coûte 0.25 €.

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

Les transistors du pont en H sont assimilables à des interrupteurs puisqu’ils fonctionnent en


tout ou rien (soit bloqué soit saturé). La variation de vitesse est donc du au passage plus ou moins
rapide entre les deux états des transistors pour un sens de marche donné. Ce passage de bloqué ou
saturé est envoyé par le signal PWM.

2.2) Le signal PWM – Circuit de commande de puissance

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.

2.3) Le microcontrôleur PIC

Un microcontrôleur est un circuit intégré rassemblant dans un même boitier un


microprocesseur, plusieurs types de mémoires et des périphériques de communication (Entrées-
Sorties).

a) Architecture d'un microcontrôleur

Un microprocesseur se compose des éléments suivants :

- La mémoire morte ou ROM qui va stocker le programme codé en C.


- La mémoire vive ou RAM qui va stocker les variables et permettre les calculs
- Des périphériques tels des modules PWM, des convertisseurs Analogiques Numériques et
inversement, des timers, des comparateurs
- Une horloge pour cadencer les opérations : elle va imposer la fréquence à laquelle
s’effectuent les opérations (fréquence de travail du PIC)

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.

c) Application à la base roulante


On a vu précédemment qu’un PIC ne pouvait pas traiter plusieurs informations en parallèle ;
il y a un séquencement des opérations. Il ne faut donc pas surcharger un seul PIC avec beaucoup
d’opérations. Or dans le cas de la base roulante, le PIC va avoir plusieurs fonctions :
o Il va lire les données rentrées dans l’ordinateur (vitesse ou position) et transformer
ces données binaires en une tension qui sera appliquée aux moteurs. C’est le rôle du
Convertisseur Numérique Analogique, un périphérique intégré au PIC.
o Le signal qu’il va délivrer à chaque moteur sera un PWM, c’est un autre module qui
devra être intégré au PIC.
o Dans le cas d’une boucle fermé, notre PIC devra aussi comporter un comparateur
pour comparer la tension aux bornes du moteur (mesurée par le codeur optique) et
la tension qu’il délivre.
C’est beaucoup d’opérations pour notre PIC ! Il faut non seulement qu’il possède tous ces
périphériques et qu’il y ait la connectique nécessaire, mais surtout le séquencement des opérations
va poser un problème. Chaque instruction va être réalisée l’une après l’autre, il y aura donc une
différence de comportement entre les deux moteurs.
Pour ces raisons, nous avons décidé d’utiliser trois PIC, un PIC maître et deux PIC esclaves.
Le PIC maitre gérera directement les données de l’ordinateur, il les retransmettra aux deux
autres PIC qui généreront la PWM pour chaque moteur indépendamment. Les deux moteurs
recevront donc le signal quasi simultanément. C’est aussi sur ces PIC que reviendra la boucle
d’asservissement de chaque moteur : la tension aux bornes de chaque moteur sera comparée à celle
fournie par son PIC correspondant.

2.4) Le régulateur PID

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).

Logiciels - joue le rôle aussi de «


. débuggeur » du programme
Ex. : MPLAB (gratuit)
Programmateur chez Microchip
RS232, USART, Max232

PIC 1

I2C

PIC 2 moteur PIC 3 moteur

Source : cours d’introduction aux Microcontrôleurs PIC

3.1) Homme-Ordinateur

Le but est de générer une trajectoire et de la transmettre au microcontrôleur qui la


stockerait dans sa ROM. Pour ce qui est de la génération de la trajectoire nous pensons créer une
IHM qui comporterait un cadre dans lequel il sera possible de dessiner. La trajectoire ainsi dessinée
sera composée d’une multitude de pixels. Nous pensons définir toute trajectoire dessinée comme la
mise bout à bout d’une multitude de segments.
L’idée est de créer un segment tous les n pixels et par traitement de leurs coordonnées de
dégager une tendance d’évolution. Le nombre n et la vitesse étant constants, la durée de parcours
d’un segment est donc la même pour tous les segments et sera notée D. La droite de tendance sera
une droite affine qui représentera la trajectoire entre les pixels m et m+n. La trajectoire finale sera
donc une succession de segments. L’angle entre deux segments définira l’angle que devra suivre la
base roulante pendant la durée D. Nous pourrons alors traduire chaque angle comme une durée lors
de laquelle une roue tournerait et pas l’autre.
Nous pourrions générer sous Java une liste de points par lesquels passe la trajectoire
dessinée puis la traiter sous Matlab de façon à obtenir une liste d’instructions pour le moteur.
3.2) Ordinateur-PIC Maitre

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 »

La communication entre deux composants se fait ainsi :

« 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).

Nous utiliserons ici un câble RS232 DB9 (avec 9 broches)


b) Communication PC-câble câble RS232
Comme cela est expliqué sur le site http://royale.zerezo.com/talk/Mia09/PC.html , il apparait
qu’une interface est nécessaire entre le RS232, qui communique en série et le bus du PC qui
communique sur 8 bits parallèles. L’UART est transpose les données envoyées en parallèle en
données passant par un seul fil de manière asynchrone. (http://fr.wikipedia.org/wiki/UART
(http://fr.wikipedia.org/wiki/UART).
Toutefois il faut noter qu’un autre composant existe, l’USART. Ce composant remplit les mêmes
fonctions et plus puisqu’il gère également la transmission synchrone. Les microcontrôleurs de d chez
Microchip dans la gamme PIC18 ne comporte pas d’entrée UART mais des entrées USART. Le schéma
ci-dessous
dessous explique la constitution d’une trame UART.

Constitution d’une trame UART

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.

3.4) PIC Maitre-PIC Esclaves

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.

Voici un exemple de communication via l’I2C :

Le startBit, SDA L’acknowledge est à Le bit d’arrêt,


passe à 0 et SCL 1 pour vérifier la SDA passe à 1 et
reste à 1. transmission. SCL reste à 1.
Comme on souhaite, en général, connecter plusieurs composants sur le bus I2C, il faut les
différencier, cela se passe en attribuant une adresse à chacun des composants. Cette adresse est
codée sur 7 bits et représente un octet. Il y a sur cet octet un bit noté R/W qui permet d’indiquer au
maitre s’il doit lire ou écrire des informations. La lecture correspondant à un état haut du bit R/W et
l’écriture à un état bas du bit.

b) Utilisation de l’I2C dans la base roulante.


Dans notre cas, le PIC Maitre devra contenir la fonction de lecture et d’écriture. En effet, il
devra réécrire les données téléchargées à partir de l’ordinateur (stockée dans une variable) et
ajouter l’adresse du destinataire pour dire à qui est destinée l’information qu’il va transmettre à
travers le BUS. Il faut donc qu’il puisse écrire et il devra pouvoir lire les informations qui seront
transmises par les esclaves, les bits d’acquittement qui informe le maitre du succès de l’envoi de ses
données. Le maitre écrit et transmet les informations. Plusieurs PIC étant connectés au même bus,
ils ont des adresses différentes pour pouvoir les identifier.
En revanche, pour les PIC esclaves la fonction écriture n’est pas essentielle car ils ne font que
lire les instructions du maitre : ils n’ont besoin que de la fonction lecture.
Dans notre base roulante, après avoir reçu les informations du programme de génération de
trajectoire de l’ordinateur, le PIC Maitre prend la parole sur l’I2C (de son microcontrôleur). Grace à sa
fonction écriture, le maitre écrit ses instructions dans la ram du microcontrôleur et il transmet ses
informations aux PIC esclaves via l’I2C. L’I2C est un bus multipoint ce qui permet à tous les éléments
récepteurs connectés au bus de recevoir les informations transmis par l’émetteur.
La présence de la fonction de maitre-esclave est explicitée sur les data sheets par la notation
MSSP pour Master Synchrone Serial Port. Le PIC maitre sera relié aux PIC esclaves via les pattes RC4
et RC3 de notre microcontrôleur 18f97, correspondant respectivement aux données SDA et SCL.

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

4.1) Choix du microcontrôleur


Le microcontrôleur utilisé sera certainement un 18f de chez Microchip car c’est un modèle
très répandu, nous devrons surement trouver beaucoup de documentation. De plus ce modèle est
bon marché. On choisit le PIC18F97J60 pour le PIC maître pour les raisons suivantes :
-Il possède le mode « maître » qui autorise le dialogue avec un PIC « esclave ». Il possède
également le mode « esclave ». Il peut écrire et lire en I2C via son mode MSSP. L’écriture lui
permet de communiquer des ordres aux microcontrôleurs esclaves.
-Il gère la norme USART (et donc UART) nécessaire pour la communication entre le PIC et le
PC via RS232

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

De plus ce microcontrôleur est à un prix abordable 3,77$ soit moins de 3euros.

4.2) Estimation des coûts

Equipement Nombre Prix (€)


Rallonge DB9 M/F moulé 1 14,95
Max232 1 2,97
LMD18200 (Pont en H) 2 29
Porte Nand 4 1<
PIC18F97J60 3 10
Codeur optique 2 70-100
~70 (sans codeurs optiques)

Nous dépassons le budget mais les achats groupés permettront de diminuer les coûts

III) CONCLUSION :

Ce cahier des charges fonctionnel nous a permis de comprendre le fonctionnement détaillé


de chacun des principaux sous-ensembles. Il nous a aussi permis de comprendre l’architecture
générale de la base roulante. Cette première étude est donc le point de départ de la réalisation à
proprement dit de la base roulante. En effet, nous allons essayer d’appliquer réellement les solutions
techniques envisagées dans ce rapport pour obtenir une base roulante fonctionnelle.

S-ar putea să vă placă și