Fonctionnement servomoteur, DCS-BIOS et Arduino MEGA
Fonctionnement servomoteur, DCS-BIOS et Arduino MEGA
#1Bonjour,
Je viens demander un peu d'aide au sujet des servomoteurs car je tourne en rond depuis 3 jours sur le problème suivant :
J'essaie d'utiliser un servomoteur EMAX ES08MAII pour reproduire le mouvement des volets du panneau volets et train d'atterrissage du A-10C.
Le servomoteur fonctionne et avec la bonne amplitude (j'ai lu le datasheet).
Mais l'axe se déplace dans le sens anti-horaire. Quand je baisse les volets, l'aiguille témoin se lève. Mais c'est conforme aux indications du datasheet.
- Est-ce un cas particulier de ce modèle ou de cette marque ?
- Je n'ai pas réussi à trouver d'autres datasheets de servomoteurs chez les fournisseurs et même sur un site comme servodatabase.com !
- Ce n'est pas une erreur de branchement car ça ne fonctionnerait pas si c'était mal branché. J'alimente en 5 volts par l'USB (plage admise entre 4,8V et 6V).
Je ne vois pas comment intervenir sur le code DCS-BIOS.
C'est ma première expérience des servomoteurs. Je relis des documentations en boucle sans comprendre ce qui cloche.
Voyez-vous une solution, matérielle ou logicielle ?
Merci de vos conseils.
Je viens demander un peu d'aide au sujet des servomoteurs car je tourne en rond depuis 3 jours sur le problème suivant :
J'essaie d'utiliser un servomoteur EMAX ES08MAII pour reproduire le mouvement des volets du panneau volets et train d'atterrissage du A-10C.
Le servomoteur fonctionne et avec la bonne amplitude (j'ai lu le datasheet).
Mais l'axe se déplace dans le sens anti-horaire. Quand je baisse les volets, l'aiguille témoin se lève. Mais c'est conforme aux indications du datasheet.
- Est-ce un cas particulier de ce modèle ou de cette marque ?
- Je n'ai pas réussi à trouver d'autres datasheets de servomoteurs chez les fournisseurs et même sur un site comme servodatabase.com !
- Ce n'est pas une erreur de branchement car ça ne fonctionnerait pas si c'était mal branché. J'alimente en 5 volts par l'USB (plage admise entre 4,8V et 6V).
Je ne vois pas comment intervenir sur le code DCS-BIOS.
C'est ma première expérience des servomoteurs. Je relis des documentations en boucle sans comprendre ce qui cloche.
Voyez-vous une solution, matérielle ou logicielle ?
Merci de vos conseils.
Core I5 9600 @ 4.8 GHz - Asus - 32 Go DDR4 3000 MHz - RTX 4080 16 Go - 5 SSD > 6 To - HOTAS Warthog - Palonnier TFRP - LG 43" +NEC 24" + -TrackIR5 - Windows 10
Re: Fonctionnement servomoteur, DCS-BIOS et Arduino MEGA
#2Bonjour,
J'ai trouvé seul une solution : l'inversion des valeurs mini et maxi de la ligne du programme DCSBIOS (qui me semble pourtant illogique)
ServoOutput flapPos(0x10a0, 9, 1900, 1500)
Je souhaite que cette solution puisse aider ceux qui tatonnent avec DCSBIOS et les servomoteurs, comme moi.
J'ai trouvé seul une solution : l'inversion des valeurs mini et maxi de la ligne du programme DCSBIOS (qui me semble pourtant illogique)
ServoOutput flapPos(0x10a0, 9, 1900, 1500)
Je souhaite que cette solution puisse aider ceux qui tatonnent avec DCSBIOS et les servomoteurs, comme moi.
Core I5 9600 @ 4.8 GHz - Asus - 32 Go DDR4 3000 MHz - RTX 4080 16 Go - 5 SSD > 6 To - HOTAS Warthog - Palonnier TFRP - LG 43" +NEC 24" + -TrackIR5 - Windows 10
Re: Fonctionnement servomoteur, DCS-BIOS et Arduino MEGA
#3Bonjour
Content que tu es trouvé. Moi aussi je débute, j'ai déjà réalisé avec l'aide Exo quelques module pour le 2000 concernant les afficheurs. Pour l'instant je suis sur un problème depuis un bon bout de temps. J'aimerais utiliser donc une adresse de dcsbios et créer une bibliotheque pour en faire une sortie variable analogique 0-5v. Je sais que pour cela je dois utiliser "analogWrite". Tous les exemples que j'ai pu trouver sur le net est lié à une entrée physique du type potentiomètre etc...
Voici.
Void onAoaPosChange(unsigned int newValue)
Je sais que que je dois partir de cette newValue et de la, concevoir ma bibliothèque.
C'est la que je nage, je ne trouve pas comment declarer cette adresse comme une entrée. Sur les exemples montrés, c'est une entrèe physique que l'on déclare en une entrée pin
Si tu as une idée?
Cordialement
Content que tu es trouvé. Moi aussi je débute, j'ai déjà réalisé avec l'aide Exo quelques module pour le 2000 concernant les afficheurs. Pour l'instant je suis sur un problème depuis un bon bout de temps. J'aimerais utiliser donc une adresse de dcsbios et créer une bibliotheque pour en faire une sortie variable analogique 0-5v. Je sais que pour cela je dois utiliser "analogWrite". Tous les exemples que j'ai pu trouver sur le net est lié à une entrée physique du type potentiomètre etc...
Voici.
Void onAoaPosChange(unsigned int newValue)
Je sais que que je dois partir de cette newValue et de la, concevoir ma bibliothèque.
C'est la que je nage, je ne trouve pas comment declarer cette adresse comme une entrée. Sur les exemples montrés, c'est une entrèe physique que l'on déclare en une entrée pin
Si tu as une idée?
Cordialement
Re: Fonctionnement servomoteur, DCS-BIOS et Arduino MEGA
#4Bonjour Hombre,
Je suis incapable de répondre à ta question qui dépasse de beaucoup mes compétences. Je te conseille d'ouvrir sur C6 un nouveau sujet qui justifie l'appel à des compétences de développeur en C++ puisqu'il s'agit de développer une bibliothèque Arduino.
La question peut aussi être posée sur GitHub.com dans la section DCS-Bios.
Bon courage.
Je suis incapable de répondre à ta question qui dépasse de beaucoup mes compétences. Je te conseille d'ouvrir sur C6 un nouveau sujet qui justifie l'appel à des compétences de développeur en C++ puisqu'il s'agit de développer une bibliothèque Arduino.
La question peut aussi être posée sur GitHub.com dans la section DCS-Bios.
Bon courage.
Core I5 9600 @ 4.8 GHz - Asus - 32 Go DDR4 3000 MHz - RTX 4080 16 Go - 5 SSD > 6 To - HOTAS Warthog - Palonnier TFRP - LG 43" +NEC 24" + -TrackIR5 - Windows 10
Re: Fonctionnement servomoteur, DCS-BIOS et Arduino MEGA
#5Merci beaucoup Claudeb
Bonne année. Bonne continuation
A+
Bonne année. Bonne continuation
A+
Re: Fonctionnement servomoteur, DCS-BIOS et Arduino MEGA
#6Bonjour Hombre
Place ce code entre les #include et void setup()
La première partie est une déclaration de fonction jusqu'au } de cloture.
La deuxième partie 'signal' a DCS BIOS qu'a chaque fois que la valeur aoaPos changera il faudra appeler la fonction onAoaPosChange.
Tu peux très bien modifier le code de cette façon :
En plaçant ton code à la place de /* your code here */ tu pourras faire l'opération que tu veux pour cette valeur qui variera de 0 a 65535.
Peut être que tu ne veux pas utiliser de servo de modèlisme qui font beaucoup de bruit et utiliser un moteur pas à pas à la place ?
Ah non en parcourant le forum j'ai vu que tu voulais piloter ça : Led Bar
Et là il y a un exemple, le même composant de bar graph mais sans être un module arduino : Led bargraph
Dans le dernier cas ta fonction serait :
Le premier module avec la petite carte est intéressant, joli petit composant avec le code arduino qui va bien code
Avec ce module ton code
Code : Tout sélectionner
void onAoaPosChange(unsigned int newValue) {
/* your code here */
}
DcsBios::IntegerBuffer aoaPosBuffer(0x6024, 0xffff, 0, onAoaPosChange);
La première partie est une déclaration de fonction jusqu'au } de cloture.
La deuxième partie 'signal' a DCS BIOS qu'a chaque fois que la valeur aoaPos changera il faudra appeler la fonction onAoaPosChange.
Tu peux très bien modifier le code de cette façon :
Code : Tout sélectionner
void ma_fonction_de_maj(unsigned int newValue) {
/* your code here */
}
DcsBios::IntegerBuffer aoaPosBuffer(0x6024, 0xffff, 0, ma_fonction_de_maj);
Peut être que tu ne veux pas utiliser de servo de modèlisme qui font beaucoup de bruit et utiliser un moteur pas à pas à la place ?
Ah non en parcourant le forum j'ai vu que tu voulais piloter ça : Led Bar
Et là il y a un exemple, le même composant de bar graph mais sans être un module arduino : Led bargraph
Dans le dernier cas ta fonction serait :
Code : Tout sélectionner
void onAoaPosChange(unsigned int newValue) {
newValue = newValue/6553; // pour obtenir des valeur entre 0 et 10
// après il faut allumer les leds correspondantes
}
Avec ce module ton code
Code : Tout sélectionner
void onAoaPosChange(unsigned int newValue) {
newValue = newValue/6553; // pour obtenir des valeur entre 0 et 10
bar.setLevel(newValue); //
}
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Site web http://wwii.lfdm.free.fr/