Frage zur Spannung der Seriellen Schnittstelle

Hallo ihr Arduinofreunde,

Ich habe nun diverse Foreneinträge gelesen und gesucht zu dem Thema, aber nicht die richtige Antwort gefunden. Eventuell könnt ihr mir helfen :).

Ich möchte einen Sensor mit Hilfe der seriellen Schnittstelle meines Arduino Uno ansteuern und auslesen.

Der Sensor schickt ,direkt nach Start, Werte. Diese Werte kann ich nun mittlerweile auch empfangen.

Die eine Richtung funktioniert also schon mal. :wink:

Das Problem ist jedoch die Rückrichtung.
Zum Auslesen benutze ich die Pins 10 und 11 am Arduino, leider funktioniert das Auslesen nicht mit den Pins 0 und 1 (warum genau kann ich nicht sagen - Eventuell habt ihr ne Idee?)

Ich habe mich also mit dem Multimeter an die Pins gemacht um zu messen, was da an Spannungen anliegt, da ja eigentlich -5V bis 5V für die Schnittstelle anliegen sollten (logische 0 oder 1 / sofern ich ein Signal anlege).
Ich messe an den Pins 10 und 11 -2V als Spannung anliegend. Ist das normal? Sollte nicht eig. -5V anliegen und somit eine logische 0?

An den Pins 0 und 1 liegen bei beiden -5V an.

Also meine Frage zusammengefasst:

  • Muss ich irgendwas an der PWM drehen, damit ich eine höhere Spannung an PIN 10 und 11 habe?
  • Wenn ja wie und wo kann ich das machen?

Entschuldigt, falls es eine ähliche Frage schon gibt, ich habe nach 2 Tagen suche nichts gefunden, was genau das erklärt.

Vielen Dank schon einmal für die Hilfe :).

Wichtig ist bei deiner Frage, was für eine Schnittstelle hat dein Sensor ?

Ist das TTL-Seriell oder RS232 ?

TTL hat +5 Volt und GND. Die von dir gemessenen -2V bzw. -5V können nicht stimmen. Der Arduino gibt an keinem Pin Minus aus.

RS2323 hat meist +-12Volt, die beiden sind nicht kompatibel. Hierzu benötigst du einen RS232-Wandler.
Mit PWM kannst du da nichts erreichen.

Das es auf D0 und D1 nicht funktioniert, liegt daran, da auf den beiden Pins beim Uno und kompatiblen die serielle Schnittstelle vom USB-Wandler belegt ist.

Du brauchst da immer die Library SoftwareSerial um an anderen Pins eine serielle Schnittstelle (TTL-Pegel) zu erhalten.

Danke dir für die schnelle Antwort Hotsystems.

Die Schnittstelle ist eine RS232 Schnittstelle. Der Sensor hat RX und TX Anschluss, sowie ein digital ground.

Das Signal vom Sensor ist 5,5 V gemessen mit dem Multimeter. Darum konnte ich vermutlich auch schon direkt das Signal lesen.

RS2323 hat meist +-12Volt, die beiden sind nicht kompatibel. Hierzu benötigst du einen RS232-Wandler.
Mit PWM kannst du da nichts erreichen.

Heißt das, dass ich dennoch einen Spannungswandler benötige? Obwohl der Sensor 5V benutzt für die Kommunikation (Auch wenn es viellecht nach TTL klingt, steht im Datenblatt RS232)

Du brauchst da immer die Library SoftwareSerial um an anderen Pins eine serielle Schnittstelle (TTL-Pegel) zu erhalten.

Die Library habe ich benutze ich bereits um Pin 10 und 11 anzusteuern. :slight_smile:

Vielen Dank schon einmal :).

Ravenpool:
Die Schnittstelle ist eine RS232 Schnittstelle. Der Sensor hat RX und TX Anschluss, sowie ein digital ground.

Das Signal vom Sensor ist 5,5 V gemessen mit dem Multimeter. Darum konnte ich vermutlich auch schon direkt das Signal lesen.

Heißt das, dass ich dennoch einen Spannungswandler benötige? Obwohl der Sensor 5V benutzt für die Kommunikation (Auch wenn es viellecht nach TTL klingt, steht im Datenblatt RS232)

Die Library habe ich benutze ich bereits um Pin 10 und 11 anzusteuern. :slight_smile:

Vielen Dank schon einmal :).

Wenn es eine RS232 ist, dann nicht mehr direkt anschließen, damit kannst du die Pins des Arduino killen.

Du musst einen Rs232 Wandler zwischenschalten.
Poste doch mal einen Link des Sensors.

Poste doch mal einen Link des Sensors.

Der Sensor ist ein CO2-Sensor einer schwedischen Firma. Genaueres darf ich leider nicht sagen.

