Forum: Haus & Smart Home RS-485 mit Arduino+ATTiny und MAX485 sendet/empfängt nicht


von Andre P. (stax)


Angehängte Dateien:

Lesenswert?

Hi,

ich versuche gerade meine ersten Schritte mit einem RS485 Bus.

Dafür habe ich momentan nur zwei Teilnehmer, einen Arduino Uno und ein 
Attiny2313V.

Diese beiden sollen über RS485 kommunizieren. Erst einmal reicht es, 
wenn der Attiny nur sendet und der Arduino nur empfängt.

Ich habe auf dem Steckbrett nur das nötigste. Aber dennoch sollte es so 
ja funktionieren?

Mein Problem ist, dass bei dem Arduino an den RX-Pin nichts ankommt.

Der Attiny ist richtig programmiert und sendet.
Dies weiß ich daher, da der Arduino die Daten bekommt, wenn ich den 
Attiny und den Arduino direkt verbinde (ohne die MAX485's).

Schalte ich die MAX485-DIP dazwischen kommt nichts mehr an. Bei der 
Verkabelung habe ich mich bei den vielen Beispielen und dem Datenblatt 
orientiert.

Die Kontakte habe ich alle überprüft. Ich denke es liegt irgendwie einer 
falschen Beschaltung (oder etwas fehlt).

Auch mit 2x100Ohm zwischen A-B funktioniert es nicht.

Der RE+DE Pin ist beim Transmitter auf dauer 5V und beim Receiver auf 
dauer 0V.
Grund: Dann fällt die Fehlerquelle mit dem Pinwechsel/Timing auch weg?!

Wäre super, wenn ihr mir helft. Ich weiß nicht mehr weiter...


Baud:4800

von Peter L. (Gast)


Lesenswert?

Hast du am sendenden Baustein DE auf high gesetzt? Erst danach sendet er 
auch wirklich über den Bus. Standartmäßig sind sie so verschaltet dass 
durch den invertierten Eingang RE ein dauerhaftes Empfangen ermöglicht 
werden. Um aber auch hier keine komischen Effekte beobachten zu müssen, 
solltest du einen Pull-Down Widerstand noch gegen GND verschalten

Da es sich um einen Bus handelt erfolgt dadurch eine relativ simple 
Zugriffskontrolle.

von TestX .. (xaos)


Lesenswert?

hast du auch einen schaltplan von deinem aufbau ? so macht das keinen 
spaß !

von Andre P. (stax)


Angehängte Dateien:

Lesenswert?

Ich habe mal einen Schaltplan erstellt.

Wie bereits gesagt kommen die 5V vom Arduino und wenn ich TX+RX vom 
ATTiny2313V direkt mit TX+RX vom Arduino verbinde kommen die Daten beim 
Arduino an.

Daher sollte man Grundschaltung vom Attiny ja auch stimmen?


Danke schon einmal für die Hilfe!

von Andre P. (stax)


Lesenswert?

Weiß keiner weiter?

von also (Gast)


Lesenswert?

RE/ und DE miteinander zu verbinden ist OK. Aber wenn du das auf festes 
Potenzial legst, legst du die Übertragungsrichtung in nur eine Richtun 
fest. Normalerweise steuerst du mit einem Pin des Controlles die 
Richtung, d.h. du wechselst zwischen Senden und Empfang. Genauer: Du 
schaltest nur dann auf senden, wenn du etwas zu senden hast, den Rest 
der Zeit bleibst du auf Empfang.

von Andre P. (stax)


Lesenswert?

Das ist mir klar.
Aber um eine Fehlerquelle auszuschließen habe ich es zu Testzwecken 
dauerhaft auf HIGH gelegt.

Dann fällt die Fehlerquelle mit dem Timing und dem umschalten ja weg.

von Martin S. (docmartin)


Lesenswert?

Hast Du ein Oszilloskop verfügbar?

Die Schaltung sieht ansich vernünftig aus, du müßtest also nach den 
Signalen
(TxD -> A/B -> RxD) schauen, um den Fehler zu finden...

Evtl. hilft ein komplettes R-Netzwerk an einem der MAX485 (also R von B 
gegen GND, R zwischen A und B, R von A nach VCC).

Ahoi, Martin

von Andre P. (stax)


Lesenswert?

Leider habe ich kein Oszilloskop verfügbar...

Mir ist nicht ganz klar was Du mit R-Netzwerk meinst.

R ist ein Widerstand, wenn ja mit wie viel Ohm?

von KiliPet (Gast)


Lesenswert?

Du hast in deiner Schaltung RE/ und DE von beiden RS485 bausteinen auf 
GND gelegt. Um von einem zum anderen zu senden muss natürlich der 
sendende auf Vcc und der empfangende auf GND.

von KiliPet (Gast)


Lesenswert?

Ups haste ja,
mein Fehler.

Vielleicht A und B vertauscht?

von Andre P. (stax)


Lesenswert?

Ne A und B ist nicht vertauscht.

A ist mit A verbunden und B mit B.

von STK500-Besitzer (Gast)


Lesenswert?

Hast du schon mal die TXD-Datenleitung mit einem festen Pegel 
beschaltet, also ohne irgendwelche Controller und bei der Gegenstelle 
den gleichen Pegel gemessen?

von Andre P. (stax)


Lesenswert?

Ich weiß nicht genau was Du damit meinst.

Ich habe die beiden Controller mal direkt mit TxD und RxD verbunden und 
dann hat alles funktioniert. Oder was meinst Du?


Danke für die Antworten bisher!

von Konrad S. (maybee)


Lesenswert?

Damit meint er sowas wie:
Du hältst beide µCs dauerhaft im Reset, damit die Ports hochohmig sind.
Den einen MAX485 schaltest du auf Senden, den anderen auf Empfang.
Am DI des sendenden MAX485 legst du LOW an und kontrollierst am RO des 
empfangenden MAX485, ob ein LOW rauskommt. Dann mit HIGH testen.
Dann Sender und Empfänger umschalten und in die Gegenrichtung testen.

von ge-nka (Gast)


Lesenswert?

A und B mit Biaswiderständen auf GND und +5V ziehen, sonst geht bei 
einem UART-Frame der Startbit verloren, spätestens wenn du einen dritten 
Teilnehmer anschließt. Bei zwei kann es noch gerademalso funktionieren.

von Andre P. (stax)


Lesenswert?

ge-nka schrieb:
> A und B mit Biaswiderständen auf GND und +5V ziehen, sonst geht bei
> einem UART-Frame der Startbit verloren, spätestens wenn du einen dritten
> Teilnehmer anschließt. Bei zwei kann es noch gerademalso funktionieren.

Leider verstehe ich nicht ganz was Du damit meinst.

Wäre es möglich, dass Du mir einen kleinen Schaltplan anfertigst wo ich 
sehen kann was ich genau machen muss?

Das wäre sehr hilfreich.

von ge-nka (Gast)


Lesenswert?

Beitrag "2 RS-485 so richtig ?"
mkmk schrieb:
> In meinen Applikationen (Entfernung einige 100m) benutze ich 120R für R4
> und R7, 560R für R8, R9 bzw. R5, R6.
>
> R8, R9, R5 und R6 nur auf einer Seite.
> R4 und R7 auf beiden Seiten.
>
> MfG

R8,R9 und R5,R6 sind Biaswiderstände.

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
Noch kein Account? Hier anmelden.