Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Boussole Numérique !
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
JE souhaiterais ajouter sur mon robot, une boussole afin de connaitre son CAP et son orientation. A ma disposition je possède un module 9DOF . En essayant le module il me renvoie bien des valeurs.... des longues série de chiffres !
Je pense que la partie qui m’intéresse c'est le magnétomètre !
Les valeurs changent bien quand je tourne à plat la plaque sur lequel est implantée le module ( EasyPIC) . Je m'attendais à ce que seul, les valeurs de l'axe Z changent car je tourne bien a plat ( comme une boussole ). Mais en réalité deux sur les 3 changent beaucoup en tournant .
Connaissez vous un moyen ou la formule pour calculer l'angle par rapport au NORD magnétique, afin que j'en déduise un cap ?
JE souhaiterais ajouter sur mon robot, une boussole afin de connaitre son CAP et son orientation. A ma disposition je possède un module 9DOF . En essayant le module il me renvoie bien des valeurs.... des longues série de chiffres !
Je pense que la partie qui m’intéresse c'est le magnétomètre !
Les valeurs changent bien quand je tourne à plat la plaque sur lequel est implantée le module ( EasyPIC) . Je m'attendais à ce que seul, les valeurs de l'axe Z changent car je tourne bien a plat ( comme une boussole ). Mais en réalité deux sur les 3 changent beaucoup en tournant .
Connaissez vous un moyen ou la formule pour calculer l'angle par rapport au NORD magnétique, afin que j'en déduise un cap ?
Boussole Numérique !
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Jeremy et à tous,
je te souhaite bien du courage ..et du succes dans ta demarche.
j'ai testéune boussolle ( incluse dans un GPS) , s ans succes ..
tres compliqué (pour moi) pour obtenir quelque chose de sensé ..j'ai donc laissé tombé.
il faut aussi pre-initialiser le bidule en fonction de la longitude et latitude
extrait du source Clicker2_18F87J50_GPS_COMPAS_UBLOX_7N_LCD_EEprom1MB_160912.c
//http://www.magnetic-declination.com/
//Latitude: 45° 48' 34.8" N
//Longitude: 5° 3' 13.4" E
//Magnetic declination: +1° 19' => 0,020769? radian
// 1° -> 0,017453?
// 19 '= 0,316degres
// 1,316° => 0,022969 Radians
je ne sais pas si la precision (MikroC) de calcul Flottant 32 bits seulement est suffisante pour faire tous les calculs lié à cela.
je te souhaite bien du courage ..et du succes dans ta demarche.
j'ai testéune boussolle ( incluse dans un GPS) , s ans succes ..
tres compliqué (pour moi) pour obtenir quelque chose de sensé ..j'ai donc laissé tombé.
il faut aussi pre-initialiser le bidule en fonction de la longitude et latitude
extrait du source Clicker2_18F87J50_GPS_COMPAS_UBLOX_7N_LCD_EEprom1MB_160912.c
//http://www.magnetic-declination.com/
//Latitude: 45° 48' 34.8" N
//Longitude: 5° 3' 13.4" E
//Magnetic declination: +1° 19' => 0,020769? radian
// 1° -> 0,017453?
// 19 '= 0,316degres
// 1,316° => 0,022969 Radians
je ne sais pas si la precision (MikroC) de calcul Flottant 32 bits seulement est suffisante pour faire tous les calculs lié à cela.
Boussole Numérique !
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Outchhh . Si t u y es frotté sans réussir .... ca risque d'être cossu mon histoire !!
J'ai vu quelques tuto avec arduino , ca doit bien être possible . Mais impossible pour le moment de trouver une formule donnant un cap .
Pourtant j'ai toutes les infos à ma disposition a savoir les 9 axes. grâce à la librairie de mikroC ;
J'ai vu quelques tuto avec arduino , ca doit bien être possible . Mais impossible pour le moment de trouver une formule donnant un cap .
Pourtant j'ai toutes les infos à ma disposition a savoir les 9 axes. grâce à la librairie de mikroC ;
Boussole Numérique !
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
J'ai trouve sur ce site :
http://tiptopboards.free.fr/arduino_for ... p?f=3&t=70
Ceci :
http://tiptopboards.free.fr/arduino_for ... p?f=3&t=70
Ceci :
On affiche les 3 composantes X, Y, et Z du champ magnétique, le module, et l'angle de la boussole (à placer horizontalement).
Le module du vecteur magnétique M = sqr(X² + Y² + Z²).
L'angle = artan(y/x) est déduit des mesures X et Y.
Boussole Numérique !
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Cette formule m'a l'air de fonctionner !
L'inconvénient c'est qu'il faut que le module soit bien à plat . Je vais creuser pour vérifier déjà que l’orientation est à peu prêt bonne. Et ensuite voir si avec les autres valeurs ( surtout celle du gyro), je peux pas améliorer les choses .
L'accélerometre ne doit pas être utile pour le CAP ; Par contre Ça aurait été un kiff de donné la vitesse du VHL grâce à lui ! ca risque d'être compliqué
Code : Tout sélectionner
c9dof_readMag( &magX, &magY, &magZ ); // Je récupere les données du magnétometre
Delay_10ms();
Angle= atan2(magY,magX) * (180 / 3.14159265); // angle en degres
if (Angle<0) {Angle=Angle+360;}
FloatToStr_FixLen(Angle, logText,6); // J'affiche l'angle sur l'UART
mikrobus_logWrite( logText, _LOG_TEXT );
mikrobus_logWrite( " ", _LOG_LINE );
Delay_ms(100);
L'inconvénient c'est qu'il faut que le module soit bien à plat . Je vais creuser pour vérifier déjà que l’orientation est à peu prêt bonne. Et ensuite voir si avec les autres valeurs ( surtout celle du gyro), je peux pas améliorer les choses .
L'accélerometre ne doit pas être utile pour le CAP ; Par contre Ça aurait été un kiff de donné la vitesse du VHL grâce à lui ! ca risque d'être compliqué
Boussole Numérique !
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
<Ceci m'a l'air très prometteur :
https://sites.google.com/site/projethor ... gnetometre
Je vous tiens au jus
https://sites.google.com/site/projethor ... gnetometre
Je vous tiens au jus
Boussole Numérique !
Jérémy a écrit :Cette formule m'a l'air de fonctionner !Code : Tout sélectionner
c9dof_readMag( &magX, &magY, &magZ ); // Je récupere les données du magnétometre
Delay_10ms();
Angle= atan2(magY,magX) * (180 / 3.14159265); // angle en degres
if (Angle<0) {Angle=Angle+360;}
FloatToStr_FixLen(Angle, logText,6); // J'affiche l'angle sur l'UART
mikrobus_logWrite( logText, _LOG_TEXT );
mikrobus_logWrite( " ", _LOG_LINE );
Delay_ms(100);
L'inconvénient c'est qu'il faut que le module soit bien à plat . Je vais creuser pour vérifier déjà que l’orientation est à peu prêt bonne. Et ensuite voir si avec les autres valeurs ( surtout celle du gyro), je peux pas améliorer les choses .
L'accélerometre ne doit pas être utile pour le CAP ; Par contre Ça aurait été un kiff de donné la vitesse du VHL grâce à lui ! ca risque d'être compliqué
Oui : dans ce cas c'est simple et la formule est la bonne.
Dans le cas général, il faut calibrer le magnétomètre pour que ses 3 axes soient cohérents, au moins une fois, et de préférence de temps en temps.
https://github.com/kriswiner/MPU6050/wi ... alibration
Une fois fait, on peut mémoriser les valeurs de calibration et si on doit gagner de la place, supprimer le code de calibration.
Boussole Numérique !
Boussole Numérique !
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour ,
Je viens de finir ma petite platine test, afin de mettre au point cette boussole.
Voici une partie du programme testé :
Voici les photos dans les 4 coins cardinaux . JE met la plaque bien a plat au bord de mon bureau comme référence disons. et je tourne de 90° à chaque photos.
angle affiché : 18.15°
angle affiché : 238.9°
angle affiché : 120.2°
angle affiché : 69.86°
En plaçant une boussole ( celle du téléphone, j'en ai pas de vrai à la maison). les résultats ne sont pas du tout les mêmes . avec le téléphone, si je place bien au bord de mon bureau( comme sur la photo 1 , j'obtiens un angle de 185° ( hors sur la photo N°1 on voit qu'il affiche 18°) .
Dois je rajouter un offset ?
Ces mesures vous paraissent bonnes ?
Je viens de finir ma petite platine test, afin de mettre au point cette boussole.
Voici une partie du programme testé :
Code : Tout sélectionner
int16_t magX, magY, magZ;
float Angle;
char T_Texte[ 30 ] = {0};
//############################ BOUCLE INFINIE ##############################
while(1){
c9dof_readMag( &magX, &magY, &magZ ); // Je récupere les données du magnétometre
Delay_10ms();
Angle= atan2(magY,magX) * (180 / 3.14159265); // angle en degres
if (Angle<0) Angle+=360;
IntToStr(magX, T_Texte);
affiche_txt (1,40,T_Texte);
IntToStr(magY, T_Texte);
affiche_txt (2,40,T_Texte);
FloatToStr_FixLen(Angle, T_Texte,5); // J'affiche l'angle sur l'écran
affiche_txt (3,40,T_Texte);
Delay_ms(300);
}
Voici les photos dans les 4 coins cardinaux . JE met la plaque bien a plat au bord de mon bureau comme référence disons. et je tourne de 90° à chaque photos.
angle affiché : 18.15°
angle affiché : 238.9°
angle affiché : 120.2°
angle affiché : 69.86°
En plaçant une boussole ( celle du téléphone, j'en ai pas de vrai à la maison). les résultats ne sont pas du tout les mêmes . avec le téléphone, si je place bien au bord de mon bureau( comme sur la photo 1 , j'obtiens un angle de 185° ( hors sur la photo N°1 on voit qu'il affiche 18°) .
Dois je rajouter un offset ?
Ces mesures vous paraissent bonnes ?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Boussole Numérique !
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonsoir Jeremy,
il y a peut etre un probleme de signe dans une des equations de calcul
185° => -180° => +5°
et donc un offset de 13 ?
depend beaucoup de la façon dont à été monté le capteur sur la click board et si les differents sens correspondent bien
avec la data sheet
montage fait en australie ( pole sud ?)
il y a peut etre un probleme de signe dans une des equations de calcul
185° => -180° => +5°
et donc un offset de 13 ?
depend beaucoup de la façon dont à été monté le capteur sur la click board et si les differents sens correspondent bien
avec la data sheet
montage fait en australie ( pole sud ?)
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 46 invités