La bible du sumo - Association Esieespace

publicité
 LA BIBLE DU SUMO SOMMAIRE SOMMAIRE ........................................................................................................................ 2 I – Les bases et les composants de base ............................................................................. 3 A -­‐ SK10 ...................................................................................................................................................................................3 B – Interrupteurs.................................................................................................................................................................4 C – Régulateurs de tension ..............................................................................................................................................5 D – Optocoupleurs ..............................................................................................................................................................6 E -­‐ Pont en H ..........................................................................................................................................................................8 F – Le PWM.............................................................................................................................................................................9 G -­‐ Diode ............................................................................................................................................................................... 10 H – Résistances.................................................................................................................................................................. 11 II – Le PIC ......................................................................................................................... 12 A – Introduction ................................................................................................................................................................ 12 B – Le montage de base.................................................................................................................................................. 13 C – MikroC............................................................................................................................................................................ 14 C.1 – Nouveau projet........................................................................................................................................................14 C.2 – Entrée ou sortie ? Les registres TRIS .............................................................................................................14 C.3 – Modifier la valeur des I/O. Les registres PORT .........................................................................................15 C.4 – Les opérateurs conditionnels ............................................................................................................................16 C.5 – Fonctions d’attente................................................................................................................................................16 C.6 – Nouvelles fonctions................................................................................................................................................16 D – Programmation du PIC........................................................................................................................................... 18 C’est tout ? ...................................................................................................................... 19 Copyright ......................................................................................................................... 19 Copyright © 2012 ESIEESPACE
