Bonjour à tous,
Après 3 mois d'absence sur le forum, me revoilà avec d'excellentes nouvelles

!
En effet il y a un peu près une semaine j'ai enfin trouvé la solution à mon problème de servomoteur !
Je vous rappelle que je devais désactiver chaque servomoteurs après l'envoi d'une commande pour éviter qu'ils ne répondent plus aux ordres au bout d'un certain temps... Cela était gênant car les servomoteurs une fois désactiver ne résistent plus aux forces exercées. Donc le Quadrupède risquait de s'effondrait sous son propre poids.
Comment ai-je fais pour trouver d'où venait le problème ? Ou plutôt les problèmes ?
C'est assez simple. Dans un premier temps j'ai testé ma carte qui contrôle mes servomoteurs sur Windows avec le programme donné. Après quelques minutes d'utilisation on pouvait constater qu'il n'y avait pas de problème et que les servomoteurs étaient toujours actifs. Donc j'en ai déduit que ma carte (que j'ai réalisé) qui contrôle les servomoteurs était bonne et que le problème venait soit de ma configuration du port série, ou alors de mon programme en C++ qui envoie les données.
Ensuite j'ai installé Wine sur linux qui permet d'exécuter des progammes.exe. Cela ma permit d'installer le programme en VB qui était fournit. Comme celui-ci configure automatiquement le port série j'ai pu récupérer et comparer la configuration avec la mienne.
Voici ce que ca donne pour ceux qui sont intéressés :
- La configuration automatique faite par le programme donné :
speed 2400 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^Z; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 0; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts
ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo echoe echok -echonl noflsh -xcase -tostop -echoprt
echoctl echoke
- Ma configuration pour la Fox Board G20 :
speed 2400 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O ; min = 60; time = 1;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt
-echoctl -echoke
En bref si vous ne voulez pas chercher les erreurs, il y a 10 variables différentes !
Déjà un problème de trouvé. Certes il y a quelques variables qui ne change en rien le fonctionnement...
Voilà le première problème très bête... D'ailleurs, je ne comprends pas pourquoi le logiciel Cutecom ne configure pas de la même façon le port série. Surtout avec des paramètres simples (1 bit de start, 1 bit de stop, 8 bits de donnée et 2400 bauds).
Après avoir trouvé ce problème, j'ai essayé à nouveau de contrôler mes servomoteurs avec ma Fox G20. Malgré une petite amélioration mes servomoteurs tremblaient encore...
Je me suis alors dit que cela venait de mon programme en C++ puisque ma carte et ma configuration étaient bonnes. J'ai alors connecté mon contrôleur de servomoteurs à mon ordinateur (sous Linux) j'ai configuré le port série et j'ai lancé mon programme.
Et là, surprise ! Les servomoteurs fonctionnaient correctement ! Il est important de savoir que j'avais modifié mon programme pour que je puisse rentrer les données manuellement au lieu de les récupérer dans un fichier.txt. C'est en effet important de le préciser car le deuxième problème ne venait pas de mon programme, mais des données que j'envoyais !
Je m'explique, un servomoteur peut bouger à 180° (ou 360° si on le modifie). Donc en théorie, la valeur minimale est de 01 (car 00 désactive le servomoteur) et la maximale 255. Dans mon fichier.txt j'avais des données qui allaient de 01 à 255, mais je me suis rendu compte que si j'allais au delà de 245 ou en dessous de 04, mes servomoteurs tremblaient ! En réalité de 01 à 255, le servomoteur fait plus de 180° ! Il arrive donc en buté (d'où son tremblement car il essaye d'atteindre la position demandée). Au final avec une valeur minimale de 04 et maximale de 245 j'arrive à faire bouger mes servomoteurs à 180° !
Ce n'est pas fini, car récemment j'ai découvert un nouveau problème... Depuis le début de mon projet j'utilise une petite alimentation stabilisée pour alimenter ma Fox G20, le contrôleur et les servomoteurs. Mais pour faire ce que j'ai cité au dessus, j'utilisais ma batterie de 7,4V 1200mAH. Comme vous pouvez vous en douter, mon alimentation ne fournissait pas assez de courant pour tous les servomoteurs en fonctionnement. Ce qui provoquait encore une fois un tremblement. Et en désactivant les servomoteurs après leurs utilisations, la demande en courant était moins importante.
Ça fait beaucoup de texte pour pas grand chose mais je voulais expliquer mes problèmes et la démarche que j'ai utilisé pour les résoudre. Qui sait peut être que ça pourra aider quelqu'un...
En résumé pour les fainéants comme moi, j'avais trois problèmes. Ma configuration série n'était pas entièrement bonne, j'envoyais des données incorrectes et ma petite alimentation stabilisée ne fournissait pas assez de courant pour l'ensemble des servomoteurs.
Tous ça pour arriver à ce résultat :
http://www.youtube.com/watch?v=nnMEQeeaKUI
On peut voir que les servomoteurs résistent bien à la force même après une petite chorégraphie.
Enfin nous y voilà ! J'arrive à contrôler mes servomoteurs correctement ! Maintenant je devrais m'attaquer à la partie mécanique de mon robot. Mais comme je compte le faire voler, il faudrait que je prévois tout à l'avance (taille et emplacement des moteurs, encombrement de l'électronique et j'en passe...). C'est pour cela qu'à partir de maintenant je commence la partie volante de mon robot !
Juste pour information, placer un moteur entre deux servomoteurs était possible, voici la preuve en image :

Désolé je n'ai plus la source de cette photo que j'ai trouvé sur internet. Ce système provient d'un Tricoptère. Mais je ne vais pas compliquer les choses (enfin je ne pense pas). Je ne vais pas placer mes moteurs sur les cuisses de mon robot, mais sur le corps de manière à réaliser une bestiole de ce style :

Un exemple trouvé sur internet, il s'agit d'un Quadrirotor. Ne vous inquiétez pas je sais que ces appareils sont très difficile à réaliser, surtout avec des composants inhabituels pour ce type de réalisation. Mais ne partons pas défaitistes, qui ne tente rien à rien...
D'après mes recherches, pour faire voler un Quadrirotor il faut : des gyroscopes (1 axe ou 2 axes ?), un accéléromètre (2 ou 3 axes ?), un compas (3 axes) et en option un baromètre pour déterminer l'altitude.
Bien sûr il faut 4 moteurs, pour ma part je mettrai des moteurs brushless donc je vais devoir utiliser 4 ESC. Et ne pas oublier les hélices, ça peut être utile...
Je sais que ce forum n'est pas spécialisé en modélisme c'est pour cela que je vous demanderai juste des conseils au niveau de l'équipement électronique, car pour choisir parmi toutes ces offres je suis un peu perdu.
Voici les prochaines étapes de mon robot :
- Déterminer tout l'équipement électronique
- Faire fonctionner les gyroscopes, l'accéléromètre, le compas et pourquoi pas le baromètre.
- Réaliser la partie mécanique « béta »
- Ajouter la partie Quadrupède à la partie Quadrirotor
- Faire marcher le Quadrupède
- Déterminer les moteurs, ESC et hélices adéquats.
- Contrôler les moteurs avec la Fox G20
- Faire voler le Quadrirotor
Comme vous pouvez le constater j'ai du boulot qui m'attend... Mon objectif principal et d'avoir tout l'équipement électronique avant mi janvier, pour que je puisse bosser un peu dessus. Car après je suis en projet de BTS jusqu'à mai/juin donc pendant ce temps je ne pense pas que j'aurai le temps d'avancer...
Voilà je vais m'arrêter là pour aujourd'hui. Merci d'avance pour vos commentaires et à bientôt !