Ich denke aber nicht, dass ich den Arduino brate, da wie gesagt nur 5V ankommen. Das sollte doch eigentlich genau passen.

Update (gerade eben erst herausgefunden)

Das interessante ist, dass wenn ich nur eine Leitung einstecke (RX oder TX), kann ich lesen. Wenn ich dann die andere zum Schreiben einstecke, kann ich auch sogar schreiben auf den Sensor und der fängt an zu brummen.

Nur beides zusammen funktioniert nicht :o .

Anmerkung vielleicht ist dies nun aber schon gar nicht mehr zum eigentlichen Titel passend und geht zu sehr ins Detail.

Ich hänge mal meinen Code an:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11,true); // RX, TX
int buflen;
//byte buf[14];
byte Start={0xAA, 0xAA, 0x00, 0x02, 0x00, 0x01, 0xFF, 0xFC};
byte SetFlow200={0xAA, 0xAA, 0x00,0x07,0x00, 0x10,0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0xC8, 0xFF, 0x1F};
void setup() {
// Open serial communications and wait for port to open:

Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

/* Serial.println(“Goodnight moon!”);

// set the data rate for the SoftwareSerial port*/
mySerial.begin(115200);
mySerial.write(SetFlow200,sizeof(SetFlow200));

}

void loop() { // run over and over

if (mySerial.available()){
Serial.print(mySerial.readString());
}

if (Serial.available()) {
mySerial.write(Serial.read());
}
}

hi,

bitte auf das hören, was man Dir sagt!

falls es wirklich RS232 ist, ruinierst Du über kurz oder lang den arduino. die spannung kannst Du nicht messen, weil es ja nur kurze impulse sind. was willst Du da mit einem multimeter? das bräuchte ein oszi.

und Du brauchst keinen spannungswandler, sondern einen RS232-wandler, das ist was anderes.

gruß stefan

RS232 Konverter sind ganz einfach. MAX232 oder der neuere MAX3232. Gibt es als fertiges Modul, aber man kann die Schaltung auch selbst bauen, da wenige externe Komponenten benötigt werden

Zunächst einmal danke dir Stefan.

Ich habe einen Teil der Pinbelegung aus dem Manual einmal angefügt. Wie gesagt steht da einfach nur RS232 als Comment, aber RX und TX als Bezeichnung.

Werde den Hersteller danach dann nochmal fragen, wenn ihr sagt, dass TX und RX kein RS232 bedeutet.

und Du brauchst keinen spannungswandler, sondern einen RS232-wandler, das ist was anderes.

Kannst du mir sagen, welche RS232 Wandler da in Frage kämen?

Hat jemand sonst eine Idee, warum bei jeweils entweder nur TX oder RX angesteckt, es funktioniert und sonst nicht?

Vielen Dank an alle Viewer und Kommentatoren jetzt schon einmal.

Pinbelegung Sensor.PNG

Ich denke aber nicht, dass ich den Arduino brate, da wie gesagt nur 5V ankommen. Das sollte doch eigentlich genau passen.

Du kannst denken was Du willst, da Du aber um unsere Hilfe gebeten hast, höhr auf unsere Ratschläge.
Die RS232 Schnittstelle hat einen Logik 1-Pegel von -3 bis -25V und 0-Pegel von 3V bis 25V.

Viele Schnittstellen an PC geben +/-12V aus wenn ein MAX232 oder ähnliches verwendet wird, werden aus den 5V ca+/-10V gemacht.

Arduino vertägt keine Spannungen über 5V oder unter 0V (negative Spannungen). So machst Du ihn kaputt.

Grüße Uwe

Ravenpool:
Der Sensor ist ein CO2-Sensor einer schwedischen Firma. Genaueres darf ich leider nicht sagen.

Dann schließe diesen Thread. Wie sollen wir helfen, wenn du uns keine Infos lieferst.

Ich denke aber nicht, dass ich den Arduino brate, da wie gesagt nur 5V ankommen. Das sollte doch eigentlich genau passen.

Denken hilft dir hier nichts.
Du musst den Link liefern, was soll da geheim dran sein ?

Wenn es RS232 ist (Das ist ein Standard +-12Volt), dann killst du den Uno.
Und Stefan hat das schon bestätigt.

Der Code hilft da nichts.

Edit:
RX und TX ist nur die Bezeichnung für Empfänger und Sender Daten bei seriellen Schnittstellen.
Ob RS232 oder TTL-kompatibel.

Mach was du willst.
Warum fragst du, wenn du eh alles besser weißt.

HotSystems:
Dann schließe diesen Thread. Wie sollen wir helfen, wenn du uns keine Infos lieferst.

Denken hilft dir hier nichts.
Du musst den Link liefern, was soll da geheim dran sein ?

Wenn es RS232 ist (Das ist ein Standard +-12Volt), dann killst du den Uno.
Und Stefan hat das schon bestätigt.

