AVR und die RS485 oder doch Uart?!

Gast #1953795
Lesenswert?

Guten Tag,
Ich bin verzweifelt am Suchen nach der richtigen Lösung für mein 
Projekt.

Es soll folgende Aufgabe erfüllt werden:
Ein AVR liest einen Taster ein. Wenn Taster gedrückt soll ein weiterer 
AVR eine LED leuchten lassen. Und das ganze anders herum: Der zweite Avr 
liest einen Taster aus und soll am 1 AVR eine LED leuchten lassen.

Die Entfernung beträgt ca. 20 Meter. Deswegen fällt TWI flach.

Als Prozessor habe ich den Atmega8 ausgewählt.

Ich würde jetzt gerne das RS-485 Protokoll verwenden. Doch leider 
kapiere ich überhaupt nicht, was ich machen muss damit die beiden 
kommunizieren.

Die TWI Schnittstelle habe ich erfolgreich im Master Slave Betrieb zum 
laufen gebracht. Nur jetzt klappt es nicht.

Meine Überlegung:
Ich mache auf beiden AVR eine UART, die das regelt. Das ist dann aber 
noch kein richtiges RS-485.
Wenn ich jetzt an jeden AVR einen SN75176 hänge wird es dann zu einer 
RS-485 Verbindung?

Wie kann man das geschickt programmieren?

Mfg, der Led Bastler
Gast #1953831
Lesenswert?

Ja. Das UART bringt die Daten in serieller form. Der RS486 Treiber, zB 
ein 75176 macht daraus eine Differentielle Uebertragung. Die beiden 
75176 muessen mit mind. 3 Leitern verbunden werden, das waeren dann 
+Data, -Data und GND.
Die 75176 habe je einen Richtungspin, den muss man passend ansteuern. 
Einer der Beiden sendet, der andere empfaengt. Einer ist der Master, der 
bestimmt wann gesendet wird. Die controller wissen vom Protokol her wann 
umzuschalten ist. Falls das nicht so klar oder zu kompliziert ist, 
sollte man RS422 verwenden. RS422 is im Wesentlichen dasselbe, ausser, 
dass je ein Leiterpaar pro Richtung existiert. Man benoetigt also 5 
Leiter ( +rx, -Rx, +Tx, -Tx und GND) Dabei duerfen beide Teilnehmer 
immer senden.
Die 75176 sind uebrigens veraltet, ziehen viel zuviel Strom (40mA). 
Modernere Teile ziehen weniger als ein Hundertstel (350uA)
#1953941
Lesenswert?

Oder du verzichtest auf die asynchrone Übertragung und benutzt z.B. den 
Manchester-Code.
Noch ne Überlegung: vielleicht ne 4-Draht-Leitung? Wenn die Leitung noch 
nicht liegt, ist das i.a. kein Problem. Dir bleibt die 
Richtungsumschaltung und die Kollisionserkennung/Vermeidung erspart. 
Treiber wäre dann SN75179 o.ä.
Noch ne Idee: benutz CAN-Treiber. Die brauchen auch keine 
Richtungsumschaltung, und wenn du dein eigenes gesendetes Telegramm 
fehlerfrei empfängst, kannst du davon ausgehen, dass auch der andere das 
korrekt empfangen hat (ja, ich weiss, ne Garantie ist das nicht, aber 
die Wahrscheinlichkeit ist sehr hoch). Mit CAN-Treibern (CAN-Controller 
brauchst du nicht dafür!) kommst du auch mit ner Zweidrahtleitung aus. 
Bei deinem Datenvolumen sogar mit einem :-)

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