Forum: Mikrocontroller und Digitale Elektronik Wieso ändert der MAX3232 die Werte?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Johannes D. (jhns)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich will nen Raspberry Pi B+ und nen Arduino UNO hotplug fähig über 
Seriell miteinander verbinden. Nach vielem suchen bin ich auf den 
MAX3232 gestoßen, welcher das angeblich möglichen machen soll, dass der 
Pi nicht jedes mal abraucht wenn man nen Arduino ansteckt :D
Schön und gut, heut sind 4 MAX3232 direkt auf kleiner Platine mit 
Kondensatoren von ebay gekommen. Angeschlossen, funktioniert und 
verwirrt...
Wenn man einen MAX3232 in die Verbindung macht ändert der die Werte 
immer, also aus 'a' wird 'O' Beispielsweise. Also viel probiert, wenn 
man am Pi RX und TX verbindet stimmt alles, beim Arduino genauso.

Also hab ich den MAX3232 getestet und am Arduino (da der unempfindlicher 
und billiger ist) einfach zwischen RX und TX geschlossen (natürlich auch 
GND und 5V angeschlossen). ==> Gleiches Problem wie zwischen Arduino und 
Pi: aus 'a' wird 'O' usw.
Dann jetzt wieder ewig gegooglet und irgendwie dann mal ausprobiert was 
passiert wenn ich das ganze nochmal durch den MAX3232 wieder 
zurückschleife und plötzlich kommt das richtige raus..

Aber wieso ändert der MAX3232 die Werte? Und ist mein Seriell dann 
wirklich hotplug fähig? bzw schützt der chip den Pi vorm abrauchen?

Danke
Johannes :)

von Max H. (hartl192)


Bewertung
0 lesenswert
nicht lesenswert
Zeig mal wie du den MAX, Arduino und Pi verschalten hast...

