Petra – un bus pour interfaces robots

publicité
http://www.didel.com/
[email protected]
www.didel.com/PetraPub.pdf
Petra – un bus pour interfaces robots
et pour la mise au point d’applications
Vous avez un robot qui roule, programmé avec Pinguino, en Basic ou en
assembleur CALM. Que peut-on souhaiter lui ajouter pour le rendre beaucoup plus
intéressant si on a un seul bit de libre sur le processeur ? Des capteurs de
distance, une caméra linéaire, un affichage pour visualiser des variables pendant
la mise au point.
Mais il faut que cela soit facile à brancher, et facile à intégrer dans votre
programme, pour lire la valeur d’un capteur ou afficher une variable et décider d’un
comportement plus intéressant.
Les modules Petra répondent à cette attente et se connectent sur n’importe quel
processeur de la famille 16F et sur les cartes Picstar et KiCar programmées en
Pinguino/SDCC avec la librairie Z-Petra ou en assembleur CALM.
Les modules Petra sont reliés sur un bus 3 fils (- + P) sur un connecteur de servo, avec un logiciel
qui, sans que vous vous en occupiez, mets à jour l’information.
Vous voyez un bloc de 32 variables dans votre processeur qui correspondent aux registres des
modules Petra. Vous voulez connaître la distance mesurée par le capteur numéro 3 branché sur
le bus ? Vous lisez la 3e position mémoire du bloc de variable.
Vous voulez positionner le servo sur le connecteur numéro 6 du module Petra interface pour 2
servos ? Vous écrivez la valeur de position dans la 6e position du bloc de variables.
Vous voulez afficher cette valeur envoyée au servo #6 ? Branchez un affichage #6 !
Le noyau logiciel Petra s’occupe de tout par interruption. Le valeurs sont mis à jour toutes les 20
ms et 70% de la puissance du processeur reste disponible.
Modules Petra prévus
Les modules esclaves sont connectés par 3 fils et n’ont pas d’alimentation propre. Leur adresse
est fixe (modifiable avec un Pickit2) ou programmable par un multiswitch à 4 positions.
La dimension des modules simples est de
Un connecteur au pas de 2.47 et au pas de 1.27 sont prévus (molex mâle). Des câbles Molex
présertis seront alors nécessaires.
P-aff Affichage hexa
4 switch et un strap permettent de choisir
l’adresse bus visualisée
P-potoda Valeur pot affichée et
envoyée
Si le pot linéaire est soudé derrière avec
un switch, le module affiche et envoie la
valeur du pot.
P-Af2x8 Affichage de 2 lignes
de 8 caractères
Cet affichage est configuré (dialogue
avec le poussoir et l’affichage) pour
afficher jusqu’à 8 variables en hexa,
Ascii, BCD ou binaire.
P-dist1 Capteur de distance avec
affichage 8 bits du log de la distance
évaluée.
Le capteur LIT301 est fixé dessus ou
dessous le PCB. Un pot permet de
modifier la valeur transmise.
P-dist4 Interface pour 4 capteurs
Une led par capteur clignote prop à la
mesure. Deux pots permettent de modifier
la valeur transmise
4 connecteurs Molex 4 pins vont vers les
capteurs
P-camli Caméra linéaire de 128 pixel
L’affichage du profil d’intensité est visible
sur les 12 LEDs.
Deux variables sont fournies à l’utilisateur :
le centre et la largeur de la tache à 50%
d’intensité.
P-servo4 Commande de 4servos
Un affichage n’est pas nécessaire puisque
l’on voit la position des servos. Deux LEDs
clignotent pour dire quels servos recoivent.
4 switch permettent de choisir l’adresse du
groupe.
P-8io Lit ou écrit 8 valeurs (et
mode 4/4)
Pas réalisé en première étape.
Exemple pratique
On veut commander deux affichages, deux capteurs de distance et deux servos. .
Le câblage est trivial. Chaque module a une prise
mâle et une prise femelle en parallèle, ce qui permet
de n’utiliser que des câbles mâle-femelle, comme
liaison et comme rallonge.
Chaque unité a un numéro qui correspond aux 32
variables dans la mémoire du maître.
Dans le bloc des variables, il faut donner des noms
explicites aux variables correspondant à ce qui a été
câblé.
Le bus Petra à un fil impose des contraintes temporelles qui sont respectées dans la gestion par
interruption du maître et par chaque esclave.
Les solutions traditionelles, I2C, SPI, CAN, qui n’auraient de toute façon pas été implémentées
efficacement sur les petits processeurs qui n’ont pas ces périphériques câblés. La prise Petra est
compatible avec les connecteur pour Servo, il suffit de remplacer par logiciel une sortie servo par
une sortie Petra. Le câblage peut être fait en étoile, mais avec le double connecteur mâle-femelle
sur chaque carte, le câblage en guirlande et très pratique.
Principe du bus
Le principe du bus est inhabituel ; son rôle est de
synchroniser les transferts, qui peuvent se faire
entre esclaves. Le maître ne teste pas la
présence des esclave : il balance 32 paquets et
recommence même si personne écoute. Après
chaque adresse, le maître teste s’il y a une
réponse (ligne activée à zéro) et dans ce cas il lit
le mot de 8 bits envoyé par l’esclave et le place
dans son tampon. Il n’y a pas de contrôles.
La programmation des esclaves, qui n’ont pas
nécessairement des interruptions, se fait en
appelant toutes les 12us une routine qui teste le
bus. Au retour, un flag est activé et l’information
peut ètre lue, ou préparée pour le prochain
transfert dans 625 us.
Les esclaves ont des adresses prédéfinies, mais
ils sont tous facilement reprogrammables avec un
Pickit2 ou autre.
La routine d’interruption qui gère le bus Petra dans le maître est appelée en général toutes les
0.625 ms et s’occupe du transfert des registres en balayant toutes les adresses. Toutes les 20ms,
les registres de communication des modules et les registres image dans le maître sont mis à jour
(ces 20ms très approximatifs sont nécessaires si des modules servo sont utilisés.
En résumé, c’est simple et stupide, donc programmé avec très peu d’instructions. Le logiciel
maître utilise 81 bytes dans un processeur 10F 12F 16F, un esclave (16F seulement) qui envoie :
50 instructions et qui reçoit : 48 instructions.
KISS (Keep It Simple Stupid)
jdn 110215
Téléchargement