Emir2 – description, spécifications et applications

Transcription

Emir2 – description, spécifications et applications
CH-1092 Belmont, Switzerland
Email [email protected], www.didel.com
www.didel.com/Ir/EmirSpecs.pdf
Emir2 – description, spécifications et applications
Emir2, appelé aussi BimoTelec, est une commande
infrarouge proportionelle qui tient dans la main.
Développée initialement pour commander le Bimo,
control the Bimo, elle est aussi utilisée pour la petite
souris Rhodo et les robots de 70mm Wellbot . Des
kits avions de 3-4 grammes sont possibles.
Les récepteurs de 0.3 grammes ont été adaptés pour
décoder les signaux Emir. Ce document montre
comment réécrire le soft pour unprocesseur
quelconque.
Emir2 est alimenté par un accu de 80 mAh qui
permet plusieurs heures d’utilisation. La distance est
de 4 à 8 mètres mètres et peut être augmentée en
diminuant la résistance de 10 Ohm en série avec les
LEDs.
Emir3 a un canal de plus, avec un potentiomètre
linéaire, placé dessous et activé par le majeur.
Emir4 en développement a 2 joysticks, mais
seulement 3 canaux dans sa version compatible
avec Emir2 et Emir3.
Le format PPM des télécommandes radio
et IR n’a pas été retenu pour permettre
plusieurs utilisateurs simultanément. Le
collisions de signaux doivent être
détectées et éliminées, ce que le PPM ne
permet pas.
Pour avoir plusieurs utilisateurs sans que
les interférences soient trop fréquentes, il
faut des trames aussi courtes que
possible, très espacées et ayant des
périodes « premières entre elles ». La
période de répétition doit être inférieure à
100 ms (Picooz > 100ms)
On veut 4 utilisateurs, sélectionnés à
l’enclenchement par la position du
joystick.
Il faut coder une adresse, trois canaux et
une vérification.
La solution proposée est documentée dans les deux figures ci-contre.
adresse : impulsion
de 4 durées
différentes : 1, 1.3,
1.6, 1.9 ms environ
canaux : durée entre
transition de 1 à 2ms.
Le 3e canal est fixe à
1ms dans la version
bimotel à 2 canaux.
3e impulsion :
répétition de l’adresse
Pour détecter les
collisions, on vérifie la
durée des impulsions
et l’adresse répétée à
la fin du message
Les espaces pour chaque canaux sont 44,52,68,76 ms, valeur théoriques premières
entre elles, idéales si les trains sont courts.
Le transmetteur génère des impulsions d’horloge de 26 us
(38 kHz)
On envoie 37 50 63 76 impulsions comme adresse
La durée de l’enveloppe est 962 1300 1638 1976
microsecondes.
Le module IR rallonge ces impulsions de 70-90 us.
Le timer à 16 microsecondes compte 64 pour 1 us, 128 pour
2us, avec un jitter de 2. Cette valeur est corrigée et saturée, ce
qui donne une première valeur de 0-63, divisée par 4 pour
donner une valeur 4 bits qui sélectionne une table donnant la
valeur PFM.
Cette table se résume comme suit :
0
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15
max
min 0
0
0
-min
-max
La zone morte au centre évite que les servos bougent lorsque le manche est au centre.
Programme de décodage
Si on a un processeur rapide (20 Mhz), le signal déclenche une interruption qui
mesure le temps écoulé entre les fronts et sauve les valeurs dans une table.
Si on a un timer qui permet de mesurer le temps entre des fronts, l’interruption doit
seulement sauver ces temps pour traitement pendant l’espace entre train
d’impulsions.
Si le processeur est lent que l’on n’a qu’un compteur comme avec les 16F630,
12F508, etc, la solution utilisée est de surveiller le signal toutes les 10-15
microsecondes environ pour sauver le timer. Le timer 8 bits a une période de 16 us,
pour éviter de devoir gérer les dépassements. L’échantillonage introduit un jitter de
10-20 us, donc la précision est de 30 us, soit 3% de la période.
On définit 16 pas de PWM ou PFM, donc une précision de 6%. L’un dans l’autre, on
a des erreurs d’environ 10%, sur la valeur qui définit la vitesse. Comme on passe par
une table à faible résolution et non linéaire, la précision en vitesse est très mauvaise.
Avec les Bimo et Rhodo, le glissement des roues perturbe encore une commande
précise.
Marges et erreurs des potentiomètres
La mauvaise qualité de
petentiomètre oblige à prendre
des marges qui réduisent la
sensibilité.
Comme le montre la figure, la
lecture des pots conduit à un
domaine de valeurs entre min et
max. Ce domaine est ramené
par division, addition et
saturation à un ensemble de
valeurs entre 33 et 81
Logiciel Bimo
BoIrT.asi contient la table aiguillage. DoIr doit être appelé tous les 15-20
microsecondes pour minimiser le jitter.
BoIrR.asi contient les routines appelées en synchronisme avec la succession des
signaux. S’il n’y a pas d’erreur (timing, adresse) le bit bOK est activé et la LED pulse
en vert lentement. S’il y a erreur de timing, la LED pulse en rouge. Si le signal est
supprimé 1 seconde, les moteurs sont mis à zéro jusqu’à ce que le signal revienne.
Il y a plusieurs variantes du module BoIrR car le calcul du PFM pour les moteurs de
fait dans la tâche 14 du fichier BoIrr.asi (voir http://www.bricobot.ch/docs/Bi01.zip).
Schéma BimoTel
Le processeur est un 16F630 (et pas un 676) et n’a pas de canal analogique. La
mesure de position des pots se fait en mesurant le temps de décharge des
condensateurs (routines à disposition sur demande).
Emir3 ajoute un potentiomètre pour commander le 3e canal, lecture sur RA4 RA5.
jdn 080522 081025