F3News

Le forum du planeur radiocommandé catégorie F3x
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion
Partagez
 

 [arduino] mesure de débattement

Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7
AuteurMessage
LalanneL
rooky


Nombre de messages : 18
Age : 49
Localisation : 64
Date d'inscription : 08/01/2012

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitimeJeu 9 Mai 2019 - 14:11

Re,

Une solution encore plus simple (plus d'expo et tmp_num), qui semble fonctionner ici :

Code:
//----------------------------------------------------------------------------------------------------------------------------------
String cnv_flt2str(float num, int car, int digit) { // Convert a float variable into a string with a specific number of digits
  //----------------------------------------------------------------------------------------------------------------------------------
  String str = "";
  if (digit > 0) {
    str = String(num,digit);
  } else {
    str = String(int(num));
  }
  while (str.length() < car) {
    str = " " + str;
  }
  return str;
}

Laurent
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
J'm BBR
pilote d'or
pilote d'or
J'm BBR

Nombre de messages : 1816
Age : 53
Localisation : Saint Yon [91]
Date d'inscription : 09/12/2007

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitimeJeu 9 Mai 2019 - 14:17

Exact! C'est ce qu'il faut faire en effet.
Je mets ça en ligne, merci
...en fait il n'y en a qu'un qui suit cheers cheers
J'm drunken
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
LalanneL
rooky


Nombre de messages : 18
Age : 49
Localisation : 64
Date d'inscription : 08/01/2012

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitimeJeu 9 Mai 2019 - 15:14

Merci Very Happy
Je crois que le fichier BBR_Angle_meter_mma8452.ino a perdu le "beerware" dans l'entête.  Shocked

J'ai également modifié la fonction read_angle() plutôt que de faire 150 fois le calcul avec atan2(), ça me semblait plus clair d'accumuler les G, diviser par le nombre de mesures et faire le calcul d'angle une seule fois.

Code:
#define NUM_SAMPLES  150

//----------------------------------------------------------------------------------------------------------------------------------
double read_angle() {                             // Function returning the current rotation value along X axis - in degrees
  //----------------------------------------------------------------------------------------------------------------------------------
  float x, y, z;
  float y_accum = 0, z_accum = 0;
  for (int nn = 0;  nn < NUM_SAMPLES; nn++) {
    mma.getAcceleration(&x, &y, &z);
    y_accum += y;
    z_accum += z;
  }

  y = y_accum / NUM_SAMPLES;
  z = z_accum / NUM_SAMPLES;

  return atan2(y, z) / M_PI * 180;
}

Laurent
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
J'm BBR
pilote d'or
pilote d'or
J'm BBR

Nombre de messages : 1816
Age : 53
Localisation : Saint Yon [91]
Date d'inscription : 09/12/2007

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitimeVen 10 Mai 2019 - 18:00

LalanneL a écrit:
Merci Very Happy
Je crois que le fichier BBR_Angle_meter_mma8452.ino a perdu le "beerware" dans l'entête.  Shocked
Je corrige ça vite fait!

LalanneL a écrit:
J'ai également modifié la fonction read_angle() plutôt que de faire 150 fois le calcul avec atan2(), ça me semblait plus clair d'accumuler les G, diviser par le nombre de mesures et faire le calcul d'angle une seule fois.

Code:
#define NUM_SAMPLES  150

//----------------------------------------------------------------------------------------------------------------------------------
double read_angle() {                             // Function returning the current rotation value along X axis - in degrees
  //----------------------------------------------------------------------------------------------------------------------------------
  float x, y, z;
  float y_accum = 0, z_accum = 0;
  for (int nn = 0;  nn < NUM_SAMPLES; nn++) {
    mma.getAcceleration(&x, &y, &z);
    y_accum += y;
    z_accum += z;
  }

  y = y_accum / NUM_SAMPLES;
  z = z_accum / NUM_SAMPLES;

  return atan2(y, z) / M_PI * 180;
}

Laurent
On gagne en effet quelques pouièmes mais le debug est moins simple, donc je garde comme c'est.
J'm drunken
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
LalanneL
rooky


Nombre de messages : 18
Age : 49
Localisation : 64
Date d'inscription : 08/01/2012

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitimeVen 10 Mai 2019 - 19:22

Bonjour J'm,

Le gain de temps est d'environ 30% on dirait.

Original:
Code:

unsigned long timeElapsed = (micros() - preFunction) / 1000;
Serial.println("Time :" + String(timeElapsed));
Serial.println(String(l_angle, 5) + "   -   " + String( ll_angle, 5));

Time :94
1743.00000   -   174.3

Proposé, en ajoutant une variable 'angle' pour le debug:
Code:

float angle = atan2(y, z) / M_PI * 180;
unsigned long timeElapsed = (micros() - preFunction) / 1000;
Serial.println("Time :" + String(timeElapsed));
Serial.println(String(angle, 5));

Time :60
174.25201

D'autre part si j'ai bien compris il n'y a pas de gain entre float et double, et de toute manière avec la fonction initiale la valeur renvoyée (double) est à 0.1 près avec le x10 > round() > /10, un renvoi en float est largement suffisant.

Je filtre aussi l'angle avant l'affichage de la valeur:
Code:

#define ALPHA        0.7

  // angle filtering
  x_rot = (last_angle * ALPHA) + (x_rot * (1 - ALPHA));
  last_angle = x_rot;

Une autre manière de traiter le sujet, à chacun ses manies  Smile

Laurent
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
LalanneL
rooky


Nombre de messages : 18
Age : 49
Localisation : 64
Date d'inscription : 08/01/2012

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitimeLun 13 Mai 2019 - 22:16

Bonjour,

J'ai mis en ligne une version Wifi du mesureur de débattement qui utilise un ESP01 et un MMA8452, alimenté en 3.3v.
https://github.com/f5soh/aeromodeling-throw-meter

[arduino] mesure de débattement - Page 7 Esp01_10

Il suffit de se connecter dessus avec une tablette ou un portable en Wifi et d'afficher la page ci-dessous dans le navigateur :

[arduino] mesure de débattement - Page 7 Wifi_angle_meter_page

Boutons verts : changer la valeur de la corde,
Load/Save : enregistrer la valeur de la corde dans la mémoire et de la récupérer plus tard,
Min/Max : mise à zéro des valeurs min/max,
Init Angle : mise à zéro de l'angle.

Laurent
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
J'm BBR
pilote d'or
pilote d'or
J'm BBR

Nombre de messages : 1816
Age : 53
Localisation : Saint Yon [91]
Date d'inscription : 09/12/2007

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitimeJeu 16 Mai 2019 - 9:44

Bravo Alexandre, Great Job cheers cheers
C'est une approche similaire à celle entreprise par Pierre Rondel http://f3news.1fr1.net/t15809-mesure-de-debattement-bluetooth avec les interfaces sur un mobile.
J'm
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
LalanneL
rooky


Nombre de messages : 18
Age : 49
Localisation : 64
Date d'inscription : 08/01/2012

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitimeJeu 16 Mai 2019 - 18:15

Oui, avec quelques nuances : Pas besoin d'installer d'appli et pas de problème avec Iphone, Ipad et compatibilité Android.
Seule contrainte, avoir un appareil avec du Wifi et un navigateur, quelque soit le système.

Laurent
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
marc S
rooky


Nombre de messages : 2
Localisation : Yvelines
Date d'inscription : 20/05/2019

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement    [arduino] mesure de débattement - Page 7 Icon_minitimeLun 20 Mai 2019 - 17:06

bonjour,

Utiliser un ESP01 est pour contrôler la mesure une solution élégante.
La version Wifi du mesureur de débattement avec un ESP01 permettrait t elle de contrôler 2 capteurs de mesure MMA845x pour régler les 2 ailerons en même temps ?
Le MMA8451 est équipé d’une broche qui modifie le LSB de son adresse sur le bus I2C (SA0),
ce qui permet de connecter 2 senseurs sur le bus.
L’ESP01 pourrait il gérer cela ?

marc S
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
LalanneL
rooky


Nombre de messages : 18
Age : 49
Localisation : 64
Date d'inscription : 08/01/2012

[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitimeLun 20 Mai 2019 - 19:25

Bonjour Marc,

L'ESP01 doit pouvoir effectivement supporter un deuxième capteur par contre avec la longueur nécessaire pour aller d'un aileron à un autre sur un grand planeur le bus I2C risque de moins bien marcher. Mis à part la limitation de pinnouilles (2gpio), l'esp01 a de l'espace libre et il tourne à 80Mhz.

Une autre solution serait d'avoir un deuxième ESP-01 esclave qui se connecte en Wifi sur le maitre pour lui envoyer les données.

Laurent
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




[arduino] mesure de débattement - Page 7 Empty
MessageSujet: Re: [arduino] mesure de débattement   [arduino] mesure de débattement - Page 7 Icon_minitime

Revenir en haut Aller en bas
 
[arduino] mesure de débattement
Revenir en haut 
Page 7 sur 7Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7
 Sujets similaires
-
» réglages, mesures et autres...
» mesure de la lumière
» Display case sur mesure
» CONFECTION SUR MESURE
» site anglais fabrication de goodies sur mesure

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
F3News :: Les news du F3x ! :: Un peu de technique F3x-
Sauter vers: