Bonjour,
je viens de terminer une petite machine pour mon job.
Cette machine nous sert à enrouler du feuillard à l’aide d’un moteur pas à pas, sur une longueur précise et sélectionnée.
Je me suis servi de l’atelier “clavier musical”(et l’échelle de résistance) où j’ai remplacé la fonction de la note par la commande du moteur qui, selon la valeur de la résistance, va me donner 6 longueurs différentes et j’y ai ajouté de quoi afficher la dimension fabriquée sur l’affichage LCD(3 programmes jumelés)
Mon soucis est la raccordement du pilote(un TB6600 ou copie, j’ai du trouver ce type de pilote car le moteur peut aller jusqu’à 4A, il faut ça pour tirer la bobine de feuillard pleine) sur la carte :
Actuellement, cela fonctionne mais pas comme je voudrais, c à d qu’une fois le tout allumé, impossible de tourner le moteur à la main!
Pour l’instant, tout est raccordé comme ceci :
ENA-, DIR- et PUL- sont raccordés ensembles vers GND de arduino
PUL+ vers une patte de Arduino(8 )
DIR+ vers patte Arduino(9)
J’ai bien cherché partout pour trouver une autre façon de raccorder UNO au TB6600 et j’en ai trouvé une ou deux mais pas encore essayé…
Quelqu’un aurait une solution?
Merci!
Ci dessous, le code employé, c’est pas encore top, je dois y mettre de l’ordre mais ça vous donne un aperçu!
#include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD
#include <Stepper.h>
// --- constantes des broches LCD ---
const int RS=2; //declaration constante de broche
const int E=3; //declaration constante de broche
const int D4=4; //declaration constante de broche
const int D5=5; //declaration constante de broche
const int D6=6; //declaration constante de broche
const int D7=7; //declaration constante de broche
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// initialisation LCD en mode 4 bits
// Parmaètres moteur pàp
const int NombrePas=200; // Nombre de pas du servomoteur
const int Pas_1=8; //declaration constante de broche
const int Pas_2=9; //declaration constante de broche
Stepper stepper(NombrePas, Pas_1, Pas_2); // crée un objet Stepper pour contrôler le moteur pas à pas
// Pas_1, Pas_2 commandent la 1ère phase
void setup() { // debut de la fonction setup()
// --- ici instructions à exécuter au démarrage ---
// Moteur pas à pas
pinMode(Pas_1, OUTPUT); //met la broche en sortie
pinMode(Pas_2, OUTPUT); //met la broche en sortie
lcd.begin(16,2); // Initialise le LCD avec 20 colonnes x 4 lignes
delay(10); // pause rapide pour laisser temps initialisation
// Test du LCD
lcd.print("LCD OK") ; // affiche la chaîne texte - message de test
delay(2000); // pause de 2 secondes
lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(10); // pour laisser temps effacer écran
}
void loop() {
int keyVal = analogRead(A0);
lcd.print(keyVal);
lcd.clear();
if (keyVal == 1023) {
lcd.print("Diam 66");//
stepper.setSpeed(4000);
for (int i=1; i<=NombrePas; i++){ // boucle de défilement du nombre de pas
stepper.step(320); // pas en sens positif
}
}
else if(keyVal >= 990 && keyVal <= 1010) {
lcd.print("Diam 80");//
stepper.setSpeed(3000);
for (int i=1; i<=NombrePas; i++){ // boucle de défilement du nombre de pas
stepper.step(384); // pas en sens positif
}
}
else if(keyVal >= 505 && keyVal <= 515) {
lcd.print("Diam 100");//
stepper.setSpeed(3000);
for (int i=1; i<=NombrePas; i++){ // boucle de défilement du nombre de pas
stepper.step(480); // pas en sens positif
}
}
else if(keyVal >= 30 && keyVal <= 35) {
lcd.print("Feuillard *kit*");//
stepper.setSpeed(3000);
for (int i=1; i<=NombrePas; i++){ // boucle de défilement du nombre de pas
stepper.step(-4); // pas en sens positif (-480)
}
}
else if(keyVal >= 900 && keyVal <= 945) {
lcd.print("Diam 55");//
stepper.setSpeed(3000);
for (int i=1; i<=NombrePas; i++){ // boucle de défilement du nombre de pas
stepper.step(288); // pas en sens positif
}
}
else if(keyVal >= 950 && keyVal <= 989) {
lcd.print("Diam 30");//
stepper.setSpeed(3000);
for (int i=1; i<=NombrePas; i++){ // boucle de défilement du nombre de pas
stepper.step(192); // pas en sens positif
}
}
lcd.clear();
delay(10);
lcd.print("Pret...");
delay(100);
}