Arduino analogRead()

Hallo, vielleicht weiß das jemand?

Ich habe ein Gerät von dem ich die Drehzahl messen möchte. An diesem ist ein Ausgang, welcher abhängig von der Drehzahl die Spannung verändert.

Doch die Spannung wird mit einem PWM signal geregelt.

High 5 Volt LOW 0 Volt

Nun zu meiner Frage.

Arbeitet analogRead() mit dem Mittelwert der Spannung oder wird nur einmal ein Wert abgegriffen und dieser wird ausgegeben.

Bsp.:

Tastverhältnis 50%

Mittelwert wäre 2.5VOLT ---> Arduino ermittelt auch 2.5 Volt am analogen Eingang.

oder

Arduino fragt kurz den Wert ab, Spannungslevel ist gerade auf 5 Volt ---> Arduino ermittelt 5 Volt am

analogen Eingang.

Wie bei ADCs üblich für erst mal ein Sample-and-Hold Kondensator geladen und die Spannung an diesem gemessen. Es wird also immer ein Momentan-Wert gemessen. Sonst wäre es nicht möglich sich schnell änderte Signale zu messen!

Wenn du ein PWM Signal ausmessen willst, musst die die jeweils die Low und High Zeit einer Periode bestimmen.

Einfach geantwortet, das letztere ist der Fall.

Genau! analogRead() ist das falsche Pferd.

Miss die Zeiten.

Ich finde das Thema gerade nicht wieder, aber sowas hatten wir schon mal:

const byte messpin = 2;
volatile unsigned long highTime;
volatile unsigned long lowTime;
volatile unsigned long startmicros;

void setup() {
  Serial.begin(9600);
  attachInterrupt(0, messung, CHANGE);
}

void loop()
{
  delay(1000); // every second
  Serial.print("highTime: "); Serial.print(highTime); Serial.print("  ");
  Serial.print("lowTime: "); Serial.print(lowTime); Serial.print("  ");
  Serial.println();
}

void messung() {
  if ((PIND >> 2) & 1) {
    lowTime = micros() - startmicros;
  } else {
    highTime = micros() - startmicros;
  }
  startmicros = micros();
}