Arrêt intempestif carte OC USB DCmotor

N308WA

PILOTE PRIVE
Messages
324
Réactions
37
Bonjour à tous,

... la suite de ma tentative de remotoriser mon TQ RSP. Après les problèmes de la carte BU0836 c'est maintenant la carte DC motor qui fait des siennes.

Je découvre cette carte : j'ai câblé un moteur (12V) et un potar comme sur le manuel. J'ai reproduit le code de test. La carte est sous 12V de tension. Jusque là, tout va bien (le script ssi, le SIOC.ini, SIOC monitor, la carte est visible et linkée, idx =0)
Là où ça commence à foirer :
1 - la carte se déconnecte de temps à autre. J'ai désactivé l'extinction des ports USB, je ne comprends pas pourquoi elle se déconnecte. Je dois recharger le script après chaque déconnexion.
2 - Je charge le script de test, rien ne se passe. J'ouvre IOCP console, j'ai beau tourner le potar, la variable du potar reste désespérément à 0... et c'est là qu'on arrive dans la 4ième dimension. J'ouvre SIOC monitor, double click sur la carte et quand je décale n'importe quel pointeur (M-1 ou M-2, ... peut importe) le moteur se met à tourner. Je bouge alors le potar et le moteur réagit conformément au script... Je fais quelques aller-retours avec le potar, le moteur tourne bien dans un sens puis dans l'autre, la vitesse varie... jusqu'à ce qu'il s'arrête brusquement. Je dois rebouger un pointeur dans la fenêtre de SIOC monitor (n'importe lequel) et le moteur repart. J'ai l'impression que laisser le potentiomètre proche de la zone 127 (inversion du sens) rend le phénomène plus fréquent mais ça survient, apparemment, quelque soit la position du potar.

A s'arracher les cheveux (et je préfère garder ceux qu'il me reste)

Merci pour votre aide et les idées de résolution.

Arnaud
 
Ton moteur ne force pas ? sinon la carte va bloquer le moteur.
Ton moteur pas trop puissant pour la carte ?
Je crois qu'il faut limiter à 1 Ampère.
 
Les moteurs sont des Modelcraft RB350200-0A101R Moteur à entraînement 12 V 1:200
Je les teste à vide (démonté) pour le moment, l'intensité n'est pas très élevée je pense. La fiche technique indique qu'il faudrait un couple de 16 kg/cm pour tirer 1A.
Dans les caractéristiques, je vois "Courant de charge max. 2,1A".

Si certains d'entre vous ont l'expérience de la motorisation d'un TQ Revolution SimProduct, pourriez-vous m'indiquer l'électronique utilisée pour commander les moteurs ?

Merci pour votre aide

A
 
Dernière édition:
qq nouvelles :
- j'ai acheté une carte Bodnar... à tester
- suite à une discussion avec stephanev où il me disait que son throttle Revolution SimProduct fonctionnait avec une carte DC opencockpit, je vais essayer qq modifications : fils plus gros pour l'alimentation des moteurs et installation d'un condensateur entre les broches. @HB-EBC, je te remercie pour ta méthode de rénovation du TQ mais ça me semble hors de portée avec mes faibles compétences de programmeur/électronicien.

A
 
Bonjour ,
François a acheté le TQ de Stephanev.
Je l'ai à la maison pour l'updater.
Première opération ,j'ai viré toute l'électronique carte Oc y comprit.Trop de branle pour faire fonctionner le TQ correctement.
Y plus que la mécanique :ROFLMAO:
Je vais y mettre une carte OC Motor plus ;)
C'est juste pour ton infos.
JeanMi
 
Bonjour JeanMi,

Merci pour cette info, je suis très intéressé par ce que tu comptes faire comme remise à niveau.
Comment vas-tu installer la carte "plus" dans l'espace du TQ ? Verticalement ?
Il y a des parties du TQ qui m'intriguent :
- les deux throttles sont directement reliées aux moteurs, le mouvement est trop dur. C'est la raison pour laquelle je ne vais probablement pas les motoriser... mais j'ai vu que Fab a des embrayages.
- la course de fin du speed brake (côté rentrée du levier) n'est pas marquée par un interrupteur ni par la course du potentiomètre : comment repérer le moment où il ne faut plus commander le moteur... ?
- même chose pour flight detent / parking brake, pas de capteur de fin de course.

Arnaud
 
