convertion d'une donnée A/N pour SIOC

Nous répertorions ici, divers programmes pouvant vous aider dans vos premiers pas et vos étapes futures

convertion d'une donnée A/N pour SIOC

Messagede chr69290 » Lun 29 Nov 2010 16:10

Bonjour à tous !

je cherche un concept de programmation pour exploiter une iocard_servo 2,
il me faut convertir une valeur décimal en valeur Binaire sur 8 bits.

Voici la structure: je récupère l'info de l' adresse Offset $0578 qui me donne la valeur de l'assiette de l'avion,
ensuite grace à une conversion PITCH, *360/(65536*65536) de l' offset j'obtiens une valeur d'angle décimal compris
entre -/+ 30°

L0 = V0020 * 8.38E-008 // valeur en Degré
IF L0 > 30 // Limit 30 degrees
{
L0 = 30
}
IF L0 < -30 // Limit -30 degrees
{
L0 = -30
}

l'idée ensuite c''est de transformer cette valeur décimal en un code binaire sur 8 bits.
et c'est là que ça ce complique.

je cherche une solution avec la fonction TESTBIT et autres ....
donc si vous avez une idée à me soumettre, je suis prenneur lol
à bientôt
chr69290
 
Messages: 43
Inscription: 5/05/10
Localisation: hieres sur amby dans le 38

Re: convertion d'une donnée A/N pour SIOC

Messagede stevelep » Lun 29 Nov 2010 16:34

Hello,

En fait tu n'as pas besoin de la convertir car elle est déjà stockée en binaire, tu doit juste envoyer chaque bit séparé sur une sortie distincte:

Var 0001, name valeur // valeur à envoyer au servo (0-255)
{
&bit_0 = TESTBIT &valeur 0
&bit_1 = TESTBIT &valeur 1 // envoie le bit 1 à la variable bit_1 = sortie led n° 22 etc
&bit_2 = TESTBIT &valeur 2
&bit_3 = TESTBIT &valeur 3
&bit_4 = TESTBIT &valeur 4
&bit_5 = TESTBIT &valeur 5
&bit_6 = TESTBIT &valeur 6
&bit_7 = TESTBIT &valeur 7
}

Var 0002, name bit_0, Link IOCARD_OUT, Output 21
Var 0003, name bit_1, Link IOCARD_OUT, Output 22
Var 0004, name bit_2, Link IOCARD_OUT, Output 23
Var 0005, name bit_3, Link IOCARD_OUT, Output 24
Var 0006, name bit_4, Link IOCARD_OUT, Output 25
Var 0007, name bit_5, Link IOCARD_OUT, Output 26
Var 0008, name bit_6, Link IOCARD_OUT, Output 27
Var 0009, name bit_7, Link IOCARD_OUT, Output 28


Voila

BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2026
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: convertion d'une donnée A/N pour SIOC

Messagede chr69290 » Dim 19 Déc 2010 00:22

Merci BOB ! je vais essayer ça.

Au passage je me suis lancé en parallèle sur un autre caste tête chinois, un trim électrique.

Celui-ci doit fonctionner uniquement sous PA enclenché .
je dois récupérer l'info de offset $2EA0 qui correspond à l'indicateur du trim elevator et je dois piloter un petit moteur électrique en 12v avec 2 output de la IOCARD.

l'dée c'est une sortie output pour le UP et une autre pour le DOWN et une fonction OFF pour l'arrêt du moteur... lol
le problème c'est de déclencher l'arrêt du moteur dès que le trim s'est positionné sur une valeur donnée,
pour l'instant le mien se met en route UP/DOWN mais ne s'arrête plus de tourner .....
j'arrive pas à trouver la programmation qui va bien pour le moment......

Si tu as une idée la dessus, je suis prenneur !

merci à bientôt
Christophe

Pas simple l'histoire du trim électrique.....
chr69290
 
Messages: 43
Inscription: 5/05/10
Localisation: hieres sur amby dans le 38

Re: convertion d'une donnée A/N pour SIOC

Messagede stevelep » Dim 19 Déc 2010 00:38

Ok qu'est-ce qui doit le faire arrêter exactement ?

BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2026
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: convertion d'une donnée A/N pour SIOC

Messagede chr69290 » Lun 27 Déc 2010 18:54

Salut BOB,

Tout dabord, je te souhaite de passer de bonnes fêtes de fin d'année ! et plein de bonnes choses pour 2011 .....

Ensuite j'ai essayé ta prog avec les testbit ...ect ça fonctionne nickel !

