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