Forum: Mikrocontroller und Digitale Elektronik RS232-Pegelwandler


von Karsten (karsten-spn)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe einen IR Sensor der bekommt 5V zum Arbeiten, sendet dann über 
sein TX Pin 3.3V .

Ich habe einen Pegelwandler gekauft , um das Signal für den Arduino Nano 
hochzuziehen auf 5V , ich betreibe den Sensor indem ich vor der Arduino 
Nano Schutzdiode die echten 5V vom USB Hub abgreife, die System Spannung 
nach der Diode (Pin Header +5V liefert nur 4.7V) Was zu wenig ist.

Schließe ich den Arduino wie im Bild an, sinkt die Systemspannung wieder 
auf 4.8V  aber nur wenn ich den Pin 10 am TXD Ausgang anschließe, 
scheinbar ist die Last zu hoch  ?  Ich empfange bei 9600 Baud nur 
daten-müll, aber nur wenn ich pin 11 auch anschließe.

Es funktioniert einfach nicht, ich würde mich freuen wenn mich da jemand 
technisch belehren könnte, welche Fehler ich hier gerade mache.

Vielen Dank für Hinwiese
  Karsten aus Berlin

Der primitive Sketch soll nur übertragen, funktioniert, auch der Sensor 
funktioniert, sendet über sein USB  Serial Extrakabel alles was man 
sehen wollte.


#include <SoftwareSerial.h>

#define RX_PIN 10 // RX-Pin von SoftwareSerial
#define TX_PIN 11 // TX-Pin von SoftwareSerial


SoftwareSerial Serial1(RX_PIN, TX_PIN);
//pinMode(RX_PIN, FALLING);//INPUT_PULLUP);

void setup()
{
  Serial.begin(9600);
  Serial1.begin(9600);
  delay(100);
}


void loop()
{
  if (Serial1.available())
  {
    uint8_t syncByte = Serial1.read();
    Serial.write(syncByte);
  }
}

von Dieter S. (ds1)


Lesenswert?

Ist das die Fortsetzung von hier?

Beitrag "Virtual RS232 am USB send DTR aber wie ?"

von Michael H. (mha1)


Lesenswert?

Ein MAX3232 ist kein 3,3V <-> 5V Pegelwandler. Das ist ein TTL (3,3V bis 
5V) zu RS232 Wandler. Der liefert laut Datenblatt ein Signal von +/- 13V 
mit bis zu 60mA auf der RS232 TX Seite (High 13V, Low -13V). Er erwartet 
auf der RS232 RX Seite auch ein Signal von mindestens +/- 5V (High +5V, 
Low -5V).

Auf dem Bild sieht es so aus, als ob die RS232 Seite am Arduino auf die 
TTL Ein-/Ausgänge gelegt wurden. Damit ergibt sich quasi ein Kurzschluss 
über die internen Schutzdioden des Arduino mit bis zu 60mA. Mit etwas 
Pech ist die Belastung zu und die jeweiligen Eingänge sind jetzt defekt.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

>  liefert laut Datenblatt ein Signal von +/- 13V
ich lese da "typ. +/- 5,4V" für 3,3V Versorgung, da geht nix kaputt.

von Karsten (karsten-spn)


Lesenswert?

Hallo  Michael H,

Ok Danke, da fehlt mir scheinbar die technische Grundlage, das heißt er 
Pegel't nur von 5V auf 3V   also umgekehrt als gedacht, ist der nicht 
bidirektional ?

Danke Dir !

: Bearbeitet durch User
von Hmmm (hmmm)


Lesenswert?

Karsten schrieb:
> ich würde mich freuen wenn mich da jemand technisch belehren könnte,
> welche Fehler ich hier gerade mache.

Denselben Fehler, den Du immer machst: Rumwursteln, ohne Dich mit den 
Grundlagen zu befassen. Wie schon im anderen Thread verlinkt, als Du 
noch Kahnsoft-Karsten warst:

https://de.wikipedia.org/wiki/RS-232

