Forum: Mikrocontroller und Digitale Elektronik Serial Monitor zeigt falsche Werte an


von Erwin (Gast)


Lesenswert?

Hallo Leute!!

Im Zuge der Berufsschule müssen wir eine Ampelschaltung bauen.

Ein Optischer Sensor (OMRON E3T-SL11) soll bei der Ampel erkennen wann 
ein Auto kommt und das dann dem Arduino weiter geben.


Betrieben wird der Sensor über 24V. Über einen Spannungsteiler wird dann 
die reduzierte Spannung abgegriffen, da sonst ja der Arduino zerstört 
wird.

Habe nun folgendes Problem:

Steht kein Auto bei der Ampel so leifert der Sensor gemessene 4,0V ~ 
4,2V. Steht dort ein Auto schaltet der Sensor, und liefert mir eine 
Spannung von ~0,1V.

Dieses Signal geht beim Arduino in den Analogen Eingang A4 rein. Wir 
dann über die ganzen Befehle ausgelesen und über dem Serial Monitor 
ausgegeben. Dort steigen die Werte dann auf unerklärlicherweise an bis 
1023 und sinken wieder ab. Und das die ganze Zeit. Jedoch zeigt das 
Multimeter einen konstanten Wert von 4,1V an.


Programmcode:


int Sensor = A4;
int sensorValue;

void setup() {

                   Serial.begin(9600);

                   }

void loop() {

             analogReference(DEFAULT);
             sensorValue = analogRead(Sensor);

             Serial.println(sensorValue);
             delay(500);

              }


Da sollte eigentlich alles passen.


Serial Monitor zeigt folgendes an:

1023
1023
942
800
688
370
81
0
0
0
0
0
0
0
0
5
69
153
286
388
723
965
1023
1023


Bitte um Hilfe! :-)

GLG

: Verschoben durch User
von Iris (Gast)


Lesenswert?

Bitte das Kapitel AD-Wandlung lesen.

Dein System funktioniert richtig! Es wird aber einfacher wenn du das 
Signal digital behandelst. Alle Werte oberhalb von [800] stehen dabei 
für eine logische 1 alle Werte unterhalb [600] für eine logische 0. Das 
dazwischen ist die Hysterese, die kannst du in den Skat drücken.

Wenn du jetzt eine 1 bekommst, also dein Sensor irgendwas bei 4V ausgibt 
ist das AD gewandelt irgendwas oberhalb von [800] und kein Auto ist da.

Sonst bekommst du eine 0, dein Sensor liefert irgendwas unter 1V, das 
ist wieder gewandelt kleiner [600] und ein Auto ist da.

Die Zahlen [800] und [600] sind jetzt willkürlich gewählt. Mehr dazu 
erklärt dir das Datenblatt deines uCs.

von µC & Elektronik (Gast)


Lesenswert?

> Forum: Projekte & Code
>
> Hier könnt ihr eure Projekte, Schaltungen oder Codeschnipsel
> vorstellen und diskutieren. Bitte hier keine Fragen posten!

von Karl (Gast)


Lesenswert?

>analogReference(DEFAULT);

https://www.arduino.cc/en/Reference/AnalogReference

Note

After changing the analog reference, the first few readings from 
analogRead() may not be accurate.

Mach das einmal im Setup (oder garnicht, da DEFAULT Standard ist), dann 
sollte es gehen.

von Hendrik B. (hendrik_b)


Lesenswert?

Ich kann den Anderen nur Recht geben, dass was dein Serial Monitor 
angibt ist vollkommen korrekt. Der Wert am analogen Eingang wird durch 
den Arduino in den Bereich von 0 - 1024 aufgelöst.

Man könnte es wie in meinen Beispiel betrachten. Hier wird der Status 
für deinen Sensor bei einer Spannung von mehr als 2,5 Volt auf 1 gesetzt 
und ist ansonsten auf 0.

int Sensor = A4;
int sensorValue; // Wertebereich 0 - 1024
int sensorStatus; // 0 = kein Fahrzeug, 1 = Fahrzeug

void setup() {

  Serial.begin(9600);

}

void loop() {

  sensorValue = analogRead(Sensor);
  if (sensorValue > 500) {
    Serial.println("Fahrzeug im Sensorbereich");
    sensorStatus = 1;
  }
  else {
    Serial.println("Kein Fahrzeug im Sensorbereich");
    sensorStatus = 0;
  }

  delay(500);

}

von Karl (Gast)


Lesenswert?

Hendrik B. schrieb:
> Der Wert am analogen Eingang wird durch
> den Arduino in den Bereich von 0 - 1024 aufgelöst.

Erwin schrieb:
> Dieses Signal geht beim Arduino in den Analogen Eingang A4 rein. Wir
> dann über die ganzen Befehle ausgelesen und über dem Serial Monitor
> ausgegeben. Dort steigen die Werte dann auf unerklärlicherweise an bis
> 1023 und sinken wieder ab. Und das die ganze Zeit. Jedoch zeigt das
> Multimeter einen konstanten Wert von 4,1V an.

Bitte genau lesen! Wenn die Spannung konstant bei 4,1 V liegt, sollten 
konstant Werte um 840 herum ausgegeben werden.

von Ulrich F. (Gast)


Lesenswert?


von Walter S. (avatar)


Lesenswert?

Sensor am falschen Pin angeschlossen?

von Hendrik B. (hendrik_b)


Lesenswert?

Karl schrieb:
> Hendrik B. schrieb:
>> Der Wert am analogen Eingang wird durch
>> den Arduino in den Bereich von 0 - 1024 aufgelöst.
>
> Erwin schrieb:
>> Dieses Signal geht beim Arduino in den Analogen Eingang A4 rein. Wir
>> dann über die ganzen Befehle ausgelesen und über dem Serial Monitor
>> ausgegeben. Dort steigen die Werte dann auf unerklärlicherweise an bis
>> 1023 und sinken wieder ab. Und das die ganze Zeit. Jedoch zeigt das
>> Multimeter einen konstanten Wert von 4,1V an.
>
> Bitte genau lesen! Wenn die Spannung konstant bei 4,1 V liegt, sollten
> konstant Werte um 840 herum ausgegeben werden.

Ich entschuldige mich vielmals :D Das habe ich vollkommen überlesen.

von Ulrich F. (Gast)


Lesenswert?

Walter S. schrieb:
> Sensor am falschen Pin angeschlossen?
Vermutlich nicht.
Aber er weiß trotzdem nicht was er tut....
(interessiert ihn auch vermutlich nicht wirklich)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.