|
Le réseau de nerfs
|
Comme pour nous, tous les nerfs dédié au sens du toucher se connectent
sur la colonne vertebrale avant le cerveau. J'ai choisi de copier
strictement la nature en ce qui concerne le "toucher". Une autre
solution m'aurait occupé des dixaines de canaux, alors qu'avec
un peu d'astuce, nous n'allons utiliser que 2 canaux pour connecter
jusqu'à 128 capteurs de toucher.
Cette astuce vient des notes techniques de Parallax, constructeur
du BS. Le principe en est simple. Le BS va mesurer le temps de
décharge d'un condensateur. Ce condensateur est chargé par un
certain nombre de résistance en fonction de l'interrupteur sur
lequel on appuie. Si je presse l'interrupteur no3, le condensateur
se charge à travers 3 résistances, il sera donc moins chargé qui
si j'avais pressé le bouton no1 (1 seule résistance). Simple.
|
Voyons maintenant à quel point c'est efficace et proche de la nature.
Avec ce système on pourrait dire que le désavantage est que si l'on
appuie sur les bouton 1 et 3 en même temps, le condensateur se chargera
comme si seul le bouton 1 avait été pressé. En celà, il faut comprendre
qu'un ordre de priorité est induit. Le bouton 1 est plus important que
le 2 ou le 3. Si plusieurs interrupteurs sont pressés en même temps,
seul le plus prioritaire sera retenu.
Revenons à la création de Dieu, et imaginons un exemple dans lequel
j'aurais trop marché, tellement marché que j'en ai choppé une cloque
qui me fait extremement mal. Pour me détendre je me mets à bricoler
un truc avec un cutter, et là.... c'est le drame, je me coupe, ça me
fait mal. Aussi étonnant que cela puisse paraitre, durant les minutes
qui vont suivre et bien que j'ai toujours mal au pied, je ne vais penser
qu'à ma coupure au doigt. La douleur du pied est presque imperceptible.
Je le sens légèrement mais ça n'a aucune importance ! j'ai trop mal
au doigt. Une sorte de priorité de l'information nerveuse est donc en nous.
Le système de chargement de condensateur est donc bien celui qui est
le plus proche de la nature. Je ne sais pas à quoi ça va me servir mais
ce qui est sûr c'est que ça colle à notre postulat de départ, copier
la nature. En fait, nous verrons plus loin que ce système donne une
réelle impression de vie au robot puisqu'il va décider tout seul que
cogner un mur est bien plus grave que de savoir que le moteur a fait
un tour. Et puis un détail non négligeable : 64 capteur sur un canal
c'est plutôt balaise comme économie.
Pour garder l'indépendance des deux rampes de "jambes" du robot, j'ai
choisi de séparrer les capteur de toucher en deux rampes de 7 capteurs
chacun (largement suffisant).
Les capteurs que j'utilse sont des petits
interrupteur "click" de souris. Ils sont fait pour nos gros doigt et
des milliers de clicks. C'est le plus robuste et le plus petit que j'ai
trouvé. J'en place un à chaque bout de jambe, ainsi le contact d'une
jambe avec le sol est pris en compte. J'en place un pour une antenne,
un pour un compte-tour moteur et un pour mesurer le "basculement" du
robot sur le dos ou sur l'arrière. Ceci pour chaque coté : une série
à gauche, une série à droite. Elles sont indépendantes en termes de
priorité. Elles occupent 2 canaux (P2 et P3) du BS.
Règles de priorité
Nous reste à imaginer l'ordre de priorité. Personnellement j'ai mis
des connecteurs tulipe pour pouvoir changer cet ordre en
inversant simplement les cables. A force, je suis tombé sur l'ordre ci dessous,
mais libre à vous d'en changer jusqu'à trouver le meilleur ordre possible
pour votre bot. Le rôle global de ces capteurs est le contrôle des éléments
mécaniques. Si vous alimentez votre moteur, il est toujours bon de vérifier
qu'il tourne réellement (au cas ou le robot serait bloqué contre un
mur)
1- Antenne (si il touche un obstacle, c'est prioritaire à tout
!)
2- compte-tour moteur (à chaque tour d'une de vos roues dentée, un
click)
3- patte centrale
4- patte arrière
5- patte avant
6- basculement arrière
7- basculement coté |
Pareil pour l'autre côté. La mesure de la décharge du condensateur
est obtenue par l'instruction Basic "RCTIME" pour les BS2 (et "POT"
pour les BS1). Avec des valeurs de 100nF pour le condo et 10k pour les
résistances, RCTIME renvoie un chiffre compris entre 0 et 65635, chaque
tranche de 1000 correspond à un interrupteur. Si RCTIME mesure 6467,
c'est l'interrupteur 6 qui a été déclenché. Pour 3556, c'est l'interrupteur
3 ... etc ... voilà pourquoi on a virtuellement la possibilité de monter
jusqu'à 64 capteurs par ligne. En jouant mieux sur les valeurs du condo
et des résistances on peut aussi créer une incrémentation de 500 et
doubler le nombre de capteurs par ligne. Je ne connais pas la limite.
Certains testeront. En ce qui me concerne une dixaine de capteurs suffisent
(et puis il m'a fallu dépouiller 7 vieilles souris, j'en avais pas d'autres,
donc je me suis arreté là).
Toujours dans l'idée de protection, j'ai ajouté une résistance de 10k
entre ce montage et les canaux du BS. Au pire (court circuit, blocage
du premier bouton ou écrasement du robot sous une presse à la Terminator)
le BS mesurera 10k minimum soit un demi milliAmpère, largement suffisant
pour ne pas cramer le BS. Ceci dit, je suis peut être parano.
Pour ceux qui ne l'auraient pas encore compris, j'ai appris l'électronique
uniquement pour faire mon bot, je ne suis pas le mieux placé pour vous
donner des conseils, il y a 2 mois à peine je ne savais même pas ce
qu'est une diode zener. Mais bon, j'y suis arrivé quand même à force
d'à force, empiriquement, sans jamais rien cramer grâce à cette parano
de la protection. ;-)
|