Go Down

Topic: 5m steckbare Serielle Verbindung zw. 2 AVR (Read 999 times) previous topic - next topic

MGOS

Aug 01, 2013, 11:53 pm Last Edit: Aug 02, 2013, 01:44 am by MGOS Reason: 1
Hallo Community,

Nachdem das mit den Servos jetzt einwandfrei funktioniert, bin ich auf das nächste Problem gestoßen: Die gewünschten Funktionen sind inzwischen so umfangreich, dass eine Schnittstelle zum User mit Tastern / Joystick und einem LCD notwendig wurde. Da die eigentliche Steuereinheit mit den Servos und MPU6050 (3-Achs Accel/Gyro, I²C) ca. 5 m vom Benutzer weg ist und man nicht 20 Drähte dazwischen legen kann, hab ich mir gedacht, einen zweiten AVR (MCU 1) mit einer seriellen Schnittstelle als Master für MCU 2 einzusetzen. Weil ich wegen des Sensors sowieso schon I²C hab, war zuerst mein Gedanke, auch diese Verbindung mit I²C zu lösen, jedoch hab ich gelesen, dass es bei diesen Leitungslängen störanfällig ist - außerdem soll der Aufbau transportabel und somit auch die Verbindungen steckbar sein.
Zu was für einer Verbindung würdet ihr mir raten? UART, SPI, oder doch I²C? Was ganz anderes? Die Übertragungsgeschwindigkeit ist nicht so entscheidend, 4800 baud sollte aber schon drin sein.
Folgende AVR stehen mir zu Verfügung: ATtiny84, ATmega168 und 328.

Benötigte Eigenschaften der Schnittstelle:
- Kommunikation in beide Richtungen
- 3.3 V
- bei 5 m Störunanfällig, keine weiteren Treiber
- Steckbare Verbindung möglich

mkl0815

Ich würde zwei RS232 Wandler (gibt recht preiswert zu kaufen) und jeweils an die seriellen Schnittstellen hängen. Danach kann man die 5m (oder auch mehr) gut über ein serielles Kabel überbrücken.
Der Schaltungsaufwand ist minimal und serielle Kabel mit DSUB9 Steckern bekommt man in jedem Baumarkt, oder auch bei Ebay.

Mario.

MGOS

#2
Aug 02, 2013, 09:50 am Last Edit: Aug 02, 2013, 10:06 am by MGOS Reason: 1
Benötige ich wirklich die Wandler? Wenn ich mich richtig errinere sind die dafür, dass man die 12 V vom PC auf 3.3 V TTL runterregelt (bzw. hier auch noch USB). Da ich beide Schaltungen mit 3.3 V betreibe, kann man da nicht einfach die Buchse direkt an die Schnittstelle dran machen und alles mit 3.3V betreiben? Dass der Wandler auf 12 V hochregelt bezweifle ich.

Edit: ideal wäre auch, wenn ich über die gleiche Leitung noch meine Stromversorgung (GND, 7 V, 3.3 V) gleich mitführen könnte. Oder besser je einen Regler und die 3.3 V nicht auf der Leitung?

Da die DSub9 Stecker ein bisschen sperrig sind, würde auch ein RJ-45 Kabel  ("Lankabel") gehen?

mkl0815


Da die DSub9 Stecker ein bisschen sperrig sind, würde auch ein RJ-45 Kabel  ("Lankabel") gehen?

RJ-45 ist der Stecker, nicht das Kabel. Das ist TP (Twisted Pair). Keine Ahnung, wie sich das Signal dabei verhält. Soweit ich weiß, sind die Adern in den seriellen Kabeln nicht verdrillt.
Mario.

MaFu

Ich habe eine ähnliche Konstruktion, allerdings zwischen Arduino und Servokontroller (Pololu MicroSerialServoController). Zusätzlich zu den seriellen Daten (19200) übertrage ich noch ein i-Link Signal für eine Videokamerasteuerung und die Stromversorgung. Ich verwende dazu ein normales CAT5 Netzwerkkabel, die Distanz beträgt ca. 15 Meter. Geht einwandfrei.
_______
Manfred