Pour mettre la carte , il y a place debout devant les deux pot des manettes.
Ce n'est pas dur du tout pour les leviers ,je dirai que c'est normal.
Pour le levier des SPD ,il faut voir comment la carte peut stopper les moteurs avec le code en lisant le pot.
Sinon ,il faut modifier la tirette pour arriver à un déplacement tangentiel nul.
Je pense que le code sioc est suffisamment rapide pour le faire.
Pour le Parking ,il faut rajouter un ressort de compression sur la commande.
 
Le dur moteur est surrement dû au brake des moteurs par mise en c/c des 2 bornes et du reducteur.
Pour tout ce qui est gestion des arrêts cela se passe par temporisation (pb, flight détente, sb) et valeur du potentiometre.
 
Dernière édition:
JeanMi,

Je mets qq photos des entrailles de la bête. Comme il semble y avoir eu beaucoup de version, j'aimerais déjà savoir si le mécanisme de celui que tu as et le même que le mien

Pour le parking brake :
1739919179096.png

Le moteur du flight detent tourne (sens horaire), pousse le levier avec l'élastique et libère le levier du parking brake qui est alors tiré vers la bas par un ressort. Comment arriver à commander le moteur du flight detent pour qu'il ne vienne pas forcer sur ses butées...?! PAs de potentiomètre, pas de switch fin de course.

Roue entraînement trim wheel
1739919553926.png

