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 :)
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.
Peter II schrieb: > PI und Atmel haben aber schon TTL > Pegel, passen also direkt zusammen. Hat der PI nicht 3.3V CMOS pegeln?
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
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!
:
Bearbeitet durch User
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.
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).
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?
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.
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
Ok, vielen Dank :-) Wo ist es dann am sinnvollsten die Hotplug-Verbindung hinzumachen?
1 | UNO---MAX---/---MAX---Pi |
oder
1 | UNO---/---MAX---MAX---Pi |
? oder ist das egal? Bevorzugen würd ich nämlich zwischen UNO und MAX.
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.
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
Johannes De schrieb: > Wo ist es dann am sinnvollsten die Hotplug-Verbindung hinzumachen? >
1 | UNO---MAX---/---MAX---Pi |
SO! Und der MAX am UNO bekommt 5V, der am Pi bekommt 3.3V Gruß Jobst
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.
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.
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.
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?
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.
Max D. schrieb: > Dann schaltet man den pin auf low. Im Ruhezustand hat der Ausgang eines UART aber nunmal high zu sein.
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...
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.
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.
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....
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 :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.