Orar: Luni-Vineri 09:00 - 17:00;Telefon: 636125079-2
Encoder Infrarosu Profil U

Descriere produs

Encoder Infrarosu tip U. Datorita dispunerii inteligente a emitatorului si a receptorului IR poate fi folosit cu usurinta pentru masurarea vitezei, a numarului de rotatii etc

Detalii tehnice

Tensiune de lucru 5V
Circuit LM393
Comunicare impuls
Dimensiuni 32mm*11mm h-20mm

 

Cod exemplu:

#define SENSOR_PIN 2
#define DIR_PIN 4
#define PWM_PIN 5
#define PPR 40  //20 * 2 (on change)
volatile long encCount = 0;
long lastEncCount = 0;
bool currentDir = true;
int currentPwm = 0;
double currentRPM = 0;
long pm = 0;
void setup() 
{
  Serial.begin(115200);
  
  pinMode(DIR_PIN, OUTPUT);
  pinMode(PWM_PIN, OUTPUT);
  pinMode(SENSOR_PIN, INPUT_PULLUP);
  attachInterrupt(0, enc_isr, CHANGE);
  analogWrite(PWM_PIN, 0);
}
void enc_isr()
{
  if(currentDir) encCount++;
  else encCount--;
}
void loop() 
{
  long tnow = millis();
  
  if(tnow - pm >= 250)
  {
    pm = tnow;
    currentRPM = double(encCount - lastEncCount);  
    lastEncCount = encCount;
    currentRPM = currentRPM * 4.0 * 60.0;
    currentRPM = currentRPM / double(PPR);
    
    Serial.println(currentRPM);
  }
  if(Serial.available())
  {
    char c = Serial.read();
    if(c == '+')
      currentPwm += 10;
    else if(c == '-')
      currentPwm -= 10;
    else if(c == '0')
      currentPwm = 0;
    if(currentPwm > 255) currentPwm = 255;
    if(currentPwm < -255) currentPwm = -255;
  }
  digitalWrite(DIR_PIN, currentPwm >= 0);
  analogWrite(PWM_PIN, abs(currentPwm));
}