Go Down

Topic: Hexapode avec Arduino Mega 2650 (Read 14 times) previous topic - next topic

piflechien54

Merci pour ta réponse  :)

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  ;)
@plus
Proverbe Tibétain : Un mensonge est un saut du haut du toit

Teiva

#11
Dec 18, 2010, 06:52 pm Last Edit: Dec 18, 2010, 06:55 pm by Teiva Reason: 1
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


www.Zartronic.fr : Arduino & Robotique

Hexa Emails

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!)
J'apprends tous les jours!

piflechien54

@Teiva, @MrAlexis44600 : Merci pour vos réponses  :)
@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 :)

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... :)

@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  ;)
Proverbe Tibétain : Un mensonge est un saut du haut du toit

Hexa Emails

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 :ici
j'ai encore pas mal de calibration à faire, je me suis inspiré d'un tuto du site LetsMakeRobots.
J'apprends tous les jours!

Go Up