Bien le bonjour.
J'expose mon souci, je souhaite contrôler la vitesse d'un moteur 220v via un potentiomètre et un capteur à effet hall.
J'ai, sur un nano, un potentiomètre sur la pin A0 qui sert à indiquer la vitesse à laquelle le moteur doit tourner, en pin D8 j'ai la sortie vers un optocoupleur, sur la pin D2 j'ai l'entrée du gradateur et sur la pin D3 l'entrée du capteur à effet hall.
Mon but est que si je demande 2500 RPM via le potentiomètre le moteur va grimper à cette vitesse et le capteur va faire en sorte que le moteur reste à cette vitesse.
Actuellement j'ai fait le gradateur et le capteur mais je n'arrive pas à allier les deux pour contrôler le moteur.
Auriez vous une manière de faire ???
Merci.
Voici le code actuel qui fonctionne mais séparément.
#include <LiquidCrystal_I2C.h>
int C = 20, L = 2;
LiquidCrystal_I2C lcd(0x27, C, L);
/* COMPTE TOURS */
float value = 0;
float rev = 0;
int rpm;
int oldtime = 0;
int time;
void isr()
{
rev++;
}
/* ************ */
#define triac_gate 8
#define pot A0
bool ZC = 0;
uint16_t alpha, alpha1;
void setup()
{
lcd.begin(C, L);
pinMode(triac_gate, OUTPUT);
digitalWrite(triac_gate, LOW);
attachInterrupt(0, ZC_detect, CHANGE); // PIN 2 GRADATEUR
attachInterrupt(1, isr, RISING); // PIN 3 COMPTE-TOURS
}
void ZC_detect()
{
ZC = 1;
}
void loop()
{
Cpt();
Gra();
}
// COMPTE-TOURS
void Cpt()
{
delay(1000);
detachInterrupt(1); //detaches the interrupt
time = millis() - oldtime; //finds the time
rpm = (rev / time) * 1010; //calculates rpm
oldtime = millis(); //saves the current time
rev = 0;
lcd.setCursor(0, 1); lcd.print("MOTEUR "); lcd.print(rpm); lcd.print(" RPM"); lcd.print(" ");
attachInterrupt(1, isr, RISING);
}
// GRADATEUR
void Gra()
{
if ( ZC)
{
if (alpha < 9500)
{
delayMicroseconds(alpha);
digitalWrite(triac_gate, HIGH);
delayMicroseconds(200);
digitalWrite(triac_gate, LOW);
}
ZC = 0;
alpha = ( 1023 - analogRead(pot) ) * 9.287;
alpha1 = ( analogRead(pot) ) * 9.287;
lcd.setCursor(0, 0); lcd.print("VALEUR "); lcd.print(alpha1); lcd.print(" RPM"); lcd.print(" ");
}
}
Une petite demande qui n'a rien à voir avec mon souci, est il possible de placer un signature en fin de sujet, je n'ai rien trouvé dans le profil qui le permette.