Go Down

Topic: Projet bipède, gestion de l'alimentation. (Read 3038 times) previous topic - next topic

Glopp76

Mar 21, 2008, 03:45 pm Last Edit: Mar 21, 2008, 03:57 pm by Glopp76 Reason: 1
Bonjour,

Je suis sur un projet de bipède (degrés de liberté de 6 sur chaque jambe) et je compte utiliser l'arduino pour le contrôler.
Seulement je ne suis encore qu'un petit débutant, niveau informatique pas de problème je suis en master, mais en ce qui concerne l'électronique... aïe!
Si certains veuillent bien prendre quelques minutes pour m'aider ce serrait vraiment très sympa.

Donc voila mon projet est de faire un bipède doté de 12 servomoteurs (SG-90) et d'un capteur IR.

Je voulais savoir lequel des deux schémas suivants était le plus approprié au niveau de l'alimentation? Les schémas sont-ils corrects?

Celui-ci représente une allimentation séparée, une alim de 4.8-6V (composée de 4-5 accu AAA de 1800 mAh) est destinée aux servomoteurs, puis une simple pile de 9V fournie l'alimentation de l'arduino (et celle du capteur).


Une autre solution qui me semble intéressante (du point du vue de mon projet) est de n'avoir qu'une seule batterie fournissant l'énergie à l'arduino, au capteur, ainsi qu'aux servomoteurs.
La pile de 9V serait remplacée par un pack de 8 à 10 accu AAA de 1800 mAh (9.6-12V) afin que celle-ci ne se décharge pas trop vite.



Je vous remercie tous d'avance.
Thomas

PS: Je remercie Nicolas Lassabe qui je penses ne m'en voudra pas pour lui avoir emprunté et modifié sauvagement son plan  ;) .
http://www.irit.fr/~Nicolas.Lassabe/robot.php

Jeromelab

Alimentation du Arduino separee, alimentation des servos sur une ligne 5V ne passant pas par le arduino si tu me demandes mon avis.
Il est toujours possible de rajouter un regulateur 5V ( un 7805 par exemple), pour convertir du 9-12V en 5V. Pour ton projet il t'en faudra probablement plusieurs, puisqu'un servo va pomper environ 1A (si pas plus) en peak. Le probleme c'est qu'ils vont dissiper de la chaleur (et donc perte d'energie). Conclusion une batterie de 5V c'est mieux (ou 6V si tes servos le permettent, puisqu'a la find de la charge de ta batterie tu as une perte).

Cela dit je ne sais pas comment sortir 12 pwm du arduino (le signal de controle pour les servos), d'origine et sans hack, il y en a seulement 5 disponibles.

Glopp76

Merci Jeromelab,

Ok je vais rester sur la premier schéma.

Tu es sur qu'il faille utiliser des sorties PWM pour contrôler les servomoteurs?
Sur le lien en bas de mon premier message, les servos ne sont pas placés sur les sorties PWM.
Aussi le lien qui suit explique le contraire:
http://fribotte.free.fr/bdtech/pic/pic_et_servo.html

P.S.: la consommation des SG-90 lorsqu'ils sont actifs est de 150mA.

Vincent

Salut
Pour les PWM il y a 2 solutions, soit en logiciel, et tu peux utiliser la sortie que tu veux, soit en matériel et tu dois utiliser les sorties spécifiques.
a+

shenakan

Aussi il ne faut pas que tu oublies de relier la masse de l'alimentation des tes moteurs à celle de l'arduino.




Glopp76

#5
Mar 23, 2008, 11:23 am Last Edit: Mar 23, 2008, 11:30 am by Glopp76 Reason: 1
Merci Vincent, donc pas de problème... ouf!... j'ai eu un peu peur    ;)

Sympa cette nouvelle vidéo Nicolas  :D , par contre ton quad se démonte un peu à l'arrière  ;)
C'est noté pour la masse, je remet donc le schéma correct pour tout le monde:



Petite question, est-il possible d'ajouter des I/O numériques/analogiques simplement sur l'arduino?
Si oui comment?
Juste pour une éventuelle évolution, ou un projet plus conséquent.

shenakan

Oui mon quad se démonte un peu à l'arrière :-) C'est pas trop grave pour l'instant. Le problème est de lui donner un comportement cohérent. Il ne tourne par encore comme je veux  :-/.  

Jeromelab

Pour rajouter des pwm le TLC5940. http://www.arduino.cc/playground/Learning/TLC5940

Pour rajouter des digital I/O, un 4051. http://www.arduino.cc/playground/Learning/4051

Pour rajouter des input analogue, un MC14067BCP. http://fluid-forms.com/de/CassiusHow.php

Il existe d'autres multiplexer/demultiplexer ...

Glopp76

Merci jeromelab, je lis ça dès que je peux   :)

Nicolas, si ton problème est l'implémentation de l'algorithme de déplacement je peux peut être t'aider.

En ce moment je travail avec le robot lego nxt, le but étant de le faire sortir de la pièce.
J'ai trouvé ce lien: http://www.robot-intelligence-artificielle.com/tutoriels/logique-floue/eviter-des-obstacles-en-logique-floue.html
Je viens d'implémenter l'algorithme, je le test demain je te tiendrai au courant.
Par contre j'ai du refaire les règles, j'ai peu être pas bien compris mais pour moi il manque des ordres pour certains tuples et certaines règles s'appliquent sur plusieurs tuples  :P.

Après on peu passer aux choses plus sérieuses avec la création d'un réseau de neurones.

Skall

#9
Mar 27, 2008, 04:44 pm Last Edit: Mar 27, 2008, 04:58 pm by Skall Reason: 1
Pas besoin de pwm pour des servos, il faut générer des pulses (0-1-0) de longueur adequat sur des sortie standard 5v.
Donc tu peux facilement controler 12 servos via l'arduino, pas de pb.
Les impulsions doivent avoir une largueur de 500 à 2500ms suivant l'angle que doit prendre le servo, et etre espacées de 70ms au moins il me semble.

En envoyant des impulsions de 500ms espacées de 70ms, ton servo ira gentilment se positionner à 0°.
En envoyant des impulsions de 2500ms espacées de 70ms, ton servo ira à 180° (s'il en est capable, j'ai des petits servos de 8g qui semblent etre limités à 120° environs... )
Pour les positions intermediaires, il faut calculer la largeur en fonction de l'angle de la position voulue.

Concernant, le GP2D12, j'ai le meme, et ca marche nickel, tu seras content...





Glopp76

Merci Skall  :D

Pour les impulsions on m'avait déjà mis au courant, merci pour ces précisions. Mes servomoteurs sont limités a 180° ce qui me semble parfait.
Si je comprends bien, l'angle où se positionne le servo est déterminé proportionnellement par rapport aux l'impulsions.
Des impulsions de 1500ms positionnera le servo a 90°, c'est ça?

Oui j'ai choisi un GP2D12 car j'ai lu beaucoup de bien sur celui-ci.  :)

