Je suis à la fin d'un projet de thermostat qui nécessite l'utilisation d'un moteur pas à pas (fermeture et ouverture d'une vanne légère)
J'utilise un clone chinois UNO, un driver Polulu A4988, un moteur nema 17 (17HS4401) et une alimentation 24V 10 A
Afin de réaliser des tests, j'ai écrit un petit programme afin de faire tourner le moteur dans un sens pendant 200 pas puis s'arrêter puis 200 dans l'autre.
Le soucis est que le moteur change aléatoirement de sens.... (Parfois il tourne correctement pendant 2/3/4/5/.... cycles et puis enchaine 2 fois la même rotation)
j'ai essayé de mettre le pin de direction directement à la masse ou au 5V de l'arduino rien n'y fait... J'ai essayé plusieurs driver A4988 différents, même résultat.
le code :
const int dirPin = 8;
const int stepPin = 9;
void setup()
{
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
}
void loop()
{
for (int x = 0 ; x<200; x++){
digitalWrite(dirPin, HIGH);
digitalWrite(stepPin, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin, LOW);
delayMicroseconds(500);
}
delay(5000);
for (int x = 0; x<200; x++){
digitalWrite(dirPin, LOW);
digitalWrite(stepPin, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin, LOW);
delayMicroseconds(500);
}
delay(5000);
}
Si quelqu'un peut m'aider, ca serait bien sympa je suis bloqué
sinon vous êtes sûr de vos delayMicroseconds ? vous en attendez quoi?
comment les Steps sont configurés?
Sinon la doc dit aussi
Warning: This carrier board uses low-ESR ceramic capacitors, which makes it susceptible to destructive LC voltage spikes, especially when using power leads longer than a few inches. Under the right conditions, these spikes can exceed the 35 V maximum voltage rating for the A4988 and permanently damage the board, even when the motor supply voltage is as low as 12 V. One way to protect the driver from such spikes is to put a large (at least 47 µF) electrolytic capacitor across motor power (VMOT) and ground somewhere close to the board.
Par expérience, avec un driver A4988, on peut avoir quelques déboires :
Il faut absolument câbler ensemble les pins Reset et Sleep, sinon le driver se réinitialise quand la broche Reset est flottante, et ça bug (le moteur vibre sans tourner, ou fait n'importe quoi).
Poser un doigt sur la puce du A4988 pour vérifier que ça ne surchauffe pas (sinon la protection thermique intégrée peut couper et mettre le bazar avec une réinitialisation).
Mettre une capa de 100uF sur Vmot pour stabiliser la tension moteur par précaution.
Le petit radiateur thermique en aluminium sur la puce carrée peut éventuellement court-circuiter deux pins voisines s'il est collé trop près.
Le code posté plus haut fonctionne chez moi.
Si l'alimentation du moteur est trop faible, ou si le délai entre pulses Steps est trop bref ça ne tourne pas bien.
Tester avec un autre Driver A4988, la puce est relativement fragile en cas de fausse manip', par exemple une confusion (même momentanée) entre Vmot (tension moteur 8 à 35V) et Vdd (5V) claque le chip.
Je conseille de placer provisoirement une LED + 470 ohm sur Dir pour voir si le signal de direction est OK lors des inversions de sens.
j ai un condensateur en dérivation sur Vmot de 100uF (il supporte 25 V)
j ai vérifié le pin Dir au multimètre, les voltage sont bons et de toute maniere, même en branchant à la masse (0,01 ou 0,00 V vérifié au multimètre), il y a changement de sens aléatoire.
j ai essayé avec plusieurs driver (3), je vais tester les autres que j ai en rab mais, ca serait pas de bol que 3 des drivers ne soit pas fonctionnels.
--tous les pins flottant du driver sont à la masse et le reset est relié au sleep, j ai vraiment suivi à la lettre la doc.
-j ai testé de modifier Vref avec le potar du driver, a part empêcher le moteur de tourner a faible courant ça ne change rien.
le driver ne chauffe pas vraiment et il n'y a pas de radiateur alu qui provoquerait un court circuit.
Faits remarquables :
si je modifie légèrement le delayMicroseconds, mon moteur fait de légers vas et viens (un ou quelques steps) et ne fait pas les 200 programmés
le moteur est censé avoir des steps de 1,8 degré soit 200 steps pas tour. Quand le moteur fonctionne sans ses vas et viens (delay de 500 micro seconds), il ne fait pas vraiment un tour complet, peut etre les 4/5e environ.
Quelles manipulations, vérifications, changements de codes pourrais je faire pour trouver l'origine de problème et éventuellement le résoudre ?
Je suis à court d'idée et je suis novice dans les stepper et plus généralement en arduino
Merci pour cette piste, je vais essayer d'augme ter significativement le delay mais dns mes souvenirs, javais déjà essayé et le moteur faisait les fameux va et vient évoqués plus haut.
En ce qui concernet la puissant de l'alim, je ne pense pas qu elle soit en cause, elle est capable de débiter du 10A en théorie...
Serait ce possible que la section et qualité de mes fils du montage soient en cause ? (ce sont des fils chinois ultra fin, l'intensité est donc peut être limitëe :/)
des fils trop fins peuvent générer une chute de tension, mais cela pourrait être compensé par la commande en courant effectuée par le driver, et avec 24v d'alim on "doit" avoir assez de marge
il faut ajuster ce courant en fonction du moteur et de sa charge, tu trouveras les tutos qu'il faut. Je ne pense malheureusement pas qu'il s'agisse de la solution à ton problème, vu les symptômes, mais après avoir fait les choses correctement tu pourras revenir te plaindre en toute légitimité
Désolé pour tant de temps d'absence. J'ai été extrêmement pris par mon travail et ma vie personnelle. J'ai relancé mon projet aujourd'hui (à l'arrêt depuis).
J'ai refais tous les branchements, tout vérifié et le tout reste très capricieux. Avec de bon réglages (pulse, tension de référence, tension de sortie de l'alimentation), j'arrive à avoir un système plutôt stable mais qui me fait parfois des surprises en tournant dans le même sens deux fois consécutivement alors que le programme lui demande d'alterner.
A noter que le moteur réagit plutôt correctement avec un pulse de 500 micro-secondes et qu'il ne fonctionne pas du tout à basse vitesse quelque soit le réglage du driver en terme de courant/tension.
Étant donné que le moteur va entrainer une courroie et des roues dentées avec tripleur de couple pour ouvrir une vanne de radiateur, je n'ai pas le droit à l'erreur. Si le moteur s'actionne deux fois dans le même sens, il va vouloir tourner la vanne déjà en buté et risque de cramer.
J'ai enfin reçu l'intégralité de ma commande. Un nouveau driver TB66000 et un moteur nema 23 (HANPOSE 23HS5628).
Tout fonctionne à merveille même si l'intensité maximale fournie par le constructeur (chinois) n'existe que dans son imaginaire. Officiellement il tourne à 2.8A et déjà à 2,5A il saute des pas.
Je me suis permis d'essayer le TB6600 avec le nema 17 de mes premiers essais et le problème persiste sauf au bout de 20 mins quand le moteur est bien chaud pour ne pas dire brulant. Dans ce cas le moteur ne se trompe (quasi) jamais de sens. Le problème venait donc du moteur à priori. Peu importe, au final le driver TB6600 semble beaucoup plus fiable et facile d'utilisation que le A4988.
Merci quand même de m'avoir proposé une batterie de solutions possible ;).