Problème utilisation de carte RAMPS 1.4 pour 2 stepper et 2 servo

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 :

Bonjour @Julie77 et Bienvenue !!

je déplace ton message dans le Forum Francophone, il était dans la partie anglophone

Bonjour à toi.

A priori, la carte Ramp que tu as me semble convenir, les connecteurs dits "fins de course" doivent permettre de commander les servos si ce sont des 5V (il leur faut le 5V, le GND=0V, et un signal issu de l'Arduino.

La carte Arduino peut être alimentée:

  • en 5V par l'entrée/sortie 5V ou par l'USB
  • en 7V à 12V par l'entrée Vin ou par le connecteur jack

Si on alimente en 5V, Arduino est content, et je suppose que les pas à pas ont 5V pour l'alimentation, et 24V pour la puissance; si les servos sont en 5V cela doit fonctionner.

En alimentant en 24V, on grille au moins le régulateur Vin->5V de l'Arduino par exès de tension.
Si on alimente en 12V par la broche Vin ou par le connecteur jack, les servos vont tirer trop de courant, le régulateur ne pourra pas le délivrer, et il y a en général une remise à 0 de l'Arduino.

Pour alimenter les A4988, on doit lui donner une tension Vmoteur entre 8V et 35V, moins si les condensateurs de Ramp ne tiennent pas le 35V . En principe 12V doit passer, mais j'ai l'impression que les condensateurs sur la carte Ramp sont des 100µF 16V. Auquel cas une alimentation de 24V peut endommager, voir faire fumer les condensateurs. On en peut pas alimenter les A4988 en 5V sir Vmoteur.

Les servos consommant au moins 100mA, il faut une alimentation 5V externe ou l'USB

Le meilleur choix dans ton cas est donc deux alimentations, une de 5V, l'autre de 12V (peut être 24V mais ce n'est pas sûr).

Questions

  • Qu'y a-t-il d'écrit sur les condensateurs de la carte Ramp (les cylindres de 8mm)? En fonction de ce qui est écrit, il faut soit choisir une alimentation de tension inférieure, soit remplacer les condensateurs.
  • Quel est la référence des pas à pas? Certains s'alimentent en tension (5V ou 12V en général), d'autres en courant (A4988 assez bien adapté). Dans ce dernier cas, il est intéressant de régler le courant de l'A4988

Remarque
Nema17 est une norme qui définit la taille de la plaque du moteur (environ 1,7 pouce de côté), mais ne donne aucun renseignements sur le type de moteur ou sa puissance. En général on tourne sur des 10W statique, ce qui devait faire 30W au maximum. Une alim 24V/6A est donc large

Certes mais quelque part, une imprimante 3D pilote des moteurs pas-à-pas et accessoirement des servos. Donc il y a surement quelque chose à en tirer.
Par exemple, il y a ça

Il y a ça par exemple
qui permet de savoir que les servos sont connectés sur les sorties D4, D5, D6, D11. après ils se pilotent comme d'habitude, je dirais, en utilisant la librairie servo.

Autrement, plein d'infos un peu partout dans ce doc

Note; dans le lien https://reprap.org/wiki/RAMPS_24v, les 2 photos montrent des condensateurs de 35V. Dans le lien https://reprap.org/wiki/RAMPS_1.4, les condensateurs de 100µF ont une tension de service de 16V seulement. En fonction des condensateurs, on peut ou non utiliser le 24V pour les pas à pas.

Dans le premier lien, il est justement dit de vérifier la tension de service des condensateurs et de les passer éventuellement à 32V

Secondly you need to check the capacitors under the stepper drivers. These need to be 32 volt, cheaper RAMPS will have 16 volt capacitors

Bonjour à tous,

Tout dabord merci pour vos réponses !

Alors, oui les condencateurs sur ma carte sont bien des 35V.

Après avoir remis un peu les choses à plat suite à vos commentaires :

  • Mes moteurs pas à pas - 12V : pas à pas
  • Mes servo moteurs - 6/7.4/8.4 V : servo
  • Mon alim - 24V

J'avoue ne pas m'ettre posé beaucoup de question avant d'acheter la carte RAMP + alim 24V, mais la ça me semble évident que une alim 24V avec des moteurs 12V et 8V, ça colle pas trop.
Pour ce montage il serait peut être mieux que j'achète une alim 12V non?

Je viens de lire toute la partie adaptation 24V mais je me demande si ça a un interet pour moi vu que je n'ai aucun moteur 24V... en tout cas c'est sans doute ce que j'aurais du faire pour eviter de griller 2 cartes :x

Donc si j'en reviens à ta proposition vileroi :

  • 5V en USB, avec assez de puissance pour les servos (~1.5A max / servo)
  • 12V directement sur la carte RAMP

On aura donc les moteurs pas à pas qui seront alimenté par le 12V et les servos + arduino par le 5V? Pas de risque à avoir les deux alimentations simultanément branchée sur la carte?

En tout cas, je retiens de vos messages que le 24V sur la carte RAMP n'est pas une formalité du tout, que des adaptations sont nécessaire pour certaines utilisations et donc que c'est une opération risquée à eviter pour les novices comme moi, je vais surement opter pour une alim 12V.

Bonjour julie77

Etonnant, s'il y a un truc qui a de la doc, c'est bien celui-ci, il faut rechercher en anglais.

