Gabellichtschranke (Aufbau)

Veröffentlicht von

Hier ein kleines Beispiel, wie man eine Gabellichtschrange betreibt.

Bauteile

Sketch:

int sensorPin = A0;
int sensorValue = 0;
int ledPin = 13;
 
void setup()
{ 
   pinMode(ledPin, OUTPUT);
   digitalWrite(ledPin, HIGH);

   Serial.begin(9600);
}
 
void loop()
{ 
   sensorValue = analogRead(sensorPin);
   Serial.println(sensorValue);

   if (sensorValue > 512) {
      digitalWrite(ledPin, LOW);
   }
   else 
   { 
      digitalWrite(ledPin, HIGH);
   }
 
   delay(100);
}Code-Sprache: JavaScript (javascript)

Versuch mit Zählscheibe

Da ich die Schaltung schonmal stehen hatte, dachte ich mir „mach ich doch gleich mal ein Test mit Motor und Zählscheibe“ und das hat so ausgesehen.

und das ist der Sketch dazu:

int sensorPin = A0;
int sensorValue = 0;
int ledPin = 13;

static unsigned long timeStamp = 0L;
unsigned long countSlots = 0;

// erst wenn es einen hohen Wert und einen tiefen Wert gibt,
// erst dann ein "countSlots" mehr
bool sensorAn = false;
bool sensorAus = false;

void setup()
{ 
   pinMode(ledPin, OUTPUT);
   digitalWrite(ledPin, HIGH);

   Serial.begin(9600);
}
 
void loop()
{ 
   sensorValue = analogRead(sensorPin);
//   Serial.println(sensorValue);
 
   if (sensorValue > 100) {
      digitalWrite(ledPin, LOW); 
      sensorAn = true;   
   }
   else 
   { 
      digitalWrite(ledPin, HIGH);
      sensorAus = true; 
      if(sensorAn && sensorAus){
        countSlots++;
        sensorAn = false;
        sensorAus = false;
      }
   }

   getSpins();

   // kein delay()einbauen, sonst wird nicht alles gezählt
   //delay(10);  
}

void getSpins(){

  if(millis() - timeStamp >= 60000L){
    
    // gezählte Schlitze in einer Minute
    Serial.print("countSpin: ");
    Serial.println(countSlots);

    // Umdrehungen pro Minute, es sind 23 Schlitze in der Zählscheibe
    int rpm = countSlots / 23;
    Serial.print("rpm: ");   
    Serial.println(rpm);

    // reset Daten
    timeStamp = millis();
    countSlots = 0;
  }
}Code-Sprache: JavaScript (javascript)