Bonjour à tous,
Je suis débutante en électronique et fait ça pour m'amuser, bricoler, je n'ai pas beaucoup de projet réussi à mon actif alors mes questions peuvent sembler naïve désolé d'avance :x
Je vous écris car je rencontre des problèmes à mettre en œuvre un montage qui contient :
- Une carte ARDUINO atmega
- Un shield RAMPS 1.4 pour piloter les moteurs pas à pas et les servo moteurs
- 2 servo moteurs WH-65KG
- 2 moteurs pas à pas NEMA17
- Une alimentation externe de 24V 6.5 A
Les documentations sur la carte RAMP ne sont pas nombreuse et parle essentiellement de faire une imprimante 3D avec ce qui n'est pas mon but, du coup pas d'info concernant les 4 ports servo moteurs présent sur la carte.
Je vous montre ci dessous mon montage :
Le code servos :
/*
Code 23 - Edurobot.ch, destiné à l'Arduino
Objectif : Faire bouger le bras d'un servomoteur dans un sens puis dans l'autre, indéfiniment
*/
//*****EN-TÊTE DECLARATIF*****
#include <Servo.h> // on inclut la bibliothèque pour piloter un servomoteur
Servo monServo1; // on crée l'objet monServo
Servo monServo2; // on crée l'objet monServo
void setup()
{
monServo1.attach(45); // on définit le Pin utilisé par le servomoteur
monServo2.attach(43); // on définit le Pin utilisé par le servomoteur
}
void loop()
{
for (int position = 0; position <=180; position ++){ // on crée une variable position qui prend des valeurs entre 0 à 180 degrés
monServo1.write(position); // le bras du servomoteur prend la position de la variable position
monServo2.write(position);
delay(15); // on attend 15 millisecondes
}
for (int position = 180; position >=0; position --){ // cette fois la variable position passe de 180 à 0°
monServo1.write(position); // le bras du servomoteur prend la position de la variable position
monServo2.write(position);
delay(15); // le bras du servomoteur prend la position de la variable position
}
}
Et celui des moteurs pas à pas
#define pinEnable 38 // Activation du driver/pilote moteur x
#define pinStep A0 // Signal de PAS X (avancement)moteur x
#define pinDir A1 // Direction X moteur x
void setup(){
pinMode( pinEnable, OUTPUT );
pinMode( pinDir , OUTPUT );
pinMode( pinStep , OUTPUT );
digitalWrite( pinEnable , LOW); // ajouté histoire d'être sûr que le driver du moteur est "activé".
}
void loop(){
int i = 0;
digitalWrite( pinDir , HIGH); // Direction avant
digitalWrite( pinStep , LOW); // Initialisation de la broche step
// Avance de 3 tours
for( i=0; i<16562; i++){
digitalWrite( pinStep, HIGH );
delay( 1 );
digitalWrite( pinStep, LOW );
delay( 1);
}
// Changer de direction
digitalWrite( pinDir , LOW); // Direction avant
// Refaire 3 tours dans l'autre sens
for( i=0; i<16562; i++){
digitalWrite( pinStep, HIGH );
delay( 1 );
digitalWrite( pinStep, LOW );
delay( 1 );
}
// Pas de step et pas d'ordre...
// l'axe du moteur est donc bloqué
delay( 5000 );
// déblocage de l'axe moteur
digitalWrite( pinEnable, HIGH ); // logique inversée
// Fin et blocage du programme
// Presser reset pour recommander
Serial.println("Fin de programme");
while( true );
}
Le soucis étant ici que j'ai déjà 2 atmega qui y sont passé, car en fonction du code et de l'alimentation branchée (extern 24V ou USB 5v), les choses ne se passent pas de la même manières, avec seulement les deux moteurs servo branchés et le code servo :
-> Alimentation USB uniquement, ça fonctionne, les moteurs tournent
-> Alimentation externe uniquement (24V) la carte à fais un petit nuage de fumé et maintenant, elle en USB, le programme s'exécute mais je ne peux plus la programmer, elle n'est plus détectée par le pc..
Je ne comprend pas ce que j'ai fais mal, ai-je mal saisie l'utilité de cette alim externe? doit elle toujours être supportée par l'alim usb en même temps?
J'ai mi cette alim extern 24 V 6.5A pour être sur que les moteurs ne manquent de rien mais j'ai réussi seulement à la faire fonctionner avec les moteurs pas à pas.
2 steppers branchés uniquement, code stepper et alim extern, ça tourne nickel !
Résultat avec chaque type d'alim, je n'ai que 2 de mes moteurs, je n'arrive pas trouver la configuration pour utiliser mes 4 moteurs simultanément.
Toutes critiques ou opinion est le bienvenue, mon objectif est le pilotage de 2 steppers et 2 servo moteurs, si il faut changer de matériel car la carte RAMP n'est pas adaptée, je suis aussi prêt à l'entendre ^^"
J'ai d'autre carte en stock mais elle ne semblent pas plus adaptée, par exemple une motor contrôle shield Adafruit pour gérer les 4 moteurs mais il me semble qu'elle n'est pas faite pour des NEMA17.
D'avance merci pour votre aide et je vous mets les quelques docs que j'ai trouvé sur internet pour la carte RAMP :