Wieso ändert der MAX3232 die Werte?

OP #4051730
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 :)
Gast #4051732
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.
OP #4051748
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 (http://www.ebay.de/itm/191269324967) und das 
ganze hotplug fähig sein muss.

Danke!
Angehängte Dateien:
Gast #4051772
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).
OP #4051930
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?
#4051961
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.
#4052025
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.
Gast #4052044
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.
Gast #4052057
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
#4053024
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...
Gast #4053038
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren