Pages: [1] 2   Go Down
Author Topic: Hexapode avec Arduino Mega 2650  (Read 12817 times)
0 Members and 1 Guest are viewing this topic.
Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour @toutes et @tous  smiley

Voilà je vous écris car cela fait plus de 4ans que je bosse sur un projet assez simple : un hexapode à 12 servos (2 par pattes)
le seul hic c'est que je suis un débutant en programmation....

Au début je me suis essayer sur un µc ATMega avec programmateur en langage C, mais impossible de créer les différents signaux PWM pour chaque servos, donc j'ai rangé mon projet.

Depuis peu j'utilise la carte Arduino Mega 2650. (moins d'un mois)
Grâce à la bibliothèque servo.h, j'ai pu faire bouger 2 servos en moins de 10 min de programmation \^^/

j'ai donc programmer mes différentes phases de marches de mon robot,
en utilisant des fonctions utilisateurs ( void fonction (void) )

En lançant mon programme pour faire un test :
tous mes servos se sont mis à trembler de façon désordonner  :'(

Après avoir fait plusieurs test, je peux contrôler 4 pattes (8 servos) sans problèmes mais pas plus..  :'(

Je précise ma conception technique :
 - Alimentation 220/4,5V pour la puissance des servos
 - Alimentation via le cable usb pour la carte Arduino
 - 12 servos FUTABA S3003
 - (GND carte arduino relié au GND puissance servo)
 - squelette robot tout en balsa (ultra léger)