Karsten schrieb:
> das heißt er Pegel't nur von 5V auf 3V   also umgekehrt als gedacht, ist
> der nicht bidirektional ?

Du hast doch schon vor 8 1/2 Jahren selbst eine Grafik mit den 
RS232-Pegeln verlinkt:

Beitrag "Re: Ein Draht TX DebugTransmitter"

Das hat wenig mit den Pegeln zu tun, die Dein Arduino sehen möchte. Und 
selbst wenn er das überlebt, wäre es immer noch invertiert.

von Michael B. (laberkopp)


Lesenswert?

Karsten schrieb:
> ich habe einen IR Sensor

Das ist schön.

Ich finde nur Analogausgang

https://optris.com/products/category/infrared-thermometers-pyrometers/cs-series/

Ein Datenblatt zu verlinken war dir zu viel Mühe, schon der Typenname 
hat dich ja überfordert.

Oder glaubst du, die Info ist scheissegal weil in deinem Leben eh alles 
egal ist ?

Vermutlich kann der T Ausgang direkt an den RX vom uC, und der TX vom uC 
über 1k Serienwiderstand an den RX vom Sensor.

Dein MAX3323 invertiert das Signal und liefert viel zu hohe Spannungen. 
Den kannst du ersatzlos entfernen.

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Der MAX3232 enthält einen Spannungswandler mit umgeschalteten 
Kondensatoren, die machen aus der einfachen Versorgungsspannung 
(ungeregelt) die doppelte und doppelte negative Spannung, also 
theoretisch aus 3,3V +/-6,6V und aus 5V +/-10V. Tatsächlich sind die 
kleiner und brechen bei Belastung noch zusammen.

Gibt es von dem Sensorhersteller kein anständiges Datenblatt?
https://optris.com/wp-content/uploads/2024/10/Product-BR-EN2024-10_A_web.pdf#page=4
ungeschickt, dass die Tabelle auf zwei Seiten verteilt ist
auf dem Foto sieht man "OPTRISCSLT155F"

Dem Datenblatt nach gibt es optional einen USB-Ausgang, aber sonst nur 
eine Analogspannung, die noch von der Betriebsspannung abhängt (5-30V) ?

: Bearbeitet durch User
von Karsten (karsten-spn)


Lesenswert?

Der Sensor wird über sein Programmierkabel  so eingestellt das er keine 
Spannung sondern ein 3.3V Out Pegel liefert UART Konform.

Den Pegelwandler habe ich rausgeworfen, ich werde morgen versuchen mit 
einem
Mosfet Verstärker Transistor das TXD Signal hochziehen,  2N3904

Das Signal ist sehr leistungsschwach, und wird unter Last sofort 
runtergezogen, der Arduino hat ja schaltbare Pull Down Wiederstände an 
den Eingängen, kann sein das die Pins am Header relativ viel Strom 
ziehen ?

Eigentlich sollten die internen Widerstände der Pins off sein bei 
Default ?

Danke für die Hinweise, Es ist gesichert das der Sensor CS- mit 5V 
arbeitet und am TXD 3.3 V abgibt.

Gruß
  Karsten

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

> UART Konform
soll das auch bedeuten dass die Polarität einem UART entspricht?
> wäre es immer noch invertiert
der MAX3232 invertiert die Pegel, low wird zu high und umgekehrt.

Ich denke, die 3,3V aus dem Sensor sind auch für 5V-Eingänge noch gut 
genug, da muss kein Pegelwandler dazwischen.

von Rainer W. (rawi)


Lesenswert?

Karsten schrieb:
> Es funktioniert einfach nicht, ich würde mich freuen wenn mich da jemand
> technisch belehren könnte, welche Fehler ich hier gerade mache.

Du erwartest, dass nach dem Einstecken alles funktioniert. Versuche es 
einmal mit systematischer Fehlersuche und setzt geeignete Messtechnik 
ein. Nimm ein Oszi, fast egal wie primitiv. Damit prüfst du die Signale, 
bevor du alles verbindest und dann geht es weiter. Dazu musst du dir 
vorher überlegen, was du erwartest und kannst das dann mit deinen 
Messungen vergleichen.

von Obelix X. (obelix)


Lesenswert?

Karsten schrieb:
> hochziehen

Das nennt sich heute "hochskillen".

Karsten schrieb:
> Mosfet Verstärker Transistor ...  2N3904

Schau noch mal ins Datenblatt.

Karsten schrieb:
> Eingängen, kann sein das die Pins am Header relativ viel Strom
> ziehen

Schau ins Datenblatt.

Karsten schrieb:
> Eigentlich sollten die internen Widerstände der Pins off sein bei
> Default ?

Schau ins Datenblatt

Don't feed the Troll!

von Hmmm (hmmm)


Lesenswert?

Christoph db1uq K. schrieb:
> ich lese da "typ. +/- 5,4V" für 3,3V Versorgung, da geht nix kaputt.

Dass die negative Spannung weit unter den Absolute Maximum Ratings 
(ATmega328P: -0.5V) liegt, findest Du unproblematisch?

von Karsten (karsten-spn)


Angehängte Dateien:

Lesenswert?

Obelix X. schrieb:
> Karsten schrieb:
>> hochziehen
>
> Das nennt sich heute "hochskillen".
>
> Karsten schrieb:
>> Mosfet Verstärker Transistor ...  2N3904
>
> Schau noch mal ins Datenblatt.
>
> Karsten schrieb:
>> Eingängen, kann sein das die Pins am Header relativ viel Strom
>> ziehen
>
> Schau ins Datenblatt.
>
> Karsten schrieb:
>> Eigentlich sollten die internen Widerstände der Pins off sein bei
>> Default ?
>
> Schau ins Datenblatt
>
> Don't feed the Troll!

Der Troll bist Du, hast keinen Punkt technischer Aspekte liefe4rn können 
defarmieren ist dein sinnlose Hobby,

Es funktioniert jetzt , ich musste Pin2 Statt Pin 10 nehmen warum auch 
immer, alles läuft ohne Pegelwandler ! Der Nanao sieht das Signal am 
Stift 2
Via Softwareserial, danke allen für die Aufwendige Hilfe, warum der 
Stift nun eine rolle spiele bleibt unklar, Stift 10 funktioniert unter 
TTL Bedingungen, scheinbar nicht unter Softwareserial bei low input.
Grüße aus Berlin
  Karsten

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Und was sagen die vier Byte aus DB AA AA 04 (gelegentlich auch DA oder 
DC)?
Sind das die erwarteten Daten?

Und gibt es zu dem Sensor auch ein ordentliches Datenblatt, in dem auch 
die Programmiermöglichkeiten beschreiben sind?
Das PDF vom Hersteller hat irgendein Werbegrafiker gebastelt, der keine 
Ahnung hat, was die Kunden brauchen.
Oder sind die Angaben streng geheim und nur gegen Unterzeichnung eines 
"Non-disclosure agreement" zu bekommen?

von Stephen (illi)


Lesenswert?

Den Sensor gibt es auch von Mikro Epsilon.
Dann mit mehr Informationen.
https://www.micro-epsilon.de/fileadmin/download/manuals/man--thermoMETER-CS--de.pdf

von Karsten (karsten-spn)


Lesenswert?

Christoph db1uq K. schrieb:
> Und was sagen die vier Byte aus DB AA AA 04 (gelegentlich auch DA oder
> DC)?
> Sind das die erwarteten Daten?
>
> Und gibt es zu dem Sensor auch ein ordentliches Datenblatt, in dem auch
> die Programmiermöglichkeiten beschreiben sind?
> Das PDF vom Hersteller hat irgendein Werbegrafiker gebastelt, der keine
> Ahnung hat, was die Kunden brauchen.
> Oder sind die Angaben streng geheim und nur gegen Unterzeichnung eines
> "Non-disclosure agreement" zu bekommen?

