Forum: Mikrocontroller und Digitale Elektronik RS485 mit max485 und max490


von Benjamin K. (benkly)


Lesenswert?

Hallo,

ich habe da ein kleines Problem. Ich habe einen RGBW Controller mit DMX 
Sendefunktion. Das funktionierte bisher auch immer ganz gut.

Nun habe ich eine 2. Controllerplatine mit einem max490 erstellt und in 
die Produktion geschickt. Naja, nur will der irgendwie nichts empfangen. 
Ich habe das nun soweit mit dem Oszi ausgemessen, am Rx des µC kommt 
schon Müll an, also da flattert die Spannung so auf 2,5V herum.

Wenn ich auf der DMX Leitung messe dann bekomme ich schön die Signale 
auf dem Display bei DMX + und bei DMX - das Gegenteil dazu. Wenn ich nun 
die DMX Leitungen an den Empfänger (Max490) anklemme dann habe ich die 
Signale nur noch auf der DMX+ Leitung, die DMX Minus hängt dann 
dauerhaft oben. -> da kann ja dann nix bei rauskommen.

Aber was muss ich nun ändern damit das klappt? Momentan hängt nur ein 
120 Ohm Widerstand beim Sender, muss beim Empfänger auch einer hin? Oder 
muss beim Empfänger ein 120 Ohm Widerstand hin und der beim Sender sogar 
weg? Und wie ist das dann wenn da mehrere Empfänger an den Bus sollen, 
wo müssen dann die Widerstände hin?

Bitte helft mir da ein wenig, ist für ein Entwicklungsprojekt und mit 
den Max490 hänge ich da jetzt ein bissel durch....

Danke schonmal an alle!

Gruß, Benny.

von Plan (Gast)


Lesenswert?

Du weißt, dass der MAX490 nicht Pinkompatibel zu MAX485 ist?

An A (Y) einen Pull Up von 1-3K an Vcc.
An B (Z) einen Pull Down von 1-3K an GND.

GND Leitung verbinden zuwischen RS485 Teilnehmer.

von Benjamin K. (benkly)


Lesenswert?

Hi,

das die nicht Pnkompatibel sind weiß ich. Der neue Controler (Empfänger) 
ist beim RS485 Teil auch anderst beschaltet. Da habe ich vom max490...

DI an Tx
RO an Rx
Y,Z ist Busausgang
A,B ist Buseingang

A habe ich mit 18nF gegen GND, ebenso B. Ich habe von A zu B einen 
Brückwiderstand von 120 Ohm vorgesehen aber noch nicht bestückt.

Beim alten Controller habe ich dann den Max485. Da habe ich...

DI an Tx
RO an Rx
A,B ist Busausgang und Max485 ist als Sender eingestellt.

Auch hier habe ich wieder A über 18pF gegen GND, ebenso B.

Nun will ich eigentlich nur das der Sender sendet und der Empfänger 
empfängt. Für was brauche ich nun diesen Pull Up bzw. Down von 1-3K? Ich 
meine irgendwo hier gelesen zu haben das man diese nur braucht wenn man 
keinen Sender auf dem Bus hat, damit die anderen keinen Müll empfangen 
durch Störungen. In meinem Testaufbau habe ich aber nur max. 20cm 
Verbindungsleitung. Später werden es eventuell 5m sein und es wird immer 
nur einen Sender (Max485) und etwa 10 Empfänger (Max490) geben. Alle 
hängen an der selben Versorgungsspannung, also haben den gleichen GND.

Noch weitere Tipps? Wie steht es mit den 120 Ohms?

Gruß, Benny.

von Plan (Gast)


Lesenswert?

Im Datasheet
http://datasheets.maxim-ic.com/en/ds/MAX1487-MAX491.pdf
Ist der Widerstand 120R immer eingebaut.

Ein Draht unterbrochen? Durchpipsen?

Softwarefehler?
Sind noch irgend welche Jumper auf dem Controller Board einzustellen?
Ist die Schnittstelle in der Software Paremetrierung überhaupt auf die 
richtige Baudrate  Parity  Stoppbit eingestellt?

Gemessen mit Oszi und die Bytes manuell angeschaut?

Datenlogger angeschlossen und parallel am Bus geschaut?

<werbung>
Beispiel mit:
http://www.mmvisual.de/indexbinterm.htm
der USB-Datenspion.
</werbung>

von Benjamin K. (benkly)


Lesenswert?

Hallo,

im Datenblatt sehe ich die 120 Ohm nur bei den beiden äusseren 
Empfängern, bei den dazwischen nicht. Aber gut, ich habe ja aktuell auch 
nur den einen Sender und einen Empfänger. Im Code ist alles so 
eingestellt wie beim Sender auch. Und der Sender funktioniert ja auch 
einwandfrei, einstellbar als Empfänger und als Sender, das wird da im 
Menü eingestellt und passt auch soweit.

