Serial Monitor zeigt falsche Spannung an

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.

Bitte um Hilfe! :slight_smile:

GLG

Da der Sensor, so wie du schreibst, schaltet, liefert er doch High oder Low, also Spannung oder keine Spannung. Das natürlich über deinen Spannungsteiler.

Dann ist es einfacher dies über digitale Eingänge zu lösen, die du mit "DigitalRead" auf High oder Low abfragst.

Du brauchst ja auch keinen Zwischenwert, also ob ein Auto evtl. noch nicht ganz an der Ampel steht. :wink:
Ach und in deinem Sketch liest du ja den Wert des Analogeingangs und nicht des Sensors.

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.

Verdrahtungsfehler.

Und ja!
Das analoge Auslesen eines digitalen Senors ist ein Fehler.

Verwende A4 digital.

Und, wieso überhaupt ein Spannungsteiler?
Der Sensor hat einen Open Collector Ausgang.
Darum ist dieses:

a sonst ja der Arduino zerstört wird.

Völliger Unsinn!

Problem wird vermutlich sein, dass du die Referenzspannung jedesmal neu setzen willst. Sowas gehört in den Setup (wobei in diesem Fall mit DEFAULT überhaupt nicht nötig ist).

Des weiteren würde hier doch die Auswertung über eine DI vollkommen ausreichen. Du sagst, er hat im unbestätigten Zustand ~4, - 4,2V. Das reicht locker aus, den Eingang als HIGH zu erkennen. Wird der Sensor aktiv, sollte dieses auch mit 0,1V als LOW erkannt werden.

Hast du GND des Spannungsteilers mit GNG des Arduino verbunden?

ardubu:
Hast du GND des Spannungsteilers mit GNG des Arduino verbunden?

Spannungsteiler unnötig!
Ein Fehler.

ardubu:
Hast du GND des Spannungsteilers mit GNG des Arduino verbunden?

Nein habe ich nicht. Arudino ist über den PC versorgt. Und die Masse des Sensor bzw die 24V kommen aus dem Netzgerät im Labor

Bei einer Ausgabespannung von 24V ist ein Spannungsteiler ganz sicher von nöten. Besser wäre aber hier das ganze mit einem Optokoppler zu betreiben.

combie:
Spannungsteiler unnötig!
Ein Fehler.

Dazu muss uns ams_Erwin aber mitteilen, wie er den Sensor genau angeschlossen hat.
Nicht dass er die 24 Volt an den Ausgang gelegt hat, dann geht es nur über den Spannungsteiler.

In dem Fall wäre ein Schaltbild wichtig.
Aber leider fehlen immer wieder wichtige Angaben um konkrete Aussagen zu machen.
:sunglasses:

ams_Erwin:
Nein habe ich nicht. Arudino ist über den PC versorgt. Und die Masse des Sensor bzw die 24V kommen aus dem Netzgerät im Labor

Schon verkehrt, Masse muss verbunden sein.
Also bitte Schaltbild liefern.

HotSystems:
Schon verkehrt, Masse muss verbunden sein.
Also bitte Schaltbild liefern.

Oder aber 2. getrennte Netzte über den besagten Optokoppler.

HotSystems:
Dazu muss uns ams_Erwin aber mitteilen, wie er den Sensor genau angeschlossen hat.
Nicht dass er die 24 Volt an den Ausgang gelegt hat, dann geht es nur über den Spannungsteiler.

In dem Fall wäre ein Schaltbild wichtig.
Aber leider fehlen immer wieder wichtige Angaben um konkrete Aussagen zu machen.
:sunglasses:

Sorry :slight_smile: Also der Sensor ist über 24V aus dem Nezgerät versorgt. Der Arduino hat eine eigene Versorgung über den PC.

Die 24V liegen am braunen Kabel des Sensors an, welches über einen 10kOhm Widerstand mit dem Datenkabel des Sensors verbunden ist. Dieses ist wiederum über einen 4,7kOhm Widerstand mit dem Pin verbunden wo ich die Spannung abgreife und zum Arduino gehe. Und dieser ist mit einem 3,9kOhm Widerstand mit Masse und somi dem blauen Kabel des Sensors verbunden.