C'est là le problème, premièrement, 12V. suffit souvent, ensuite il y a la fameuse diode D1,
image
Si elle est présente, elle alimenta l'Arduino via la pin Vin (7-12V).
image
Donc, si tu alimentes ta RAMP en 24V, et que la diode est présente, tu envoies 24V sur Vin donc ça fume!
C'est expliqué ici, un peu avant le milieu.
Si tu veux quand même alimenter tes moteurs en 24V, tu dois dessouder la diode D1 et alimenter ton Arduino ou en 5V par l'USB ou la pin 5V ou bien par la pin Vin entre 7 et 12V.
Il est mieux d'alimenter ta RAMPS en 12V, tu n'aura pas besoin d'alimentation séparée.

Si tes servos fonctionnent, l'Arduino connecté en USB, c'est qu'ils n'ont besoin que de 5V, fourni par l'Arduino.

Cordialement
jpbbricole

Datasheet

Il ne faut surtout pas croire ce que disent les vendeurs! le 17HS4401 est bien un 1,7A par phase, mais en aucun cas un 12V; si on alimente une phase en 1,7A, la tension devrait être de 2,55V; si on met du 12V continus sur une phase, il grille. C'est un moteur qui est alimenté en courant par le A4988, lequel peut être alimenté aussi bien en 12V qu'en 24V. En 24V ses caractéristiques seraient meilleures. Mais c'est le A4988 qui va limiter les caractéristiques, car il n'est pas capable d'aller jusqu'à 1,7A par phase.
Normalement le A4988 doit se régler en courant, plus le courant est important, plus il y aura de couple mais plus l'ensemble chauffe.

A condition de retirer la diode, la Ramp peut être alimentée en 24V.
Il faut de toutes façon deux alimentations, l'une en 5V pour les servos et une en 12V ou 24V pour les pas à pas.
Deux alimentations ne posent pas de problèmes, leurs masses (ou GND ou V- ou 0V) sont reliées ensembles

Le 5V fourni par la carte Arduino suffit à alimenter la carte, mais pas les deux servos. Alimenté en 12V le régulateur peut fournir 170mA (voir Ritonduino)soit 20mA pour la carte et150mA pour les 2 servos. Faisable uniquement si les servos consomment moins de 75mA chacun, je n'ai pas la valeur du courant, mais je doute fort qu'il soit inférieur même à 200mA.

Bonsoir vileroi

J'ai vu ma c......e et ai supprimé mon message!

Cordialement
jpbbricole

Bonjour,

Merci à tous pour cette deuxième série de réponses, je crois que c'est assez claire oui, si 24V avec diode = arduino pas content !

Je vais d'abord tenter avec du 12v, mon projet risque de demander pas mal de force à mes moteurs, j'aviserais pour un passage sur du 24V sans la diode si ce n'est pas suffisant.

Question sommes toutes bète, si je passe sur deux alims, pour mettre sous tension, y a t il une alim à allumer en première? (ça serait bête de cramer une carte de plus pour si peu :face_with_hand_over_mouth:)

Je n'avais quand même pas assez potassé la doc avant de commencer, shame on me !
En même temps ce n'est pas habituel, pour moi en tout cas, de devoir déssouder des composants d'une carte pour certain cas d'utilisation ^^"

Merci encore à tous, Je reviendrais vers vous pour vous confirmer que le problème est résolut une fois que j'aurais reçu le nouvel Arduino pour faire le test :smiley:

C'est du courant qu'il faut pas de la tension pour avoir du couple.
Les moteurs ont une résistance interne ridiculement basse. Même en appliquant le courant max supporté par le moteur tu n'arriveras pas à 12V, comme l'a expliqué @vileroi au #9

Passer de 12V à 24V permet de retarder la chute du couple. Pour des vitesses inférieures à 1tr/s je ne suis pas certain que cela change grand chose.

Pour avoir le maximum de couple avec un 17HS4401, il faut régler le courant à 1,7A par phase, c'est à dire 1,7√2 = 2,4A Malheureusement le A4988 ne peut souvent pas aller jusque là. En conséquence pour avoir plus de couple, il faut changer de driver.
Mais avoir le couple maximum fait chauffer le moteur jusqu'à 60°C (extérieur) et diminue sa durée de vie. C'est pour cela qu'avec mes 17HS4401 j'utilise des A4988, et je me contente d'un couple un peu plus faible.

Si le réglage du courant est trop bas, le moteur n'aura pas assez de couple. Si le réglage est trop haut, le moteur chauffe inutilement. Régler correctement le courant (voir Moteur bipolaire commandé en courant) permet de disposer du couple requis.

Merci pour toutes ces précisions, ça me sera bien utiles pour mes ultimes reglagles :slight_smile:
Et pour l'ordre d'allumage des alims, une idée?
On peut les allumer comme on veut, ça ne risque rien?
J'aurais tendance à allumer l'usb en premier pour que l'arduino soit allumé et en suite l'alim externe, mais je préfère plus trop me faire confiance après mes 2 cartes grillées :pensive:

Je ne pense pas que l'ordre d'allumage soit important. C'est seulement les A4988 qui disposent des deux alims. Mais je n'ai jamais entendu parler de problèmes liés à l'ordre d'alimentation. Cela m'arrive pendant longtemps d'avoir une seule alim branchée, sans que je me fasse des soucis.

1 Like