-
        

Ergebnis 1 bis 8 von 8

Thema: i²C Bus. 15 Slaves in Reihe, 1,5m Abstand

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2013
    Beiträge
    5

    i²C Bus. 15 Slaves in Reihe, 1,5m Abstand

    Anzeige

    Hallo,

    ich habe durch Steckmontage eine große Platine vor mir, welche 1,5 in der Länge misst. Auf ihr sind 15 Bausteine in gleichen Abständen verteilt, die miteinander über wenige Bytes kommunizieren ( Atmega8 ). Meine Fragen lauten:

    -Wohin gehören die Widerstände für die Busleitung? Am Anfang, Mitte oder ende der Leitung?
    -Welche Maßnahmen sollten bei 1,5m Leitungslänge getroffen werden, damit die Signalübertragung zuverlässig funktioniert?
    -Ist es notwendig/angebracht, jeden Slave mit einem Treiber zu versehen?

    Im Grunde arbeiten alle Megas als Sensoren und wenn einer etwas gemessen hat, wird es an den zentralen Mega am Ende der Kette geschickt.

    mfg,
    Nils

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    26
    Beiträge
    1.192
    Hallo,
    der I2C-Bus ist eigentlich nicht für solche Entfernungen gedacht.
    Das Problem sind die Pullup-Widerstände in Kombination mit den parasitären Kapazitäten.
    Diese RC-Kombination ist ein Tiefpass und wird deine Übertragungsgeschwindigkeit begrenzen.
    Den Pullup kann man leider auch nicht zu niederohmig machen, bei 3mA ist Schluss.
    Auch stelle ich mir einen Multimastermode nicht einfach vor.
    Versuchen kannst du es, musst aber wohl mit einer niedrigen SCL-Frequenz zurecht kommen
    Grüße, Bernhard

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2013
    Beiträge
    5
    Welcher Bus würde sich denn stattdessen eignen? SPI ist auch nicht für lange Leitungen ausgelegt? Can?

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.02.2005
    Ort
    München
    Alter
    32
    Beiträge
    389
    Also mit CAN kannst du nichts falsch machen, dass ist für den Industriellen Einsatz entwickelt, auch über größere Strecken und sehr hoher Störsicherheit.
    Ist natürlich teuer als I²C das kann jeder 2€ µC und die Ansteuerung ist auch etwas komplexer
    Kommt drauf an wie weit du mit deiner Entwicklung bist.
    Es gibt auch Leute die ihr Hausbussystem mit I²C steuern, also so kritisch sind die 1.5m nun auch nicht. Wenn du mim Speed runter gehst sollte es deutlich störsicherer sein. Auf jeden Fall auf die Leiterbahrführung achten. Kannst ja auch Fehlererkennung in die Software einbauen (Hamming-Code, CRC, ...).
    Widerstände gehören an den Master, da der immer da sein wird.


    Gruß Matthias

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2013
    Beiträge
    5
    Ich habe die Platine fertig geroutet (ist kaskadierbar, 15 mal in Reihe). Derzeit hängt alles über SPI in einem Ring. I²C der Mega8s sind belegt da, alle 6 ADCs verwendet werden. Also muss jetzt eine Möglichkeit gefunden werden, dass jeder der 15 Mega8 sobald er zu sendende Daten hat, diese an ein Zentrum schicken kann - ein weitere µC oder einer bereits verwendeten. Empfangen sollte er auch können. Ich könnte das ganze mit Mega16 neu aufbauen, dort wäre I²C verfügbar.

    Es ist keine hochfrequente Anwendung 100khz würde auch reichen.

    Den SPI-Ring habe ich mit Treiber vor jedem Baustein versehen. 15*8ns Verzögerungszeit der Treiber = 105ns. Bei 1Mhz wäre dies ja noch in Ordnung, wenn eine Flanke 500ns anliegt.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Ich weiß zwar nicht was du vorhast und ob das Auslesen über Interrupt laufen muss, du könntest aber einen PCF8574 verwenden (falls am Master I2C frei ist bzw du Soft I2C verwenden kannst). Dieser hat einen Int Ausgang, somit kannst du dem Master signalisieren das an einem Slave Daten anliegen. Wenn du jetzt einen Int bekommen hast ließt du den PCF8574 aus und weißt somit welcher Slave neue Daten hat. Den kann man dann gezielt auslesen. Da der PCF8574 nur 8 I/Os hat brauchst du 2 PCF8574 (oder es gibt einen der mehrere Eingänge hat).

    Ansonsten kannst du zyklisch die Slaves auslesen.

    MfG Hannes

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2013
    Beiträge
    5
    11 µC mit jeweils 8 Sensoren um Tasten vom Klavier abzunehmen (Position, gedrückt oder nicht gedrückt, Lautstärke). Sobald eine Taste als gedrückt erkannt wird, soll der entsprechende µC Information an einen zentralen µC gesendet werden (sprich Multimaster). Da bietet sich meiner Meinung nach I²C vom Protokoll geradezu an. PCF8574 macht die ganze Sache nur noch komplizierter. Ständig alle µC zu pollen (wie bei SPI z.b.) verbraucht nur unnötig Ressourcen und wäre vom Timing wohl zu ungenau (Tastendruck - Pause - Information wird abgefragt. Man kann ja schon 1ms Latenz hören.).

    Wenn ich die ganze Sache mit 100khz betreibe brauchen 3 Byte ohen Kontrollbits 24µS. Ich muss nur die elektronische Funktionalität gewährleisten.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Da wird wie du schreibst ein Multimaster System besser geeignet sein, da kann ich dir aber nicht helfen. Du kannst versuchen so den Aufbau machen oder mit einem I2C Busextender (http://www.nxp.com/documents/data_sheet/P82B715.pdf) arbeiten.

    MfG Hannes

Ähnliche Themen

  1. Platinenlayout Euro-Bus-Platine: Abstand der Stecker?
    Von Jaecko im Forum Konstruktion/CAD/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 11
    Letzter Beitrag: 06.05.2012, 19:22
  2. I2C Bus mit 10 Slaves auf 10 metern
    Von changlee im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 29.05.2011, 14:44
  3. Adressierung von SPI-Slaves
    Von goof1980 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 2
    Letzter Beitrag: 14.03.2011, 21:24
  4. Unidirektionale ISP (8 Slaves)
    Von goara im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 06.03.2009, 16:11
  5. Mehrere I2C SLaves in einem PIC simulieren
    Von andi-58 im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 11.08.2005, 15:51

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •