Bonjour à tous,
Je me suis lancé dans un gros projet Arduino pour Noël, et je rencontre quelques soucis.
Le projet est sur le papier relativement simple :
Faire tourner 24 servomoteurs (MG 996R) séparément et aléatoirement.
Les moteurs peuvent ne peuvent prendre que 3 valeurs : 0°, 90° ou 180°.
Ainsi, je rencontre plusieurs problèmes :
Premièrement comment alimenter tous les servomoteurs en branchant le tout (moteur + arduino MEGA ) sur le 220V ?
Comment faire pour que les moteurs tournent en même temps mais aléatoirement [par exemple toutes les (entre 2 et 60 secondes)], et adoptent l’une des trois valeurs également aléatoirement (0°, 90° ou 180°) ?
Merci par avance pour votre aide !
Dys
bonjour,
il te faut connaitre l'ampérage que consomme un servo, tu multiplie par le nb de servo et prend de la marge.
ils peuvent accepter dans les 4.8-6v d'après lecture.
donc une alim délivrant 5v devrait le faire avec assez de puissance.
arduino ne faisant pas de multitache, il faut tricher un peut.
j'utiliserai ceci par exemple cpntroller 16 servo
Merci Infobarquee pour tes réponses !
J'ai jeté un œil sur le contrôleur 16 servos, mais il me semble que le Mega puisse en contrôler jusqu’à 48 en pwm avec la librairie servo : "The Servo library supports up to 12 motors on most Arduino boards and 48 on the Arduino Mega." Par contre , il faut les alimenter autrement !
Sinon, tu as raison, les servo sont des 4.8-6V et 500/800 Milliampères. Il me faut donc, pour être large, une alim 5 V, 24 Ampères. Par contre, je ne m'y connais pas du tout en alimentation. As-tu des références qui me permettent de brancher le tout en 24 A?
Je suis également en train de créer le code, mais je n'arrive pas à contrôler plusieurs moteurs en même temps : mon code ne me permet de les bouger à la suite...
N'y aurait-il pas des bases de code ou tous les servo bougent en même temps ?
Merci !
oui, prend un exemple d'un code de voiture telecommandé ou robot a 4 roue.
Soit 4 servo commandé en même temps...
Donc si tu sais faire pour 4, tu sais le faire pour 24
Merci beaucoup pour les réponses !
Pour l'instant, j'essaye déjà de faire un code pour un moteur, ce qui est tout de même assez difficile !
J'ai réussi à faire tourner un moteur entre deux valeurs, avec un temps d'attente entre les boucles presque aléatoire, en voici le code :
//version random 1 moteur 2 valeurs Ok
#include <Servo.h>
Servo myServo;
byte servoPos = 0;
int temps;
long randomNumber;
void setup(){
Serial.begin(9600);
myServo.attach(9);
myServo.write(0);
delay(300);
}
void loop()
{
randomNumber = random((5*2000));
servoPos = servoMove(180, 90, 0);
servoPos = servoMove(0, 158, 63);
}
byte servoMove(byte moveToPos, byte fromPos, byte vel){
int dir = int(fromPos) - int(moveToPos);
byte pos = fromPos;
myServo.attach(9); // attaches the servo on pin 9 to the servo object
while(pos != moveToPos){
if(dir < 0){
pos++;
}
if(dir < 60){
pos++;
}
if(dir > 61){
pos--;
}
myServo.write(pos);
delay(20);
}
myServo.detach();
delay(randomNumber);
myServo.attach(9); // attaches the servo on pin 9 to the servo object
return pos;
}
Salut Dysnomina !
Je suis tombé par hasard sur ton post et me demandais si tu avais fini ton projet avec succès ?!
Débutant en programmation, j'ai un projet de sculpture cinétique qui nécessiterait la même configuration que toi ...
Alors, si tu as le CODE et le plan du branchement à poster ici ce serait juste formidable !
D'avance merci !