Page 1 sur 3

Debattement d'un servo.

MessagePosté: Ven 2 Oct 2015 18:27
de arcc
Bonsoir

Sur une carte USB Servo j'ai deux servos (pour l'affichage de la pression ) de mon Twin.
les servos répondent bien mais en butée basse, ils font du bruit (grésillement)
J'ai remarqué avec "SIOC Monitor" que si je réduit la plage de débattement, j'arrive à supprimer ce grésillement.
Dans mon fichier Sioc, j'ai donc ecris :
Var 600, name Hyd_Main_svo, Link USB_SERVOS, Output 1, PosL 151, PosC 385, PosR 920

Mais le débattement reste comme avant du genre de 1 à 1023.

Merci pour votre aide.

A+
Christian

Re: Debattement d'un servo.

MessagePosté: Ven 2 Oct 2015 22:40
de fab
Bonjour,

Le grésillement d'un servo c'est pas bon peurefrayé

Les signaux produit par les cartes électronique ne respectent pas toujours la norme, ça passe sur certains modèles, sur d'autres, ça coince, ça chauffe, c'est pas bien !

Il faut toujours faire les réglages bas et haut en respectant les butées mécaniques, qui peuvent être à l'extérieur du servo, si non, à la longue, c'est le servo qui fume !

Donc, ce que tu fait est très bien, applaublanc le déplacement sera de 1024 positions, mais la couse du servo sera réduite en rapport du code SIOC.

Fabien

Re: Debattement d'un servo.

MessagePosté: Ven 2 Oct 2015 22:46
de arcc
Merci pour ta reponse. Par contre meme avec le debattement que j'ai mis dans le fichier Sioc le servo va quand meme en butée. D'ailleurs il viens de rendre l'ame. Il est resté en butée et il à grillé. Bon je vais le changer' mais reste le probleme de debatement.
A+
Christian

Re: Debattement d'un servo.

MessagePosté: Sam 3 Oct 2015 08:16
de fab
arcc a écrit:D'ailleurs il viens de rendre l'ame.


CQFD furieuxfumée

arcc a écrit: mais reste le probleme de debatement.


Oui, c'est pas normal ça. Les posL, posC et poste R sont bien là pour quelque chose gratgrat
Je n'utilise pas les cartes OC pour mes jauges. En pratique j'ai pas testé.
Logiquement tu peux envoyer les valeurs que tu veux au servo, et SIOC devrait limiter ?

Attendons un autre avis gratgrat

Re: Debattement d'un servo.

MessagePosté: Sam 3 Oct 2015 08:21
de fab
On se plante murrouge regarde ici :http://www.aircockpit.com/viewtopic.php?f=116&t=1452&p=12758&hilit=servo+posl#p12760

En pratique, c'est toi qui fera le travail de limitation .

Sur mes cartes FDbus, j'ai installé cette fonction de calcul de plage, c'est pour cela que je me suis planté !

Fabien

Re: Debattement d'un servo.

MessagePosté: Sam 3 Oct 2015 09:42
de pierre01
Bonjour,

Hé oui, PosL, PosC et PosR ne limitent pas la course mais adaptent une valeur lue par SIOC à la valeur d'un offset.
Je l'utilise par Ex pour les potentiomètres qui ne vont pas (jamais) en bout de course mécaniquement.
De cette manière une valeur mini du potentiomètre sera comprise comme "0" par SIOC et une valeur maxi du potentiomètre comme la valeur "255" par SIOC. On rétablit de cette manière une course "virtuelle" pleine échelle du potentiomètre.

Je n'utilise pas non plus la course complète des servos, à titre d'exemple, 2 routines que j'ai écrite :

- Fuel Flow moteur 1 :

Code: Tout sélectionner
//
// ££45 Fuel flow moteur 1
//
// Offset $0918 et $09B0 donne fuel flow en Pound/Heure (donc un poids/H)
// 1 pound = 0,454 kg     1 kg = 1,39 litres de 100LL (D=0,72)   &  1 gallon = 3,78 litres  :
// Coefficeint de conversion Pounds -> gallond : 0,454 * 1,39 / 3,78 = 0,166947
// Graduations de 3 à 30 (gallon / H)
// Servo : de 160 à 840 -->  a = 25,185  b = 84,445
//

Var 4130, name fs_fuel_flow1, link FSUIPC_IN, Offset $0918, Length 8, Numbers 3
// Var 4130, name fs_fuel_flow1, link IOCP, Offset 0135    // ne marche pas mieux !
{
  &val_FF1 = &fs_fuel_flow1 / 1000      // Offset FSUIPC
  // &val_FF1 = &fs_fuel_flow1 / 10     // Offset IOCP
  L0 = &val_FF1 * 0.1669               // Conversion Pound en Gallon / Heure
  L1 = L0 * 25.189                   // "a" pente servo (y = ax)
  L2 = L1 + 84.445                   // "b" (y = ax + b)
  L2 = LIMIT 150 950 0                // Limite amplitude servo de 150 à 950
  &serv_FF1 = L2                   // Envoie valeur au servo
}
Var 4131, name val_FF1


