Hallo!! Über welche Distanz kann man eigentlich eine I2C Bus verlegen, ohne irgendwas an der vorhandenen Standard Hardware (PIC16F877 + 2x 3k3 Pull_up´s an SCL & SDA) zu verändern??? Ich habe vor ein LCD Display über eine Distanz von ca. 30 - 40m mit nem I2C Bus anzusprechen!!! Wüd mich über ne Antwort freuen!!! MFG ipirk
Hy nemo!! Wie kann ich das den mit vorhandenen Bauteilen (div. Standart Transistoren, Widerständen, ... ) lößen?? Ich will keinen Busextender bestellen (das Projekt is ziemlich eilig)!! MFG
Könnte klappen. Die SDA und SCL Leitungen sollten dann aber nicht miteinander verdrillt sein. Sonst unterhalten die sich. Ein geschirmtes Kabel wäre auch nicht schlecht.
Compy wrote: > "Standart" isses zwar net, aber idiotensicher: SN75176BP > (RS485-Bustransceiver) Wie funktioniert sowas bei einem Bus, der inhärent bidirektional ist (clock stretching)? Mit CAN Transceivern mag das gehen, aber mit RS485?
Nachtrag: Such mal nach "Totem-Pole-Treiber", sowas ähnliches verwenden die AVR als Ausgänge. Die können sowohl Strom ziehen als auch schieben (jew. einige 10 Milliampere). Mit ausreichenden Transen sollte sich sowas gut eignen. Man nimmt dafür gerne ein Komplementärpaar (BC547, NPN, und BC557, PNP), der eine zieht nach Masse, der andre nach Vcc. Das entspricht dann einem Verstärker, und wenn du Vcc hoch genug wählst (12V oder so), gibt's auch nen ausreichenden Rauschabstand und damit ordentlich Signalsicherheit. Auf der Gegenseite bastelste dir mit OPV am einfachsten Schmitt-Trigger.
Andreas Kaiser sacht: > Wie funktioniert sowas bei einem Bus, der inhärent bidirektional ist > (clock stretching)? Mit CAN Transceivern mag das gehen, aber mit RS485? Er muss ja nicht unbedingt bidirektional gebaut werden, zumindest was das clock stretching angeht. Für die Datenleitung, da hasse recht schäm. Evtl. ne dritte Ader verlegen? tschuldigung...
Dafür vorgesehen: P82B715, bis 50m. Alternative 1: Takt erheblich reduzieren und vorsorglich mit CRC-Kontrolle arbeiten. Dann kann in elektrisch sauberer Umgebung u.U. auch normales I2C funktionieren. Alternative 2: Kein I2C. An der Position vom Display einen kleinen Controller fürs Display plazieren, der per RS485 angesteuert wird.
Folgendes könnte auch hilfreich sein. Habe auch mal ein Projekt mit langen I²C-Bus Leitungen gemacht. Waren aber doch nur einige Meter (10m). 1.) Wähle die Pull-Up Widerstände so klein, wie es die Spzifikation der Bausteine zulässt. 2.) Wähle die niedriegst mögliche Übertragugnsfrequenz. Wir hatten damals glaube ich 7kHz als Busspeed. War das Minimum, dass man aus einem 4MHz Takt bei einem PIC16F877 herunterteilen konnte. 3.) Verwende Leitungen mit größerem Leitungsabstand (dicke Isolierung), damit die Leitungskapazität sinkt. Störungen habe ich damals nicht großartig auf den Leitungen gesehen, aber natürlich waren die Flanken doch schon recht verschliffen. Grüße, Bernd
Du kannst statts der Pullups auch Konstantstromquellen benutzen. Dadurch werden die Flanken etwas steiler. Ansonsten wirst du bei 30M nicht um einen Busextender (82B715/82B96) herumkommen. Du solltest auf jeden Fall den Bus entsprechend langsam machen, nicht mehr als einen Master haben und die Übertragung mit einer CRC absichern. Ein parr Dioden zum Schutz könnten auch nicht schaden...
Ahh, nochwas: falls du mit AVR arbeitest, da hatte ich mal bös Prassel mit. Beobachtung: 19"-Rack, sechs Karten mit Slaves plus Controller eingesteckt und alle paar Minuten blieb die Kiste hängen, Neustart hat geholfen. Lösung: Der Controller hat gesendet, dabei ging ein Takt flöten, ergo kam das Acknowledge auch nicht mehr zur richtigen Zeit an. Der Controller hat also gewartet und gewartet und gewartet... Lösung: Beim AVR mit eingebautem TWI: Wachhund loslassen, Timeouts einbauen und alle Fehlerbedingungen vernünftig auswerten!
@ Tim (Gast) >Du kannst statts der Pullups auch Konstantstromquellen benutzen. >Dadurch werden die Flanken etwas steiler. Bringt wenig. >Ansonsten wirst du bei 30M nicht um einen Busextender >(82B715/82B96) herumkommen. Quark. Ich hab vor einiger Zeit eine kleine Platine in der Hand gehabt, die lief über 400m (ja, vierhundert Meter) über ein geschrimtes Kabel mit I2C. Mit sagenhaften 500 Hz (kein Witz), was aber weniger an der Kabellänge sondern eher an der tierischen EMV-Schutzbeschaltung lag. >Du solltest auf jeden Fall den Bus entsprechend langsam machen, >nicht mehr als einen Master haben und die Übertragung mit einer CRC >absichern. Was schwierig wird, wenn das LCD das nicht direkt unterstützt. Ausserdem ist das meist unkritisch, wenn mal ein paar Zeichen falsch angezeigt werden. MFG Falk
Hallo!! Danke mal für die Antworten!!! Hab mir gerade das Datenblatt vom P82B715 angesehen, den müsste ich doch selbst mit nem OPV (LM358) nen Transistor (BC547) und den Widerständen zusammenstoppeln können oder???? MFG
Compy wrote: > Ahh, nochwas: falls du mit AVR arbeitest, da hatte ich mal bös Prassel > mit. > > Beobachtung: 19"-Rack, sechs Karten mit Slaves plus Controller > eingesteckt und alle paar Minuten blieb die Kiste hängen, Neustart hat > geholfen. > > Lösung: Der Controller hat gesendet, dabei ging ein Takt flöten, ergo > kam das Acknowledge auch nicht mehr zur richtigen Zeit an. Der > Controller hat also gewartet und gewartet und gewartet... > > Lösung: Beim AVR mit eingebautem TWI: Wachhund loslassen, Timeouts > einbauen und alle Fehlerbedingungen vernünftig auswerten! Eigentlich sollte der AVR doch bei jedem Übertragungs-Start neu synchronisieren, oder nicht?
Hallo, senke die Tackfrequenz um das zehnfache, und Du erhöhst die Reichweite ebenfalls um das Zehnfache. Sonst helfen nur Extender effektiv. Gruss Klaus.
(Read first the application note AN444). P82B715 I²C bus extender: http://www.nxp.com/acrobat_download/datasheets/P82B715_6.pdf Application Note AN444: Using the P82B715 I2C extender on long cables: http://www.nxp.com/acrobat_download/applicationnotes/AN444.pdf One mile long I2C communication using the P82B715: http://www.nxp.com/acrobat_download/applicationnotes/AN452.pdf Where to buy in small quantities: schuricht.de Art.No: 649003
Man kann aber auch Software TWI machen, dann kommste bis in den Herz-Bereich runter mit dem Bus-Speed ... sollte dann auf alle Fälle gehen
Marko Hörner wrote: > Man kann aber auch Software TWI machen, dann kommste bis in den > Herz-Bereich runter mit dem Bus-Speed ... sollte dann auf alle Fälle > gehen Nicht zwangsläufig. Wenn das Kabel zu dünn ist, ist der ohmsche Widerstand im Weg. Der OP hat ausser übertrieben viele Satzzeichen noch nichts darüber gesagt, was für eine Verkabelung ihm überhaupt vorschwebt. Unter Umständen braucht er ja garkeine Treiber..... Die Probleme, mit denen zu Rechnen ist, basieren nämlich einzig und allein auf Effekte, die je nach verwendeter Verkabelung unterschiedlich stark auftreten. Insofern finde ich es quark, gleich mit Treibern zu arbeiten.
Ich hatte mal einen Versuch gemacht, mit je einem 82B715 I²C bus extender auf jeder Seite. (1.Seite M32 zweite Seite ein M75 Temperatursensor ) dazwischen : Cat5e Netzwerk Paschkabel Dann habe ich immer mehr Patchkabel dazu gesteckt bei 50m+30m+15m+10m+5m hatte ich keine lagen Patchkabe bzw. Verbinder mehr und musste den Versuch also bei 110m abbrechen obwohl ich die Temperatur immer noch richtig vom LM75 auslesen konnte. Takt war damals 50 Khz. Gruß HansHans
@ HansHans (Gast) >dazwischen : Cat5e Netzwerk Paschkabel Paschkabel? Dreimal ne Sechs gewürfelt? ;-) >den Versuch also bei 110m abbrechen obwohl ich die >Temperatur immer noch richtig vom LM75 auslesen >konnte. Takt war damals 50 Khz. Naja, als grobe Peilung OK, aber wirklich gescheite Aussagen liefert nur ne Messung mit nem Oszi. MfG Falk
>Naja, als grobe Peilung OK So war es auch gedacht , bzw. war es halt einfach mal so ein Versuch ich hätte aber nicht gedacht überhaupt soweit zu kommen . Hätte auch gerne noch weitere Patchkabel dazu gesteckt aber ich hatte keine mehr...... >Messung mit nem Oszi. Ich habe leider nur ein sehr altes analog Oszi
Eine einfachere Variante - siehe http://www.i2cchip.com/constant_current_pullup.html Die Schaltung ersetzt die PULL-UP Widerstände durch eine Stromquelle! In der Praxis sollte man diese Schaltung durch Serienwiderstände von vielleicht 10 Ohm plus Schutzdiden an jedem Boardseitiegen IIC-Anschluß ergänzen. Zusätzlich auch noch PULL-UP Widerstände von 20 bei 50 kOhm an jedem Boardseitiegen IIC-Anschluß, damit bei abgezogenen Kabel (Kabelbruch) auch noch ein definierter Pegel anliegt. Ich habe diese Schaltung mit 400kHz ohne Probleme über mehr als 5m im Einsatz. Toralf
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.