Page 2 sur 3

Re: routine servo moteur

MessagePosté: Sam 28 Mai 2011 23:00
de worldhugo
La seul méthode que je connaisse pour voir les décimales et qu'elles soient prise en compte dans la suite du code est de les multiplier par 10 par exemple pour un nombre comme 3.5 -> ce qui nous donnera 35. Il faudra bien sur diviser par 10 avant l'utilisation. murrouge
Pourrais-tu me donner les valeurs que je t'ai demandées plus haut (à savoir les valeurs de ton servo quand l'aiguille est sur 3,10,15 et 20) pour que je puisse finir mes essais ? grandsoleil

Re: routine servo moteur

MessagePosté: Sam 28 Mai 2011 23:17
de pierre01
Oups, j'ai zappé ta question, désolé !

Donc, mes servos sont standard et vont de 1 à 1023 :
graduation 3 valeur servo : 157
graduation 5 valeur servo : 314
graduation 10 valeur servo : 446
graduation 20 valeur servo : 577

Re: routine servo moteur

MessagePosté: Sam 28 Mai 2011 23:28
de worldhugo
Es-tu bien sur de ces valeurs, car elles ne sont pas linéaire .... gratgrat gratgrat
157:3 = 52,3
314:5 = 62,8
446:10 = 44,6
577:20 = 28,9

Si je suis la logique d'un servo 1 à 1023 :
171:5 = 34,1
512:15 = 34,1
682:20 = 34,1
1023:30 = 34,1

Pour l'instant, j'en suis là :
Code: Tout sélectionner
Var 0001, name serv_FF1, Link USB_SERVOS, Output 6, PosL 1, PosC 512, PosR 1023

Var 0002, name fs_fuel_flow1, Link FSUIPC_IN, Offset $0918, Length 8, Numbers 0
{
  &reel_fuelflow1 = &fs_fuel_flow1 * 1.669 // conversion en GAL/HR (en multipliant par 10 pour avoir la décimale)
  IF &reel_fuelflow1 <= 30 // valeur inférieur ou égale à 3(division par 10)
  {
    &serv_FF1 = 157 // on met le servo sur 157
  }
  ELSE // ou si il n'est pas inférieur à 3
  {
    &serv_FF1 = &reel_fuelflow1 * "coef multiplicateur" // on met le servo en fonction de fs
  }
}

Var 0003, name reel_fuelflow1


Je cherche actuellement le coef multiplicateur gratgrat

Re: routine servo moteur

MessagePosté: Sam 28 Mai 2011 23:43
de pierre01
ben ce sont les valeurs que je lis avec le log : "iocards_test-servos&relais"
Je positionne le servo sur chaque valeur avec le curseur et ça me donne la valeur ...

Ca expliquerais que je n'arrive pas à le positionner correctement en fonction de l'offset gratgrat
Je suis ton code avec intérêt !

Au fait, que veux dire "Numbers 0" dans "Var0002" ?

Re: routine servo moteur

MessagePosté: Sam 28 Mai 2011 23:45
de worldhugo
Fait un autre test, positionne manuellement ton aiguille sur le "3" et lit la valeur de la variable de ton servo dans l"IOCP Console" grandsoleil

Si je ne me suis pas trompé : tu devrais trouver dans les 102 (3x34,1 = 102,3) yeuxhaut

Pour ce qui est du numbers, je n'avais pas remarqué mais tu peux le supprimer cela ne change rien cligneoeil

Re: routine servo moteur

MessagePosté: Sam 28 Mai 2011 23:58
de pierre01
Bonne idée, et je trouve les mêmes valeurs :

pour 3 : 155 veleur FF dans FS : 5,2 -> C'est là le Pb !
pour 10 : 314 veleur FF dans FS : 10,3
pour 15 : 445 veleur FF dans FS : 14,8
pour 20 : 575 veleur FF dans FS : 19,1

Re: routine servo moteur

MessagePosté: Dim 29 Mai 2011 00:02
de worldhugo
Et si tu met ton servo (pas ton aiguille) en positions mini/max -> tu as bien 0 et 1023 ? et au centre -> 512 ?

Re: routine servo moteur

MessagePosté: Dim 29 Mai 2011 00:06
de pierre01
A l'oeil, je dirais oui mais pas facile de mesurer avec précision !

Bon, je vais faire dodo, en tout cas, merci pour l'aide, je reprends demain.

Re: routine servo moteur

MessagePosté: Dim 29 Mai 2011 00:12
de worldhugo
Avec quel code mesures-tu ces valeurs ? Il faudrait que tu es simplement cette variable :
Code: Tout sélectionner
Var 0001, name serv_FF1, Link USB_SERVOS, Output 6, PosL 1, PosC 512, PosR 1023

pour éviter tout faussement ......

Aussi,
essai de faire un test de ce code :
Code: Tout sélectionner
Var 0001, name serv_FF1, Link USB_SERVOS, Output 6, PosL 1, PosC 512, PosR 1023

Var 0002, name fs_fuel_flow1, Link FSUIPC_IN, Offset $0918, Length 8
{
  &reel_fuelflow1 = &fs_fuel_flow1 * 1.669     // conversion en GAL/HR (en multipliant par
  IF &reel_fuelflow1 <= 30     // valeur inférieur ou égale à 3(division p
  {
    &serv_FF1 = 102         // on met le servo sur 102
  }
  ELSE     // ou si il n'est pas inférieur à 3
  {
    L0 = &reel_fuelflow1 / 10
    L1 = &coef_fuelflow1 / 10
    &serv_FF1 = L0 * L1     // on met le servo en fonction de fs
  }
}

Var 0003, name reel_fuelflow1

Var 0004, name coef_fuelflow1, Value 341


Bonne nuit à demain

Hugo

Re: routine servo moteur

MessagePosté: Dim 29 Mai 2011 15:19
de pierre01
Merci Hugo pour le code, résultats :

J'ai mis 140 pour la valeur mini du servo (car il vibre en dessous), ce qui le positionne légèrement en dehors des graduations !

Pour les valeurs de test dans l'ordre : Valeur lue dans la bulle FS - valeur de la gauge FS - Valeur sur mon servo :
3 - 4 - 0 (mon servo est en butée mini, gauge FS un peu au dessus)
5 - 5 - 3 servo encore en dessous
7.5 - 7.5 - 7.5 C'est Ok
10 - 10 - 10.5 mon servo se décale vers le haut
15 - 15 - 17
20 - 20 - 23.5
22.6 - 22.6 - 27 (plein gaz)

La valeur (x10) de la Var "reel_FF1" lue dans la console, correspond bien à la valeur indiquée dans la bulle FS

Je vais jouer avec cette façon de faire, quitte à faire plusieurs plages comme le suggere Bob;

Je me permet de reposer les questions :
- Peut-on voir les valeurs décimales dans la console ? et
- C'est quoi les variables IOCP et comment les utiliser ?

Merci !