Page 2 sur 3
Re: routine servo moteur
Posté:
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.
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 ?
Re: routine servo moteur
Posté:
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
Posté:
Sam 28 Mai 2011 23:28
de worldhugo
Es-tu bien sur de ces valeurs, car elles ne sont pas linéaire ....
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
Re: routine servo moteur
Posté:
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
Je suis ton code avec intérêt !
Au fait, que veux dire "Numbers 0" dans "Var0002" ?
Re: routine servo moteur
Posté:
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"
Si je ne me suis pas trompé : tu devrais trouver dans les 102 (3x34,1 = 102,3)
Pour ce qui est du numbers, je n'avais pas remarqué mais tu peux le supprimer cela ne change rien
Re: routine servo moteur
Posté:
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
Posté:
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
Posté:
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
Posté:
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
Posté:
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 !