Auch die Signale auf der Busleitung sehen gut aus, nur sobald ich den 
Empfänger mit auf den Bus klemme dann habe ich auf einem der beiden 
Busleitungen kein Signal mehr sondern nur noch Dauerplus bzw. Dauer-GND. 
Das sollte ja nicht der Fall sein.

Beim Sender weiß ich also das der ordentlich sendet da dieser auch mit 
anderen richtig funktioniert. Beim Empfänger weiß ich das der UART für 
den Empfang auch grundsätzlich tut, hab extra mal nen Zähler zum testen 
einprogrammiert damit man es auf dem Display sieht wenn auf Rx was 
reinkommt. Grundsätzlich tut der Teil schonmal. Ich denke der Fehler 
lieht hier am Bus, aber wo?

Gruß, Benny.

von Plan (Gast)


Lesenswert?

Mal Spannungslos machen und Pipsen.
A >> GND
B >> GND
A >> Vcc
B >> Vcc
Alles sollte hochohmig sein (bzw. 0,6V wegen Diodenspannung)

A / B Nicht vertauscht angeschlossen?

Am besten direkt vom MAX-Chip zum anderen MAX Chip durchpipsen. Es soll 
ja schon mal vorgekommen sein dass der Layouter den Stecker falsch 
geroutet hat und niemand hats bemerkt.

von Spezi (Gast)


Lesenswert?

Hallo,

> Y,Z ist Busausgang
> A,B ist Buseingang

Wo genau hast Du nun die RS485-Bus-Leitung am MAX490 angeschlossen?
Wenn das Teil als Sender dienen soll, sind hierfür die Pins Y und Z an 
den Bus anzuschliessen; als Empfänger sind (nur) die Eingänge A und B zu 
verwenden.

Zur Bus-Terminierung:
Wie im Datenblatt zum IC erkennbar, ist eine Busleitung, die am Anfang 
den Sender hat und wo sonst nur Empfänger angeschlossen sind, am ENDE 
der Leitung mit 120 Ohm zu terminieren (RS422-Prinzip; Übertragung nur 
in eine Richtung).
Wenn aber mehrere Sender vorhanden sind oder der Sender nicht am Anfang 
der Leitung sitzt, sollen die Leitungen an an BEIDEN Enden terminiert 
werden (Standard bei RS485; bidirektionale Übertragung).

von Plan (Gast)


Lesenswert?

Auch mal die Pins direkt vom MAX in die CPU pipsen.

von Benjamin K. (benkly)


Lesenswert?

Hallo,

ich werde die Leitungen mal durchpiepsen, wird wohl an einer 
unbestückten Platine am leichtesten sein. Dann kann ich nen Layoutfehler 
ausschliessen. Aso, Layouter bin ich selbst und hab den Stecker nun 
schon sehr oft überprüft. Layouttechnisch sollte das alles passen, am Rx 
kommt ja auch was an. Aber es kommt halt nur so Müll an, Signal von Vcc 
bis etwa ca. 3V -> also der µC würde die Einsen erkennen, aber die 
Nullen nicht da die nicht ganz bis auf 0V runter gehen sondern nur bis 
ca. 2,5 bis 3V. Das würde sich ja dann auch mit dem schlechten Bussignal 
decken wenn ich nur noch auf einer Leitung das Signal habe und auf der 
anderen Dauerplus.

A und B habe ich auch schon gedreht. Es ist aber immer das gleiche, auf 
einer Busleitung bleibt das Signal, die andere hängt dann entweder Dauer 
auf Plus oder Minus, je nach dem wie rum man A und B halt anklemmt.

Am Max490 habe ich die Busleitung an A und B angeschlossen, den will ich 
ja erstmal nur als Empfänger haben.

Das mit den 120 Ohm werde ich heute Nachmittag mal testen, ich denke das 
da irgendwas nicht passt. Wo soll ich den 120 Ohm reinsetzen? Auf der 
Empfängerplatine habe ich dafür ein Widerstand eingeplant, oder nur an 
die Busleitung? Und den 120 Ohm beim Sender kann ich dann weglassen?

Gruß, Benny.

von Spezi (Gast)


Lesenswert?

> Wo soll ich den 120 Ohm reinsetzen? Auf der Empfängerplatine habe ich
> dafür ein Widerstand eingeplant, oder nur an die Busleitung?

Zunächst: Es werden die Bus-Leitungen terminiert, um Reflexionen der 
Signale an den physikalischen Enden der Leitung zu unterbinden (diese 
können zu Störungen führen).

Wie ich bereits ausführte, hängt die Terminierung von der Art der 
Übertragung und der Anordnung der Module am Bus-Kabel ab. Will man am 
flexibelsten sein, dann terminiert man BEIDE Enden der Leitung. Das kann 
entweder an der Leitung selbst geschehen (wenn das Ende nicht an einem 
Modul hängt) oder natürlich auch auf dem Modul. Die Praxis zeigt, dass 
es einfacher ist, die Leitung selbst zu terminieren, da man dann 
einfacher Module zufügen oder wegnehmen kann, ohne auf die Abschlüsse 
achten zu müssen.

