Bonjour a vous
Je souhaiterais débuter un projet en robotique, un quadrupède pour être précis.
Après avoir rechercher sur le Net divers éléments, tel que le mouvement a appliquer sur chaque pattes, la dimension des diverses pièces (servomoteur, contrôleur…etc) pour réalisation du "corp" par impression 3D
j'ai donc pris la décision d'acheter ce qui me sembler être le mieux a mon niveau.
x1 Arduino Mega
X1 PCA9685
X10 Servomoteurs
Après raccordement du PCA9685 a l'Arduino, en respectant bien le branchements,
- 5V Arduino => VCC du PCA9685
- GND // => GND //
- A4 (analog-in) => SDA //
- A5 (analog-in) => SCL //
Ensuite le raccordements de deux servomoteurs sur les Pins (1 et 9) du PCA9685.
Voila pour la partie câblage…
passons a la programmation, j'ai trouvé plusieurs scripts identiques.
j'en ai donc déduis, que le problème que je vais vous exposé ne vient pas de la (A voir)
//bibliothèque necessaire
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
//Servomoteurs utilisés
uint8_t servo1 = 1;
uint8_t servo9 = 9;
#define SERVOMIN 150
#define ANGLEMIN 1
#define SERVOMAX 600
#define ANGLEMAX 179
void setup() {
Serial.begin(9600);
Serial.println("Controle des Servo Moteur #1 et #9!");
pwm.begin();
pwm.setPWMFreq(60); // Les servo sont mis-à-jour à ~60 Hz
Serial.println("Fin de setup()");
}
void loop() {
//--- Controle du Servo ( 1 )
Serial.println("Servo #1 à 45 degrés");
int pulseLen = map( 45, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo1, 0, pulseLen);
delay(1000);
//--- Controle du Servo ( 9 )
Serial.println("Servo #9 à 30 degrés");
pulseLen = map( 30, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo9, 0, pulseLen);
delay(1000);
//--- Controle du Servo ( 1 )
Serial.println("Servo #1 à 120 degrés");
// Transformation de degré (0 à 180) en pulse (SERVOMIN à SERVOMAX)
pulseLen = map( 120, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo1, 0, pulseLen);
delay(1000);
//--- Controle du Servo ( 9 ) ---
Serial.println("Servo #9 à 150 degrés");
pulseLen = map( 150, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo9, 0, pulseLen);
delay(1000);
//--- Les deux servo à 0
Serial.println("Servo #1 et #9 à 150 degrés");
pulseLen = map( 0, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo1, 0, pulseLen);
pwm.setPWM(servo9, 0, pulseLen);
}
Le code est vérifié, puis téléversé, tous ce passe bien, les leds de l'arduino clignotte (apriori signe de bon fonctionnement) Néanmoins rien ne ce passe...
Pensant que cela venait de l'alimentation, j'ai donc décidé d'alimenter le PCA9685 (pensant que les servos ne recevais pas assez de puissance) en ajoutant un UBEC 5A, voulant en faire un quadrupède autonome, j'ai branché ce UBEC a un porte batterie.
le UBEC a une entrée de 7.4V - 50V
Et en sort du 5.5V - 5A
Mes batteries donnent du 11.1V - 9A
Et toujours rien, aucun signe de fonctionnement quel qu'il soit de mes servos >:(
Outre la solution, j'aimerais comprendre mon erreur, pour divers projets futur.
désolé du pavé, j'ai essayé de détaillé au mieux mon projet, si vous avez des avis ou demande je suis a votre écoutes