-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: I²c BUS Reichweite

  1. #1

    I²c BUS Reichweite

    Anzeige

    Hi Leute
    Ich habe dan mal eine Frage. Hat jemand Erfahrung oder das Wissen, wie weit man eine I ²c Buss entfernungsmäßig ausreizen kann?
    In ersten Versuchen waren 7 m zu viel und 5 cm haben funktioniert.

    Ich wollte diesen Bus zum Aussen und Innentemperatur messen einsetzen.

    Ich stelte mir da schon eine sichere Strecke von ca 20 Metern vor. Kann ich das knicken ? Hat jemand schon mal so was versucht ?


    Mgf -+ Bzzt +-

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    06.11.2006
    Beiträge
    1.078
    Hallo
    20m sind auf jeden Fall schon erreicht worden.
    Das kommt auf die Taktfrequenz, Umgebung, Kabel und Treiber an.
    Sieh mal bei Philipps bzw. NXP nach oder benutze Google.

    Mit freundlichen Grüßen
    Benno
    Wo man nicht mit Vernunft handelt, da ist auch Eifer nichts nütze; und wer hastig läuft, der tritt fehl.
    Ein König richtet das Land auf durchs Recht; wer aber viel Steuern erhebt, richtet es zugrunde

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    hallo,

    20meter wirst du wohl ohne weiteres nicht erreichen, da die kabelkapazität dann für die normalen I2C ports zu hoch werden.

    anders is das bei verwendung von "P82B715 - I2C-bus extender IC's"

    hier muss du jedoch bedenken, dass die relativ viel strom ziehen.

    gruss klaus

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    I2C ist für lange Strecken nicht geeignet, und auch nicht dafür vorgesehen.
    Für größere Entfernungen empfiehlt sich eher CAN.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2006
    Ort
    Dresden
    Alter
    62
    Beiträge
    370
    Hi,
    der P82B96T ( Philips, 8 Pin- SMD ) als Bus-Puffer, auf beiden seiten des Kabels eingesetzt, kann mit 12V Spannung betrieben werden, was die Störsicherheit erhöht.
    Notwendig sind dazu 2 Adernpaare ( Gnd mit SDA verdrillt und Ub mit SCL verdrillt ).
    Kann leider kein Bild hochladen, deshalb Beschreibungsversuch:
    Die jeweiligen Eingänge werden mit Pull-Ups auf 3,3-6V gelegt (Ub der Applikation ), die Ub der P82B96 kann ( muss aber nicht ) an 12 V;
    über das Kabel wird der externe mit versorgt.
    Der IC ist 400kHz Bustakttauglich, ob das erreicht wird, hängt in erster Linie vom Kabel ab.
    MfG Lutz
    Wir haben so viel mit so wenig solange versucht, das wir jetzt qualifiziert sind, fast alles mit fast nichts zu bewerkstelligen.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    das kommt stark auf den Bustakt an. Ich hab ihn hier
    im Betrieb auf ca. 40m gezogen ohne Bustreiber oder anderen
    Schnickschnack. Verwendet hab ich einfache Telephonleitung 4-Drähtig
    mit Schirm, geht fehlerfrei schon seit Wochen. Als Busteilnehmer
    hab ich LM75A dran, gut gestützt und passt.
    Ne Busterminierung ist nicht verkehrt, aber nicht zu klein wählen.
    µC ist ATMega32 in DIL
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  7. #7
    Hi
    Erstmal danke für eure Antworten

    @thewulf00 C-Control 1 Station 2 mit CAN ? kenn ich nicht und gibt es CAN TEMP Sensoren für 5 € ? (Beweggründe --> I²C Sensoren)

    @friLu hört sich realisierbar an. werde ich mir mal genauer anschaun. Ach ja wegen der Bilder: Versuchs doch mal mit http://www.directupload.net/ Dort kannste Bilder ins Netz stellen und den Link ins Forum stellen.

    MfG -+ Bzzt +-

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2006
    Ort
    Dresden
    Alter
    62
    Beiträge
    370
    Hi,
    wenn Du nach p82b96 googelst, findest Du das Datenblatt, in Fig.12 und 14 ist das mit der langen reichweite anschaulich erklärt.
    Und danke für den Link, werds bei gelegenheit ausprobieren.
    MfG Lutz
    Wir haben so viel mit so wenig solange versucht, das wir jetzt qualifiziert sind, fast alles mit fast nichts zu bewerkstelligen.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    04.08.2008
    Ort
    Elmshorn
    Alter
    49
    Beiträge
    31
    Hallo!

    @vitis:
    Mit welcher Frequenz betreibst du den Bus? Ich versuche schon seit einiger Zeit einen LM75C zur Zusammenabrbeit zu bewegen. Der antwortet aber auch auf 2cm nicht, oder ist abgeraucht, oder mein Programm fehlerhaft.
    Benutzt du Hardware-I2C oder verwendest Du Software-I2C an anderen Pins?
    Hast du von den ersten Experimenten noch einfache Software. Ich würde gerne ausprobieren ob mein LM75 tot ist.

    Danke und Gruß

    Heiko
    Gruß
    Heiko

    "... die Schaltung eignet sich auch zum Aufspüren von Geistern abgerauchter Transitoren und angebrannter Kartoffeln..."

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Also, mein Code besteht aus zwei Teilen.
    Zum Einen eine header Datei, die am Anfang includet wird:

    Code:
    
    '--------- LM 75 Temperatursensor ---------
    
    $nocompile
    
    
    Const Lm75_base = &B10010000
    
    Declare Function Lm75read(byval Lm75_id As Byte) As Single
    
    
    Config I2cdelay = 100
    Config Scl = Portc.1                                        ' we need to provide the SCL pin name
    Config Sda = Portc.0                                        ' we need to provide the SDA pin name
    I2cinit
    Ziemlich am Ende des Codes wird eine zweite Datei includet, die
    die Funktionen enthält, zentrale Sub ist diese:

    Code:
    ' ############  LM75 Temperatursensor  ############
    
    $nocompile
    
    
    
    
    Function Lm75read(lm75_id)
       ' -->  Variablen global deklariert in variables.bas  <--
       ' Lm75r = Read-Instruktion
       ' Lm75h = Highbyte Temperatur
       ' Lm75l = Lowbyte Temperatur
       ' Lm75_dez = Temperatur als Dezimalwert
       Local Sub_tempbyte As Byte
       Local Loc_lm75h As Byte
       Local Loc_lm75l As Byte
       Local Loc_tempword As Word
       Local Loc_lm75_dez As Single
    
       Sub_tempbyte = Lm75_id
       Sub_tempbyte = Sub_tempbyte And &B00000111
       Sub_tempbyte = Sub_tempbyte * 2
       Sub_tempbyte = Sub_tempbyte Or Lm75_base
       Lm75w = Sub_tempbyte                                     '= &B10010010
       Lm75r = Sub_tempbyte + 1                                 '= &B10010011
    
       I2cstart
       I2cwbyte Lm75r
       I2crbyte Loc_lm75h , Ack
       I2crbyte Loc_lm75l , Nack
       I2cstop
    
       If Loc_lm75h.7 = 1 Then                                  ' Temperatur ist negativ
          Loc_lm75l = Not Loc_lm75l
          Loc_lm75h = Not Loc_lm75h
          Loc_tempword = Makeint(loc_lm75l , Loc_lm75h)
          Shift Loc_tempword , Right , 5
          Loc_Lm75_dez = Loc_tempword
          Loc_lm75_dez = Loc_lm75_dez / 8
          Loc_lm75_dez = 0 - Loc_lm75_dez
          Lm75read = Loc_lm75_dez
       Else
          Loc_tempword = Makeint(loc_lm75l , Loc_lm75h)
          Shift Loc_tempword , Right , 5
          Loc_Lm75_dez = Loc_tempword
          Loc_Lm75_dez = Loc_Lm75_dez / 8
          Loc_lm75read = Loc_lm75_dez
       End If
    End Function
    End
    abgefragt wird das dann über:
    Temperatur_single = Lm75read(lm75_id) ' 0 bis 8


    Wirklich einfache Codes von meinen Jugendsünden hab ich nicht wirklich
    noch da ... ob Hardware-oder Soft-TWI kommt aufs Projekt an ... bei diesem
    hab ich die Software TWI verwendet. Wenn die LM75 nix sagen hängt
    das meist an den Pullups oder an der Adressierung.
    Beim LM75 gibts 2 verschiedene Adressen je nach Typ wenn ich mich
    noch richtig erinnere ... irgendwo tief im Datenblatt mein ich da mal was
    gelesen zu haben.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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