AA AA   sind die beiden Synchronisation Bytes , danach folgen zwei Daten 
Bytes.  Nicht ganz easy auszuwerten, denn das Softwareserial gibt auch 
Fehler Daten so alle 2 Minuten die man abfangen muss.

Ist ein 1€ China Klon Nano, hoffe der neue vom Hersteller (19€) läuft 
besser da höhere Bootloader und höhere Lib Versionen möglich sind bin da 
bei 1.8.6

von Jens M. (schuchkleisser)


Lesenswert?

Karsten schrieb:
> läuft
> besser da höhere Bootloader und höhere Lib Versionen möglich sind bin da
> bei 1.8.6

Danke.
Jetzt muss unsere Raumpflegerin meine Tastatur und meinen Bildschirm 
entkaffeen.

von Sebastian R. (sebastian_r569)


Lesenswert?

Karsten schrieb:
> AA AA   sind die beiden Synchronisation Bytes , danach folgen zwei Daten
> Bytes.  Nicht ganz easy auszuwerten, denn das Softwareserial gibt auch
> Fehler Daten so alle 2 Minuten die man abfangen muss.

Der externe Oszillator wird genutzt?

Karsten schrieb:
> Ist ein 1€ China Klon Nano, hoffe der neue vom Hersteller (19€) läuft
> besser da höhere Bootloader und höhere Lib Versionen möglich sind bin da
> bei 1.8.6

Wow. Nein.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

> Den Sensor gibt es auch von Mikro Epsilon.
so sieht ein etwas vernünftigeres Datenblatt aus. Aber die verschiedenen 
Schnittstellenprogrammierungen sind nicht sehr deutlich.

Es gibt also neben dem analogen Ausgang entweder einen USB-Anschluss 
(bidirektional oder unidirektional, letzteres ist für USB unüblich). Das 
steht auf Seite 20.

Und dann den seriellen Anschluss. Auf Seite 24 steht, wie man die 
Programmiersoftware CompactConnect in Betrieb nimmt, um das 
einzuschalten.

Auf S.25-26 folgt endlich die Beschreibung der digitalen Schnittstelle.
9.5 Kommunikationseinstellungen und
10. Digitaler Befehlssatz
da gibt es auch einen bidirektionalen oder unidirektionalen Modus

Auf Seite 10 steht die wichtigste Information in der Fußnote 3:
"Invertiertes RS232-Signal, TTL, 9,6 kBaud" (laut S.25 umstellbar auf 
115,2 kBaud) also genau das was z.B. ein Arduino als "serielles 
TTL-Signal" erwartet.

Der invertierende Pegelwandler wird nur für einen PC mit RS232-Anschluss 
benötigt. Oder man für ein RS232/USB-Wandlerkabel am PC, dann ist der 
Pegelwandler auch nötig, eher wegen der Invertierung, die Logikpegel 
sind meistens flexibel. Der ist auf Seite 40 beschrieben, vorgeschlagen 
der MAX3381E, dem MAX3232 sehr ähnlich.

von Karsten (karsten-spn)


Lesenswert?

Hallo,

das Projekt ist nun fertig, es gab einige hürden, aber am Ende läuft 
alles wie erwartet, das ganze habe ich für Reproduktionszwecke als Video 
hochgeladen, wo alle Schwerpunkte erklärt sind.

https://youtu.be/PgdjamPd37E

Danke für viele sinnvolle Hinweise. :-)

(Pegelwandler war nicht nötig, bei spannungsabgriff, vor der Arduino 
Schutzdiode, sonnst hat man durch deren Spannungsabfall 0.4V zu wenig 
Spannung für den Sensor, und pin 10 geht nicht für SoftwareSerial 
Interface da an diesem Pin der interne Timer mit einwirkt, daher PIN 2 , 
nun reicht das 3.3V Signal um den Arduino Pin2 durchzusteuern).

: Bearbeitet durch User
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.