samedi 22 juin 2013

Fusion de données accéléromètre et magnétomètre

J'ai finalement décidé de recoder le calcul de l'orientation du téléphone à partir des mesures brutes.
J'ai utilisé pour cela "Computes roll, pitch and yaw. See "Implementing a Tilt-Compensated eCompass using Accelerometer and Magnetometer Sensors" reference AN4248 de Freescale.
J'ai codé en python, en reprenant les équations mais sans l'ensemble des optimisations proposées. Pour une raison que j'ignore la fréquence de réception des trames tombent d'environ 80 (accéléromètre seul sans calcul) à 10 avec le magnétomètre (ce qui reste suffisant). J'en utilise de toute manière encore moins ensuite, mais avoir plus de trames permettrait de mettre en place un filtre pour réduire le bruit (plusieurs degrés sur le cap, peut-être lié aux perturbations électromagnétiques alentours).

Je pense que je vais donc essayer de faire un processus séparé (ou des threads) qui tournera plus vite et pourra faire le filtrage. L'information filtrée sera ensuite récupérée par l'application principale. En python différentes solutions ont l'air d'exister : subprocess, Queue.

Je réfléchis également à modifier complètement l'électronique de puissance que j'utilise. Mon problème vient de la limitation d'intensité qui demande soit de multiplier le nombre de circuit de commande ou peut-être de mieux refroidir les composants, mais je ne trouve pas trop comment faire (j'imagine qu'il faut coller des ailettes métalliques d'une manière ou d'une autre).

La solution alternative serait d'essayer de nouveau de réutiliser directement le mosfet (FQP50N06) présent sur les visseuses et d'ajouter un pont avec 2 (ou 4?) relais électromagnétiques pour inverser la tension (edit : un relais double inverseur devrait suffir) (edit : une difficulté d'utiliser le mosfet vient du fait qu'il nécessite une tension de 9V pour son contrôle et non 5 volt, un étage supplémentaire est donc souhaitable).
D'après la datasheet cela permettrait de tenir 50A par 60V soit 3000W soit environ 4 chevaux, l'équivalent d'un petit moteur d'annexe!
L'utilisation des relais me semble possible car leurs activations ne sera pas constante, mais seulement lors des changements de sens de rotation du moteur (peut-être toutes les 3 à 4 secondes, ce qui laisse de la marge d'utilisation avec 10 millions de cycles pour un démonstrateur).
Par contre la durée de vie sera rapidement réduite si j'essaie de faire du "dynamic braking" pour freiner le moteur à vitesse nulle.

MOSET FQP50N06 et son dissipateur thermique


J'ai également installé hdf5 et h5py dans le but de commencer à faire des fichiers de sauvegardes plus performants que les fichiers textes. Après des problèmes de manque d'header après la compilation des sources, j'ai finalement installé à partir de ce lien

J'ai l'impression que tout peut aller vite en python, mais j'ai tout de même pesté contre plusieurs choses aujourd'hui :
-je ne trouvais pas comment recharger un module : il faut faire reload
-j'ai des difficultés pour faire un simple produit matriciel : il faut utiliser dot (avec numpy.array).

Aucun commentaire:

Enregistrer un commentaire