Sorry für die lange Beschreibung, bin aber leider grad nicht im Labor und hab keine Bilder bei Hand :wink:

HotSystems:
Schon verkehrt, Masse muss verbunden sein.
Also bitte Schaltbild liefern.

Schaltbild kommt asap!!! :slight_smile:

ams_Erwin:
Sorry :slight_smile: Also der Sensor ist über 24V aus dem Nezgerät versorgt. Der Arduino hat eine eigene Versorgung über den PC.

Die 24V liegen am braunen Kabel des Sensors an, welches über einen 10kOhm Widerstand mit dem Datenkabel des Sensors verbunden ist. Dieses ist wiederum über einen 4,7kOhm Widerstand mit dem Pin verbunden wo ich die Spannung abgreife und zum Arduino gehe. Und dieser ist mit einem 3,9kOhm Widerstand mit Masse und somi dem blauen Kabel des Sensors verbunden.

Sorry für die lange Beschreibung, bin aber leider grad nicht im Labor und hab keine Bilder bei Hand :wink:

Wenn es tatsächlich so verdrahtet ist (schwer zu verstehen) dann brauchst du keine Spannung vom Labornetzteil am Sensorausgang. Dann reicht der OK des Sensor, den du mit dem Arduino verbindest. Hier den digitalen Eingang verwenden und einen Pullup-Widerstand einsetzen (konfigurieren).
Wichtig dennoch- Masse verbinden.

Soo, hier der Schaltplan

ams_Erwin:
Soo, hier der Schaltplan

Wie schon mehrfach beschrieben:

Widerstände am Ausgang Sensor entfernen, keine Spannung am Ausgang. Und weiter wie zuletzt mehrfach beschrieben. OK an digitalen Eingang mit PullUp-Widerstand.

Masse beider Seiten verbinden.

Hallo,

der Schaltplan ist so leider nicht ausreichend.

Ich sehe im Schaltplan +12V Arduino. Wird diese auch am Arduino mit zusätzlicher GND Klemme genutzt?
Ist der PullUp am Sensor notwendig? Der Spannungsteiler sieht mir falsch ausgelegt aus.

sschultewolter:
Hallo,

der Schaltplan ist so leider nicht ausreichend.

Ich sehe im Schaltplan +12V Arduino. Wird diese auch am Arduino mit zusätzlicher GND Klemme genutzt?
Ist der PullUp am Sensor notwendig? Der Spannungsteiler sieht mir falsch ausgelegt aus.

Hätte mir das so gedacht: Wenn der Arduino fertig programmiert ist wird er mit diesen +12V was du gesehen hast betrieben. Leider habe ich den GND Pin hierzu noch nicht in der Schaltung. Aber ja ich füge ihn noch hinzu und werde ihn dann über die +12 V betreiben. Somit habe ich für Sensor und Arduino dann nur noch 1 Plus und eine Masse. Dann sollte es normal klappen?

Der Schaltplan ist falsch!!
Der Spannungsteiler ist flüssiger als Wasser!
Überflüssig!

Sensor Versorgung kann an 24V oder 12V angeschlossen werden... egal...
GND des Arduinos muss mit GND des Sensors verbunden werden.

Daten Ausgang des Sensors direkt, ohne Gnade, an den Arduino Pin.
Und dann entweder den internen Pullup aktivieren, oder bei langen Kabeln einen (zusätzlichen) externen Pullup nach 5V.
Fertig.

Und natürlich digital auswerten!!

const byte Sensor = A4;
bool sensorValue;

void setup() {

                   Serial.begin(9600);
pinMode(Sensor,INPUT_PULLUP);
                   }
 
void loop() {

       
             sensorValue = digitalRead(Sensor); 
             
             Serial.println(sensorValue);
             delay(500);

              }

Also so verkehrt ist das Schaltbild nicht.

Die Masse ist da verbunden, wenn der Arduino auch mit den 12 Volt betrieben wird.

Alles andere wurde schon mehrfach beschrieben.