Ça marche (mais il faut installer les trim wheels droite et gauche tête bêche pour compenser les balourds dus aux poignées. Mécaniquement cette roue dentée n'est pas terrible, le centrage sur l'axe est lâche et la fixation par goupille... résultat, la roue vibre beaucoup, pas sûr que la courroie apprécie sur le long terme. Quoi faire ? Refaire une roue avec un moyen métal, bloqué en rotation par une vis... €€€, mettre des cales derrière pour que la roue s'appuie dessus... frottements ?

Speed brake : photo en position rentré/verrouillé
On voit à la forme de la came, la première partie de la rotation, environ 30°, (le potar tourne); le levier est poussé vers le haut et ensuite, on arrive sur la partie plate de la came, le levier est entrainé en rotation (le potar tourne toujours, donc on peut en déduire la totalité de la course effectuée par le moteur ==> ça devrait suffire pour faire la même rotation en sens inverse... mais est ce qu'il n'y a pas un risque de dérive avec le jeu de dentures entre l'aller et le retour ?).
1739919928672.png


Arnaud.
 
Salut ,
C'est presque le même.
J'ai pas mal de temps devant moi pour le faire fonctionner ,François a déjà un Tq qui fonctionne un peu.
Pour la commande des roues de trim ,j'ai déjà tout viré. En effet c'est pas très consistant comme commande de roues. Pour le balourd ,c'est normale faut équilibré les roues ,comme dans tout système mécanique.
Je dois usiner des pièces pour le faire correctement.
Dans l'ensemble ,c'est du branle mais je pense qu'il y a moyen de le faire fonctionner correctement.
JeanMi
IMG_3928.JPG
 
Concernant les TQ RVSim :
Pour l'electronique, j'ai pour ma part tout remplacé comme indiqué dans la ressource partagée.
Cela fonctionne depuis plus de 9 ans sans le moindre probleme.
3 TQ ont été modifiés de cette façon (le mien équipé 8 moteurs et 2 equipés 6 moteurs)

En plus de 15 ans de fonctionnement :
  • 2 moteurs spoiler HS (le moteur de spoiler est le plus fragile car il a le plus petit rapport de démultiplication et que c'est le seul avec ce rapport que l'on actionne aussi manuellement. Les engrenages internes au moteur n'aiment pas car ils ne sont pas prévus pour cela).
  • 1 remplacement moteur roue de trim, l'axe ayant perdu son méplat.
  • 1 engrenage roue de trim cassé (à l'epoque il etait en plexi).
  • 2 remplacements de la piece commande PB
20240225_180408-jpg.30022


J'ai à dispo les fichiers STL pour l'engrenage renforcé de la roue de trim et pour la piece actionnement PB ( celle ci n'est pas compatible avec vos TQ, elle ne se trouve que sur les TQ 8 moteur)
1739990513966.png


Concernant la roue de trim, n'ait pas peur, en plus de 15 ans de fonctionnement, je suis toujours avec la courroie d'origine et celle ci est toujours en bon état.

Dans mon programme, je laisse le choix dans le fichier de config pour l'actionnement ou non de la roue trim lorsque le PA est activé.

Concernant les moteurs, leur resistance interne est suffisament élevée pour que si tu bloques leur mouvement, rien ne crame tant que cela ne dure pas plusieurs minutes, ainsi pour le déployer et le retracter en automatique, tu peux te permettre de faire cela via une temporisation (ou une boucle dans SIOC).

Voici mon programme TQ 6 moteurs RVSim pour SimAvionic avec les cartes SIOC ça peut donner quelques idées.

// *****************************************************************************
// * Config_SIOC ver 4.01 - By Manuel Velez - www.opencockpits.com
// *****************************************************************************
// * FileName : throttle Manu V1.10.txt
// * Date : 04/05/2015
// * Author : Fabrice



Var 0000, Value 0 // Initialisation version 1.10
{
&AcOnAir = 0
&SplExt = 0
&BoucleTemps = 1
&WatchDog = 0
&ATengage = 0
&MotTrimOn = 0
&ParkBrk = 32767
}

Var 0001, name BoucleTemps
{
////////////////// Gestion Trim indicateur //////////////////////
L0 = &ValeurObjInd - &ValTrimInd
L1 = 0
IF L0 < 0
{
L1 = 128
}
L0 = ABS L0
L2 = &VitesseIndTrim + L1
IF L0 <= &MargeIndTrim
{
L2 = 0
L1 = 0
}
&TrimIndMotor = L2
////////////////// Gestion Roulette Trim //////////////////////
L0 = 0
IF &TrimValFs < &SauvTrim
{
L0 = 128
}
IF &TrimValFs <> &SauvTrim
{
&TrimMotor = &VitesseTrim + L0
&MotTrimOn = 1
}
ELSE
{
IF &MotTrimOn = 1
{
&TrimMotor = DELAY 0 ,100
&MotTrimOn = 0
}
}
&SauvTrim = DELAY &TrimValFs ,50
////////////////// Gestion Moteur En Automatique //////////////////////
IF &ATengage <> 0
{
L0 = &ValeurObjEn1 - &ValEn1
L1 = 0
IF L0 < 0
{
L1 = 128
}
L0 = ABS L0
L2 = &VitRapideEn1 + L1
IF L0 <= &AproxEn1
{
L2 = &VitLenteEn1 + L1
}
IF L0 <= &MargeEngine
{
L2 = 0
}
&MotorEn1 = L2
L0 = &ValeurObjEn2 - &ValEn2
L1 = 0
IF L0 < 0
{
L1 = 128
}
L0 = ABS L0
L2 = &VitRapideEn2 + L1
IF L0 <= &AproxEn2
{
L2 = &VitLenteEn2 + L1
}
IF L0 <= &MargeEngine
{
L2 = 0
}
&MotorEn2 = L2
}
////////////////// Gestion Moteur En Manuel //////////////////////
IF &ATengage = 0
{
&MotorEn1 = 0
&MotorEn2 = 0
IF &AcOnGrd = 1
{
IF &PotEn1 > 3
{
&ManEn1 = &ValEn1
}
IF &PotEn2 > 3
{
&ManEn2 = &ValEn2
}
}
ELSE
{
&ManEn1 = &ValEn1
&ManEn2 = &ValEn2
}
}
////////////////// Deconnection Moteur si different //////////////////////
L0 = &PotEn2 - &PotEn1
L0 = ABS L0
IF L0 >= 50 // Disengage ATengage si diff en1 et en2 >
{
IF &ATengage = 1
{
&SASwich = 563
&SASwich = DELAY 0 ,20
}
}
////////////////// Gestion Boucle //////////////////////
L0 = &BoucleTemps + 1
IF &BoucleTemps > 900 // Reinitilisation du compteur
{
L0 = 0
}
&BoucleTemps = DELAY L0 ,2
}

Var 0002, name SecondeFS, Link FSUIPC_IN, Offset $023A, Length 1 // Secondes dans FS
{
IF &BoucleTemps = &WatchDog
{
&BoucleTemps = 2
}
ELSE
{
&WatchDog = &BoucleTemps
}
}

Var 0003, name WatchDog

Var 0006, name En1Status, Link FSUIPC_IN, Offset $52EA, Length 1
{
IF &En1Status <> 0 // Si A/T disengage
{
IF &En2Status <> 0 // Si A/T disengage
{
&ATengage = 1
}
}
ELSE
{
&ATengage = 0
}
}

Var 0007, name En2Status, Link FSUIPC_IN, Offset $52EB, Length 1
{
IF &En2Status <> 0 // Si A/T disengage
{
IF &En1Status <> 0 // Si A/T disengage
{
&ATengage = 1
}
}
ELSE
{
&ATengage = 0
}
}

Var 0008, name ATengage
{
IF &ATengage = 0
{
&LeverDiscon = CLEARBIT 3 // Connecte les deux Potentiometre à FS
&LeverDiscon = CLEARBIT 6 // Connecte les deux Potentiometre à FS
&LeverDiscon = CLEARBIT 7 // Connecte les deux Potentiometre à FS
}
ELSE
{
&LeverDiscon = SETBIT 3 // Deconnecte les deux Potentiometre de FS
&LeverDiscon = SETBIT 6 // Deconnecte les deux Potentiometre de FS
&LeverDiscon = SETBIT 7 // Deconnecte les deux Potentiometre de FS
}
}

Var 0009, name SASwich, Link FSUIPC_OUT, Offset $53DB, Length 2

Var 0010, name LeverDiscon, Link FSUIPC_OUT, Offset $310A, Length 1 // Disconnect both LeverPotentiometers from

Var 0011, name ModeHold, Link FSUIPC_IN, Offset $0504, Length 2 // Disconnect A/T when throttle hold

Var 0100, name ManEn1, Link FSUIPC_OUT, Offset $52FA, Length 2 // Valeur engine 1

Var 0103, name ValeurObjEn1, Link FSUIPC_IN, Offset $52EC, Length 2 // 088C Valeur engine 1

Var 0105, name AproxEn1, Value 1000 // points for aproximation break

Var 0106, name VitLenteEn1, Value 55 // Vitesse lente engine 1

Var 0107, name VitRapideEn1, Value 100 // Vitesse rapide engine 1

Var 0108, name MotorEn1, Link USB_DCMOTOR, Device 1, Output 1

Var 0109, name PotEn1, Link USB_ANALOGIC, Device 1, Input 1, PosL 0, PosC 124, PosR 249 // Potentiometre de engine 1
{
&ValEn1 = &PotEn1 * 64
}

Var 0110, name ValEn1

Var 0120, name ManEn2, Link FSUIPC_OUT, Offset $52FC, Length 2 // Valeur engine 2

Var 0123, name ValeurObjEn2, Link FSUIPC_IN, Offset $52EE, Length 2 // 0924 Valeur engine 2

Var 0125, name AproxEn2, Value 1000 // points for aproximation break

Var 0126, name VitLenteEn2, Value 55 // Vitesse lente engine 2

Var 0127, name VitRapideEn2, Value 100 // Vitesse rapide engine 2

Var 0128, name MotorEn2, Link USB_DCMOTOR, Device 1, Output 2

Var 0129, name PotEn2, Link USB_ANALOGIC, Device 1, Input 2, PosL 0, PosC 126, PosR 252 // Potentiometre de engine 2
{
&ValEn2 = &PotEn2 * 64
}

Var 0130, name ValEn2

Var 0131, name MargeEngine, Value 200 // % error

Var 0250, name Altitude, Link FSUIPC_IN, Offset $31E4, Length 4 // RadioAltimetre
{
L0 = &Altitude / 65536
IF L0 > 200
{
IF &AcOnGrd = 0
{
&AcOnAir = 1
IF &SplFull = 1
{
&SplFullPBMotor = 250
&SplFullPBMotor = DELAY 0 ,100
&SplFull = 0
}
}
}
}

Var 0251, name SpoilerMotor, Link USB_DCMOTOR, Device 1, Output 5 // Moteur levier speedbrake

Var 0252, name SplFullPBMotor, Link USB_DCMOTOR, Device 1, Output 6 // Moteur Full speedbrake

Var 0254, name SpoilerARMFS, Link FSUIPC_IN, Offset $0BCC, Length 4 // Spoiler ARMED FSUIPC

Var 0256, name SpoilerFS, Link FSUIPC_IN, Offset $0BD0, Length 4 // Valeur spoiler FSUIPC

Var 0257, name AcOnGrd, Link FSUIPC_IN, Offset $0366, Length 2 // Valeur Avion au Sol FSUIPC
{
IF &AcOnGrd = 1
{
IF &AcOnAir = 1
{
IF &ATengage <> 0 // deconnnection A/T à l'atterrisage
{
&SASwich = 563
&SASwich = DELAY 0 ,50
}
}
}
}

Var 0258, name AcOnAir // Avion en vol

Var 0259, name FSIAS, Link FSUIPC_IN, Offset $02BC, Length 4
{
L0 = &FSIAS / 128
///////////// Deployement des Spoiler si throttles IDLE ///////////
IF &AcOnGrd = 1
{
IF &AcOnAir = 1
{
IF &PotEn1 < 7
{
IF &PotEn2 < 7
{
IF &SpoilerARMFS = 1
{
CALL &SplDetent
}
&AcOnAir = 0
}
}
}
}
///////////// Deployement des Spoiler si declenchement RTO ///////////
IF &AcOnGrd = 1
{
IF &AcOnAir = 0
{
IF &PotEn1 < 7
{
IF &PotEn2 < 7
{
IF L0 > 70
{
IF &SpoilerFS < 6000
{
CALL &SplDetent
&SASwich = 563
&SASwich = DELAY 0 ,50
&ValEn1 = 10
&ValEn2 = 10
}
}
&AcOnAir = 0
}
}
}
}
IF &SplExt = 1
{
IF L0 <= 65 // Retour des Spoilers si spoiler >= armed et vitesse <= 65
{
IF &SpoilerFS >= 4800
{
IF &PotEn1 > 10
{
CALL &SplRetract
}
ELSE
{
IF &PotEn2 > 10
{
CALL &SplRetract
}
}
}
ELSE
{
&SplExt = 0
}
}
IF L0 > 65 // Retour des Spoilers si remise des gaz
{
IF &SpoilerFS >= 4800
{
IF &PotEn1 > 125
{
CALL &SplRetract
}
ELSE
{
IF &PotEn2 > 125
{
CALL &SplRetract
}
}
}
}
}
}

Var 0260, name SplExt // Retour Auto des Spoilers si 1

Var 0261, name SplRetract, Link SUBRUTINE // routine de retour spoiler
{
&SpoilerMotor = 250
&SpoilerMotor = DELAY 0 ,100
&SplExt = 0
}

Var 0262, name SplDetent, Link SUBRUTINE // Routine de deployement spoiler
{
&SplFull = 1
&SplFullPBMotor = 120
&SpoilerMotor = DELAY 120 ,100
&SplFullPBMotor = DELAY 0 ,100
&SpoilerMotor = DELAY 0 ,150
&SplExt = 1
}

Var 0263, name SplFull, Value 1 // Spoiler autorise FULL si 1

Var 0302, name TrimIndMotor, Link USB_DCMOTOR, Device 1, Output 4 // moteur de l'indicateur de trim

Var 0303, name ValeurObjInd

Var 0304, name MargeIndTrim, Value 300 // % erreur

Var 0305, name Aprox, Value 20 // tolerance trim

Var 0306, name VitesseIndTrim, Value 35 // Vitesse indicateur trim

Var 0307, name VitesseTrim, Value 120 // Vitesse roulette de trim

Var 0308, name TrimMotor, Link USB_DCMOTOR, Device 1, Output 3

Var 0309, name TrimIndPot, Link USB_ANALOGIC, Device 1, Input 3, PosL 23, PosC 98, PosR 173 // Potentiometre de l'indicateur de trim
{
L0 = &TrimIndPot * 88.32
&ValTrimInd = L0 - 6226
}

Var 0310, name ValTrimInd

Var 0312, name SauvTrim

Var 0313, name TrimValFs, Link FSUIPC_INOUT, Offset $0BC0, Length 2 // Valeur Trim FSUIPC
{
IF &TrimValFs <= 16383
{
&ValeurObjInd = &TrimValFs
}
ELSE
{
&ValeurObjInd = -6226
}
}

Var 0314, name MotTrimOn

Var 0350, name ParkBrk, Link FSUIPC_IN, Offset $0BC8, Length 2 // Parking brake
{
IF &ParkBrk = 0
{
&SplFullPBMotor = 250
&SplFullPBMotor = DELAY 0 ,100
&SplFull = 1
&SplFullPBMotor = DELAY 120 ,50
&SplFullPBMotor = DELAY 0 ,100
}
}
 
Dernière édition:
Retour
Haut