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