mameloose
PILOTE DE DRONE
- Messages
- 3 732
- Réactions
- 2
bonjour a tous !
un nouveau tuto pour utiliser la carte usbdcmotor dopencockpit !
la carte se presente comme ca :
pour la connection il suffit de suivre ce shema c'est très simple
on peut donc connecter jusqua 6 moteurs de 5 a 36volts ainsi que 4 potentiometres (on verra pourquoi les potentiometres par la suite ... )
ok donc avant de brancher votre carte en usb sur votre PC je conseil d'abord de l'alimenter (chez moi j'ai mis du 5 volts)
parce que sinon la carte risque de ne pas etre reconnue !
bref une fois votre carte branchée vous devriez voir ca dans sioc :
donc on voit bien que la carte na pas de numero didx et que mon port usb est le 50 chez vous ca sera different bien sur !
maintenant il faut declarer votre carte dans le sioc ini !
pour les carte usb expansion on a lhabitude de voir un truc du genre [master 0,4,1,45]
pour une carte usbdcmotor il suffit juste d'ajouter cette ligne :
[USBDCmotor=0,50]
voila j'ai mis 0 pour lidx et 50 comme c'est le chiffre de detection de mon port usb...
ensuite j'ai cablé un potentiometre de type 10K sur J3 et un motoreducteur sur les premiers pin de J6
NOUS ALLONS MAINTENANT FAIRE UNE PROG POUR UN AUTOTHROTTLE !
le but est que les manettes de gaz bougent toutes seules comme en vrai !
allez c'est partit ! nous allons commencer par ouvrir un code vierge et declarer les variables qui vont bien ....
comme d'habitude EDIT et NEWVAR
on commence par declarer notre moteur qui est cablé sur lemplacement numero 1
voila ensuite je vais declarer quelques variables pour controller les manettes de gaz avec mon potentiometre !
je cherche donc toujours dans le sdk les variables pour controller les manettes 1 et 2 (on va prendre un 737 pour l'exemple)
ici la $088C et la $0924 de longueur 2 respectivement pour le controle de la manette 1 et 2
donc a la suite dans mon code toujours EDIT NEWVAR et je selectionne fsuipcinout
ok ca va tout le monde suit ??
une derniere declaration : mon potar bien sur qui va controler mes manettes
ATTENTION une petite nuance avec mon precedant tuto sur les potentiometres : etant donné qu'on se situe sur une carte motor et non expension il faut selectionner notre potar comme un usbanalogic input et non comme un analogic tout court
voila puis ensuite je declare les butées .... alors encore une fois en fonction de votre installation les butées seront differentes ici je vais mettre les butées max puisque c'est une maquette pour l'exemple ; donc 0,127,255 .
VOILA tout est declaré ! maintenant on passe au code ..... gnak gnak un petit café simpose ou une desperados ca depends de l'heure qu'il est
allez on passe au chose serieuse
Tout d'abord nous allons faire comprendre a sioc que le potard doit faire bouger mes deux manettes ! pour cela c'est très simple un clic droit sur le potar et NEWCOMMAND
donc une commande dassignation qui dit que le moteur 1 est egale a la valeur de mon potar multiplié par 64 !
et la ont dit tous en chur : pourquoi faut multiiiipllliiieeeerrr ??
c'est tout simple la valeur de notre potar va de 0 a 255
alors que notre moteur dans le sdk on nous explique quel va de 0 a 16383
donc logiquement pour que les deux plages soient les memes on divise 16383 par 255 et la magie ca donne 64 !!
voila on fait pareil pour le moteur 2 donc mon potar va controller les deux moteurs en meme temps chez vous rien nempeche de faire la manip avec 2 potentiometres ...
voila donc a ce stade on oublie pas denregistrer et vous pouvez essayer chez vous le potar fait bouger les manettes de gaz !
waouh !
alors maintenant en imaginant que vous avez un moteur relié sur vos manettes comme en vrai on passe a la suite !
le but et de faire comprendre a sioc maintenant que dès l'instant ou lA/T arm est activé le moteur tourne dans un sens pour donner de la puissance ; qu'il sarrete si il se trouve dans la bonne position et au contraire qu'il tourne dans l'autre sens pour reduire les gaz !!
nous allons creer une petite subroutine pour controller tout ca !
du coup EDIT NEW VAR et SUBROUTINE
voila bon maintenant je vais essayé d'être le plus clair possible !
en gros quand l'autothrottle demande de la puissance il va y avoir un decallage entre la position de mon potar et de mon moteur .
comme on a vu avant mon potar a 0 les gaz sont aux ralentit et a 255 ils sont a fond ! donc si le PA demande d'aller a fond et que mon potar est a zero le moteur va se mettre en marche pour rattraper cette course .
je vais donc utiliser des variables locales pour faire fonctionner ce s'ysteme .
clic droit sur la subroutine et NEWCOMMAND
donc ici LO est egale a la puissance moteur divisée par 64 (pour avoir la meme valeur que mon potar)
on peut comparer LO a X comme dans une equation mathematique il nous servira pour après ....
puis on continu
ici L1 est egal a LO moins la valeur du potar !
bon ok ca se complique mais c'est simple en gros la resultante est de zero si tout va bien ! ca veut dire que si les gaz sont dans une position fixe que le potar est au bon endroit alors le moteur ne tournera pas ! par contre si une des conditions change alors le moteur devra bouger dans un sens ou l'autre ...
donc je vais prendre une petite marge de securité de 10 je m'explique ... si je poursuit mon code normalement en gros si L1 et plus grand que zero alors le moteur va tourner dans un sens puis si L1 est plus petit que zero dans l'autre sens !
le probleme c'est qu'il fait ca sans ARRET !! donc surchauffe et tout donc on va rajouter une petite marge de secu pour eviter cela :
ok donc ici si une condition change c'est a dire si l'autothrottle demande a bouger la valeur de L1 va changer et si elle depasse 10 le moteur se mettera en marche jusqua ce que le potar suit pour saligner (nos manettes en gros)
alors pourquoi 127 pour le moteur ??
les conditions de controle du moteur sont de 0 a 127 et de 128 a 255 .
a 0 le moteur est arreté et plus on va vers 127 plus il tourne vite dans un sens
a 128 le moteur est arreté et plus on va vers 255 plus il tourne vite dans l'autre sens !
on peut ajuster la vitesse en mettant la valeur que lon veut ! moi j'ai mis a fond pour l'exemple !
ensuite je poursuit le code pour le contraire dans le cas d'une deceleration
nouvelle condition IF reclic droit sur la subroutine ...
ici si L1 est inferieur a -10 le moteur tournera a fond dans l'autre sens (255)
on poursuit pour larret du moteur donc si L1 est a zero et que tout est aligné donc mes manettes et le moteur ...
voila et pour finir comme nous sommes dans une subroutine il faut faire des appels sur les elements concernés donc le moteur 1 et LENG 1
du coup clic droit sur chaque variable et call subroutine
et voila ca fonctionne !
un autothrottle comme en vrai !
le principe est le meme pour une roue de trim par exemple ect ....
un nouveau tuto pour utiliser la carte usbdcmotor dopencockpit !
la carte se presente comme ca :
pour la connection il suffit de suivre ce shema c'est très simple
on peut donc connecter jusqua 6 moteurs de 5 a 36volts ainsi que 4 potentiometres (on verra pourquoi les potentiometres par la suite ... )
ok donc avant de brancher votre carte en usb sur votre PC je conseil d'abord de l'alimenter (chez moi j'ai mis du 5 volts)
parce que sinon la carte risque de ne pas etre reconnue !
bref une fois votre carte branchée vous devriez voir ca dans sioc :
donc on voit bien que la carte na pas de numero didx et que mon port usb est le 50 chez vous ca sera different bien sur !
maintenant il faut declarer votre carte dans le sioc ini !
pour les carte usb expansion on a lhabitude de voir un truc du genre [master 0,4,1,45]
pour une carte usbdcmotor il suffit juste d'ajouter cette ligne :
[USBDCmotor=0,50]
voila j'ai mis 0 pour lidx et 50 comme c'est le chiffre de detection de mon port usb...
ensuite j'ai cablé un potentiometre de type 10K sur J3 et un motoreducteur sur les premiers pin de J6
NOUS ALLONS MAINTENANT FAIRE UNE PROG POUR UN AUTOTHROTTLE !
le but est que les manettes de gaz bougent toutes seules comme en vrai !
allez c'est partit ! nous allons commencer par ouvrir un code vierge et declarer les variables qui vont bien ....
comme d'habitude EDIT et NEWVAR
on commence par declarer notre moteur qui est cablé sur lemplacement numero 1
voila ensuite je vais declarer quelques variables pour controller les manettes de gaz avec mon potentiometre !
je cherche donc toujours dans le sdk les variables pour controller les manettes 1 et 2 (on va prendre un 737 pour l'exemple)
ici la $088C et la $0924 de longueur 2 respectivement pour le controle de la manette 1 et 2
donc a la suite dans mon code toujours EDIT NEWVAR et je selectionne fsuipcinout
ok ca va tout le monde suit ??
une derniere declaration : mon potar bien sur qui va controler mes manettes
ATTENTION une petite nuance avec mon precedant tuto sur les potentiometres : etant donné qu'on se situe sur une carte motor et non expension il faut selectionner notre potar comme un usbanalogic input et non comme un analogic tout court
voila puis ensuite je declare les butées .... alors encore une fois en fonction de votre installation les butées seront differentes ici je vais mettre les butées max puisque c'est une maquette pour l'exemple ; donc 0,127,255 .
VOILA tout est declaré ! maintenant on passe au code ..... gnak gnak un petit café simpose ou une desperados ca depends de l'heure qu'il est
allez on passe au chose serieuse
Tout d'abord nous allons faire comprendre a sioc que le potard doit faire bouger mes deux manettes ! pour cela c'est très simple un clic droit sur le potar et NEWCOMMAND
donc une commande dassignation qui dit que le moteur 1 est egale a la valeur de mon potar multiplié par 64 !
et la ont dit tous en chur : pourquoi faut multiiiipllliiieeeerrr ??
c'est tout simple la valeur de notre potar va de 0 a 255
alors que notre moteur dans le sdk on nous explique quel va de 0 a 16383
donc logiquement pour que les deux plages soient les memes on divise 16383 par 255 et la magie ca donne 64 !!
voila on fait pareil pour le moteur 2 donc mon potar va controller les deux moteurs en meme temps chez vous rien nempeche de faire la manip avec 2 potentiometres ...
voila donc a ce stade on oublie pas denregistrer et vous pouvez essayer chez vous le potar fait bouger les manettes de gaz !
waouh !
alors maintenant en imaginant que vous avez un moteur relié sur vos manettes comme en vrai on passe a la suite !
le but et de faire comprendre a sioc maintenant que dès l'instant ou lA/T arm est activé le moteur tourne dans un sens pour donner de la puissance ; qu'il sarrete si il se trouve dans la bonne position et au contraire qu'il tourne dans l'autre sens pour reduire les gaz !!
nous allons creer une petite subroutine pour controller tout ca !
du coup EDIT NEW VAR et SUBROUTINE
voila bon maintenant je vais essayé d'être le plus clair possible !
en gros quand l'autothrottle demande de la puissance il va y avoir un decallage entre la position de mon potar et de mon moteur .
comme on a vu avant mon potar a 0 les gaz sont aux ralentit et a 255 ils sont a fond ! donc si le PA demande d'aller a fond et que mon potar est a zero le moteur va se mettre en marche pour rattraper cette course .
je vais donc utiliser des variables locales pour faire fonctionner ce s'ysteme .
clic droit sur la subroutine et NEWCOMMAND
donc ici LO est egale a la puissance moteur divisée par 64 (pour avoir la meme valeur que mon potar)
on peut comparer LO a X comme dans une equation mathematique il nous servira pour après ....
puis on continu
ici L1 est egal a LO moins la valeur du potar !
bon ok ca se complique mais c'est simple en gros la resultante est de zero si tout va bien ! ca veut dire que si les gaz sont dans une position fixe que le potar est au bon endroit alors le moteur ne tournera pas ! par contre si une des conditions change alors le moteur devra bouger dans un sens ou l'autre ...
donc je vais prendre une petite marge de securité de 10 je m'explique ... si je poursuit mon code normalement en gros si L1 et plus grand que zero alors le moteur va tourner dans un sens puis si L1 est plus petit que zero dans l'autre sens !
le probleme c'est qu'il fait ca sans ARRET !! donc surchauffe et tout donc on va rajouter une petite marge de secu pour eviter cela :
ok donc ici si une condition change c'est a dire si l'autothrottle demande a bouger la valeur de L1 va changer et si elle depasse 10 le moteur se mettera en marche jusqua ce que le potar suit pour saligner (nos manettes en gros)
alors pourquoi 127 pour le moteur ??
les conditions de controle du moteur sont de 0 a 127 et de 128 a 255 .
a 0 le moteur est arreté et plus on va vers 127 plus il tourne vite dans un sens
a 128 le moteur est arreté et plus on va vers 255 plus il tourne vite dans l'autre sens !
on peut ajuster la vitesse en mettant la valeur que lon veut ! moi j'ai mis a fond pour l'exemple !
ensuite je poursuit le code pour le contraire dans le cas d'une deceleration
nouvelle condition IF reclic droit sur la subroutine ...
ici si L1 est inferieur a -10 le moteur tournera a fond dans l'autre sens (255)
on poursuit pour larret du moteur donc si L1 est a zero et que tout est aligné donc mes manettes et le moteur ...
voila et pour finir comme nous sommes dans une subroutine il faut faire des appels sur les elements concernés donc le moteur 1 et LENG 1
du coup clic droit sur chaque variable et call subroutine
et voila ca fonctionne !
un autothrottle comme en vrai !
le principe est le meme pour une roue de trim par exemple ect ....