Nicolas, pour l'algo je te dirais cela la semaine prochaine car le NXT déconnait.
A quatre sur l'algo plus notre prof on a pas compris  :-?, le robot se bloque entre la fin d'un System.out.print et l'appel d'une méthode de déplacement.
Le System.out est bien affiché dans la console mais le programme ne rentre jamais dans la méthode qui suit, et pour couronner le tout le robot reculait de manière très lente et en non-stop.
Bref que du n'importe quoi.
Donc je vois ça la prochaine fois avec des piles neuves (le problème venait peut être de là???) et je te tiens au courant si ça t'intéresse.

Skall

>Le System.out est bien affiché dans la console mais le programme ne rentre jamais dans la méthode qui suit,

Ca, ca ressemble drolement à un jardinage dans la pile... typiquement, ca arrive quand on ecrit au dela de la derniere case d'un tableau par exemple une chaine plus grande que la taille allouée pour cette variable...
c'est penible à debugger.... bonne chance...


Glopp76

Etrange tout de même, normalement il n't a aucun problème de pointeurs ...

PS: Au sujet de l'arduino et des impulsions sur les servos je t'ai envoyé un petit mp pour plus d'éclaircissement ;) +

shenakan

Quote
Etrange tout de même, normalement il n't a aucun problème de pointeurs ...

PS: Au sujet de l'arduino et des impulsions sur les servos je t'ai envoyé un petit mp pour plus d'éclaircissement ;) +


Regarde bien ton code si tu n'as des points virgules qui traînent après des boucles. Du style
while(i<100);
{
 i++;
}

Sinon c'est vrai que la logique floue ca peut-etre pas mal pour ce type de robot qui n'ont pas beaucoup de mémoire. Il y a pas mal d'autres techniques qui marchent aussi si on a un peu plus de mémoire.

shenakan

Quote
Quote
Etrange tout de même, normalement il n't a aucun problème de pointeurs ...

PS: Au sujet de l'arduino et des impulsions sur les servos je t'ai envoyé un petit mp pour plus d'éclaircissement ;) +


Regarde bien ton code si tu n'as des points virgules qui traînent après des boucles. Du style
while(i<100);
{
 i++;
}

Sinon c'est vrai que la logique floue ca peut-etre pas mal pour ce type de robot qui n'ont pas beaucoup de mémoire. Il y a pas mal d'autres techniques qui marchent aussi si on a un peu plus de mémoire. Mais je suis intéressé par les résultats que tu vas obtenir. Le problème avec ton robot va être l'équilibre. Tu vas définir les mouvements de base à la main et appliquer la logique floue pour donner les autres de hauts niveaux (directions, etc) ? Pour l'équilibre tu peux utiliser un gyroscope peut-être.



Go Up