Voici mon programme : -> http://www.files-save.com/fr/download-2d71a76389ab32311bf69c02a1649d39.html
(pas assez de place pour le mettre  :'( )
je précise que dans la fonction loop(), je n'ai mis que 2 fonctions afin, bien sûr de voir si cela fonctionnait bien.

Merci pour toutes vos remarques et vos aides  smiley
@plus
« Last Edit: December 12, 2010, 11:11:59 am by piflechien54 » Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

France - Burgundy
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Magnifique projet  smiley-wink!

Aurais-tu une video du résultat à nous montrer et/ou éventuellement explicative smiley ?

Merci.
Joe.
Logged

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci, smiley
pour l'instant j'ai pas de photos, dsl
pour des explications plus détaillées voilà :

sur l'arduino 2650 :
- pour les signaux j'ai branché les servos 1 à 12 sur les broches PWM 2 à 13
- l'alimentation des servos est branché sur une alimentation 4,5V 500mA
entouré de 2 couple de condensateurs 100µF et 100nF.

Quand je lance mon programme, tous les servos tremblent et agissent à leurs guises... au lieu de respecter mon programme  :'(
=> Je voudrais savoir d'où peut venir ses interférences ???  :-/
Quelqu'un aurait une idée ? siouplay  smiley-wink ?
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

0
Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour, avant tout bravo, je souhaite me lancer moi aussi (un jour) dans la création d'un hexapode, j'espère apprendre beaucoup de ton propre projet! (pour l'instant les finances me bloquent un peu, prévoir de 100 à 150€ rien que pour les servos, + qq uns de rechange au cas où...)

J'ai lu le programme, je sais pas si il est optimisé au max mais y a une sacré quantité de données!
je comprends pas pourquoi tu fais ça:
  
Code:
//Robot se lève sur Neutre et reste plié
  for(posdepli = HAUT; posdepli <= NEUTRE; posdepli += 5)
  {
    HNB1.write(posdepli);
    HNB3.write(posdepli);
    HNB5.write(posdepli);
    HNB7.write(posdepli);
    HNB9.write(posdepli);
    HNB11.write(posdepli);
    delay(20);
  }
Au lieu de dire à tes servo d'aller directement à la position "neutre"?

Sinon niveau alim les servos ne disposent que de 500mA au total à se partager? Creuser à ce niveau peut être, 500 mA ça me parait léger, et niveau tension ils sont légèrement sous alimentés (une rapide recherche me donne 4.8/6V), c'est peut etre problématique aussi?

EDIT: http://www.planete-sciences.org/robot/boiteabots/components/com_mambowiki/index.php/Servo-moteurs
"Quand il force, il peut consommer facilement jusqu'à 600mA."
travailles sur l'alimentation, pourquoi pas utiliser http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1288890821?
« Last Edit: December 12, 2010, 02:39:11 pm by MrAlexis44600 » Logged

J'apprends tous les jours!

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3417
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
l'alimentation des servos est branché sur une alimentation 4,5V 500mA
Je doute que 500mA soient suffisants pour alimenter une douzaine de servos. Personnellement je viserais plutôt les 5V et 4A minimum.
« Last Edit: December 13, 2010, 02:51:53 am by fdufnews » Logged

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@MrAlexis44600 : Merci smiley
mon petit bout de programme est simple :
quand mon robot est complètement arrêté, il est replié sur lui-même (les pattes contres lui et posé au sol)
donc la boucle For consiste à le faire monter en position NEUTRE ( servo à 90° soit à mi-hauteur) en incrémentant petit à petit, afin de ne pas trop forcer sur les servos.
(car il va devoir lever entièrement son poid d'un coup, et si je dis à mes servo d'aller directement de HAUT à NEUTRE alors ils vont essayer d'y aller d'un coup et tirer un max de jus  :o)
Mais effectivement j'aurais pu mettre d'aller de HAUT à NEUTRE directement. ton raisonnement est juste smiley
et puis je voulais aussi faire un effet de style " il se lève doucement " comme si " il se réveillait " -> IT'S ALIVE !!!! ALIVE !!!!!  ;D

@MrAlexis44600 et @fdufnews : Merci pour vos conseils concernant les alims, je vais tester cela cet aprèm (je vais devoir démonter mon pc, c'est ma mère qui va gueuler  ;D )

et je vous tiendrais au courant, avec photos si j'arrive à les mettre  smiley-wink

p.s : comment faites vous pour insérer du code "encadré" ?  :-?
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3417
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
@MrAlexis44600 et @fdufnews : Merci pour vos conseils concernant les alims, je vais tester cela cet aprèm (je vais devoir démonter mon pc, c'est ma mère qui va gueuler  Grin )
Pourquoi démonter le PC pour l'alimentation de puissance?

Quote
p.s : comment faites vous pour insérer du code "encadré" ?
Il faut cliquer sur l'icône avec un dièse et insérer le code entre les balises.
Logged

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

MERCI pour vos conseils, avec une alim de pc, mes servos ne tremblent plus \^^/

Quote
fdufnews : Pourquoi démonter le PC pour l'alimentation de puissance?
parce que j'en ai un vieux sous le coude

Voilà quelques photos :
Mon hexapode dans sa boite :  8-)


Tous les servos alignés pour les tests d'alimentation :  smiley-razz


je vais modifier les pattes de mon robot, et améliorer mon code   smiley-wink
Pour ceux qui ont des questions n'hésitez pas  smiley-wink je ne mord pas  ;D
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour @toutes et @tous  smiley,

j'ai une petite question sur mon arduino  :-/ :
il peut générer 14 signaux PWM (port n° 13 à 0 : avec 1 = TX0 et 0 = RX0 )
Cependant y aurait-il un moyen afin de lui faire générer 4 signaux PWM supplémentaire ? (pour pouvoir commander 18 servos  smiley-wink )

Désolé si cette question est toute conne, mais je débute  smiley-wink
Merci d'avance pour vos réponses

p.s : je vous tiens au courant de l'évolution de mon robot.  smiley-wink
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

0
Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je pilote mes servos sur des ports digitaux, qui ne sont pas forcements PWM. Avec une Mega ça t'ouvre pas mal de perspectives smiley-wink
Il faut bien différencier la fonction PWM apportée par Arduino et la modulation de rapport cyclique que tu peux faire manuellement sur tous les autres ports.
« Last Edit: December 17, 2010, 02:41:26 pm by MrAlexis44600 » Logged

J'apprends tous les jours!

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ta réponse  smiley

Tu veux dire, que je peux faire un signal "PWM" sur les ports digitaux en faisant moduler un signal avec de timers ?

cela me rappel de mauvais souvenir  :-/ c'est ce que j'essayer de programmer sur mon ATmega8 et que j'ai jamais réussi à faire  :'(
(avec 2 timers et variation du signal sur chaque port toutes les 20ms... )

il y aurait moyen d'avoir un petit aiguillage de ta part ? stp  smiley-wink
@plus
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

France, Nice
Offline Offline
Full Member
***
Karma: 3
Posts: 194
www.Zartronic.fr
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour ton besoins c'est normalement la librairie Servo qu'il faut que tu utilises, as-tu refais un essai, ça avais l'air de bugger au début ?

Dans ta boucle de 'levé en douceur" , il faut que tu mettes une tempo de plus de 100ms entre les "pas", avec 20ms tu vas aussi vite que le rafraichissement des servos.

N'oublie pas que les servos sont fait pour le modélisme, et en modélisme on alimente avec des batteries qui peuvent sortir en pointe de 5 à 120A ...
Tu devrais faire tes essaies avec une batterie de modélisme, tu aurais surement moins de problèmes ...

A+ Teiva

www.Zartronic.fr : Robots & Arduino
« Last Edit: December 18, 2010, 12:55:11 pm by Teiva » Logged


www.Zartronic.fr : Arduino & Robotique

0
Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je suis d'accord pour la batterie, si je devait compter le nombre de fois où je me suis arraché les cheveux lorsque mon montage ne fonctionnait pas alors que ça venait de l'alimentation...
Pour piloter les servos, la librairie servo est la mieux. après à mon IUT on utilisait l'outil PulseOut(pin,délai) qui fasait ceci:
mettre à l'état 1 le pin
attendre le délai
mettre à 0

il fallait donc ensuite compléter avec des tempos... un peu lourd comparé à la librairie servo toute faite!

je te la donne si tu veux t'en servir: ajoute ça au début de ton programme:

#define PulseOut(pin, us) digitalWrite(pin, HIGH); delayMicroseconds(us); digitalWrite(pin, LOW)

puis tu l'utilises comme cela:

PulseOut(BrocheServoGauche, ZeroServoGauche);

(ZeroServoGauche est un temps, pour lequel mon servo à rotation continue ne bougeait pas du tout)

mais perso je n'utilise plus que la librairie servo, bien plus pratique.

Et tu peux utiliser la librairie servo sur des ports digitaux non? (je veux dire "non-pwm") c'est ce que je fais sur ma duelaminove....
Du coup tu peux commander énormément de servo (voir le détail de la librairie: http://www.arduino.cc/en/Reference/Servo => 48 servos!)
Logged

J'apprends tous les jours!

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Teiva, @MrAlexis44600 : Merci pour vos réponses  smiley
@Teiva :
pour mes tests j'utilisais une alim 220V, mais qui n'était pas assez puissante mais avec une alim de pc tous va bien smiley

Pour info : Avec l'ampèremètre j'ai mesuré un pic de 1,4A (de qqles sec ) lorsque tous les servos bougent ensemble
Tant que je n'ai pas finis mon robot je n'utilises pas de batteries mais sinon j'en ai 3 de 800mAh mais il faut que je les chargent... smiley

@MrAlexis44600 :
La librairie "servo.h" peut diriger jusqu'à 48 servos   O_o Wahou !!!  :o
(merci pour le lien j'avais pas vu )
Je vais pouvoir m'éclater \^^/
j'essaye ça pendant les vacances et je vous tiens au courant.

Encore MERCI  smiley-wink
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

0
Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui, je pense qu'avec 48 servos tu as de la marge... perso je suis en train de me faire un bras robotisé, équipé d'une pince, vu que je vois que tu as l'air de te débrouiller dans le travail du bois, ça pourrait peut être t'intéresser? si tu as des servomoteurs en rab', même pas très puissants... Je te montre mon résultat :
j'ai encore pas mal de calibration à faire, je me suis inspiré d'un tuto du site LetsMakeRobots.
Logged

J'apprends tous les jours!

Pages: [1] 2   Go Up
Jump to: