Drehimpulse zählen

Hallo Leute,

auf Grund von Problemen mit den Glasreedsensoren möchte ich auf eine Alternative zur Zählung von Drehimpulsen umsteigen. Dazu habe ich einen AS5600 Winkelmesssensor an A2 meines MKR 1010 Wifi angeschlossen. (Ich lese via PWM vom Sensor)
Soweit so gut, analogwerte zwischen 0 und XXXX werden gelesen.

Die Idee ist nun, dass jedes mal, wenn der 0 Wert durchlaufen wurde einen Impuls zu zählen. Wie könnte man das am besten anstellen. Irgendwie habe ich das Gefühl, dass ist nicht so einfach zu lösen ist. Habt ihr da ne Idee für mich?
Für meine Anwendung brauche ich am Ende nur einen Impuls, welche nach einer Vollen Umdrehung ausgelöst wird.

Den Analogpin auf den 0 Wert abzufragen wird wohl nicht klappen, oder?

Hast das gelesen? Wo möglich ist was für dich.

Nimm einen Index-Schalter, keinen Absolutencoder.

Was ist ein Index Schalter?

Interessant! Vielen Dank.

Hätte es nun mal so gelöst:

const int sensorPin = A4; // Analog Pin
int sensorValue;
int previousSensorValue = 0; // Vorheriger Sensorwert
int threshold = 200; // Schwellenwert
int rotationCount = 0; // Variable zur Speicherung der Anzahl der Umdrehungen
void setup() { 
  Serial.begin(115200);
}
void loop() { 
  sensorValue = analogRead(sensorPin);
// Überprüfe, ob Umdrehung abgeschlossen
if (sensorValue > threshold && previousSensorValue <= threshold) { 
  rotationCount++; //  Anzahl der Umdrehungen erhöhen
  Serial.print("Umdrehung abgeschlossen. Anzahl der Umdrehungen: "); 
  Serial.println(rotationCount); 
}
  previousSensorValue = sensorValue; // Aktualisiere Sensorwert
  delay(10); 
}

Ich habe nur ein wenig bedenken ob das bei höheren Drehzahlen noch funktioniert. Eingesetzt soll dies als Windmesser fungieren.

Auch eine interessante Lösung: Mit einem Timer:

Wurde Digitalen Hall Sensor für nehmen, sind schnell genug. und viel günstiger, such mall im Forum. Thema Windmesser war schon öfter

Ich werde mich mal umsehen. Leider würde ein anderer Sensor als der, welchen ich habe zur Folge haben, dass ich meine gesamte Hardware umbauen muss. Aber ich sehe mich mal um. Danke. :slight_smile:

Hall Sensor ist groß wie ein TO92 Transistor, ok wir wissen nicht was wurde schon gebaut.



Eventuell bringe ich den Digitalen Hall Sensor unter. Könnte eventuell sogar mit meinem Verbauten diametrischem Magnet funktionieren, da der ja N und S wechselseitig über den Sensor laufen lassen würde.
Allerdings ist der Sensor schon wesentlich dicker als der AS56000 und der sitzt mittig unter dem Magneten. Hmmm…

Das hängt an deinem delay(10); und am treshold Wert.

analogRead selbst braucht weniger als 0,2 ms und du musst mindestens einen Wert < treshold mitkriegen (und einen Wert größer).

1 Like