Précédente Accueil Suivante

 

Accueil
Le projet IRBOT
Chassis roues
Servomoteur
Modif servos
Test servos
Le radar IR
Premiers pas robot
Détection collision
Télécommander
Test RC5
IRBOT et RC5
Mémo parcours
Mise en veille
Vers PIC16F628
Borne recharge
Compilateur CCS
Modif matérielle
Recharge du robot
Bip Bip ...
En musique
Vidéos
Téléchargements
Carte développ.
Liens Affiliation

Le robot mémorise son parcours

Le fait que l'on puisse télécommander le robot mobile IRBOT ouvre de nouveaux horizons.

Il serai intéressant d'utiliser les touches RECORD, PLAY et STOP pour mémoriser le parcours que IRBOT est en train de faire. Puis de le rejouer.

Il y a encore une partie du microcontrôleur PIC16F84 qu'on a pas utilisé, c'est l'EEPROM.
En effet le PIC dispose d'une mémoire EEPROM interne de 64 octets. Cette mémoire est toute indiquée pour mémoriser le parcours. En plus la mémoire n'est pas volatile, c'est à dire que l'info reste mémorisée même après coupure de l'alim.

Quelle information mémoriser ?

Les changements de direction et la durée d'une direction.
Ce sont tout simplement les paramètres de la fonction sens(direction, durée).
Il suffit donc de mémoriser la valeur de direction et de durée à chaque appel de la fonction sens.

Combien de bits pour mémoriser ces infos ?

direction peut prendre les valeurs 0 à 7. Donc 3 bits suffisent.
durée est exprimée en fractions de 20ms. C'est un entier long de 16bits.
Si on se contente de 13bits, ça nous fait une durée max. de 213 * 20 * 10-3, ce qui donne 163 sec.. soit 2'43. C'est tout à fait honnête.
Donc 3 bits pour la direction et 13 bits pour la durée, cela fait 16 bits, c'est à dire 2 octets.
Sachant que l'EEPROM fait 64 octets, cela nous permet de mémoriser 32 changements de direction d'une durée max de 2'45 par direction.

Comment répartir les données sur 2 octets ?

Premier octet = direction + durée (MSB ou bits de poids fort)

DIR2 DIR1 DIR0 DUR12 DUR11 DUR10 DUR9 DUR8

Deuxième octet = durée (LSB ou bits de poids faible)

DUR7 DUR6 DUR5 DUR4 DUR3 DUR2 DUR1 DUR0

Comment rejouer le parcours ?

Bien sûr si on veut que IRBOT refasses exactement le même parcours, il faut le placer dans la même position de départ que lors de la mémorisation.

Pour rejouer le parcours il suffit de relire l'EEPROM afin de récupérer les infos direction et durée, et d'appeler la fonction sens avec ces paramètres.



Dans le prochain post programme et vidéo

La vidéo

IRBOT doit slalommer entre des poupées russes. Le parcours a d'abord été effectué en téléguidant IRBOT à l'aide de la télécommande.
Puis, j'ai replacé IRBOT au point de départ et appuyé sur PLAY pour rejouer le parcours. C'est la séquence PLAY que l'on voit sur la vidéo.

http://pro.wanadoo.fr/yves.heilig/Boutique/Video/irb16.exe

Le programme

Pour mémoriser le parcours dans l'EEPROM, j'ai utilisé la fonction write_eeprom à chaque appel de la fonction sens.

Pour rejouer, j'ai rajouté la fonction rejoue qui lit l'EEPROM par read_eeprom et qui appelle la fonction sens avec les valeurs durée et direction.

Téléchargement

Tout est dans le zip. La vidéo est au format .smv

Mem_Parcours


Prochaine étape : se diriger vers une borne de rechargement

 

Précédente Accueil Suivante