mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS485 an I2C ?


Autor: Mike B. (jehan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein I2C-Bus mit einem Mikrocontroller als Master und mehrere 
PCF8574 als Slaves. Nun möchte ich dieses bestehende System 
hardwaremäßig über ein RS485-Bus laufen lassen, wobei ich an einen 
I2C-RS485-Wandler gedacht habe. Habe irgendwo mal gelesen, daß dies 
sogar recht einfach ginge ... irgendwie nach jedem I2C-Baustein ein MAX 
485 hängen und diese bi-direktional zusammenschalten ...
Geht das überhaupt so einfach ?

Gruß Mike

Autor: Frank B. (frankman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike B. wrote:
> Hallo,
>
> ich habe ein I2C-Bus mit einem Mikrocontroller als Master und mehrere
> PCF8574 als Slaves. Nun möchte ich dieses bestehende System
> hardwaremäßig über ein RS485-Bus laufen lassen, wobei ich an einen
> I2C-RS485-Wandler gedacht habe. Habe irgendwo mal gelesen, daß dies
> sogar recht einfach ginge ... irgendwie nach jedem I2C-Baustein ein MAX
> 485 hängen und diese bi-direktional zusammenschalten ...
> Geht das überhaupt so einfach ?
>
> Gruß Mike

Nein, so einfach geht das nicht, RS485 und I2C sind vom Aufbau her 
unterschiedlich:

I2C hat eine Daten und eine Clock-Leitung.
RS485 ist bidirektional und differenziell.

d.H. bei I2C wird ein bit so übertragen das zuerst die Data-Leitung 
einen Pegel annimmt, dann wird auf die Clock-Leitung auf Null gezogen, 
und der Empfänger übernimmt den Zustand der Data- Leitung.

Bei RS485 wird ein Bit so übertragen, das die Leitung dabei kurz oder 
lang ein oder ausgeschaltet ist . Differenziell bedeutet hier, das es 
nicht explizit eine Masse oder GND gibt, sondern das für die 
Datenleitung eine zweite Leitung existiert. Soll zwischen Null und Eins 
umgeschaltet werden, so werden die beiden Leitungen umgepolt.
Also ist immer eine Leitung Eins und die Andere Null oder umgekehrt. Das 
kann man nicht so einfach zusammen mixen....

Autor: Mike B. (jehan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Frank,

ja, das ist im Prinzip schon richtig.

Ich habe es so ähnlich noch in Erinnerung :

- Pull-up-Widerstände an SCL und SDA belassen.
- Danach an SCL und SDA die RS485-Treiber mit ihren 
Abschluß-Widerständen  dran hängen.
- Beim SCL ersten Treiber des MAX485 beim Master die Datenrichtung auf 
"Senden" und beim Slave auf "Empfang" legen.
- Beim SDA zweiten Treiber des MAX485 beim Master sowohl Slave jeweils 
auf "Empfang" und "Senden" legen und beide Datenleitungen bidirektional 
zusammen zu einer Leitung legen.
- Protokoll ist der RS485 eigentlich egal.

So ähnlich habs ich damals gelesen ...

Vielleicht gehts so oder ähnlich oder ist das totaler Unsinn ?

Gruß0 Mike

Autor: Frank B. (frankman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike B. wrote:
> Hallo Frank,
>
> ja, das ist im Prinzip schon richtig.
>
> Ich habe es so ähnlich noch in Erinnerung :
>
> - Pull-up-Widerstände an SCL und SDA belassen.
> - Danach an SCL und SDA die RS485-Treiber mit ihren
> Abschluß-Widerständen  dran hängen.
> - Beim SCL ersten Treiber des MAX485 beim Master die Datenrichtung auf
> "Senden" und beim Slave auf "Empfang" legen.
> - Beim SDA zweiten Treiber des MAX485 beim Master sowohl Slave jeweils
> auf "Empfang" und "Senden" legen und beide Datenleitungen bidirektional
> zusammen zu einer Leitung legen.
> - Protokoll ist der RS485 eigentlich egal.
>
> So ähnlich habs ich damals gelesen ...
>
> Vielleicht gehts so oder ähnlich oder ist das totaler Unsinn ?
>
> Gruß0 Mike

Könnte gehen, bringt aber nix:
1. Du benötigst 2 Leitungen für die SCL Leitung ( RS485 A und B)
2. Du benötigst 2 Leitungen für die SDA Leitung ( RS485 A und B)
3. Du benötigst 1 Leitung um Sender und / oder Empfänger von Senden auf 
Empfangen umzuschalten...
4. und wie möchtest Du diese Umschaltung realisieren?


Wenn Du unbedingt die Reichweite von I2C verlängern möchtest, dann gibt 
es dafür extra IC´s (Analog Devices, wenn ich mich nicht irre oder 
Linear Technology)


Wenn Du unbedingt RS485 nehmen möchtest, dann würde ich einen yC 
dazwischen setzen, der das Protokoll umsetzt. ( RS485 ist das gleiche, 
wie RS 232, also LT485 oder MAX485 an die RXD und TXD-Leitung des 
Prozessors anschließen und dann mit zwei Portpins oder integrierter 
I2C-Funktion "übersetzen"

Aber beides Mixen wollen wird nix....leider...

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>- Beim SDA zweiten Treiber des MAX485 beim Master sowohl Slave jeweils
>auf "Empfang" und "Senden" legen und beide Datenleitungen bidirektional
>zusammen zu einer Leitung legen.
Der MAX-Baustein braucht eine Steuerleitung für die Richtung.
So einfach ist das also nicht.
Dazu wäre ein CAN-Transceiver wie PCA82C250 (oder so ähnlich) wesentlich 
besser geeignet, da damit auf der RS485-Seite keine Kurzschlüsse möglich 
sind.
Auf der TTL-Seite sollte man die Sende- und die Empfangsleitung noch 
durch einen Open-Kollektor-Baustein in der Empfangsleitung entkoppeln - 
auch eine Kurzschlußquelle.

>- Protokoll ist der RS485 eigentlich egal.
Das stimmt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.