j'ai effectué un essai avec 1 servo pour commencer, il bouge bien comme il faut en fonction de FS.
Je dois trouver le truc pour limiter la course du servo de manière à avoir +/-30° de débattements mais en réalité ça serait plutôt 25° dans la vrai vie bref... (avec cette méthode de programmation, c'est efficace la prog prend en compte tout la plage 0-255, normarle tu me diras on travail sur 8 bits). Pour l'instant ce n'ai pas vraiment mon urgence....

Pour mon autre problème de trim, je pense que ce probléme a dù toucher tous les constructeurs de simu, le fameux problème du trim électrique ELEVATOR !

personnellement, je passe par un encoder pour donner l'info, mais je pense qu'un potar 10k 10 tours serait plus approprié pour donner la position du trim lors de la mise en route de FS .... à condition de savoir bien programmer.

j'ai fait plus simple je passe par des encoders
si tu veuxx je te file ma prog pour avoir les 3 trims pitch, rudder, aileron avec avec 3 encoders

// *** programmation Rudder, Aileron et Elevator Trim gerer par encoders *** /////

Var 0001, name elev_rad, Link FSUIPC_INOUT, Offset $2EA0, Length 8, Numbers 3 // Pith
Var 0002, name enc_trim_elev, Link IOCARD_ENCODER, Input 46, Aceleration 1, Type 2 // Encoder 1 , input 46
{
L0 = &enc_trim_elev * 1
&elev_rad = ROTATE -201 ,201 ,L0
}
Var 0003, name ale_rad, Link FSUIPC_INOUT, Offset $2EB0, Length 8, Numbers 3 // Roll
Var 0004, name enc_trim_ale, Link IOCARD_ENCODER, Input 61, Aceleration 1, Type 2 // Encoder 2 , input 61
{
L0 = &enc_trim_ale * 1
&ale_rad = ROTATE -201 ,201 ,L0
}
Var 0005, name timon_rad, Link FSUIPC_INOUT, Offset $2EC0, Length 8, Numbers 3 // Rudder
Var 0006, name enc_trim_timon, Link IOCARD_ENCODER, Input 57, Aceleration 1, Type 2 // Encoder 3 , input 57
{
L0 = &enc_trim_timon * 1
&timon_rad = ROTATE -201 ,201 ,L0
}
chr69290
 
Messages: 43
Inscription: 5/05/10
Localisation: hieres sur amby dans le 38

Re: convertion d'une donnée A/N pour SIOC

Messagede chr69290 » Lun 27 Déc 2010 19:22

suite,

là je répond à ta question.,

maintenant pour faire mieux, pour simuler une vrai roue de trim, ça se complique vachement.

voilà mon cahier de charge : fabriquer une roue capable de tourner en manuel et en mode automatic quand le PA est connecté.
Dans la vrai vie quand tu pilotes un avion, le trim de profondeur joue sur le manche de l'avion, car le but du trim à la base c'est d'annuler l'effort au manche par une compensation, donc un décalage du neutre du manche ( jusque là je ne t'apprends rien )mais sur FS, le problème est diffèrent FS ne peut pas simuler ça alors il joue sur l' atitude de l'avion soit à une correction d'assiette.

J'ai repris l'idée du site SIMUBARON (au passage je remerci les 2 Pierre pour leur travail extraodinaire ) utilisé un petit moteur électrique pour faire tourner la roue de trim. Il utilise 2 outputs de la iocard une pour UP et l'autre pour DN piloter grâce une une petite carte électronique fait maison.

Si j'étais ingénieur en électronique, je serais passé par les PIC microcontrôleur avec une connection USB et là on pourrait vendre le concept ( je plaisante ce n'ai pas le but ) j'ai commencé à étudier la programmation avec SIOC pas simple du tout, il faut que le moteur suive l'info de l'indicateur de trim, mais à mon avis ce serait plus judicieux d'utiliser un moteur pas à pas qu'un moteur électrique avec un réducteur comme dans le site SIMUBARON des 2 Pierre.

j'essais de trouver un petit programme qui pourrait faire marcher ce concept, car il est vraiment très simple à réalisé et pourrait encouragé les autres constructeurs à faire des "vrai roue de trim " aulieu de simple bouton rotatif comme trim.
je suis un peu perfectionniste , mais si on veut faire avancer le projet et tout ça en bénévole, là on devient roi du pétrol ! lol.

Mes compétences s'arrête plus sur de la technique de fabrication qu'à la programmation lol mais petit à petit on y arrive....

à bientôt BOB et bonnes fêtes de fin d'année
chr69290
 
Messages: 43
Inscription: 5/05/10
Localisation: hieres sur amby dans le 38

Re: convertion d'une donnée A/N pour SIOC

Messagede stevelep » Mar 28 Déc 2010 00:17

L0 = V0020 * 8.38E-008 // valeur en Degré
IF L0 > 30 // Limit 30 degrees
{
L0 = 30
}
IF L0 < -30 // Limit -30 degrees
{
L0 = -30
}



Plus simplement:

L0 = V0020 * 8.38E-008 // valeur en Degré
L0 = LIMIT -30 30 0
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2026
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: convertion d'une donnée A/N pour SIOC

Messagede pierre01 » Mar 19 Fév 2013 12:13

Bon, je n'avais pas vu que je pouvais aussi répondre à ce post, vu que effectivement on a réalisé un trim électrique ou la roue peux être manoeuvrée aussi bien par le PA que manuellement !

La programmation est faite et fonctionne bien pour ce qui est de la commande manuelle (roue) du trim mais aussi de façon électrique avec un inverseur sur le yoke en mode hors PA (inactif en mode PA).
Le PA commande également le trim et la roue tourne quand le PA bouge le trim.
Le limiteur de couple assure la sécurité en fin de course et pour le cas ou l'on tourne manuellement la roue quand le PA est engagé, donc pas de casse possible.

On a utilisé un potentiomètre de 10K Lin 10 tours pour l'offset de trim.
La roue peux tourner sur environ 3 tours 1/3.
L'index de trim tourne sur environ 270°

Par contre, le trim (manuel ou en mode PA) n'assure pas encore le déplacement du neutre du yoke, mais c'est prévu !

Si vous voulez le code pas de Pb, je peux le donner.
Avatar de l’utilisateur
pierre01
 
Messages: 1581
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)


Retourner vers Programmes testés et prêts à l'emploi





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité