Login

mardi, 03 juillet 2007 17:44

Carte de navigation et d'entrée sortie

Écrit par 
Évaluer cet élément
(0 Votes)

La navigation et l'interface homme machine

Cette troisième carte comporte deux processeurs et est destinée à assurer les entrées sorties avec le maître du robot ainsi qu'à la navigation du robot. Elle va donc recevoir les ordres émis par la télécommande infra rouge (une télécommande récupérée d'un lecteur de dvd), elle va afficher les informations pertinentes sur le petit afficheur situé sur le robot. Elle va enfin utiliser les télémètres infra rouge pour identifier/éviter les obstacles et piloter la carte d'asservissement en conséquence.

Noter que cette carte n'est pas spécifique d'un robot à 2 roues et qu'elle est largement sous-utilisée (on aurait pu utiliser un gps, une boussole, une cartographie....) Mais qui sait si elle n'aura pas des clones sur d'autres robots qui tondent la pelouse par exemple!

Matériel

La carte est très simple et se compose de deux processeurs (toujours des 18F4550 merci l'achat en nombre) pilotés par un quartz à 40Mhz.

L'un des processeurs s'intéresse à l'interface homme machine : on lui connecte une diode IR qui permet de recevoir la télécommande infra rouge et un afficheur LCD 2x16 caractères avec réglage du contraste.

L'autre lit les 6 télémètres de détection des obstacles  - 5 vers l'avant et un vers l'arrière) et pilote la carte d'asservissement via le bus I2C en esclave.

Ces 2 processeurs dialoguent en I2C (le processeur de pilotage est mâitre et le processeur IHM est esclave)

Cette carte étant simple, on a voulu tester 2 points :

  • Tous les composants passifs sont en CMS, ce qui en fait une carte très aérée.

  • Et surtout, on a essayé une alimentation 5V à découpage :

Alimentation à découpage

L'alimentation est fournie par une batterie LIPO de 4 éléments donc d'environ 15 Volts. Utiliser un circuit régulateur normal  pour délivrer 5 Volts est un gachis en énergie et en thermique. L'alimentation en 5V de la carte d'asservissement exige un radiateur pour 2 malheureux micros... alimenter 2 cartes et 8 télémètres et l'afficheur... aurait exigé une dissipation de plusieurs watts.

Il fallait donc essayer ces circuits intégrés de régulation à découpage. Si la diode schottky est facile à trouver, il a quand même fallu récupérer la self sur une carte électronique en panne.... mais le résultat est positif : mes futurs circuits utiliseront ce mode d'alimentation (on constate évidemment que l'intensité consommée diminue quand on augment la tension cqfd).

Le schéma électrique est le suivant : 

moteur

  Toutes les entrées sorties ne sont pas utilisées pour Pilou (les entrées analogique du processeur d'entrée sortie ne sont pas connectées par exemple..)

Voici une photo de la carte équipée et montée sur le robot.

 

carte_navigation

  Le processeur de navigation est situé à droite ; chaque télémètre utilise un connecteur. Le processeur d'entrée sortie est situé au centre et est raccordé à l'écran afficheur (connecteurs à gauche) ainsi qu'au led d'alarme batterie etdiode de réception de télécommande (connecteurs au centre). Sur la gauche, on voit l'alimentation à découpage avec le circuit intégré sans radiateur ,  la self, les condensateurs et le fusible.

Les 4 LEDS implantées sur la carte servent au deboggage et à aider dans l'utilisation du robot (par exemple, l'un des LEDS est utilisé comme acquit de réception d'une commande infra rouge, ce qui s'avère indispensable à l'utilisation). 

Noter que cette carte alimente aussi, via le connecteur I2C, la carte de détection d'attitude.

 

  Logiciel

Chaque processeur est dédié à des activités diférentes.

 Processeur de navigation

Le logiciel de ce processeur est des plus simple puisque son sul rôle est de commander la carte des moteurs (vitesse et direction) et d'éviter les obstacles en mode automatique.

Il gère les modes de fonctionnement du robot dont 2 ont été développés :

  • Le mode manuel qui reçoit les commandes de vitesse et de direction du processeur d'interface et les  exécute

  • Le mode évitement qui reçoit les commandes de vitesse (en marche avant seulement) du processeur d'interface et qui réalise un parcours aléatoire en évitant les obstacle.

Evitement

 Chaque télémètre est interrogé toutes les 40 msec.

  • Le  logiciel en fait  une "carte" représentant l'état de l'éspace devant lui sur environ 100°.

  • En fonction de la distance d'un obstacle, il va éventuellement diminuer la vitesse voire passer en marche arrière

  • En fonction de la "carte ", il va choisir la moins mauvaise des directions à prendre pour éviter ou raser l'obstacle.

 Cette dernière fonction est réalisée par une table (indexée par la valeur de la carte) qui donne la valeur du volant à appliquer. Le robot ne s'arrête donc pas pour tourner mais va moduler la position du volant et de la vitesse en fonction des obstacles et de leur distance. Cet algorithme donne un résultat assez réaliste et le robot a tendance à frôler l'obstacle plutôt que d'opérer des virages brusques.

 Arrêt / marche

On rappelle que le robot est asservi en vitesse lorsque la consigne n'est pas nulle et en position lorsqu'il est à l'arrêt.

De même, un angle excessif va couper les moteurs 

 

 

Processeur d'interface homme/machine 

Le logiciel est composé de plusieurs modules :

Réception de télécommande infra rouge

Le traitement est fait en interrupt.. La télécommande JVC utilisée a un codage IR particulier (non RC5)  qu'il a fallu analyser à l'oscilloscope et coder.... En résultat, la routine d'interruption donne à la tâche de base l'identité de la touche  de la télécommande qui a été activée. Les temporisations de répétition, lorsqu'une touche est enfoncée en permanence, sont également traitée en interruption ; chaque touche peut avoir une temporisation de répétition spécifique.

Affichage LCD

Les routines d'affichage tournent en tâche de base et sont de 2 niveaux

  • Les fonctions élémentaires (effacement, écriture d'un caractère, gestion du curseur....) sont spécifiques de l'afficheur et exigent des temporisations spécifiques

  • Les fonctions de messages sont de niveau haut et permettent la composition des éléments à afficher.

Suivant les modes d'entrée sortie (état normal, états de modifications de paramètres, ...), l'afficheur ne visualise pas les mêmes informations...

En résumé, on affiche :

- La tension batterie

- Le compteur cumul du temps de fonctionnement

- Le compteur "journalier" de cumul (utile pour gérer la temps depuis la dernière charge batterie)

ces deux compteurs sont conservés en flash

- Le mode de fonctionnement (manuel ou automatique)

- Le fonctionnement normal ou angle excessif

- La valeur d'un paramètre

- Les confirmations d'activation de valeur de paramètre ou de sauvegarde en flash ou de retour aux valeurs usine

Conclusion

Ces logiciels sont simples et ce sont ces derniers qui doivent évoluer si on désire faire faire au robot des évolutions plus complexes : on garde les processeurs d'attitude et de contrôle des moteurs inchangés donc sans devoir tout retester... notamment le temps réel est les interrupts...

Par exemple, on peut doter le processeur de navigation d'une boussole électronique, d'une mémorisation du parcours, d'une cartographie  etc etc  sans trop de complexité . Mais là de pose la question de la pertinence des fonctions sur un robot équilibriste.... ne vaut il pas mieux réaliser ces fonctions de parcours sur un classique robot à 4 roues ?

 

Lu 3297 fois Dernière modification le jeudi, 05 janvier 2012 10:00
Connectez-vous pour commenter