Etude Et Realisation D Un Robot Suiveur de Ligne Part2
Etude Et Realisation D Un Robot Suiveur de Ligne Part2
Etude Et Realisation D Un Robot Suiveur de Ligne Part2
FSR_2008
INTRODUCTION
La Robotique fait partie des sciences des objets et des systmes artificiels. Elle peut tre vue comme la science de la perception et du mouvement et de leur intgration en une machine physique, mcanique et informatique. Un robot est donc un systme matriel possdant des capacits de perception, daction, de dcision et de communication, parfois capable damliorer ses propres performances par apprentissage automatique ou supervis par des humains, pour : agir dans un environnement ouvert ou confin, dynamique et imparfaitement modlis, voire inconnu, des chelles allant du nanomonde au macromonde ; excuter de faon autonome ou en relation avec un humain, des tches dobservation, dexploration, de modlisation, de manipulation et/ou dintervention sur
lenvironnement ; interagir le cas chant avec dautres machines ou avec des humains, matriellement ou virtuellement. Au plan scientifique, la Robotique est dote de plusieurs grands journaux internationaux (IEEE Trans. on Robotics 3, Int. Journal of Robotics Research, Int. Journal of Robotics and Autonomous Systems) ( moindre titre : Int. Journal of Advanced Robotics Systems, Int. Journal of Robotics and Mecatronics,) et de plusieurs confrences internationales dont les deux plus importantes: IEEE Int. Conf. on Robotics and Automation, IEEE/RSJ Int. Conf. on Intelligent Robots and Systems. Si la Robotique non manufacturire a t longtemps considre comme un champ scientifique trs prospectif dont les applications, en dehors de la conqute spatiale, semblaient futuristes, les progrs scientifiques et technologiques importants intervenus dans les grandes disciplines invoques par la Robotique (mcanique, lectronique, automatique, informatique) ont considrablement ouvert le spectre de ses applications, de plus en plus tangibles et crdibles.
On en trouve ci-dessous un rsum d'analyses de quelques domaines particuliers ou applications de la robotique Mini-robots de prcision : ils sont conus spcialement pour les applications de micro montage et les installations trs compactes difficiles manipuler par l'homme. Ils sont rapides, prcis et trs fiables destins rpondre toutes les contraintes poses par les oprations de prcision de positionnement et d'assemblage en micromcanique.
-1-
FSR_2008
Robots autonomes : ils sont des robots capables de se mouvoir seuls sans assistance externes. Ceci implique qu'ils doivent se reprer sur l'aire de travail et tre capable de s'adapter aux conditions du terrain qui est souvent adapt et balis. On les conoit sous diffrentes formes : vhicules, androdes, tortues, tripodes, araignes, ou Aibo le chien.
Robots anthropomorphes : ils sont des robots a forme humaine pour remplacer l'homme, et trs souvent autonomes. Ils sont quips de capteurs perfectionns; tels que camras, tlmtres laser, organes de perception de force, etc. Ils disposent de techniques avances de reconnaissance vocale, reconnaissance de formes, traitement d'images et derniers dveloppements en informatique (Intelligence Artificielle).
Bras manipulateurs : ils sont les quipements les plus utiliss au milieu industriel, ils sont conus pour saisir et manipuler des objets avec ou sans assistance humaine. Ils ralisent des tches rptitives et souvent pnibles pour l'homme. Ils sont rapides, prcis, fidles et manipulent des objets au milieu inaccessible, ou des produits dangereux ou au milieu nocif pour l'tre humain.
Robotique terrestre et arienne : Les robots considrs ici se dplacent dans des environnements peu ou pas structurs, souvent naturels, et peu ou pas connus/modliss, et se meuvent seuls ou en groupe coopratif.
Vhicules intelligents : Les vhicules considrs ici sont ceux ddis au transport des personnes ou des marchandises. On peut distinguer les vhicules routiers (autoroutes et routes) et les vhicules urbains (avenues et rues).
Radiolocalisation pour la robotique mobile : Les volutions dans les toute prochaines annes en matire de technologie GPS de positionnement, notamment par la mise en place de GALILEO, feront que le positionnement centimtrique en extrieur sera possible partout un faible cot. En intrieur et dans des milieux trs enfouis, des solutions sont actuellement ltude dont lhybridation avec des systmes de tlcommunications (verrous : stratgie de fusion multicapteurs pour la localisation ; utilisation pour la commande de robots dintrieur par couplage avec des radars ULB Ultra Large Band).
La Biorobotique : (appele parfois robotique bio-inspire) a pour but de transfrer dans des systmes matriels (robots) ce quon a appris du comportement du monde animal, voire vgtal, et des traitements de linformation qui y sont associs.
La Robotique hybride vise incorporer des parties animales dans des robots.
-2-
FSR_2008
La Neurobotique sintresse au couplage entre le systme nerveux dun tre vivant (animal ou homme) et une machine, pour commander des systmes robotiques (lien avec la Robotique hybride).
Les applications majeures actuelles concernent la dfense, la scurit civile, lexploration plantaire, et moindre titre lagriculture ou lenvironnement, ce dernier secteur tant susceptible de prendre une importance accrue dans le futur.
L'objectif de ce projet, cest la matrise de la haute technologie au service de lindustrie pour ltude, la conception et la ralisation de tous types de robots.
-3-
FSR_2008
-4-
FSR_2008
Nous dveloppons ce projet pour un mmoire de projet de fin dtude. Le but de ce projet est de mettre en application tous nos acquis. Lobjectif principal est donc de concevoir, de raliser, de rgler et monter les diffrents constituants sur le robot.
Fonctionnement : Un interrupteur permet de mettre le robot sous tension et un jack le fait dmarrer. Pour larrter il suffit dappuyer sur le rupteur ou sur le bouton darrt durgence. Toutefois, il est ncessaire de le programmer pour quil puisse fonctionner, car il sagit dun robot autonome.
-5-
FSR_2008
Dtection de ligne
Possibilits Choix Camras, capteurs Capteurs au nombre de huit
Justification La camra tait plus difficile grer dans la dure propose du projet. La manipulation facile des capteurs avec le microcontrleur pic16f84 nous a permet de les choisir.
Justification Le pont en H est plus facile grer. Ce type a t retenu pour raison de disponibilit immdiate.
Justification Ce langage est le plus puissant, plus simple et plus rapide pour programmer les microcontrleurs.
-6-
FSR_2008
Fonctions lies aux rglements proposs Avoir des certaines dimensions par exemple : 30 cm (longueur) x 20 cm (largeur) x 40 cm (hauteur). Etre autonome en nergie : utiliser la batterie fournie pour la partie motorisation Dmarrer grce au jack fourni Retrouver la ligne en cas de sortie de piste Faire un tour un croisement Respecter les priorits droite Dtecter la priorit droite Ralentir Dtecter la prsence dun obstacle
Si prsence dun obstacle : + 1re fois faire un demi-tour + 2me fois arrter + Dtecter le passage du robot + Redmarrer et reprendre le suivi de piste
-7-
FSR_2008
4. Analyse fonctionnelle
FSR_2008
5. La chane dinformation
CONVERTIR TRANSMETTRE
DETECTER
Communiquer Distribuer
ALIMENTER
TRAITER
FSR_2008
6. La chane dnergie
Les engages
6.2 Donnes Z1 = 20 dents Z2 = 50 dents Z3 = 20 dents Z4 = 50 dents we = 7000 tr/min pour une tension continu de 3V.
6.3
6.4 Application Numrique ws/we = (-1)2 * [(2/5)x(2/5)] =1(0.4x0.4) =1(0.16) ws = 0.16 * we = 0.16 * 7000 ws = 1120 tr/min Le signe positif indique quil ny a pas inversion du sens de rotation entre larbre dentre (moteur) et larbre de sortie. 6.5 Avantages - Ces engrenages dveloppent un couple suffisamment puissant pour faire tourner les roues d'un robot. - A partir d'un petit moteur assez petit on peut s'en servir pour tracter ou porter un objet. Inconvnient - L'augmentation du couple rduit la vitesse de rotation. Intrt - Le couple est trs intressant.
- 10 -
6.6
6.7
FSR_2008
7. Conception du robot
Ce robot est quip des yeux lectroniques qui observent une ligne noire et dtectent les obstacles. Chaque oeil lectronique est constitu d'un capteur infrarouge de type OBP704.
Le robot doit suivre une ligne noire de 10 mm de large sur fond blanc. C'est un tripode constitu d'une roue folle place l'avant et de deux moteurs, accoupls deux roues, situs l'arrire.
Les moteurs assurent la propulsion et la direction du robot. Des capteurs optiques situs l'avant permettent la dtection de la ligne.
8. Diagramme
- 11 -
FSR_2008
FSR_2008
FSR_2008
Le schma de ce robot peut tre dcompos en trois parties : les capteurs, l'interface de microcontrleur et l'interface vers les moteurs. Chaque partie sera tudi individuel la partie pratique. Le fonctionnement de ces capteurs (OBP704) a t expliqu dans les parties qui suivent. Il est bas sur la quantit de photons reus par le phototransistor. Un carnage est prvu pour viter autant que possible les perturbations dues la lumire extrieure.
La partie de microcontrleur sert traiter les donnes collectes par les capteurs.
La dernire partie est l'interface des deux moteurs. Le courant fournit par le pic est faible ce qui demande d'utiliser des transistors pour amplifier le courant. La ponte H permet de commander les moteurs dans un sens normal ou inverse, marche ou arrt.
11. Le microcontrleur
Le microcontrleur choisi est le PIC 16F84 de Microchip. Ce microcontrleur a t choisi en raison de sa popularit. Son prix reste correct au vu de ses capacits; Microchip propose un environnement de dveloppement gratuit (MPLAB) et la ralisation dun programmateur est simple et conomique. De nombreux sites Internet proposent des logiciels de programmation gratuits et des exemples dapplications et parfois des cours dinitiation en franais. Le site Internet de Microchip est : www.microchip.com, on y trouvera la documentation du PIC16F84 et la dernire version de MPLAB.
- 14 -
FSR_2008
Un microprocesseur peut tre assimil un circuit logique complexe excutant un un des ordres (instructions) enregistrs dans une mmoire de programme externe. Un microprocesseur ne fonctionne jamais seul on lui associe toujours des priphriques d'entres- sorties afin de pouvoir excuter une fonction particulire et dialoguer avec "l'extrieur" (prise en compte de ltat dun capteur, commande dun relais, mmoire programme de lapplication, etc...).
Le grand avantage de cette logique programmable est que la modification dune fonction ou d'une tche ne ncessite pas de cblage supplmentaire, mais uniquement un nouveau programme loger en mmoire.
Larrive du microcontrleur qui est un microprocesseur auquel on a intgr les priphriques dentres sorties, va faire que les montages et applications deviennent encore plus simples mettre en oeuvre, avec un gain de temps, de vitesse et un cot rduit ( le pic 16f84 est environ 50 DH ).
Le PIC16F84 de la socit Microchip est un micro contrleur faisant partie de la famille RISC ( Reduced Instruction set Computer ) dont les caractristiques sont vitesse d 'excution et jeu d 'instruction rduit ( le pic 16f84 ne comporte que 35 instructions ).
- 15 -
FSR_2008
2. LES MICROCONTROLEURS
2.1. Quest ce quun microcontrleur Cest un ordinateur mont dans un circuit intgr. Les avances technologiques en matire dintgration, ont permis dimplanter sur une puce de silicium de quelques millimtres carrs la totalit des composants qui forment la structure de base dun ordinateur. Leur prix varie de quelques dizaines Dirhams un millier de Dirhams pour les plus complexes. Comme tout ordinateur, on peut dcomposer la structure interne dun microprocesseur en trois parties : -Les mmoires -Le processeur -Les priphriques Cest ce quon peut voir sur la figure 6 :
Figure 7 les mmoires sont charges de stocker le programme qui sera excut ainsi que les donnes ncessaires et les rsultats obtenus le processeur est le cur du systme puisquil est charg dinterprter les instructions du programme en cours dexcution et de raliser les oprations quelles contiennent .Au sein du processeur, lunit arithmtique et logique interprte, traduit et excute les instructions de calcul. les priphriques ont pour tche de connecter le processeur avec le monde extrieur dans les deux sens . Soit le processeur fournit des informations vers lextrieur (priphrique de sortie), soit il en reoit (priphrique dentre). 2.2. Intrt des microcontrleurs Les microcontrleurs sont de taille tellement rduite quils peuvent tre sans difficult implants sur lapplication mme quils sont censs piloter. Leur prix et leurs performances simplifient normment la conception de systme lectronique et informatique. Lutilisation des microcontrleurs ne connat de limite que lingniosit des concepteurs, on les trouve dans nos cafetires, les magntoscopes, les radios ..Une tude mene en lan 2004 montre quen moyenne, un foyer amricain hberge environ 240 microcontrleurs.
- 16 -
FSR_2008
3.2 Architecture interne La structure gnrale du PIC 16F84 comporte 4 blocs comme le montre la figure 8 : -Mmoire de programme -Mmoire de donnes -Processeur -Ressources auxiliaires (priphriques)
Figure 8 La mmoire de programme contient les instructions pilotant lapplication laquelle le microcontrleur est ddi. Il sagit dune mmoire non volatile (elle garde son contenu, mme en labsence de tension), elle est de type FLASH cest dire quelle peut tre programme et efface par lutilisateur via un programmateur et un PC. La technologie utilise permet plus de 1000 cycles deffacement et de programmation. Pour le PIC 16F84 cette mmoire est dune taille de 1024*14 bits, cest dire quelle dispose de 1024 emplacements (de 000h 3FFh) contenant chacun 14 cases car dans le cas du PIC, les instructions sont codes sur 14 bits. On peut donc stocker 1024 instructions. La mmoire de donne est spare en deux parties : -une mmoire RAM de 68 octets puisque le bus de donne est de huit bits. Cette RAM est volatile (les donnes sont perdues chaque coupure de courant). On peut y lire et crire des donnes. -une mmoire EEPROM de 64 octets dans laquelle on peut lire et crire des donnes (de huit bits soit un octet) et qui possde lavantage dtre non volatile (les donnes sont conserves mme en labsence de tension). La lecture et lcriture dans cette mmoire de donnes sont beaucoup plus lentes que dans la mmoire de donnes RAM. Le processeur est form de deux parties : -une unit arithmtique et logique (UAL) charge de faire des calculs. -un registre de travail not W sur lequel travail lUAL. Les ressources auxiliaires qui sont dans le cas du PIC16F84 -ports dentres et de sorties. -temporisateur. -interruptions -chien de garde -mode sommeil
- 17 -
Conception et ralisation de robot suiveur de ligne Ces ressources seront analyses dans la suite.
FSR_2008
Figure 9 Lalimentation du circuit est assure par les pattes VDD et VSS. Elles permettent lensemble des composants lectroniques du PIC de fonctionner. Pour cela on relie VSS (patte 5) la masse (0 Volt) et VDD (patte 14) la borne positive de lalimentation qui doit dlivrer une tension continue comprise entre 3 et 6 Volts. Le microcontrleur est un systme qui excute des instructions les unes aprs les autres une vitesse (frquence) qui est fixe par une horloge interne au circuit. Cette horloge doit tre stabilise de manire externe au moyen dun cristal de quartz connect aux pattes OSC1/CLKIN (patte 16) et OSC2/CLKOUT (patte 15). Nous reviendrons en dtail sur lhorloge au paragraphe 3. La patte 4 est appele MCLR. Elle permet lorsque la tension applique est gale 0V de rinitialiser le microcontrleur. Cest dire que si un niveau bas ( 0 Volt ) est appliqu sur MCLR le microcontrleur sarrte, place tout ses registres dans un tat connu et se redirige vers le dbut de la mmoire de programme pour recommencer le programme au dbut ( adresse dans la mmoire de programme :0000 ). A la mise sous tension, la patte MCLR tant zro, le programme dmarre donc ladresse 0000, (MCLR=Master Clear Reset). Les broches RB0 RB7 et RA0 RA4 sont les lignes dentres/sorties numriques. Elles sont au nombre de 13 et peuvent tre configures en entre ou en sortie. Ce sont elles qui permettent au microcontrleur de dialoguer avec le monde extrieur (priphriques). Lensemble des lignes RB0 RB7 forme le port B et les lignes RA0
- 18 -
FSR_2008
RA4 forment le port A. Certaines de ces broches ont aussi dautres fonctions (interruption, timer).
4.2. Structure interne La structure interne du PIC16F84 est donne figure 10 : (structure HARVARD : la mmoire de programme et la mmoire de donnes sont spares contrairement l'architecture Von Neumann qui caractrise d'autres fabricants de microcontrleurs)
Figure 10
On retrouve sur ce schma la mmoire de programme, la mmoire RAM de donnes, la mmoire EEPROM, les ports A et B, ainsi que la partie processeur avec lUAL et le registre de travail W ( work ). Nous allons tudier prsent plus en dtail le fonctionnement du PIC. 4.3. Principe de fonctionnement du PIC Un microcontrleur excute des instructions. On dfinit le cycle instruction comme le temps ncessaire lexcution dune instruction. Attention de ne pas confondre cette notion avec le cycle dhorloge qui correspond au temps ncessaire lexcution dune opration lmentaire (soit un coup d'horloge).
- 19 -
FSR_2008
Une instruction est excute en deux phases : La phase de recherche du code binaire de linstruction stock dans la mmoire de programme La phase dexcution ou le code de linstruction est interprt par le processeur et excut. Chaque phase dure 4 cycles dhorloge comme le montre la figure 11 :
Figure 11 On pourrait donc croire quun cycle instruction dure 8 cycles dhorloge mais larchitecture particulire du PIC lui permet de rduire ce temps par deux. En effet, comme les instructions issues de la mmoire de programme circulent sur un bus diffrent de celui sur lequel circulent les donnes, ainsi le processeur peut effectuer la phase de recherche dune instruction pendant quil excute linstruction prcdente (Voir figure 12 et 13).
Figure 12
- 20 -
FSR_2008
Figure 13 4.4. Droulement dun programme Le droulement dun programme seffectue de faon trs simple. A la mise sous tension, le processeur va chercher la premire instruction qui se trouve ladresse 0000 de la mmoire de programme, lexcute puis va chercher la deuxime instruction ladresse 0001 et ainsi de suite (sauf cas de saut ou dappel de sous programme que nous allons voir plus loin). On parle de fonctionnement squentiel. La figure 14 va nous permettre de mieux comprendre le fonctionnement :
Figure 14
- 21 -
FSR_2008
On constate sur cette figure que la mmoire de programme contient 1024 emplacements (3FF en hexadcimale) contenant 14 bits (de 0 13). Une instruction occupe un emplacement qui est dfini par une adresse. Le processeur peut alors slectionner l'emplacement souhait grce au bus dadresse et il peut lire son contenu ( ici linstruction ) grce son bus dinstruction ( voir figure 7 ). Cet adressage seffectue laide dun compteur ordinal appel PC qui lors de la mise sous tension dmarre zro puis sincrmente de 1 tous les quatre coups dhorloge, on excute bien ainsi les instructions les unes la suite des autres. Mais il arrive que dans un programme on fasse appel un sous programme dont ladresse de linstruction ne se trouve pas juste aprs celle qui est en train dtre excute. Cest le rle de la pile qui sert emmagasiner de manire temporaire ladresse dune instruction. Elle est automatiquement utilise chaque fois que lon appelle un sous programme et elle permet une fois que lexcution du sous programme est termine de retourner dans le programme principal juste aprs lendroit o lon a appel le sous programme. On constate que cette pile possde huit niveaux, cela signifie quil nest pas possible dimbriquer plus de huit sous programmes, car au-del de huit, le processeur ne sera plus capable de retourner ladresse de base du programme principal. Ladresse 0000 est rserve au vecteur RESET, cela signifie que cest cette position que lon accde chaque fois quil se produit une rinitialisation (0 volts sur la patte MCLR). Cest pour cette raison que le programme de fonctionnement du microcontrleur doit toujours dmarrer cette adresse. Ladresse 0004 est assigne au vecteur dinterruption et fonctionne de manire similaire celle du vecteur de Reset. Quand une interruption est produite et valide, le compteur ordinal PC se charge avec 0004 et linstruction stocke cet emplacement est excute. 4.5. La mmoire de donnes RAM Si lon regarde la mmoire de donne RAM, on saperoit que celle-ci est un peu particulire comme le montre la figure 15 : On constate en effet que cette mmoire est spare en deux pages (page 0 et page 1). De plus, on remarque que tant pour la page 0 que pour la page 1, les premiers octets sont rservs (SFR pour Special File Register). Ces emplacements sont en effet utiliss par le microcontrleur pour configurer lensemble de son fonctionnement. On les appelle registres spcifiques et nous verrons au chapitre suivant leurs rles. Le bus dadresse qui permet dadresser la RAM est compos de 7 fils ce qui veut dire quil est capable dadresser 128 emplacements diffrents. Or, chaque page de la RAM est compose de 128 octets, le bus dadresse ne peut donc pas accder aux deux pages, cest pourquoi on utilise une astuce de programmation qui permet de diriger le bus dadresse soit sur la page 0, soit sur la page 1. Cela est ralis grce un bit dun registre spcifique ( le bit RP0 du registre STATUS ) dont nous verrons le fonctionnement plus loin. La RAM de donnes proprement dite se rduit donc la zone note GPR (Registre usage gnrale) qui stend de ladresse 0Ch (12 en dcimale) jusqu 4Fh (79 en dcimale), soit au total 68 registres en page 0 et autant en page 1, mais on constate que les donnes crites en page 1 sont rediriges en page 0 cela signifie quau final lutilisateur dispose uniquement de 68 registres (donc 68 octets de mmoire vive) dans lesquels il peut crire et lire volont en sachant qu la mise hors tension, ces donnes seront perdues.
- 22 -
FSR_2008
STATUS
STATUS
Figure 15
- 23 -
FSR_2008
5. Les registres
Nous avons vu au chapitre prcdent que la mmoire de donnes RAM contenait des registres spcifiques qui permettent de configurer le PIC, nous allons les dtailler un un et voir comment on peut accder la page 0 ou la page 1. Afin de faciliter la comprhension, les registres les plus utiliss sont encadrs. 5.1 adresse 00 et 80, INDF : Cette adresse ne contient pas de registre physique, elle sert pour ladressage indirect. (non utilise dans le projet de cette anne)
5.2
adresse 01, TMR0 : Contenu du Timer (8 bits). Il peut tre incrment par lhorloge (fosc/4) c'est dire tous les 4 coups d'horloge ou par la broche RA4.
5.3
adresse 02 et 82, PCL : 8 bits de poids faibles du compteur ordinal PC. Les 5 (13-8) bits de poids forts sont dans PCLATH.
5.4 adresse 03 et 83, STATUS Registre dtat. : Les cinq bits de poids faible de ce registre sont en lecture seule, ce sont des tmoins (drapeaux ou flag en anglais) caractrisant le rsultat de lopration ralise par lUAL. Le bit RP0 est lui en lecture /criture et cest lui qui permet de slectionner la page dans la mmoire RAM. Si RP0=0 on accde la page 0 et si RP0=1 on accde la page 1. RP0 TO/ PD/ Z DC C
Au reset, seul le bit RP0 de slection de page est fix (RP0=0 : page 0) TO/ (Time Out) : dbordement du timer WDT PD/ : (Power Down) caractrise lactivit du chien de garde WDT Z (zro) rsultat nul pour une opration arithmtique et logique. DC (digit carry) retenue sur un quartet (4 bits) C (carry) retenue sur un octet (8 bits).
5.5
adresse 04 et 84, FSR : Registre de slection de registre : contient ladresse dun autre registre (adressage indirect, non utilis dans le projet)
5.6
adresse 05, PORTA : Ce registre contient ltat des lignes du port (voir paragraphe sur les ports).
5.7
adresse 06, PORTB : Ce registre contient ltat des lignes du port B (voir paragraphe sur les ports). 5.8 adresse 08, EEDATA : Contient un octet lu ou crire dans lEEPROM de donnes.
- 24 -
FSR_2008
adresse 09, EEADR : Contient ladresse de la donne lue ou crite dans lEEPROM de donnes.
5.10
adresse 0B et 8B, INTCON : Contrle des 4 interruptions GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
Masques : GIE : (Global Interrupt Enable) : masque global dinter. EEIE : (EEProm Interrupt Enable) autorise l'interruption venant de l'EEPROM. T0IE : (Timer 0 Interrupt Enable) autorise l'interruption provoque par le dbordement du TIMER0 INTE : (Interrupt Enable) autorise linterruption provoque par un changement d'tat sur broche RB0/INT RBIE : (RB Interrupt Enable) autorise les interruptions provoques par un changement d'tats sur l'une des broches RB4 RB7. Si ces bits sont mis 1, ils autorisent les interruptions pour lesquels ils sont ddis. Drapeaux : T0IF : (Timer 0 Interrupt Flag) dbordement du timer INTF (Interrupt Flag) interruption provoque par la broche RB0/INT RBIF (RB Interrupt Flag) interruption provoque par les broches RB4-RB7.
5.11 adresse 81, OPTION 8 bits (tous 1 au RESET) affectant le comportement des E/S et des timers. RBPU/ INTEDG RTS RTE PSA PS2 PS1 PS0
RBPU/ (RB Pull Up) Rsistances de tirage Vdd des entres du port B (voir le dtail du fonctionnement au chapitre port).Si RBPU/=0 les rsistances de pull-up sont connectes en interne sur l'ensemble du port B. INTEDG (Interrupt Edge) slection du front actif de linterruption sur RB0/INT (1 pour front montant et 0 pour front descendant). RTS (Real Timer Source) slection du signal alimentant le timer 0 : 0 pour horloge interne, 1 pour RA4/T0CLK RTE (Real Timer Edge) slection du front actif du signal timer ( 0 pour front montant). PSA (Prescaler assignment) 0 pour Timer 0 et 1 pour chien de garde WDT. PS2.0 (Prescaler 210) slection de la valeur du diviseur de frquence pour les timers.
5.12 adresse 85, TRISA : Direction des donnes pour le port A : 0 pour sortir et 1 pour entrer (voir paragraphe sur les ports).
- 25 -
FSR_2008
5.13 adesse 86 , TRISB : Direction des donnes pour le port B : 0 pour sortir et 1 pour entrer (voir paragraphe sur les ports).
5.14
dresse 88, EECON1 Contrle le comportement de lEEPROM de donnes. EEIF WRERR WREN WR RD
EEIF (EEProm Interrupt Flag) passe 1 quand lcriture est termine. WRERR (Write Error) 1 si erreur dcriture. WREN (Write Enable) : 0 pour interdire lcriture en EEPROM de donnes. WR (Write) 1 pour crire une donne. Bit remis automatiquement 0 RD (Read) : 1 pour lire une donne. Bit remis automatiquement 0 5.15 adresse 89, EECON2. Registre de scurit dcriture en EEPROM de donnes. Une donne ne peut tre crite quaprs avoir crit successivement 0x55 et 0xAA dans ce registre.
- 26 -
FSR_2008
7. Le Timer
Dans la majeure partie des applications, il est ncessaire de contrler le temps; afin de ne pas occuper le microcontrleur qu' cette tche (boucle de comptage qui monopolise le micro), on le dcharge en utilisant un timer. Le pic 16F84 dispose de deux timers, un usage gnral (le TMR0) et un autre utilis pour le chien de garde (watch dog WDG). Le TMR0 est un compteur ascendant (qui compte) de 8 bits qui peur tre charg avec une valeur initiale quelconque. Il est ensuite incrment chaque coup d'horloge jusqu' ce que le dbordement ait lieu (passage de FF 00); Le principe est reprsent figure 16 :
Figure 16
Le TMR0 peut remplir deux fonctions : - Temporisateur ou Contrle du temps son entre d'incrmentation est alors l'horloge qui correspond au cycle instruction (Fosc/4). Il est possible d'utiliser un pr-diviseur de frquence que nous verrons plus loin. - Compteur d'vnements. Dans ce cas les d'impulsions d'entres du timer sont fournies par la patte RA4/TOCK1 Le choix s'effectue grce au bit RTS du registre OPTION. Le pic 16F84 dispose d'un diviseur de frquence qui peut tre assign soit au chien de garde, soit au TMR0 (uniquement un la fois). L'assignation du pr diviseur se fait grce au bit PSA du registre OPTION. La structure interne du TMR0 est donc la suivante (figure 17) :
du registre intcon
RTS
RTE
il se produit un retard de deux cycles avant que le timer ne commence compter aprs un chargement
Figure 17
- 27 -
FSR_2008
Suivant que le pr-diviseur est assign au chien de garde ou au TMR0, la valeur de la prdivision n'est pas la mme, il faut donc tre vigilant lors de la programmation comme le montre la figure 18 :
RTS
RTE
RTE
RTS
INTEDG
RPBU/ Figure 18 Enfin, vu que le timer ne peut que compter, cela oblige une petite gymnastique lors de l'introduction de la valeur de pr chargement : Exemple : On veut que le timer nous indique par la mise un du drapeau T0IF l'coulement d'une dure de 20ms (la frquence d'horloge tant de 4MHz) d'o Fosc/4=1s Si on choisit une pr division de 256, on aura donc 20000 s / 256 =78 Il ne faut pas charger le TMR0 avec 78 mais avec le complment deux de cette valeur (car le timer compte et ne dcompte pas) d'o 256-78=178 soit en hexadcimale la valeur B2h charger dans le registre TMR0.
- 28 -
FSR_2008
8. Mise en oeuvre
Lutilisation et la mise en uvre trs simple des PICs les ont rendus extrmement populaire au point que la socit qui les fabrique (MICROCHIP) est en passe de devenir le leader mondial dans le domaine des microcontrleurs devant MOTOROLA et INTEL. Il suffit dalimenter le circuit par ses deux broches VDD et VSS, de fixer sa vitesse de fonctionnement laide dun quartz (figure19) et dlaborer un petit systme pour permettre de rinitialiser le microcontrleur sans avoir couper lalimentation (figure 20).
Figure 19
Figure 20
Il suffit ensuite dcrire le programme en langage assembleur ou en C sur un ordinateur grce au logiciel MPLAB de MICROCHIP (logiciel gratuit) puis de le compiler pour le transformer en langage machine et le transfrer dans le PIC grce un programmateur. Lors de la mise sous tension, tous les registres spcifiques sont placs dans un tat dtermin comme le montre la figure 21.
- 29 -
FSR_2008
u=unchanged ; x=unknown ; -=unimplemented ( read as 0 ) ; q=value depends on condition Figure 21 Il ne nous reste plus qu voir le jeu dinstruction de programmation en assembleur du PIC et cest l que rside tout lintrt puisquil ne dispose que de 35 instructions qui lui permettent de raliser toutes les tches.
9. Jeu dInstructions Afin de comprendre la fonction de chaque instruction, la notation adopte pour les donnes et adresses manipules par les instructions est fort simple et est la suivante :
- 30 -
FSR_2008
-f reprsente un registre -b reprsente un numro de bit en sachant que 0 correspond toujours au bit de poids faible (le plus droite dans le registre) -k reprsente une donne aussi appele littrale Un certain nombre dinstructions (ADDWF, ANDWF, etc...) utilise une notation spciale prsente sous la forme : ADDWF f,d O f indique le registre et o d peut prendre deux valeurs (0 ou 1), ce qui change le comportement de linstruction . Si d est 0, le rsultat est plac dans le registre de travail W, la valeur dans le registre f est alors inchange, alors que si d est 1, le rsultat est plac dans le registre f. Un autre type dinstruction mrite quelques claircissements, ce sont les instructions de branchement conditionnel. Prenons comme exemple : BTFSC f,b Qui va vouloir dire ( Bit Test File Skip if Clear ) qui signifie que lon va tester le bit b du registre f ( b peut prendre une valeur de 0 7 pour un registre 8 bits ) .Il peut alors y avoir deux solutions : -Soit le bit test est 1, donc la condition teste nest pas ralise, le programme continue alors son droulement normalement en squence avec linstruction juste en dessous. -Soit le bit test vaut 0, donc la condition teste est ralise et le programme saute linstruction qui suit le BTFSC dans le programme. Cette faon de programmer peut paratre trange, mais avec de lhabitude, elle savre trs pratique et permet de raliser des programmes compacts et performants. Les 35 instructions sont donc les suivantes :
Bits dtat du registre STATUS affects : C,DC,Z on ajoute au registre de travail la valeur k et on place le rsultat dans le registre de travail W dure : 1 cycle instruction ( 4 cycles dhorloge )
syntaxe : Opration :
FSR_2008
on ajoute le contenu de W et le contenu de f et on place le rsultat dans f si d=1 ou dans W si d=0 dure : 1 cycle instruction ( 4 cycles dhorloge ) 9.1.3 SUBLW ( Substract W from Literal ) SUBLW k k-W W
syntaxe : opration :
Bits dtat du registre STATUS affects :C,DC,Z On soustrait le contenu du registre W du littral k et on place le rsultat dans W ( soustraction par la mthode du complment 2 ). dure : 1 cycle instruction ( 4 cycles dhorloge ) 9.1.4 SUBWF ( Substract W from F ) SUBWF f,d f-W W si d=0 ou f-W f si d=1
syntaxe : opration :
Bits dtat du registre STATUS affects :C,DC,Z On soustrait le contenu du registre W du contenu du registre f et on place le rsultat dans W si d=0, ou dans f si d=1 (soustraction par la mthode du complment 2). dure : 1 cycle instruction ( 4 cycles dhorloge )
Bit dtat du registre STATUS affect : Z on effectue un ET logique entre le contenu de W et le littral k , on place le rsultat dans W dure : 1 cycle instruction ( 4 cycles dhorloge )
- 32 -
Conception et ralisation de robot suiveur de ligne 9.2.2 ANDWF ( And W with F ) ANDWF f,d W ET f f si d=1 ou W ET f W si d=0
FSR_2008
syntaxe : Opration :
Bit dtat du registre STATUS affect :Z on effectue un ET logique entre le contenu de W et le contenu de f , on place le rsultat dans W si d=0 ou dans f si d=1 dure : 1 cycle instruction ( 4 cycles dhorloge )
syntaxe : opration :
Bit dtat du registre STATUS affect :Z On complmente le contenu du registre f bit bit, le rsultat est plac dans f si d=1 , dans W si d=0 . dure : 1 cycle instruction ( 4 cycles dhorloge )
syntaxe: opration:
Bit dtat du registre STATUS affect :Z On effectue un OU logique entre le contenu de W et le littral k, le rsultat est plac dans W. dure : 1 cycle instruction ( 4 cycles dhorloge )
syntaxe : opration :
Bit dtat du registre STATUS affect :Z On effectue un OU entre le contenu de W et le contenu de f , on place le rsultat dans f si d=1, dans W si d=0 dure : 1 cycle instruction ( 4 cycles dhorloge )
- 33 -
Conception et ralisation de robot suiveur de ligne 9.2.6 XORLW ( Exclusive Or Literal with W ) XORLW k W OU EXCLUSIF k W
FSR_2008
syntaxe : opration :
Bit dtat du registre STATUS affect :Z On effectue un OU Exclusif entre W et le littral k, le rsultat est plac dans W dure : 1 cycle instruction ( 4 cycles dhorloge ) 9.2.7 XORWF ( Exclusive Or W with F) XORWF f,d W OU EXCLUSIF f W si d=0 ou W OU EXCLUSIF f f si d=1
syntaxe : opration :
Bit dtat du registre STATUS affect :Z On effectue un OU Exclusif entre W et le contenu de f, le rsultat est plac dans W si d=0, sinon il est plac dans f. dure : 1 cycle instruction ( 4 cycles dhorloge )
Bit dtat du registre STATUS affect :Z On diminue le contenu du registre f dune unit, le rsultat est plac dans f si d=1, dans W si d=0 (dans ce cas f reste inchang). dure : 1 cycle instruction ( 4 cycles dhorloge ) 9.3.2 DECFSZ ( Decrement F ,Skip if Zero ) DECFSZ f,d f-1 f si d=1 ou f-1 W si d=0 et saut si f-1=0
syntaxe : opration :
Bit dtat du registre STATUS affect : aucun On diminue le contenu du registre f dune unit, le rsultat est plac dans f si d=1, dans W si d=0 (dans ce cas f reste inchang).Si le rsultat est nul, linstruction suivante est ignore et dans ce cas, cette instruction dure deux cycles. dure : 1 cycle instruction ( 4 cycles dhorloge ) ou 2 cycles
- 34 -
FSR_2008
syntaxe : opration :
Bit dtat du registre STATUS affect :Z On augment le contenu du registre f dune unit, le rsultat est plac dans f si d=1 , dans W si d=0 ( dans ce cas f reste inchang ). dure : 1 cycle instruction ( 4 cycles dhorloge ) 9.3.4 INCFSZ ( Increment F , Skip if Zero ) INCFSZ f,d f+1 f si d=1 ou f+1 W si d=0 et saut si f-1=0
syntaxe : opration :
Bit dtat du registre STATUS affect : aucun On augmente le contenu du registre f dune unit, le rsultat est plac dans f si d=1, dans W si d=0 (dans ce cas f reste inchang).Si le rsultat est nul, linstruction suivante est ignore et dans ce cas, cette instruction dure deux cycles. dure : 1 cycle instruction ( 4 cycles dhorloge ) ou 2 cycles
Bit dtat du registre STATUS affect : Z On met le contenu du registre f 0 et on positionne Z dure : 1 cycle instruction ( 4 cycles dhorloge ) 9.4.2 CLRW ( Clear W ) CLRW 0 W
syntaxe : Opration :
Conception et ralisation de robot suiveur de ligne dure : 1 cycle instruction ( 4 cycles dhorloge ) 9.4.3 CLRWDT ( Clear WatchDog Timer ) CLRWDT 0 WDT et 0 pr diviseur du Timer
FSR_2008
syntaxe : Opration :
On met le contenu du registre du timer chien de garde 0 ainsi que le pr diviseur dure : 1 cycle instruction ( 4 cycles dhorloge )
Bit dtat du registre STATUS affect :Z On dplace le contenu de f dans f si d=1 ou de f dans W si d=0. Attention, le dplacement de f dans f semble priori inutile, mais il permet en fait de tester le contenu de f par rapport 0 et de positionner le bit Z dure : 1 cycle instruction ( 4 cycles dhorloge )
syntaxe : opration :
Bit dtat du registre STATUS affect :aucun On charge le contenu de W avec le littral k dure : 1 cycle instruction ( 4 cycles dhorloge )
syntaxe : opration :
Bit dtat du registre STATUS affect :aucun On charge le contenu de f avec le contenu de W
- 36 -
FSR_2008
dure :
Bit dtat du registre STATUS affect :C On effectue une rotation gauche de un bit du contenu du registre f en passant par le bit de retenu C . Si d=1 le rsultat est plac dans f , si d=0 , le rsultat est plac dans W dure : 1 cycle instruction ( 4 cycles dhorloge )
syntaxe : opration :
Bit dtat du registre STATUS affect : C On effectue une rotation droite de un bit du contenu du registre f en passant par le bit de retenu C. Si d=1 le rsultat est plac dans f , si d=0, le rsultat est plac dans W dure : 1 cycle instruction ( 4 cycles dhorloge )
FSR_2008
On sauvegarde ladresse de retour dans la pile puis on appelle le sous programme dfinit avec ltiquette label dure : 2 cycles instruction ( 8 cycles dhorloge )
syntaxe :
Bit dtat du registre STATUS affect : aucun On effectue un saut dans le programme pour aller ladresse point par le label prcis dans GOTO Dure : 2 cycles ( 8 cycles dhorloge )
syntaxe : opration :
Bit dtat du registre STATUS affect : aucun On charge le compteur ordinal avec la valeur qui se trouve au sommet de la pile pour revenir au programme principal lorsque lexcution de sous programme est termine. dure : 2 cycles instruction ( 8 cycles dhorloge )
syntaxe : opration :
Bit dtat du registre STATUS affect : aucun On charge le contenu de W avec le littral k puis on charge le compteur ordinal PC avec la valeur qui se trouve au sommet de la pile effectuent ainsi un retour de sous programme. dure : 2 cycles instruction ( 8 cycles dhorloge )
syntaxe : opration :
FSR_2008
On charge le compteur ordinal PC avec la valeur qui se trouve au sommet de la pile effectuent ainsi un retour de sous programme. Cest un RETLW simplifi. dure : 2 cycles instruction ( 8 cycles dhorloge )
Bits dtat du registre STATUS affects : aucuns on met 0 le bit b du registre f dure : 1 cycle instruction ( 4 cycles dhorloge )
syntaxe : Opration :
Bits dtat du registre STATUS affects : aucuns on met 1 le bit b du registre f dure : 1 cycle instruction ( 4 cycles dhorloge )
syntaxe : Opration :
9.8.3 BTFSC ( Bit Test , Skip if Clear ) BTFSC f,b saut de linstruction qui suit si b(f)=0
Bits dtat du registre STATUS affects : aucuns Si le bit b de f est nul, linstruction qui suit celle-ci est ignore et traite comme un NOP. Dans ce cas et dans ce cas seulement, linstruction BTFSC demande deux cycles pour sexcuter. dure : 1 cycle instruction ( 4 cycles dhorloge ) ou 2 cycles 9.8.4 BTFSS ( Bit Test , Skip if Set ) BTFSS f,b
- 39 -
syntaxe :
Conception et ralisation de robot suiveur de ligne Opration : saut de linstruction qui suit si b(f)=1
FSR_2008
Bits dtat du registre STATUS affects : aucuns Si le bit b de f est 1, linstruction qui suit celle-ci est ignore et traite comme un NOP. Dans ce cas et dans ce cas seulement, linstruction BTFSS demande deux cycles pour sexcuter. dure : 1 cycle instruction ( 4 cycles dhorloge ) ou 2 cycles
Bit dtat du registre STATUS affect : aucun On ne fait que consommer du temps machine (un cycle dans ce cas) dure : 1 cycle instruction ( 4 cycles dhorloge ) 9.9.2 SLEEP ( Sleep ) SLEEP 0 PD, 1 T0, 0 WDT , 0 pr diviseur
syntaxe : opration :
On place le circuit en mode sommeil avec arrt de loscillateur. Cette commande est utiliser avec prcaution, elle ncessite la connaissance du mode sommeil. 9.9.3 SWAPF ( Swap F ) SWAPF f,d f(0-3) f(4-7) et f(4-7) f(0-3) rsultat dans W ou f selon d
syntaxe : opration :
Bit dtat du registre STATUS affect : aucun On change les quatre bits de poids forts avec les quatre bits de poids faibles et on place le rsultat dans W si d=0, ou dans f si d=1 dure : 1 cycle instruction ( 4 cycles dhorloge )
- 40 -
FSR_2008
Figure22 : Servomoteur
Il comprend : Un moteur lectrique de petite taille. Un rducteur en sortie de ce moteur pour avoir moins de vitesse et plus de couple. Un capteur : un potentiomtre qui produit une tension variable en fonction de l'angle de l'axe de sortie. Un asservissement lectronique pour contrler la position de cet axe de sortie.
- 41 -
FSR_2008
4. Le potentiomtre :
Le potentiomtre sert lasservissement de position. Laxe du potentiomtre est solidaire de laxe de sortie qui lui permet de tourner en mme temps que laxe de sortie. La rsistance la borne du potentiomtre varie en fonction de la position de laxe. La rsistance du potentiomtre est en rapport avec la dure du signal. Par exemple le servomoteur reoit un ordre pour se dplacer la position mdiane (1.5ms). Le moteur va tourner jusqu ce que la rsistance entre le curseur du potentiomtre et les deux extrmits soient identiques et sil reoit une impulsion de 2.1ms il va tourner jusqu ce que la rsistance entre le curseur et lextrmit du potentiomtre soit maximale. Llectronique faire la relation entre la dure de limpulsion et la rsistance aux bornes du potentiomtre.
5. La commande du servomoteur
Un connecteur trois fils permet de commander un servo-moteur. Bien sr, il y a la masse et le +5V ( peu prs). Ces deux fils sont en gnral noir et rouge, mais ils sont marrons et rouge pour les modles Graupner. Le 3me fil est le fil de commande. Il est normalement blanc, mais jaune dans le cas des Graupner. On pourrait dire sommairement qu'il faut fournir un signal PWM en tant que signal de commande, mais ce n'est pas tout fait exact : Le PWM (Pulse Width Modulation : Modulation en largeur d'impulsion) est un signal dont le taux de modulation varie de 0 100% =
PERIODE
- 42 -
FSR_2008
Pour un servomoteur on parle de Pulse-Code Modulated Signal (Signal modul en code d'impulsion ) o seule l'impulsion compte, pas la frquence (en thorie). En clair, il faut fournir au servomoteur une impulsion 1 (suivie d'un retour 0). Le servomoteur va prendre en compte la largeur temporelle de cette impulsion qu'il va convertir de faon linaire en un angle. La dure de retour 0 de l'impulsion nest pas critique, en pratique il faut viter de dpasser 20ms entre deux fronts montants. A noter aussi que ce systme prsente un avantage par rapport au PWM : une absence de signal (toujours 1, ou 0) laisse le servomoteur en "roue libre" comme si il n'tait pas aliment. Le microcontrleur programm est capable de fournir directement ce signal de commande sur une sortie.
- 43 -
FSR_2008
- 44 -
FSR_2008
La mise en forme est confie un circuit TTL 74HC14 (Une porte Nand trigger de Schmitt) et permet de disposer de 6 signaux TTL actifs au niveau 1, nomms capteur1... capteur6 prsents sur le bus de connexion du robot. Le capteur 1 dsigne le capteur extrme avant droit et le capteur 6 dsigne le capteur avant extrme gauche. Rfrence capteurs : OPB704
- 45 -
FSR_2008
Le montage des capteurs de position permet de dtecter la bande de guidage de manire exclusive pour les capteurs 1, 2, 5 et 6 (un seul capteur actif la fois) et non exclusive pour les capteurs centraux (3 et 4). Cette disposition permettra doptimiser la vitesse du robot lorsque celui-ci sera parfaitement centr par rapport la bande de guidage.
2. Description et fonctionnement :
Le principe est de lmission dune onde et de sa rception. Donc deux cas peuvent se produire : soit le capteur dtecte la piste, soit il ne la dtecte pas.
Figure 28
- 46 -
FSR_2008
- 47 -
FSR_2008
PARTIE II
ETUDE PRATIQUE
- 48 -
FSR_2008
1. Principe de la modification
Le principe c'est qu'on va remplacer le potentiomtre par 2 rsistances fixes de mme valeur. Ceci aura pour effet de faire croire l'lectronique du servomoteur que l'axe de sortie se trouve toujours en positon mdiane. Si on lui envoie une impulsion de dure suprieure 1.5ms, le servomoteur va tourner vers la droite en essayant d'atteindre la valeur de rsistance correspondante. Comme les rsistances sont fixes il va tourner indfiniment droite. Idem pour la gauche. Par contre si on lui envoie une impulsion de 1.5ms le moteur va s'arrter puisque la valeur des rsistances correspondantes la valeur mdiane.
2. En rsum pour
tourner en avant : Impulsion > 1.5ms en arrire : < 1.5ms arrt : 1.5ms
Figure 29 : servomoteur
- 49 -
FSR_2008
4. Dmonter le servomoteur
A l'aide d'un petit tournevis cruciforme dvissez les 4 vis du botier. Vous obtenez ceci
Figure 31
Dposez les roues dentes et le roulement bille en reprant bien la position de montage.
- 50 -
FSR_2008
Figure 32
5. Modification du potentiomtre
On va garder juste la fonction mcanique du potentiomtre comme l'axe de ce dernier est le support du pignon de sortie. Il faut que le potentiomtre puisse effectuer un tour complet. En ce qui concerne la fonction lectrique on va remplacer le potentiomtre par deux rsistances fixes. Dvissez l'crou de fixation du potentiomtre et l'extraire du botier.
Figure 33
- 51 -
FSR_2008
Figure34 Modifier le potentiomtre afin que son axe puisse faire une rotation complte. A l'aide d'une petite pince coupante couper la bute du capot et la plier vers l'extrieur. Couper le contact pression au ras du disque afin que l'axe du potentiomtre puisse effectuer un tour complet sans frottement. Coupez galement les 2 contacts pression du couvercle, ceci diminue les frottements.
Figure 35
Refermez le potentiomtre en resserrant les languettes avec une pince. Dessoudez les fils rouge, jaune et bleu du potentiomtre et du circuit imprim. Utilisez un petit fer souder surtout pour le circuit imprim. Pour nettoyer les trous pastilles, utilisez de la tresse dessouder. Remettre le potentiomtre en place.
- 52 -
FSR_2008
A effectuer uniquement sur un des 2 servomoteurs. Dessoudez les 2 fils du moteur CC et les croiser. Ceci afin que les 2 servomoteurs tournent dans le mme sens pour une mme impulsion.
Figure 36
Figure 37
- 53 -
FSR_2008
AVANT
APRES
Figure 38
Figure 39
Remettre les pignons en place. Vrifiez que le pignon de sortie puisse effectuer un tour complet. Remettre le circuit imprim en place. Refermez le botier.
- 54 -
FSR_2008
1.2 Le typon
Un typon est une image du circuit imprim. Les pistes sont en noir et le reste doit tre transparent la lumire. Notre mthode est d'imprimer le typon sur une feuille blanche et verser l'huile de cuisine sur les deux faces pour la rendre transparente la lumire.
Figure 41
FSR_2008
Cette plaque est recouverte d'une rsine sensible aux Ultraviolets. La rsine est protge de la lumire par une pellicule protectrice. L'opration consiste mettre l'image du typon sur la plaque poxy en l'exposant aux UV. Le temps d'insolation est trs important qui prend un peu prs 4min.
Figure 43 : Insolation Utilisation d'une insoleuse : - Dcouper la plaque d'poxy la taille du typon en laissant une marge de 0.5 1cm - Bien placer le typon sur la vitre de l'insoleuse (Vue cote composantes) - Retirer la pellicule protectrice de la plaque - Placer le cot vert de la plaque sur le typon dans l'insoleuse et fermez le capot. - Rgler la minuterie sur la valeur 4. Utilisation d'une ampoule : - Dcouper la plaque d'poxy la taille du typon en laissant une marge de 0.5 1cm - Placer la plaque sur un endroit plat, le cot vert vers le haut - Mettre le typon au dessus de la plaque - Mettre une vitre en verre au dessus pour bien aplatir le typon sur la plaque d'poxy - Fixer une ampoule de 100 W 250 W environ 30 cm au dessus - Insoler 15 30 minute (Il est prfrable de faire des tests sur des petites plaque avant de lancer l'insolation des vraies cartes) Aprs l'insolation vient la rvlation.
1.4 Rvlation
Le rvlateur doit tre mis dans une bassine en plastique (PVC) ou en verre, le temps de rvler le circuit imprim, puis devra tre remis dans son rcipient de stockage juste aprs usage. La temprature optimale d'utilisation de ce produit est gnralement de 20 24C. Le temps de rvlation peut varier de quelques secondes quelques dizaines de seconde, mais cela reste rapide dans tous les cas, et est parfaitement visible. Pendant qu'on remue (dlicatement) la bassine, On voie apparatre petit petit le cuivre nu (couleur rose) aux endroits exposs aux UV, c'est dire aux endroits qui ne devront pas subsister l'tape de gravure finale.
1.5 La gravure
La gravure va permettre au cuivre non protg par la couche de rsine (issu de la rvlation ou des mthodes 1 et 2) de se dissoudre. Plonger le circuit dans un bain de perchlorure de fer 50 pendant le temps ncessaire la dissolution en agitant fortement. Attention, le perchlorure de fer est un acide toxique et corrosif pour la peau mais aussi pour la tuyauterie. Ne pas laisser
- 56 -
FSR_2008
trop longtemps le circuit dans le bain sinon tout sera dissous. Bien rincer aprs gravure. Le nettoyage du circuit se fait avec de l'actone ou du dissolvant ongle.
1.6 Perage
Une simple perceuse alimente en 12 V.
Figure 44 Paramtre des perages : - Rsistances, Diodes, Circuits intgrs, Transistors, Capacits... - Fils 1.5mm - Autres composantes 1.2 ou 1.5mm
0.8mm
1.7 Soudage
La technique du soudage ncessite une technique suivante : prchauffer la pastille et la patte avec le fer pendant un bref dlai, et seulement ensuite appliquer le fil d'tain. On doit avoir l'tain fondre et se positionner tout seul autour de la patte. Retirer le fil puis le fer.
Figure 45 : Soudage
- 57 -
FSR_2008
Cas d'absence de ligne noire on aura de rflexion, alors le phototransistor sera satur la sortie S = 1.
Ces capteurs rsultent diffrentes combinaisons possibles (Voir les figures 49 et 50).
- 58 -
Conception et ralisation de robot suiveur de ligne 2.2.1 Cas de ligne d'paisseur = 10mm
FSR_2008
Combinaison L'tat du robot binaire % la ligne Absence de ligne 111111 Robot droite de la ligne 011111 101111 11 0111 111011 111101 111110 111111 Robot droite de la ligne Robot droite de la ligne Robot gauche de la ligne Robot gauche de la ligne Robot gauche de la ligne Robot hors de la ligne
Commande des moteurs Arrter les deux moteurs Freinage forte de moteur gauche pour revenir au centre Freinage moyen de moteur gauche pour revenir au centre Freinage trs faible de moteur gauche pour revenir au centre Freinage trs faible de moteur droit pour revenir au centre Freinage moyen de moteur droit pour revenir au centre Freinage forte de moteur droit pour revenir au centre Chercher la ligne
Ce tableau montre les valeurs possibles des dtecteurs de ligne qui vont tre transmis vers les ports d'entrs du pic de RB2 RB7. Selon ces valeurs le pic va commander le robot.
- 59 -
Conception et ralisation de robot suiveur de ligne 2.2.2 Cas de ligne d'paisseur > 10mm
FSR_2008
FSR_2008
- 61 -
FSR_2008
COTE CUIVRE
200 Rsistances 57 k
Dtecteurs
OBP704
70 (7)
- 62 -
FSR_2008
3. La carte du Microcontrleur
La carte de PIC possde : Des entres RB2 RB7 sur lesquelles arrivent les informations provenant des opto-dtecteurs (photo-transistor) aprs une mise en forme de signal Des entres RB0 et RB1 sur lesquelles arrivent les informations provenant des deux dtecteurs de traits et du dtecteur d'obstacle pour former une interruption Des sorties RA0, RA1, RA2 et RA3 qui commandent le moteur gauche et le moteur droit Des portes logiques 74HC86, 74HC32, 74HC14, 74HC04 et 74HC08
- 63 -
Conception et ralisation de robot suiveur de ligne La porte logique OU (74HC32) a deux entres O1 et O2 : -
FSR_2008
L'entre O1 est la sortie de dtecteur d'obstacle qui vaut 1 au cas de la dtection d'obstacle et vaut 0 au cas de non dtection
Y= a + b
Les portes logiques AND (74HC08) agir sur les sens des moteurs.
- 64 -
FSR_2008
Microcontrleur Trigger of schmidth Porte XOR Porte OR Inverseur Rgulateur de Tension Support de pic
PIC16F84A
2 1 1 1 1 1
12 12 12 8 7 5
- 65 -
Conception et ralisation de robot suiveur de ligne 1 Quartz Capacit Rsistance 4Mhz 27pf 10 k 2 7
FSR_2008
10 3 1
4.2 Le Moteur M1
Le tableau qui suit le schma montre l'tat du moteur M1 selon les valeurs des signaux D1 et D2.
- 66 -
FSR_2008
Figure 55 : Montage de commande de moteur M1 D1 D2 0 0 L'tat du moteur M1 Le moteur au repos (les Bloqu Bloqu Satur Bloqu Satur Bloqu deux broches a1 et b1 du moteur sont alimentes par la masse (GND)) Le moteur marche au sens Bloqu Bloqu Satur Satur Bloqu Satur normal : broche a1 - GND - + 6V broche b1 Le moteur marche au sens Satur Satur Bloqu Bloqu Satur Bloqu inverse : - + 6V broche a1 broche b1 - GND Le moteur au repos (les Satur Satur Bloqu Satur Bloqu Satur deux broches a1 et b1 du moteur sont alimentes par +6V) T1 T2 T3 T4 T5 T6
4.3 Le Moteur M2
Le tableau qui suit le schma montre l'tat du moteur M2 selon les valeurs des signaux D3 et D4.
FSR_2008
D3 D4 0 0
L'tat du moteur M2 Le moteur au repos (les Bloqu Bloqu Satur Bloqu Satur Bloqu deux broches a2 et b2 du moteur sont alimentes par la masse (GND)) Le moteur marche au sens Bloqu Bloqu Satur Satur Bloqu Satur normal : - GND broche a2 - + 6V broche b2 Le moteur marche au sens Satur Satur Bloqu Bloqu Satur Bloqu inverse : - + 6V broche a2 - GND broche b2 Le moteur au repos (les Satur Satur Bloqu Satur Bloqu Satur deux broches a2 et b2 du moteur sont alimentes par +6V)
T1
T2
T3
T4
T5
T6
Remarque : Le Transistor PNP : - Si l'tat de la base B=1 - Si l'tat de la base B=0 le transistor est bloqu le transistor est Satur
- 68 -
FSR_2008
COTE CUIVRE
Rsistances
4 1
2.2
4
- 69 -
FSR_2008
Servomoteur
hs322_s : Hitech
2 143 (13)
Dans l' Annexe III les vues dcran nous permettent de crer une application.
- 70 -
FSR_2008
Le circuit imprim et son implantation montre la simplicit de la ralisation. Il est important dutiliser un bon support pour le PIC, un modle tulipe. Car il faut pouvoir placer et enlever souvent le composant programmer. On peux utiliser une rallonge de port srie normal, cest dire non croise.
- 71 -
FSR_2008
COTE CUIVRE
- 72 -
Conception et ralisation de robot suiveur de ligne 5.2.4 Nomenclature de la carte de programmation Rfrence R1:120 (marron, rouge, marron) 12k 47k (jaune, move, orange) 33k (orange, orange, orange) 100 nf Quantit 1 4 1 1 Symbole/Rel
FSR_2008
Dsignation
Rsistances
Capacit
Transistor LED
BC327 PNP Rouge 3mm faible consommation Zener 4,7 V Zener 12V 4148 DB9 femelle 18 broches tulipe rallonge du port srie
1 1 2 1 1 1 1 1
2 1 2 2 1 15 5 --
Pour transfrer le programme sur le PIC, nous allons utiliser PP84. La procdure pour programmer le PIC16F84A dcrire ci-aprs suppose que les options de configuration sont au dpart celles par dfaut. Il est toujours possible de rinitialiser la configuration par dfaut dans longlet Config .
Figure 60 : Le PP84
- 73 -
FSR_2008
Chapitre 3 : la programmation
1. Rappel du cahier de charges fonctionnel et technique
Le suivi de ligne est le cur du robot, c'est de cette partie que va surgir les diffrentes stratgies pour gagner en vitesse, position et en temps
Les diffrentes fonctions sont : Analyser la trace Anticiper un virage par ralentissement Dtecter que le marquage au sol indique une priorit respecter (cas de trait) Dtecter un obstacle indique une priorit respecter.
2. Fonctionnement : Tout d'abord tirer le jack de robot pour mettre marche et poser le sur la ligne, le robot doit avancer tout droit, s'il rencontre un trait gauche grce un dtecteur de cot gauche, il doit faire un tour complte de 360 en inversant le sens de moteur droit. Aprs le robot marche en avant sur la ligne. S'il rencontre un trait droit grce un dtecteur de cot droit, il doit faire un tour complte de 360 en inversant le sens de moteur droit. Aprs la tour le robot avance tout droit sur la ligne et s'il rencontre un croisement, le robot doit marcher en avant. Si le robot rencontre un obstacle pour la 1re fois, il fait un demi-tour (180) et marche en avant. Si le robot encontre un obstacle pour la 2me fois, il s'arrte.
- 74 -
FSR_2008
- 75 -
FSR_2008
3. Organigramme :
4. Explication de l'organigramme :
On doit tout d'abord initialiser le microcontrleur pour permettre son fonctionnement. Ensuite on reoit des donnes provenant d'un sous programme qui nous fournit le sens de rotation des moteurs. Enfin selon les donnes reues le programme envoie des signaux qui permettent de grer la direction des moteurs, c'est--dire sa marche avant, rotation ou frein.
- 76 -
FSR_2008
5. Algorithme principal
FSR_2008
6. Interruption
Figure : 64
La porte OU (OR) pour lancer l'interruption : Si la sortie de OU = 0 Si la sortie de OU = 0 RB0 = 0 alors on naura pas d'interruption. RB0 = 1 alors on aura l'interruption.
La porte XOR spcifi l'interruption : Si la sortie de XOR =1 alors l'interruption vient des dtecteurs de traits pour lancer un tour complte Si la sortie de XOR = 0 alors l'interruption vient du dtecteur d'obstacle.
- 78 -
FSR_2008
7. Programme de l'interruption
FSR_2008
CONCLUSION GNRALE
Ce projet couvre un grand nombre de domaines de comptences : ralisation d'une carte lectronique (CAO) tude de la commande de moteur en MLI programmation microcontrleur rdaction d'un dossier de projet
A la fin de ce travail qui consiste a ltude et la mise en uvre dun robot suiveur de ligne .le travail de ce type de robot a exige la matrise de plusieurs notions techniques aussi bien le domaine micro lectronique et celui de l'informatique, ce que fait que j'ai eu loccasion dcouvrir, la programmation bas niveau par Mplab, les techniques ncessaires pour lutilisation des microcontrleurs dans les montages lectroniques.
D'aprs le planning que nous nous tions fixs, on peut dire que nous sommes arrivs terme du projet dans le temps.
- 80 -
FSR_2008
PARTIE III
ANNEXES
- 81 -
FSR_2008
Figure 66
- 82 -
FSR_2008
figure 67
Le programme suivant permet de faire clignoter la LED D1. Cest lun des programmes les plus simples qui soit et qui est trs pratique pour tester le bon fonctionnement des montages, qui devraient toujours avoir une LED tmoin permettant dafficher ltat du PIC. Programme faisant clignoter une LED LIST p=16F84A ; Dfinition de processeur ; fichier include ;Led rouge ; dbut de la zone variables
; fin de la zone
org 00 goto start tempo: movlw 00 movf c1,f movf c2,f ETC1: ETC2: incfsz c1,f
- 83 -
Conception et ralisation de robot suiveur de ligne goto ETC2 incfsz c2,f goto ETC1 return start: bsf STATUS,5 bcf TRISA,2 bcf STATUS,5 first: bsf LED call tempo call tempo call tempo bcf LED call tempo call tempo call tempo goto first end Algorithme : Lalgorithme, trs simple, est prsent sur la figure 65.
FSR_2008
; boucler
- 84 -
Conception et ralisation de robot suiveur de ligne 2) Led clignotante avec bouton poussoir
FSR_2008
Programme faisant clignoter une LED avec bouton poussoir LIST p=16F877A ; Dfinition de processeur ; fichier include ;Led rouge ;bouton pousoir
#include"P16F84A.INC" #define LED PORTA,2 #define switch PORTB,2 cblock 0c c1:1 c2:1 endc
org 00 goto start tempo: movlw 00 movf c1,f movf c2,f ETC1: ETC2: incfsz c1,f goto ETC2 incfsz c2,f goto ETC1 return start: bsf STATUS,5 bcf TRISA,2 bcf STATUS,5
FSR_2008
BTFSC switch goto first goto off off: bcf LED BTFSC switch goto first goto off first: bsf LED call tempo call temp call tempo bcf LED BTFSS switch goto off call tempo call tempo call tempo BTFSS switch goto off goto first end
; Eteindre LED
; tempo de 0.5s
; boucler
- 86 -
FSR_2008
- 87 -
FSR_2008
Dans le menu project cliquez sur new project et donnez un nom votre future application (dans lexemple essai.pjt) puis cliquez sur "OK"
Une fois le nom donn cet cran apparat, vous devez slectionner 'diteur' et le pic sur lequel vous travaillez dans l'exemple "Editor Only" et "PIC 16F84A" , pour changer de micro contrleur cliquez sur le bouton Change... et choisissez votre option.
- 88 -
FSR_2008
Cliquez ensuite sur le nom dans la fentre du bas (dans lexemple essai.hex) puis cliquez sur "Node Properties"
- 89 -
FSR_2008
Cet cran apparat slectionnez les options indiques ci-dessous et cliquez sur le bouton "OK"
- 90 -
FSR_2008
En validant, vous revenez alors lcran prcdent, cliquez alors sur le bouton "Add Node..." et indiquez le nom du fichier assembleur que vous allez crez (dans l'exemple 'essai.asm' ) puis validez avec "OK".
- 91 -
FSR_2008
Cliquez sur le bouton "OK vous revenez alors au premier cran. Cliquez sur "file" puis new, une fentre vous permet alors de commencer tapez votre source en assembleur :
- 92 -
FSR_2008
Une fois votre source tapez cliquez sur 'file' et 'save as' et entrez le nom de votre fichier source dans notre exemple se sera 'essai.asm'.
Il vous reste maintenant compiler votre source afin de crer un fichier 'hex' que vous pourrez tlcharger dans la mmoire du pic. Pour se faire cliquez dans le menu "Project' puis "Make project" vous obtenez alors l' cran suivant :
- 93 -
FSR_2008
Si tout est bien c'est dire quil ny a aucune erreur de syntaxe vous obtenez l'cran suivant :
- 94 -
FSR_2008
La compilation est termine, le fichier "essai.hex" dans notre exemple est disponible dans le rpertoire de MPLAB. Si vous possdez un logiciel de programmation tel que ICPROG.EXE par exemple cliquez sur "ouvrir" puis slectionnez votre fichier "essai.hex" afin de le transfrer vers la mmoire du PIC programmer. Dans le cas o il y a des erreurs le logiciel MPLAB indique la ligne laquelle se trouve l'erreur de syntaxe.
- 95 -
FSR_2008
La simulation analogique
Saisir un schma
Pour saisir le schma, il faut crer un nouveau projet puis placer les composants qui doivent tre slectionn partir de la bibliothque des composants :
FSR_2008
Afficher les fentres Registers Source Code Data memory par lintermdiaire du menu Debug pour contrler le fonctionnement du programme, dtecter et corriger les erreurs
Le schma t ralis en utilisant le logiciel ISIS ce dernier nous a permis de vrifier le fonctionnement du microcontrleur travers la simulation
;#define tour PORTA,4 interuption PORTB,0 tour PORTB,1 ;dtecteur pour faire un tour d2 PORTB,2 ;d0 d1 d2 dtecteurs de droite d1 PORTB,3 d0 PORTB,4 g0 PORTB,5 ;g0 g1 g2 dtecteurs de gauche g1 PORTB,6 g2 PORTB,7
cblock h'000c' x1:1 ;tempo x2:1 y1:1 ;tempo y2:1 z1:1 ;tempo z2:1 z3:1 t1:1 ;tempo t2:1 t3:1 u1:1 ;tempo
00 10 11
21
22
- 97 -
FSR_2008
;tempo 1 tour
org h'0000' goto debut org h'0004' routine: ;bcf INTCON,INTF bcf md bcf mg btfss tour goto untour bcf INTCON,INTF arret: btfss interuption goto quitter goto arret quitter: bsf md bsf mg RETFIE untour: bcf smd nop nop bsf md bsf mg call tempo1tour bcf md bcf mg bsf smd nop nop bsf md bsf mg bcf INTCON,INTF RETFIE g222: btfsc g2 return btfss g1
- 98 -
;changer le sens du md
FSR_2008
FSR_2008
mil: bsf md bsf mg etmil: btfsc d0 RETURN btfsc g0 RETURN goto etmil
d00: bcf md bsf mg call tempo00 bsf md bsf mg call tempo00 goto d000 d10: bcf md bsf mg call tempo10 bsf md bsf mg call tempo10 goto d1010 d11: bcf md bsf mg call tempo11 bsf md bsf mg call tempo10 goto d111
;md en arret
;md en arret
- 100 -
FSR_2008
d21: bcf md bsf mg call tempo21 bsf md bsf mg call tempo10 goto d2121 d22: bcf md bsf mg call tempo22 bsf md bsf mg goto d222 g00: bsf md bcf mg call tempo00 bsf md bsf mg call tempo00 goto g000 g10: bsf md bcf mg call tempo10 bsf md bsf mg call tempo10 goto g1010 g11: bsf md bcf mg call tempo11 bsf md bsf mg call tempo11 goto g111 g21: bsf md bcf mg call tempo21 bsf md bsf mg call tempo21 goto g2121 g22: bsf md
- 101 -
FSR_2008
tempo1tour: movlw 00 movwf v1 movlw 00 movwf v2 movlw 00 movwf v3 untr3: untr2: untr1: decfsz v1,f goto untr1 decfsz v2,f goto untr2 decfsz v3,f goto untr3 RETURN tempomitour: movlw 00 movwf w1 movlw 00 movwf w2 movlw 00 movwf w3 mitr3: mitr2: mitr1: decfsz w1,f goto mitr1 decfsz w2,f goto mitr2 decfsz w3,f goto mitr3 RETURN tempo00: ;66000 movlw 0b5 movwf x1 movlw 56 movwf x2 et002: et001: decfsz x1,f goto et001 decfsz x2,f goto et002 RETURN
- 102 -
FSR_2008
;movlw 00 ;movwf z3 ;et113: et112: et111: decfsz z1,f goto et111 decfsz z2,f goto et112 ;decfsz z3,f ;goto et113 RETURN tempo21: ;200000 movlw 0b9 movwf t1 movlw 04 movwf t2 movlw 02 movwf t3 et213: et212: et211: decfsz t1,f goto et211 decfsz t2,f goto et212 decfsz t3,f goto et213 RETURN tempo22: movlw 95 movwf u1 movlw 2f movwf u2 movlw 02 movwf u3 ;233000
- 103 -
FSR_2008
debut: bsf INTCON,GIE bsf INTCON,INTE page1 bsf OPTION_REG,INTEDG clrf TRISA bsf TRISA,4 page0
;autoriser les interuptions ;autoriser les interuptions par la broche RB0 ;front montant ; porta en sortie ;portA4 EN ENTRE
smd smg md mg
etq: btfss g2 call g222 btfss g1 call g111 btfss g0 call g000
- 104 -
FSR_2008
Code source.HEX
:02000000F228E4 :0800080005108510861C0F286D :100010008B10061C0C2809280514851409000511ED :100020000000000005148514A32005108510051597 :1000300000000000051485148B100900861B0800C1 :10004000061F96289D28061F2828861F1E280800A0 :10005000061B0800861F9628861E88288F28861E65 :100060003428061F28280800861A0800061F88283A :10007000061E58288128061A0800861D6628861E36 :1000800058285F28061E3B28861D47280800861929 :100090000800061D7428061E66286D28861D472840 :1000A000061D5328080006190800861D74287B28A1 :1000B00005148514061A0800861A08005A28051027 :1000C0008514BD2005148514BD203B28051085141A :1000D000C62005148514C620422805108514CF209B :1000E00005148514C620472805108514D82005144A :1000F0008514C6204E2805108514E52005148514A6 :10010000532805148510BD2005148514BD203428FE :1001100005148510C62005148514C6202F28051443 :100120008510CF2005148514CF20282805148510AC :10013000D82005148514D820232805148510E5201F :10014000051485141E280030990000309A000030F4 :100150009B00990BA9289A0BA9289B0BA92808009A :1001600000309C0000309D0000309E009C0BB628A3 :100170009D0BB6289E0BB6280800B5308C00563073 :100180008D008C0BC1288D0BC1280800DD308E003E :1001900082308F008E0BCA288F0BCA280800B83017 :1001A0009000AB309100900BD328910BD32808001E :1001B000B93093000430940002309500930BDE2890 :1001C000940BDE28950BDE280800953096002F3022 :1001D000970002309800960BEB28970BEB28980BB2 :1001E000EB2808008B170B168316011785010516DF :1001F00083120515851505108510861F1E20061F04 :100200002820861E3420061D5320861D4720061EEA :040210003B20FD286A :00000001FF
FSR_2008
1,8) : base, paule, coude, poignet, rotation main, pince. Il est raccord au rseau lectrique 220 V. Les transmissions entre les diffrents axes se font par le biais de pignons denture droite ainsi que des courroies crantes. Sa vitesse maximale est de 40 par seconde pour une charge maximale de 400g. La pince permet de saisir des objets de moins de 80 mm de diamtre. Le serrage de la pince s'effectue par le biais d'un systme vis crou irrversible. Le principe est de commander un bras robotis (le robot YOUPI) l'aide d'une carte PIC.
5- Le Robot Photovore : nous allons prendre l'exemple du robot photovore (qui cherche la lumire). Donc le robot va se diriger vers la lumire en utilisant un capteur sensible la lumire.
ANNEXE 7 : Budget
On a propos pour ce projet un prix de 2000 DH, alors que la ralisation est faite avec 1146 DH. Ce qui donne une rduction de 50%. Donc de cot conomique il est optimal.
- 106 -
FSR_2008
RFRENCE
Ouvrages
Cours d'lectronique numrique de M. HAMRI 2007-2008 Cours de microcontrleurs "PIC16f84" de M. ZAHID 2007-2008 Datasheet des composantes lectroniques Datasheet de capteur OPB704 (Reflective Object Sensors: Type OPB703, OPB704, OPB705) PIC16F8X, document DS30430C, www.microchip.com PIC16F84a, document DS35007A, www.microchip.com Programmation des PIC, Premire partie-PIC16F84-Rvision 5, par BIGONOFF, http://www.abcelectronique.com/bigonoff/organisation.php?2654c
Sites web
www.microchip.com www.roboticsplatform.com http://www.nsf.gov/eng/roboticsorg www.ieee-ras.org www.ifr.org www.euron.org http://tcremel.free.fr http://tcremel.free.fr/doc/bidouille_servo.pdf http://www.planete-sciences.org/robot/ http://www.microchip.com/10/tools/picmicro/devenv/mplabi/index.htm http://www.admiroutes.asso.fr/larevue/2000/1/paradigm.htm http://louispayen.apinc.org/2002-2003/ressources-tpe.htm
- 107 -