2
I – Les bases et les composants de base Et bien quoi ? N’ayons pas peur de le dire : Nous commencerons par les bases, composant
par composant, en allant à notre rythme !
A -­‐ SK10 Une plaquette SK10 permet de réaliser un montage sans avoir à
ne souder aucun fil. Les composants sont reliés entre eux soit :
- Directement grâce à l’architecture spécifique des SK10
que l’on détaillera ensuite.
- Par des fils que l’on enfonce dans la SK10.
L’architecture d’une SK10 est presque toujours la même.
• Les deux lignes (souvent marquées en bleu et rouge)
situées de chaque côté forment une suite de connecteurs
tous reliés entre eux.
• Les deux ‘bandes centrales’ sont formées de lignes
horizontales de 5 connecteurs reliés entre eux.
Sur le schéma de
droite, chaque carré
représente un petit
trou dans la SK10. Tous les carrés situés sur une
même ligne sont reliés entre eux électriquement.
Une façon courante de procéder est de placer sur
les lignes extérieures l’alimentation du montage
(5V sur le rouge et la masse sur le bleu). Ainsi il
est plus facile d’alimenter les différents
composants placés sur la SK10.
Les gros connecteurs ronds situés tout autour
permettent de brancher les fils provenant de
l’alimentation ou allant à l’oscilloscope. Pour les
utiliser il suffit d’en dévisser la tête jusqu’à
apercevoir un petit trou situé dans le pas de vis. Il
faut ensuite placer dans ce trou un fil de cuivre
fin et dénudé au bout, avant de revisser la tête du
connecteur.
Copyright © 2012 ESIEESPACE
3
B – Interrupteurs Il existe de nombreuses sortes d’interrupteurs. Certains se présentent sous la forme de
boutons poussoir qui ne laissent passer le courant que lorsque l’on appuie dessus, d’autres
possèdent une LED qui ne s’allume que lorsque l’interrupteur est en position fermée, etc.
Certains possèdent 3 pattes. Dans ce cas, la patte du milieu est souvent une patte ‘commune’.
L’interrupteur laisse alors passer le courant entre le commun et la patte de gauche (en
pointillé) ou entre le commun et la patte de droite (en trait plein) en fonction de sa position.
Lorsque l’on utilise des interrupteurs comme entrés dans des montages numériques (ex :
entrée d’une porte AND ou d’un PIC) il est nécessaire de placer une résistance de pull-down
entre l’interrupteur et la masse. En effet, les interférences comme les rayonnements des
ampoules ou les émissions des réseaux sans-fil, viennent perturber l’entrée des circuits
numériques. Ainsi, un fil non relié en entrée d’un circuit peut être vu comme un « 1 »
logique. Il faut donc forcer l’entrée à « 0 » en plaçant une résistance élevée entre l’entrée du
circuit logique et la masse.
Sans résistance de pull-down
Copyright © 2012 ESIEESPACE
Avec résistance de pull-down
4
C – Régulateurs de tension De nombreux circuits tel que les PIC mais aussi les portes inverseuses, and, nand, etc
nécessitent une tension d’alimentation stable de 5V. Cependant les piles ou accumulateurs
utilisés sur les robots délivrent souvent une tension supérieure à 5V comme par exemple les
piles carrées de 9V ou les batteries lithium de 7,4V. On utilise alors un composant appelé
régulateur. De plus, les régulateurs assurent une tension stable qui ne varie pas lorsque l’on
débite du courant (dans une limite raisonnable…) ce qui n’est pas le cas d’une pile ou d’une
batterie.
Un régulateur possède 3 pattes : la masse, la tension d’entrée, et la
tension de sortie régulée. Les régulateurs les plus courants sont ceux de
5, 6, 8, 9, 12 et 24V.
La tension de sortie est presque toujours spécifiée dans
la référence du régulateur. Par exemple, le L7805CV
régule la tension à 5V.
Ensuite, afin d’obtenir une tension de sortie propre (sans oscillations parasites), on place un
condensateur de 22pF entre la masse et la tension d’entrée, et un second entre la masse et la
tension de sortie régulée.
Enfin, il faut faire attention à respecter la tension minimale d’entrée et à ne pas dépasser le
courant maximum que peut supporter le régulateur.
Copyright © 2012 ESIEESPACE
5
D – Optocoupleurs Un optocoupleur est composé d'un émetteur infrarouge et d'un récepteur. Son nom vient du
fait qu'il sert initialement à isoler électriquement deux circuits (ou deux parties d'un circuit) en
faisant transiter les informations par l'infrarouge lieu des faires transiter par un fil électrique.
Ainsi les circuits ne sont pas couplés électriquement mais optiquement.
Cependant pour les robots on en fait généralement une utilisation différente. En effet,
l'intensité du signal infrarouge qui est émis décroit en fonction de deux principaux
paramètres.
- la distance : plus le récepteur est loin de l'émetteur et plus le signal reçu sera faible.
- les couleurs : si le signal émis rencontre un objet blanc il sera presque entièrement réfléchi,
alors que s'il rencontre un objet noir il sera absorbé.
Il découle donc deux utilisations de ces paramètres :
- Les télémètres qui permettent la détection d'obstacles et de calculer la distance à laquelle ils
se trouvent. Nous utilisons généralement les télémètres SHARP sur le robot de la coupe. Il en
existe plusieurs donc la distance de détection varie entre 10 et 200 cm.
- Les "détecteurs de ligne blanche". C'est du moins l'utilisation que nous faisons des
optocoupleurs CNY70 qui ont une portée de l'ordre du cm et qui permettent quand on les
place près du sol de détecter un ligne blanche. Nous les utilisons donc généralement sur les
robots Sumo pour détecter le bord du terrain.
Copyright © 2012 ESIEESPACE
6
Il important de bien garder à l'esprit que le signal reçu par le récepteur est une tension dont
l'amplitude varie entre 0 et la tension d'alimentation. C'est un signal analogique et il doit donc
passer dans un convertisseur analogique numérique (CAN ou ADC Analog Digital Converter)
avant de pouvoir être traité numériquement.
Copyright © 2012 ESIEESPACE
7
E -­‐ Pont en H Le pont en H permet de contrôler le sens de rotation d'un moteur. Il tire son nom du schéma
que l'on en fait généralement.
Son principe est très simple. Lorsque les interrupteurs
1 et 4 sont fermés, et les interrupteurs 2 et 3 ouverts, le
courant circule dans le moteur de a vers b.
Inversement lorsque les interrupteurs 1 et 4 sont
ouverts et les 2 et 3 fermés, le courant circule dans le
moteur de b vers a. Ainsi on parvient à changer son
sens de rotation.
Naturellement en pratique, on ne va pas utiliser des
interrupteurs mais des transistors qui vont jouer le rôle
d'interrupteur en fonction du courant passant par leur
base.
Cependant, ce montage est fastidieux
à réaliser soi-même et l'on utilise
plutôt des composants qui utilisent
exactement ce principe mais dans
lequel tout est intégré. En effet,
l'utilisation de transistor nécessite de
placer la bonne valeur de résistance
sur la base afin que celui-ci laisse
passer un courant satisfaisant.
Pour contrôler de gros moteurs (ex:
Coupe de France de Robotique) on
utilise des 18200T et pour de plus
petits moteurs (robots sumo) on utilise
des L298N (double pont en H dans le
même composant).
L298N
18200T
Ces composants permettent de contrôler les moteurs très simplement. Il faut tout de même
bien lire les datasheet afin de ne pas oublier de signaux enable ou de résistance qui contrôle la
charge.
Copyright © 2012 ESIEESPACE
8
F – Le PWM La question qui devrait maintenant vous venir à l’esprit est : « C’est bien beau, je peux
contrôler le sens de rotation de mon moteur, mais si j’ai aussi envie de contrôler sa vitesse,
comment je fais ? » Et bien le PWM est là pour ça !
PWM signifie Pulse Width Modulation en anglais c'est à dire Modulation de Largeur
d'Impulsion pour nous autre français. Cela désigne un signal carré dont on fait varier le
rapport "temps à l'état haut / période". Ce rapport est appelé rapport cyclique et ne peut varier
qu'entre 0 et 1.
« Et mon moteur ne risque pas de tourner un peu - s’arrêter - tourner un peu - s’arrêter,
etc ? ».
Non ! Si la fréquence du PWM est assez élevée alors l’inertie du moteur et de ce qu’il
entraine font que sa vitesse est une moyenne du signal PWM (et un moteur DC c’est avant
tout une bobine, il va donc se comporter comme un filtre passe-bas).
Lorsqu’ils sont soumis à un PWM, certains moteurs peuvent émettre un léger sifflement à la
fréquence du PWM. Je vous conseille donc d’utiliser des fréquences supérieures à 20kHz
(inaudible pour l’homme) pour éviter ce problème.
Copyright © 2012 ESIEESPACE
9
G -­‐ Diode Une diode est un dipôle, autrement dit un composant qui
possède deux pattes, et qui ne laisse passer le courant
électrique que dans un sens. Le courant circule donc
uniquement de l'anode vers la cathode. En pratique, la
cathode peut être repérée par un anneau gris clair.
Les LED (Light-Emitting Diode) ou DEL (Diode
électroluminescente) en français sont des diodes
qui émettent de la lumière lorsqu’elles sont
branchées correctement. Le symbole est donc le
même que celui d’une diode mais avec des deux
petites flèches au dessus. On peut reconnaître la
cathode par sa patte plus courte que celle de
l’anode ou bien grâce au plat situé sur le côté de
la LED.
[Image de http://www.abavala.com]
Copyright © 2012 ESIEESPACE
10
H – Résistances Les résistances représentent le composant le plus simple qui existe dans un montage et je ne
doute pas que vous les connaissez déjà ! Cependant pour les utiliser il faut encore savoir lire
le code couleur qui leur sont associé. Prenons l'exemple de la résistance ci-dessous.
La première opération à réaliser est de tourner la résistance afin de placer la bande qui peut
être dorée ou argentée à droite. En lisant de gauche a droite, les couleurs sont alors : VertBleu-Orange-Or.
On utilise ensuite le tableau ci-dessous pour associer à chaque couleur un chiffre.
1. Le vert correspond à 5 et le bleu à 6. En accolant ces deux chiffres on obtient le
nombre 56.
2. On le multiplie alors par la puissance de 10 égale au chiffre correspondant au orange,
ici 3. Nous avons donc 56 * 10^3 = 56 * 1000 = 56000 qui est la valeur de notre
résistance soit 36k ohms.
3. La dernière bande représente sa précision. En effet, une résistance n'est jamais exacte,
sa valeur réelle peut être légèrement différente de sa valeur théorique. Dans notre
exemple, la couleur dorée indique une précision de 5%. La valeur réelle de cette
résistance sera donc comprise en 95% et 105% de 56000 soit entre 53200Ω et
58800Ω.
[Image de http://www.
logicquicklearn.com]
Copyright © 2012 ESIEESPACE
11
II – Le PIC A – Introduction Les cours d’informatique sur les microprocesseurs vu en 1ère ou 2ème année à l’ESIEE vous
ont peut-être permis de comprendre un problème récurent sur ce type de systèmes : il faut de
nombreux périphériques pour faire fonctionner un microprocesseur comme par exemple la
RAM (mémoire vive), ou la ROM (mémoire morte). Pour palier à ces problèmes, les
constructeurs ont mis au point un nouveau type de composants : les microcontrôleurs.
Ces systèmes regroupent en fait un microprocesseur et de nombreux périphériques. On
retrouve systématiquement :
• Un microprocesseur plus ou moins complexe
• Une mémoire RAM (quelques Ko à de nombreux Mo)
• Une mémoire ROM ou plus généralement Flash (pour contenir le programme).
• Des entrées / sorties (ou I/O) qui sont généralement regroupées en ports (8 I/Os)
Selon les différents microcontrôleurs, on peut aussi retrouver d’autres périphériques qui
reviennent assez souvent comme :
• Des entrées et/ou sorties analogiques (ADC et/ou DAC)
• Des timers (pour compter le temps et gérer des interruptions)
• Des générateur (ex : PWM pour contrôler des moteurs)
• Des comparateurs
• Des bus de données et/ou d’adresses
• Des entrées d’interruptions
• Des ports de communication (RS232, SPI, I²C, USB, etc…)
• Et bien d’autres encore…
On peut donc créer des systèmes complets et puissants rapidement à l’aide d’une seule puce.
On retrouve ces microcontrôleurs dans un grand nombre d’appareils à usage quotidien allant
de la télécommande au Smartphone en passant par la carte de crédit.
Il existe de nombreux constructeurs plus ou moins connus :
• Microchip (constructeur du fameux PIC)
• NXP (filiale de Philips)
• Samsung (puces des iPhones)
• Texas Instrument
• Freescale (filiale de Motorola) (microcontrôleurs ColdFire à base de 68k)
• Cypress (microcontrôleurs USB)
• Etc…
Nous allons pour cette bible nous intéresser aux PICs 8bits de Microchip. Il existe plusieurs
familles de PICs 8bits : les 16F (génériques), les 18F (très proches des 16F mais optimisés
pour la programmation en C), les 10F et les 12F (petits microcontrôleurs à 8 pates).
Copyright © 2012 ESIEESPACE
12
B – Le montage de base Avant même de commencer la programmation ou de brancher des périphériques sur le PIC, il
est nécessaire d’insérer ce dernier dans un ‘montage de base’ comportant notamment une
alimentation, un quartz et les condensateurs qui lui sont associés, ainsi qu’un 1 logique sur la
pin reset.
La comparaison avec une voiture peut-être imaginée : avant de placer un pilote, des
passagers et une remorque, il faut faire le plein (alimentation), vérifier le moteur (quartz et
condos) et s’assurer qu’on a bien la clef (1 logique sur le MCLR).
Naturellement, la position des pins sur le PIC varie suivant le modèle, il est donc nécessaire
de regarder dans la datasheet leur emplacement. Enfin, comme pour tout montage, mais plus
particulièrement lorsque celui-ci comporte un PIC, il faut s’assurer que la tension
d’alimentation est la bonne et qu’elle est régulée.
Les entrées/sorties (I/O) d’un PIC correspondent à l’ensemble des pattes non utilisées dans ce
montage de base. Elles sont regroupées en PORTs allant généralement de A à C mais pouvant
aller jusqu’à E. (ex : PORTA, PORTC, …). Chaque PORT regroupe 8 pattes du PIC (de 0 à
7). Une patte sera donc identifiée par son PORT puis son numéro (ex :RB5).
Copyright © 2012 ESIEESPACE
13
C – MikroC Une fois placé dans son ‘montage de base’ et que les périphériques y sont correctement
reliés, le PIC nécessite d’être programmé. Cette programmation peut-être effectuée
directement en assembleur ou bien en C auquel cas le programme nécessite d’être compilé en
assembleur avant d’être converti en fichier hexadécimal exécutable par le PIC. Plusieurs
logiciels existent pour cela notamment MPLAB et MikroC.
Nous détaillerons ici les bases de l’utilisation de MirokC ainsi que les principales fonctions à
connaître pour commencer la programmation sur PIC.
C.1 – Nouveau projet Nota : MikroC, comme de nombreux logiciels de programmation, fonctionne par projet. Un
projet peut contenir plusieurs fichiers C qui, compilés ensemble, forment un fichier
exécutable par le PIC. Il faut donc faire attention lorsque l’on entame la programmation
d’un nouveau PIC à créer un nouveau projet et non un nouveau fichier.
À la création d’un nouveau projet (Project => New project), MikroC demande la
référence du PIC, la fréquence du quatz et l’emplacement du projet sur le disque puis affiche
une fonction main vide.
int main(void)
{
}
Dans un premier temps, nous placerons toutes les instructions dans cette fonction. Nous
verrons ensuite comment créer de nouvelles fonctions.
Avant de commencer, il est nécessaire de toujours se rappeler trois règles :
- Conserver une écriture lisible, notamment en utilisant les tabulations
- Placer un point-virgule à la fin de chaque instruction
- Placer les instructions entre accolades {}
C.2 – Entrée ou sortie ? Les registres TRIS Avant de faire communiquer le PIC avec ses périphériques, il est nécessaire de lui indiquer
quelles pins correspondent à des entrées et lesquelles correspondent à des sorties.
Supposons que nous souhaitions allumer une LED branchée sur la patte RA0, lorsque l’on
ferme un interrupteur branché sur RB0. La patte RA0 sera donc une sortie et la RB0 une
entrée. Les premières instructions à écrire seront alors :
TRISA.F0 = 0 ;
Copyright © 2012 ESIEESPACE
14
TRISB.F0 = 1 ;
Les registres TRIS ont en effet pour rôle de spécifier la direction des informations.
0
sortie
1
entrée
Pour modifier la direction des 8 pattes située sur un PORT donné, on utilise l’une des
écritures suivantes
TRISA = 0b00000000 ;
TRISB = 0b11111111 ;
ou
ou
TRISA = 0x00 ;
TRISB = 0xFF ;
Ces deux écritures sont identiques sauf que l’une est écrite en binaire et l’autre en
hexadécimal. Elles ont pour effet de placer les pattes RA0 à RA7 en sortie et les pattes RB0 à
RB7 en entrée. Cette nouvelle écriture revient donc à écrire
TRISA.F0
TRISA.F1
[…]
TRISA.F7
TRISB.F0
TRISB.F1
[…]
TRISB.F7
= 0 ;
= 0 ;
= 0 ;
= 1 ;
= 1 ;
= 1 ;
Même si le programme n’utilise pas la totalité des I/O du PIC, il est conseillé d’initialiser
la direction de toutes les pattes.
C.3 – Modifier la valeur des I/O. Les registres PORT Une fois la direction des pattes définie (entrée ou sortie), il est possible d’en modifier la
valeur (si c’est une sortie) ou d’en détecter la valeur (si c’est une entrée). Supposons que nous
avons branché une LED sur chacune des 8 pattes du PORT B et que nous souhaitons toutes
les allumer. Le code du programme sera alors
int void(main)
{
TRISA = 0x00
TRISB = 0x00
TRISC = 0x00
PORTA = 0x00
PORTB = 0xFF
PORTC = 0x00
}
;
;
;
;
;
;
//les 8 pattes
//les 8 pattes
//les 8 pattes
//initialisé à
//les 8 pattes
//initialisé à
du
du
du
0
du
0
PORT A sont des sorties
PORT B sont des sorties
PORT C sont des sorties
PORT B doivent être à 1
Le registre PORT fonctionne de la même façon que le registre TRIS. Par conséquent, si l’on
souhaite ne modifier qu’une des pattes (ex : éteindre la première LED), on peut écrire :
PORTB.F0 = 0 ;
Copyright © 2012 ESIEESPACE
15
C.4 – Les opérateurs conditionnels Les conditions se présentent toujours sous la même forme
opérateur(condition)
{
instructions ;
}
if(PORTB.F0==1)
{
PORTA.F0=1 ;
}
else
{
PORTA.F0=0 ;
}
Il n’y a pas de point-virgule à fin de la condition, en effet, une condition n’est pas une
instruction, elle ne modifie rien.
Condition
if(condition)
instructions ;
else
instructions ;
Définition
Exemple
teste si la condition du if
cf ci-dessus
est vraie ou non
Répète les instructions
jusqu’à ce que fin soit
for(début ;fin ;incrémentation)
faux, en partant de début
instructions ;
et
avec
une
incrémentation donnée
PORTB = 0x01 ;
for(int i=0 ; i<8 ; i=i+1)
{
PORTB = PORTB*2 ;
}
while(condition)
instructions ;
while(PORTB.F0==1)
{
delay_ms(1000) ;
}
Opérateur
== (double =)
!=
>
>=
<
<=
Répète instructions tant
que condition est vrai
Définition
Teste l’égalité
Teste la différence
Teste la supériorité stricte
Teste la supériorité ou l’égalité
Teste l’infériorité stricte
Teste l’infériorité ou l’égalité
C.5 – Fonctions d’attente Fonction
delay_ms(int i)
delay_us(int i)
Exemple
delay_ms(1000) ;
delay_us(200) ;
Définition
Fait une pause de i millisecondes
Fait une pause de i microsecondes
C.6 – Nouvelles fonctions Au démarrage du PIC, la première fonction exécutée est le ‘main’. Cependant, lorsqu’un
projet devient conséquent, il devient intéressant de créer de nouvelles fonctions. Une fonction
Copyright © 2012 ESIEESPACE
16
doit être déclarée au tout début du fichier (en dehors du ‘main’). Pour l’utiliser, il suffit
ensuite de l’appeler par son nom sans oublier le point-virgule. Prenons l’exemple d’une
fonction allumer_led.
void allumer_led() ;
//déclaration de la fonction allumer_led
int main(void)
{
allumer_led() ;
}
allumer_led()
{
PORTA.F0 = 1 ;
delay_ms(500) ;
PORTA.F0 = 0 ;
}
//fonction main
Copyright © 2012 ESIEESPACE
//appelle de la fonction allumer_led
//fonction allumer_led
//allumage de la led
//attente pendant une demie-seconde
//extinction de la led
17
D – Programmation du PIC Le PIC se programme par les pates PGC, PGD et PGM (et Vpp sur la pate MCLR pour
indiquer au PIC que l’on veut le programmer). Mais nous n’allons pas voir ici comment se
passe la communication, nous allons simplement voir comment utiliser les programmateurs
(programmateur JDM sur port série) de PICs déjà prêts. Et pour cela nous utiliserons le
logiciel WinPic800.
Il suffit de :
• Dans MikroC, cliquer sur compiler et s’assurer qu’il n’y a pas d’erreur de compilation.
Si tout s’est bien passé, MikroC doit avoir généré un fichier en “.hex“
• Dans WinPic800, choisir le hardware « JDM Programmer » dans le menu Réglages (à
ne faire qu’une seule fois)
• Choisir le type de PIC à droite
• D’ouvrir le fichier .hex contenant le programme à charger dans le PIC
• Positionner le PIC sur le programmateur, attention la position du Pic sur le
programmateur varie en fonction de sa taille !
• D’écrire le programme sur la Flash du PIC (Flèche rouge)
D’autres outils de programmation sont aussi disponible au sein de l’association, n’hésitez pas
à demander !
NB : Le logiciel est disponible gratuitement sur internet (http://www.winpic800.com /).
Copyright © 2012 ESIEESPACE
18
C’est tout ? Je ne vous promet pas que la réalisation de votre robot sumo soit maintenant un jeu d’enfant,
mais vous avez au moins quelques bases et un bon manuel de référence pour commencer !
Il ne vous reste plus qu’à vous lancer et dès que cette bible ne sera plus en mesure de vous
aider, les membres de l’ESIEESPACE se feront un plaisir de répondre à vos questions.
Copyright « Je peux copier ? »
Vous l’avez peut-être remarqué, les quelques images que j’ai prises du net ont leur source
d’indiquée juste à côté. Je demanderais donc que vous en fassiez autant si vous souhaitez
reprendre ce travail, ou à défaut que la mention de bas de page ne soit ni modifiée ni
supprimée.
Copyright © 2012 ESIEESPACE
19
Téléchargement