- Un peu plus compliqué : "Prop Sync" :

Code: Tout sélectionner
//
//      ££43 PROP SYNC   (Synchro hélices) PS = Prop Sync
//
// Index indiquant si RPM hélice 1 différent de RPM hélice 2
// Utilise un moteur CC récupéré sur une imprimante -> réf. : RS-385PH-14180 - RD550914
//
// Variables : &RPM_mot_1 (trs/mn) - &RPM_mot_2 (trs/mn) - &RPM_mot_1_2 (=1 si au moins 1 moteur tourne)
// Et &diff_RPM_1_2 (calculé dans routine ££8 en +/- Tr/mn)
// Sens de rotation : Anti horaire (CCW) si RPM_mot_2 < RPM_mot_1 et inversement(CW)
// Postulat :   X = &diff_RPM_1_2   : Différence de rotation des moteurs en tr/mn   de 0 à 200
//              Y = &mot_PS         : Valeur à envoyer au PWM du moteur de l'index  de 5 à 30
//              a = &mot_PS_a       : Valeur à partir de laquelle le moteur démarre soit 5
//              b = &mot_PS_b       : Valeur maxi PWM soit 30 -> le moteur tourne à la vitesse max
//              c = &mot_PS_c       : Valeur maxi de &diff_RPM_1_2 soit 200
//
// Equation à résoudre : Y = ((b-a/c)*X) + a
//

Var 4115, name prop_sync, link subrutine
{
  IF &RPM_mot_1_2 = 1               // Si au moins 1 moteur tourne
  {
    L0 = ABS &diff_RPM_1_2          // valeur absolue de "X" (diff. rotation hélices)
    L1 = &mot_PS_b - &mot_PS_a      // Valeur (b - a)
    L2 = L1 / &mot_PS_c             // (b - a) / c
    L1 = L2 * L0                    // (b - a) / c * X
    &mot_PS = L1 + &mot_PS_a        // (((b - a) / c) * X) + a : Valeur à envoyer au moteur PS
    &mot_PS = LIMIT &mot_PS_a &mot_PS_b 0          // Limite commande moteur : min 5, max 30
    if &diff_RPM_1_2 < 0            // Si RPM_2 < RPM_1 --> CCW
    {
      &MCC_prop_sync = 128 + &mot_PS
    }
    else
    {
      if &diff_RPM_1_2 > 0          // Si RPM_2 > RPM_1 --> CW
      {
        &MCC_prop_sync = &mot_PS
      }
    }
  }
  ELSE                              // Sinon &RPM_mot_1_2 = 0 (M1 et M2 à l'arrêt)
  {
    &MCC_prop_sync = 0              // Arrêt moteur PS
  }
}
Var 4117, name mot_PS, value 0      // Valeur à envoyer au moteur_CC de PS

Var 4119, name mot_PS_a, value 5    // Coefficient "a" : Valeur min moteur PS
Var 4120, name mot_PS_b, value 25   // Coefficient "b" : Valeur max moteur PS
Var 4121, name mot_PS_c, value 200  // Coefficient "c" : Valeur max diff. rotation hélices

Re: Debattement d'un servo.

MessagePosté: Sam 3 Oct 2015 10:00
de fab
Merci Pierre !

C'est en effet par ce genre de calcul qu'il faut passer !

Donc pas de miracle, Christian, au boulot !
Note toute l'utilité de la fonction "LIMIT"

Re: Debattement d'un servo.

MessagePosté: Sam 3 Oct 2015 10:30
de pierre01
Pour le calcul des fonctions (Y = aX + b), l'explication est ici : http://www.baron58.com/Servo_Calc.htm

Re: Debattement d'un servo.

MessagePosté: Sam 3 Oct 2015 11:43
de tabar57
Bonjour Pierre,

Question à 2 balles ? je te préviens j'ai les 2 balles lolaffiche

Comment pilotes tu ton moteur pour le prop sync, avec une carte OC dc motor ou avec un montage comme pour le trim ?

Cordialement

Bernard

Re: Debattement d'un servo.

MessagePosté: Sam 3 Oct 2015 13:17
de pierre01
Ne tire pas Bernard, j'ai "les mains en l'air" ... rigolus

Pour la commande du moteur CC du "prop sync" on utilise une sortie PWM de la carte DCMotors+ de OC !
Il est alimenté en +12V et fonctionne entre les valeurs "5" et "25" envoyées au PWM.
A la valeur "5", il tourne très doucement, en dessous il s'arrête.
Au delà de "25" la rotation est trop rapide pour voir le sens de rotation.