Bonsoir à tous
j'ai bossé un peu sur le code et la manière avec mes 2 ILS et la fonction comptage-décomptage automatique
Pour les rebonds des ILS , j'ai soudé aux bornes un condo de 100 nf et mis un délai au niveau soft de 10 millisec
Après quelques essais j'ai une version avec "interruption" qui fonctionne bien
La partie "setup" donne ceci
Code:
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Compteur");
// (note: line 1 is the second line, since counting begins with 0):
lcd.setCursor(12,0);
lcd.print(Compteur);
// Initialise les entrées A et B
pinMode(ILS_A, INPUT);
pinMode(ILS_B, INPUT);
attachInterrupt(1, GestionInterruptionILS_A, HIGH);
}
La partie "loop" ceci
Code:
void loop() {
while(CountUp==1) // CW motion
{
CountUp=0; // Reset the flag
Compteur++;
}
while(CountDown==1) // CCW
{
CountDown=0; // clear the flag
Compteur--;
}
// set the cursor to column 12, line 0
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(12,0);
// reset the screen:
lcd.print(" ");
// set the cursor to column 12, line 0
lcd.setCursor(12,0);
lcd.print(Compteur/2);
Dfil = 0.215;
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0,1);
// print the number of seconds since reset:
lcd.print("Diam fil");
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(11,1);
lcd.print(Dfil,4);
}
Ey enfin la partie interruption comme ceci
Code:
// Routine de service d'interruption attachée à la voie A de la bobineuse
void GestionInterruptionILS_A()
{
delay(10);
if (digitalRead(ILS_B) == digitalRead(ILS_A)) {
CountDown=1;
}
else {
CountUp=1;
}
}
Le code complet dans l'archive
Fichier(s) joint(s):
Compteur_decompteur_V2.tar.bz2 [1.59 Kio]
Téléchargé 278 fois
Les différent essai du mode de déclenchement me laisse dans le doute
Avec "RISING" le fonctionnement dérape quelques fois
visible par l'incrément ou décrément de 2 unités
Avec "HIGH" chaque incrément et décrément comptabilise 2 unités
d'ou la ligne Compteur/2 , mais ça fonctionne sans erreur
lorsque je fait tourner l'axe principal de la bobineuse
Vos commentaires seront instructif
Je continue par le câblage du PCB et la gestion moteur
Bonne soirée