von Peter II (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Johannes De schrieb:
> Aber wieso ändert der MAX3232 die Werte?
weil er für den Zweck vermutlich das Falsche Bauteil ist.

er Wandelt von UART zu TTL Pegel, PI und Atmel haben aber schon TTL 
Pegel, passen also direkt zusammen.


> Und ist mein Seriell dann
> wirklich hotplug fähig?
sollte kein Problem sein.

> bzw schützt der chip den Pi vorm abrauchen?
schutzwiderstände und eventuell ein paar Dioden verwenden man dafür.

von Nemo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> PI und Atmel haben aber schon TTL
> Pegel, passen also direkt zusammen.
Hat der PI nicht 3.3V CMOS pegeln?

von Peter II (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Nemo schrieb:
> Hat der PI nicht 3.3V CMOS pegeln?

ja und Atmel's kann man auch mit 3.3V betreiben.

Wenn der UNO aber mit 5V arbeitet, braucht man einen Spannungsteiler. 
Oder 2 MAX232

von Nemo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> Atmel's kann man auch mit 3.3V betreiben.
Dann hat dieser auch keine TTL Pegel.

von Peter II (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nemo schrieb:
> Dann hat dieser auch keine TTL Pegel.

ok dann nennen wir es Logic-Pegel.

von Johannes D. (jhns)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Max H. schrieb:
> Zeig mal wie du den MAX, Arduino und Pi verschalten hast...
Ich hab im Anhang mal 2 Schaltbilder: einmal raspi-max-uno und einmal so 
wie ichs jetzt rausgefunden hab uno-max-uno
Edit: Die Kondensatoren sind schon fertig auf den kleinen Platinen 
drauf, deswegen hab ich die jetzt nicht noch mit eingezeichnet.

Peter II schrieb:
> schutzwiderstände und eventuell ein paar Dioden verwenden man dafür.
Wie müsste ich das dann aufbauen und macht das wenn eh schon 2 MAX3232 
drin sind noch Sinn? Ich lern in der Schule leider nur bischen FlipFlops 
und ABEL, aber halt nichts was direkt jetzt mit Strom zu tun hat :D

Und ja, der Pi läuft mit 3,3V und der Arduino mit 5V.

So wie ich das jetzt gelesen hab ist die Möglichkeit mit den 2 MAX3232 
die beste, da ich eh 4 hab (Ebay-Artikel Nr. 191269324967) und das 
ganze hotplug fähig sein muss.

Danke!

: Bearbeitet durch User
von Thomas W. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Johannes De schrieb:
> Aber wieso ändert der MAX3232 die Werte?

Weil es ein RS232-Transceiver ist.

In Datenblatt auf Seite 1 siehst du das an dem Punkt im vereinfachten 
Schaltbild. Häng zwei hintereinander in die Leitung, dann paßt es 
wieder.

von Panorama (Gast)


Bewertung
0 lesenswert
nicht lesenswert
So wie du es gezeichnet hast wird das nicht funktionieren.

Wie weiter oben schon erwähnt ist der MAX3232 ein RS232 Transceiver. 
Schau dir mal bei Wikipedia die Spannungspegel dazu an, die lassen sich 
nur sinnvoll mit einem weiteren MAX232 wieder einlesen. Auf keinen Fall 
funktioniert es direkt an einem IO-Pin, wenn die Ladungspumpen im MAX 
mehr Strom liefern könnten wäre dein Arduino jetzt auch hinüber.

Wieso verwendest du nicht die USB Schnittstelle, die ist doch 
Hotplug-fähig?
Damit könntest du sogar sofort reagieren sobald der Arduino angesteckt 
wird (udev).

von Johannes D. (jhns)


Bewertung
0 lesenswert
nicht lesenswert
Panorama schrieb:
> Wieso verwendest du nicht die USB Schnittstelle, die ist doch
> Hotplug-fähig?
Weil das später direkt mit nem AtMega laufen soll, ohne Arduino UNO 
ausenrum.

Panorama schrieb:
> Damit könntest du sogar sofort reagieren sobald der Arduino angesteckt
> wird (udev).
Das hab ich z.Z. über einen weiteren Pin mit 3,3V gelöst, der beim 
angesteckten Stecker direkt an den Pi geht und dann mit GPIO-Listener 
abgefragt.

Gibts noch ne andere Möglichkeit das Hotplug-fähig zu bekommen?

von Helmut L. (helmi1)


Bewertung
3 lesenswert
nicht lesenswert
Jeder RS232 Treiber (MAX3232) invertiert die Signal Logik, macht also 
aus einer 1 eine 0 und umgekehrt. Du must auf jeder Seite einen Treiber 
setzen dann stimmt auch die Signallogik wieder. Einer allein nuetzt nix. 
Auch kann er dir weil er hoehere Spannungspegel (+-10V) liefert dir 
deinen Eingang zerdeppern. Die Invertierung sieht man auch im 
Blockschaltbild des Treiber ICs da ist da ein Punkt oder Kreis 
vorhanden. Du hast ja selber schon rausgefunden das zwei hintereinander 
das Problem beheben. Das ist so gewollt und richtig, also bau den 2. ein 
und alles ist gut.

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
zur Ausgangsfrage, ein MAX passt die Pegel an die Übertragungsnorm an 
und dazu gehört num mal die Invertierung, ergo macht er nix falsch, er 
ändert auch nicht die "Werte" ausserhalb seiner Aufgabe.

Ich frage ja auch nicht wieso verhindert (Diesel)Sprit im (Benzin)Auto 
zügige Fahrt.

: Bearbeitet durch User
von Johannes D. (jhns)


Bewertung
0 lesenswert
nicht lesenswert
Ok, vielen Dank :-)
Wo ist es dann am sinnvollsten die Hotplug-Verbindung hinzumachen?
UNO---MAX---/---MAX---Pi
oder
UNO---/---MAX---MAX---Pi
?
oder ist das egal? Bevorzugen würd ich nämlich zwischen UNO und MAX.

von Panorama (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Die sinnvollste Variante wäre #1
Damit hast du eine "echte" RS232 Verbindung zwischen den Geräten und 
kannst ggf. auch mal eine längere Leitung verwenden. Außerdem sind die 
MAX232-Ausgänge robust und haben interne Pullups.

von Georg (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Johannes De schrieb:
> Bevorzugen würd ich nämlich zwischen UNO und MAX.

Eine RS232C-Verbindung (Max-Max) ist per Design hotplugfähig, deine 
Version nicht, auch wenn da beim Rumfingern meistens nichts passieren 
wird - allerdings wenn doch ist der UNO hin.

Auch wenn Anfänger das oft nicht einsehen wollen, Normen haben schon 
ihren Sinn, besonders für externe Schnittstellen.

Georg

von Jobst M. (jobstens-de)


Bewertung
0 lesenswert
nicht lesenswert
Johannes De schrieb:
> Wo ist es dann am sinnvollsten die Hotplug-Verbindung hinzumachen?
>
UNO---MAX---/---MAX---Pi

SO!

Und der MAX am UNO bekommt 5V, der am Pi bekommt 3.3V


Gruß

Jobst

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Jobst M. schrieb:
> Und der MAX am UNO bekommt 5V, der am Pi bekommt 3.3V

und immer auf max3232 achten, nicht etwa das sich ein max 232 oder st232 
da reinmogelt.

von Max D. (max_d)


Bewertung
0 lesenswert
nicht lesenswert
Du kannst TX vom pi direkt an RX vom arduino hängen, die 3.3V reichen 
damit der eine 1 erkennt (ab 2,7V ist das der Fall).
In die andere Richtung benutzt du einen Spannungsteiler. Ein Widerstand 
mit 47k von arduino-tx zu pi-rx und ein 91k von pi-rx zu gnd.

von Schaulus Tiger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das ist aber nicht hotplug-fähig. Wenn der Arduino ausgeschaltet ist, 
wird er aus dem TX-Pin des Pi mit 3.3V versorgt.

Also: schlechter Plan.

von Peter II (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Schaulus Tiger schrieb:
> Das ist aber nicht hotplug-fähig. Wenn der Arduino ausgeschaltet ist,
> wird er aus dem TX-Pin des Pi mit 3.3V versorgt.

was hat das ausschalten mit hotplug-fähig zu tun?

von Max D. (max_d)


Bewertung
0 lesenswert
nicht lesenswert
Schaulus Tiger schrieb:
> Das ist aber nicht hotplug-fähig. Wenn der Arduino ausgeschaltet
> ist,
> wird er aus dem TX-Pin des Pi mit 3.3V versorgt.
>
> Also: schlechter Plan.

Dann schaltet man den pin auf low.

von mx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Max D. schrieb:
> Dann schaltet man den pin auf low.

Im Ruhezustand hat der Ausgang eines UART aber nunmal high zu sein.

von Max D. (max_d)


Bewertung
0 lesenswert
nicht lesenswert
mx schrieb:
> Max D. schrieb:
>> Dann schaltet man den pin auf low.
>
> Im Ruhezustand hat der Ausgang eines UART aber nunmal high zu sein.

Im Leerlauf-Betrieb aber wenn die Gegenseite abgeschaltet ist, dann kann 
man die UART auch ganz abschalten und dann den Pin selber low.

Mal ganz abgesehen davon, dass währen der Pi läuft der Verbrauch des 
AVRs im Vergleich ein Witz ist...

von Werner M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> was hat das ausschalten mit hotplug-fähig zu tun?

Die Eingangsschutzdioden dürfen meist nur mit 1mA belastet werden. Und 
dieser Wert wird überschritten, wenn auf der Leitung High liegt und am 
Empfänger-µC keine Versorgung anliegt.

von Peter II (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Werner M. schrieb:
> Die Eingangsschutzdioden dürfen meist nur mit 1mA belastet werden. Und
> dieser Wert wird überschritten, wenn auf der Leitung High liegt und am
> Empfänger-µC keine Versorgung anliegt.

das beantwortet aber immer noch nicht die Frage. Man kann einfach sagen 
das für das Hot-Plug immer beide Geräte eingeschaltet sein müssen.

von Max D. (max_d)


Bewertung
0 lesenswert
nicht lesenswert
Wenn der Strom über die BodyDiode die Quelle für Sorgen ist, dann legt 
man noch 3k3 in Serie zwischen Arduino Rx und Raspi Tx, dann können 
nurnoch maximal 1mA fließen....

von Johannes D. (jhns)


Bewertung
0 lesenswert
nicht lesenswert
Johannes De schrieb:
> UNO---MAX---/---MAX---Pi

Also ich hab das jetzt so aufgebaut und werde es heute testen.
Ich geb dann noch kurz Rückmeldung obs funktioniert.

danke :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.