Carte usbservo pour un indicateur de vitesse

mameloose

PILOTE DE BROUSSE
Messages
3 741
Réactions
2
Points
530
et rebonjour ! c'est encore moi ...
un petit tuto pour utiliser la carte servo dopencockpit .
ATTENTION petite anecdote j'ai eu un probleme la premiere fois ma carte nétait pas reconnue par mon pc j'ai donc ecrit a opencockpit qui ma renvoyé un PIC (c'est le petit carré noir au centre de la carte ) que j'ai changé et maintenant ca fonctionne parfaitement !

pour les servos j'ai pris ce modele :



je ne sais pas si c'est les meilleurs mais en tout cas ca fonctionne !
la servo a une course denviron 170 degrès donc en fonction de vos gauges il faudra installer un s'ysteme de demultiplication avec des roues dentées .... a vous de bricoler !

bien pour le shema de cablage il se presente comme ca :



on peut brancher jusqua 6 servos ; ATTENTION dans le model que j'ai acheté les pin d'alimentation ne correspondent pas au pin de la carte j'ai donc du inverser les pin de la servo on peut facilement le faire avec une petite aiguille pour retirer les cables et inverser .
pour J9 lemplacement de la premiere servo on a donc premier pin 5volts pin du centre data et troisieme pin la masse GND

donc pour ma servo ca fait rouge jaune marron !

ensuite on branche la carte en usb sans oublier de l'alimenter en 5volts sur J2 ; attention aux polarités ...

pour la declaration dans le sioc ini c'est très simple il suffit de rajouter dans la partie CARD CONFIG une ligne ressemblant a ca : [ USBServos=0,27 ]

le premier chiffre correspond au numero idx chez moi j'ai mis 0 pour l'exemple et le deuxieme a votre numero de device qui correspond au port usb (chez moi 27) ca sera forcement different chez vous ; avous de determiner cela en lancant sioc puis en modifiant config device ....

bien une fois tout configuré correctement on attaque le code sioc !
avant tout nous allons rechercher dans le sdk l'offset qui controle l'indicateur de vitesse ...
ici il sagit de la $02BC de longueur 4 .
dans la description du sdk il est stipulé que les données doivent etre divisées par 128 pour avoir la vrai vitesse en nuds !

maintenant il sagit de trouver les butées de notre servo pour cela lancez sioc puis sioc monitor .
la servo doit apparaitre un double clique dessus et un tabl'eau s'affiche avec des curseurs ....

faite bouger le curseur correspondant a votre servo et relever la position extreme gauche puis la centrale puis lextreme droite !

chez moi cela donne 160 ; 666 ; 1023

ok si tout va bien jusque la on commence le code

nous allons declarer notre servo ainsi que la variable de la vitesse

EDIT NEW VAR




voila declaration de la servo avec nos butées
ensuite la variable vitesse



ok maintenant nous allons lier la vitesse a la servo !

un clique droit sur la variable vitesse et new command



alors petite explication ... ici on utilise une variable interne LO qui sera egale a notre vitesse mais divisée par 20 !
alors pourquoi par 20 cela depend de notre course de servo .
les données brut de la vitesse sont multiplié par 128 c'est ce quindique le sdk donc pour une vitesse de 100 nuds la variable enverra 12800 !
la course de notre servo va de 160 a 1023 donc si on divise la valeur brut par 20 pour une vitesse de 100 nuds la resultante sera de 640 !
notre servo se situera environ a la moitié de sa course ....

allez on continu vous allez comprendre ...enfin jespere !



ici jutlise L1 qui sera egale a LO donc la vitesse brut divisée par 20 comme on a vu plus haut MAIS jadditionne 160 qui est le point bas de la course de ma servo .
si je ne met pas cela si ma vitesse est egale a zero la servo va chercher a aller en dessous de 160 elle va forcer et c'est le drame ! c'est pour cela qu'il est important de definir les butées dès le debut .
donc avec L1 si ma vitesse est a zero alors la premiere valeur sera en realité de 160 qui correspond a la butée basse du servo .

ensuite on continu mais avec une petite securité pour la butée haute donc nous allons dire que si la valeur de la vitesse depasse les 1022 alors le servo nira pas plus loin que 1023 (sa butée haute)




voila et pour finir bien sur une assignation pour dire que notre servo est egale a L1 tout simplement

clique droit sur la variable de l IAS et new command




voila donc on resume !

la vitesse donnée par la variable est multiplié par 128 donc 10 nuds font 1280 ; 50 nuds font 6400 ect....
on utilise LO pour diviser cette valeur par 20 ce qui correspond environ a notre plage de servo entre 160 et 1023
et grace a L1 la valeur demarre a 160
donc pour 10 nuds nous avons une valeur de 224 et pour 50 nuds cela donne 480 ect ect ....

a vous dajuster tout cela en fonction de votre s'ysteme !

quelques photos pour comprendre remarquez la position du servo et de la vitesse sur le cessna !







bon courage !
Mameloose
 
Retour
Haut