Merci @villeroi.
Je vais continuer mes essais ce weekend et je vous tiens au courant ici ![]()
Dans le code qui broute, il affiche la valeur issu du potentiomètre. Cette valeur est stable ou pas?
vileroi:
Dans le code qui broute, il affiche la valeur issu du potentiomètre. Cette valeur est stable ou pas?
Oui la valeur est stable. j'ai essayé avec un autre moteur. ça broute aussi aléatoirement. Ca varie en fonction des limites de vitesses (delay) que je lui donne (ça marche à peu près avec mini 10000 microsec et maxi 600microsecondes). Mais la montée en vitesse n'est pas linéaire, il y a comme un palier entre 600 et 1000 micro secondes, où le moteur ne varie pas. Pourtant la valeur affichée par le potentiometre monte bien et est stable quand je lâche le potard ! .. peut être le réglage de mon Vref ?
J'ai réessayé un code simple (sans utilise le potentiomètre et ça fonctionne bien, bien qu'il vibre beaucoup à bas régime) c'est à ne rien y comprendre :
digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
// Makes 200 pulses for making one full cycle rotation
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(600);
digitalWrite(stepPin,LOW);
delayMicroseconds(600);
}
delay(1000); // One second delay
digitalWrite(dirPin,LOW); //Changes the rotations direction
// Makes 400 pulses for making two full cycle rotation
for(int x = 0; x < 400; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(5000);
digitalWrite(stepPin,LOW);
delayMicroseconds(5000);
}
delay(1000);
}
(Courage pour le confinement, comme tu disais, si comme j'imagine tu es dans une région confinée le weekend et merci encore pour ton aide ! )
Pour les vibrations, si elles apparaissent à basse vitesses, c'est dues aux résonances du moteur. J'arrive même à faire tourner un moteur en sens inverses. C'est pour cela que je suis en micros pas. Essaie de passer à minimum 4 micros pas, voir plus. En mode pas les broches de la carte A4988 M1 à M3 sont en l'air ou à la masse. Les passer toutes les trois au 5V passe le moteur en mode 16 micro pas. Il faut dans le même temps diviser les temporisation par 16 (37 au lieu de 600...)
Pour le palier, le potentiomètre donne une valeur qui est linéaire en ms, et donc dans le programme l'attente va être linéaire. Mais tu observes une vitesse et pas une période. La vitesse est proportionnelle à l'inverse du temps. La vitesse n'est donc pas linéaire par rapport au potentiomètre. Si tu veux avoir une vitesse linéaire, il faut que la fonction map te retourne une vitesse, et que tu en calcules l'inverse pour mettre dans les delay().
Merci, Je vais essayer ça quand je vais recevoir ma nouvelle carte UNO.... eh oui j' i bloqué l'upload de la mienne en y mettant un code qui a fichu le bordel ^^ décidemment...
Cependant, j'ai testé avec un controleur pour moteur tout fait comme en pj.. et là aussi j'ai des soucis. le moteur fait qqs steps toutes les 1 secondes au lieu de tourner . C'est à croire que je ne branche pas le moteur correctement pourtant j'ai tout essayé !!! ..ca commence à me rendre un peu fou cette histoire.
On est d'accord que pour le cablage Rouge A+ Bleu A- Vert B+ Noir B- ??

j'ai envie de dire
Noir A+ Vert A- Rouge B+ Bleu B-
Pour le câblage, je n'ai jamais fait confiance aux couleurs (j'ai aussi des moteurs sans fils). Je préfère identifier les fils, ou au moins les vérifier.
Ne mettez pas un "Serial.println (...)" dans une boucle dont le temps d'exécution est censé durer le temps d'envoi d'une impulsion à un moteur pas à pas. D'une part vous ne maitrisez pas la durée de cette fonction, donc la vitesse de rotation du moteur, d'autre part cette fonction est bufferisée, c'est à dire qu'elle est rapide tant que le buffer tampon n'est pas plein, puis elle se met en attente de libération du buffer. Et devinez ce que fait votre moteur lorsqu'il ne reçoit pas des impulsions régulières pour tourner ? IL broute...
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.