Ein Studium des MAXIM-Datenblatts liefert auch Informationen zur 
Terminierung von Busleitungen.

von Benjamin K. (benkly)


Angehängte Dateien:

Lesenswert?

Hallo,

kann es sein das der max485 und der max490 nicht miteinander können? Ich 
habe hier noch ein DMX Pult stehen, mit dem kann ich den kleinen 
Empfänger steuern.

Folgendes, ich habe einen großen und einen kleinen Controller. Der große 
Controller hat nen max485 und kann senden oder empfangen. Der kleine 
Controller hat den max490 und den benutze ich vorerst nur für den 
Empfang.

Wenn ich nun 2 große Controller miteinander verbinde dann funktioniert 
alles gut, ich kann den einen mit dem anderen steuern.

Wenn ich nun das Lichtpult an den großen Controller anklemme dann kann 
ich diesen auch sehr gut steuern.

Wenn ich das Lichtpult an den kleinen Controller klemme, dann 
funktionierts auch. Nur wenn ich den großen Controller an den kleinen 
Controller klemme, dann tut sich nichts. Was halt komisch ist da die 
Empfangsroutinen der beiden Controller gleich sind und zwischen 2 großen 
Controllern klappts ja.

Was mich auch etwas verwundert, wenn ich den max485 auf Empfänger 
schalte, dann gehen A und B auf Low solange die beiden offen sind. Wenn 
ich aber A und B an dem max490 offen messe, dann liegen die auf high -> 
ist das normal?

Ich weiß da echt nimmer weiter, hab mal den Schaltplan vom kleinen 
Controller angehängt und hier gibt es auf Seite 4 den Schaltplan vom 
großen Controller:

https://www.eiwomisa.de/website/index.php?option=com_rokdownloads&view=file&Itemid=86&id=10:eiwomisa-v1-2-bedienungs-und-bestcksanleitung

Bitte helft mir! :-(

Gruß, Benny.

von Plan (Gast)


Lesenswert?

Dann versuche doch mal das:
Beitrag "Re: RS485 mit max485 und max490"
mit den PullUp/Downs.

von Plan (Gast)


Lesenswert?

Zum Schaltplan:
- Die IRLIZ sind beim Großen anders angeschlossen. Da gibt es eine 
Verbindung zu VIn. Beim Kleinen kängen die FETs in der Luft, das klappt 
so nicht richtig.
- Diese vielen Leitungen sind recht verwirrend. Mit Target kann man 
Labels verwenden. Taste r öffnet den Dialog da kamm kan z.G. GND 
auswählen. Die Leitung mit dem gleichen Name ist bei Target automatisch 
verbunden ohne dass man die quer durch den Plan zieht.
Mit dem Signal !SIG-AUS / !SIG-EIN kann man eigene Signale machen in dem 
man dieses Symbol holt und den Text umbenennt.
Beispiel:
Beitrag "Re: Heizungssteurung im Eigenbau"

Dann ist der Plan übersichtlicher und wenn man den erweitern möchte kann 
man die einzelnen Blöcke besser verschieben ohne dass man dann alle 
Leitungen wieder "gerade" biegen muss.

von Benjamin K. (benkly)


Lesenswert?

Hallo,

Plan schrieb:
> An A (Y) einen Pull Up von 1-3K an Vcc.
> An B (Z) einen Pull Down von 1-3K an GND.

An welchen Chip soll ich die Pull-Ups/Downs dran machen? An den Max485 
oder den Max490? Und auf der Sender oder Empfängerseite? Ich verstehe 
nur nicht warum es mit dem Lichtpult geht und mit dem großen Controller 
nicht. Aber großer mit großem Controller geht wieder. Und Lichtpult mit 
großem Controller auch......   :-(


Plan schrieb:
> Zum Schaltplan:
> - Die IRLIZ sind beim Großen anders angeschlossen. Da gibt es eine
> Verbindung zu VIn. Beim Kleinen kängen die FETs in der Luft, das klappt
> so nicht richtig.

Die Mosfets hängen nicht in der Luft! Die LED Stripes hängen mit 
gemeinsamer Anode direkt an 24V und auf der anderen Seite kommen die 
dann zu den Fets, von dort werden die dann alle extern mit GND 
verbunden. Das ist günstiger als 70µm Kupferplatine und auf diese Art 
kann man mit 35µm Kupfer dennoch gute 7A über die Leiterbahn lassen bei 
nur 10° Erwärmung ;-)

Gruß, Benny.

von Plan (Gast)


Lesenswert?

Am MAX490, Eingang.

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.