MGOS

ok, super. Weißt du wie viel Ampère solche Leitungen vertragen? Wenn ich die Stromversrogung der Servos auch dabei liegt, fließen da schon manchmal 3 A durch. Bei 8 Adern könnte ich auch für die Stromversorgung immer 2 zusammenlegen, dann bleiben immer noch genug für die serielle Kommnuikation.

Serenifly

#6
Aug 02, 2013, 01:44 pm Last Edit: Aug 02, 2013, 03:45 pm by Serenifly Reason: 1
Ein Grund dass RS232 +/- 12V verwendet ist halt die Störanfälligkeit. 5m mit 3.3V hört sich nicht sehr sicher an. Mit richtigem RS232-Pegel bis du da wesentlich unempfindlicher.

Quote
Dass der Wandler auf 12 V hochregelt bezweifle ich.

Die Wandler setzen die Spannungen in beide Richtungen um. "Geregelt" ist vielleicht etwas übertrieben. Da sind einfach ein paar Schalter und Dioden drin, so dass man mit ein paar externen Kondensatoren eine normale Spannungsverdoppler-Schaltung hat:
http://de.wikipedia.org/wiki/Ladungspumpe
http://de.wikipedia.org/wiki/Spannungsverdoppler

Das Standard-IC für 5V<->RS232 ist dabei der MAX232. Für 3.3V gibt es z.B. den MAX3221

TERWI

Mal hier nachlesen:
http://de.wikipedia.org/wiki/RS-232#Leitungsl.C3.A4nge_und_.C3.9Cbertragungsrate
Eine mögliche Schaltungsvariante:
http://www.google.de/imgres?imgurl=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/max232_nullmodemkabel/rs232_max232_atmega8_nullmodem_v04.gif&imgrefurl=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/max232_nullmodemkabel/&h=610&w=602&sz=19&tbnid=JlQpeJC__-xhfM:&tbnh=90&tbnw=89&zoom=1&usg=__9QQTa11C3YgnI62-oadQHD9H5eE=&docid=q57AybvMq8Z6XM&sa=X&ei=uK_7UeneJ4SMswbAvIDICA&ved=0CDYQ9QEwAQ&dur=7602
To young to die - never to old for rock'n roll

Serenifly

#8
Aug 02, 2013, 03:14 pm Last Edit: Aug 02, 2013, 03:21 pm by Serenifly Reason: 1
@TERWI
Der MAX232 macht aber nur 5V Pegel. Für 3.3V braucht man den MAX3221

In diesem Fall würde ich das aber nicht selbst bauen, sondern zu einem fertigen Modul greifen. z.B.:
http://www.ebay.de/itm/RS232-Interface-Modul-auf-Basis-MAX3221E-P012-48-MAX3221ECPBG4-/161035982284?pt=Wissenschaftliche_Ger%C3%A4te&hash=item257e7e15cc

MGOS

Wie im ersten Post geschrieben, wäre es mir am liebsten wenn ich keinen zusätzlichen Treiber brauche. Gibt's da keine geschickte Lösung? Die Leitung ist auch nur für Steuerbefehle, das muss keine Verbindung mit vielen kbps sein. Wahrscheinlich reicht sogar 2400 baud.

Serenifly

Du kannst ja mal probieren ob es funktioniert.

Wenn nicht musst du halt einen Wandler dazwischen hängen. Das ist keine große Änderung am Aufbau.

Ich sehe da auch generell nicht das Problem. Die gibts für ein paar Euro und sind sehr klein. Die Platinen gibts auch ohne Stecker, so dass du da problemlos ein Ethernet-Kabel, bzw eine RJ-45 Buchse anlöten kannst.

MGOS

Ok, das werde ich mal testen. Danke für deinen letzten Link, der Wandler liegt noch im preislichen Rahmen ist auch schön klein :)

Go Up