Batterietester Fehler mit If-Bedingung

Guten Abend zusammen,
ich bastle momentan an einem “Batterietester” und habe nun ein problem im Code, wo ich nicht mehr weiter weiß.

Zum Prinzip: Man legt eine AA-Batterie in das Rohr, ein Servo drückt einen Kontakt gegen die batterie, welche sich dadurch mit dem anderen Kontakt berührt. Ich kann also die Spannung der Batterie über zwei feste Kabel messen. (siehe Video) Wenn sie zwischen 1,5 und 1,8 Volt hat sollte eine grüne LED leuchten. Das messen funktioniert auch mit dem Arduino super und ich sehe immer die aktuelle Spannung im seriellen Monitor. Wenn ich den Wert aber als Bedingung nehme (siehe Code) leuchtet die LED immer für eine Sekunde, sobald der Servo in der ausgefahrenen Position ist. Auch, wenn sich keine oder eine leere Batterie zwischen den Kontakten befindet.

Hier ist der Code: Ich vermute dass ich irgendwas in der If-Bedingung falsch gemacht habe. Kann das sein und wenn ja was? Danke schonmal im Voraus!

#include <Servo.h>
Servo Kontaktservo;

void setup() {
  Serial.begin(9600);
  Kontaktservo.attach(9);
  pinMode(13, OUTPUT);
  }


void loop() {
  Kontaktservo.write(104); //fährt Servo mit Kontaktpin an Batterie
  delay(200);
  
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.0 / 1023.0); //soll Spannung messen & berechnen

  Serial.println(voltage); //bis hierhin funktioniert alles
  int data = Serial.read(); 
  
if (data > '1,5' && data < '1,8'); //prüft ob Spannung zwischen 1,5 & 1,8V liegt
  {
    digitalWrite(13, HIGH); //wenn ja, leuchtet kurz eine grüne LED auf
    delay(1000);
    digitalWrite(13, LOW);
  }
  
  Kontaktservo.write(78); //servo fährt von der batterie weg -> batterie kann entnommen werden

  delay(5000);
  
  }

Gruß Nicki

Hallo,

wozu wird denn da noch was von der seriellen Schnittstelle eingelesen?

Lass das mal weg und mach die If abfrage mit voltage

If ( voltage > 1.5 && voltage < 1.8 )

Heinz

Bist du sicher, dass du diese Werte misst ?

if (data > '1,5' && data < '1,8');

Könnte da evtl. ein Punkt statt eines Kommas stehen ?

Rentner: wozu wird denn da noch was von der seriellen Schnittstelle eingelesen?

Hatte ich auch schon ausprobiert - da verändert sich nichts...

HotSystems: Bist du sicher, dass du diese Werte misst ? Könnte da evtl. ein Punkt statt eines Kommas stehen ?

Die Werte bekomme ich ja in dem seriellen Monitor angezeigt und die stimmen auch mit denen vom Multimeter überein. Das mit dem Punkt hab ich jetzt ausgebessert. Da hat sich aber auch noch nichts verändert. Trotzdem danke für die schnellen Tipps! LG

Ich würde einen Sensor (zB Endschalter) nehmen um zu erkennen ob eine Batterie für die Messung eingesetzt wurde. Ohne Batterie hat eine Bewegung des Servos keinen Sinn.

Grüße Uwe