Der Code hilft da nichts.

Ich habe einen Screenshot angehängt in meinem letzten Post, der die Dokumentation zum Sensor zeigt.

Ich danke euch für die ganzen Informationen zur RS232 Schnittstelle. Die haben auf jeden Fall geholfen und werden berücksichtigt.

Ich hatte den Code nur zur Info angehangen, manchmal übersieht man da ja auch was und ihr "Cracks" erkennt da sofort was.

Wie gesagt noch einmal Danke an alle Kommentatoren!

Ravenpool:
Ich habe einen Screenshot angehängt in meinem letzten Post, der die Dokumentation zum Sensor zeigt.

Ich danke euch für die ganzen Informationen zur RS232 Schnittstelle. Die haben auf jeden Fall geholfen und werden berücksichtigt.

Ich hatte den Code nur zur Info angehangen, manchmal übersieht man da ja auch was und ihr "Cracks" erkennt da sofort was.

Wie gesagt noch einmal Danke an alle Kommentatoren!

Wir helfen alle gern.
Nur hier nutzt der Sketch absolut nichts.

  1. der ist fast nicht lesbar, da er nicht in Code-Tags gesetzt wurde.
  2. Dein Problem ist die Hardware, die muss erst mal stimmen.
  3. Der Screenshot vom Anschluss des Sensors sagt eindeutig RS232, da muss man erst mal von Spannungen ausgehen, die der Arduino nicht verträgt.

Ravenpool:
Ich habe einen Screenshot angehängt in meinem letzten Post, der die Dokumentation zum Sensor zeigt.

Dadurch sollte klar sein, dass man das Teil nicht direkt an einen µC anschließen kann. ICs haben Schutzschaltung, wodurch sich sie sich nicht unbedingt gleich in Rauch auflösen und wie du gesehen hast vielleicht auch unter bestimmten Umständen halbwegs funktionieren. Das heißt aber nicht dass man das so tun sollte.

Serenifly:
Dadurch sollte klar sein, dass man das Teil nicht direkt an einen µC anschließen kann. ICs haben Schutzschaltung, wodurch sich sie sich nicht unbedingt gleich in Rauch auflösen und wie du gesehen hast vielleicht auch unter bestimmten Umständen halbwegs funktionieren. Das heißt aber nicht dass man das so tun sollte.

Ok danke dir, ich werde mir dann mal so einen Regler ordern ;).

Danke an alle, das Thema kann dann nun geschlossen werden.

Ravenpool:
Ok danke dir, ich werde mir dann mal so einen Regler ordern ;).

Danke an alle, das Thema kann dann nun geschlossen werden.

Kein Regler, sondern ein seriell TTL zur RS232-Wandler.

Z.B. dieser hier.

eine RS232 hat auch noch einige andere Stolper-Fallen. Am besten mal hier durchlesen AVR-Tutorial: UART – Mikrocontroller.net. Auch wenn die Programmier-Beispiele in Asembler sind ist der Rest doch sehr interessant und wichtiges Grundlagen-Wissen. Da wird auch die Beschaltung eines MAX232 beschrieben.

mgcss:
eine RS232 hat auch noch einige andere Stolper-Fallen. Am besten mal hier durchlesen AVR-Tutorial: UART – Mikrocontroller.net. Auch wenn die Programmier-Beispiele in Asembler sind ist der Rest doch sehr interessant und wichtiges Grundlagen-Wissen. Da wird auch die Beschaltung eines MAX232 beschrieben.

Danke ich werde es mir anschauen und danke für den Link HotSystems!

hi,

Werde den Hersteller danach dann nochmal fragen, wenn ihr sagt, dass TX und RX kein RS232 bedeutet.

sorry, ich hatte geschrieben, daß es bei RS232 kein RX/TX gibt, und es laut zeitstempel 24 sekunden später wieder rausgelöscht, weil das natürlich für RS485 gilt.

Du warst einfach unerwartet schnell.

gruß stefan

Ich habe euren Ratschlag nun befolgt und mir den Max3232 konverter geholt.

https://www.geras-it.de/elektronische-bauteile/module/sonstige/mini-rs232-max3232-seriell-auf-ttl-level-konverter-modul-board/a-478/

Nun meine Frage, welche Enden muss ich an die vier möglichen löten?

Also vom RS232 receive und transmit an die Pfeile oder + und - Anschlüsse?

Und beim Arduino ebenfalls an die Pfeile oder + und -?

Ich habe leider keine gute Anleitung dazu gefunden.

Vielen Dank für eure Hilfe,
Lucas

sorry, ich hatte geschrieben, daß es bei RS232 kein RX/TX gibt, und es laut zeitstempel 24 sekunden später wieder rausgelöscht, weil das natürlich für RS485 gilt.

Kein Problem, danke dir.