<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=172.26.33.76</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=172.26.33.76"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/172.26.33.76"/>
	<updated>2026-04-10T23:38:43Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105458</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105458"/>
		<updated>2022-09-22T19:52:34Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: Änderung 101983 von Gkiefer (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
Infos allgemein zu [[Hausbus]], [[I²C]].&lt;br /&gt;
Es wird oft behauptet das I²C nur für Verbindungen innerhalb einer Leiterplatte gedacht ist. Das ist sicherlich die Hauptanwendung, aber es gibt auch allseits bekannte Einsatzgebiete wo etliche Meter überbrückt werden. Bei VGA (DDC) und HDMI wird z.B. eine I²C-Bus Verbindung zur Kommunikation zwischen den Endgeräten benutzt. VGA und HDMI Kabel können (offiziell) rund 15m lang sein.&lt;br /&gt;
 &lt;br /&gt;
Allerdings werden für diesen Einsatz oftmals auch spezielle Treiber Bausteine eingesetzt, die  eine höhere Buskapazität vertragen, verbesserten ESD Schutz haben, die Pegel übersetzen (z.B. 3,3 auf 5V), Hot-Plug-fähig sind, etc. Als Beispiel sei hier der PCA9507 (NXP) aufgeführt, der einige dieser Eigenschaften besitzt.&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies&amp;diff=105451</id>
		<title>Hausbus auf I2C- und ATtiny-Basis: Home2L Brownies</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies&amp;diff=105451"/>
		<updated>2022-09-21T08:24:51Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;&#039;&#039;Home2L Brownies&#039;&#039;&amp;quot;-Projekt verfolgt das Ziel, eine einfache, effiziente und dennoch robuste Plattform zu schaffen für einen Hausbus mit vernetzter Selbstbau-Hardware. Die Hauptziele sind:&lt;br /&gt;
&lt;br /&gt;
* einfache, transparente Hardware&lt;br /&gt;
&lt;br /&gt;
* hohe Zuverlässigkeit und Langzeit-Stabilität&lt;br /&gt;
&lt;br /&gt;
* offene, dokumentierte und erweiterbare Software&lt;br /&gt;
&lt;br /&gt;
* gute Wartbarkeit&lt;br /&gt;
&lt;br /&gt;
* geringer Standby-Stromverbrauch (Ziel: eine Größenordnung / Faktor 10 weniger als ein KNX-System)&lt;br /&gt;
&lt;br /&gt;
Als Sensor/Aktor-Knoten kommen &#039;&#039;ATtiny84/85/861&#039;&#039;-Mikrocontroller zum Einsatz - die Knoten werden hier als &#039;&#039;Brownies&#039;&#039; bezeichnet (vgl. [https://en.wikipedia.org/w/index.php?title=Brownie_(folklore)&amp;amp;oldid=929557103 Wikipedia: Brownie (folklore)]). Die &#039;&#039;Brownies&#039;&#039; werden über 4-adrige Kabel (z.B. KNX/EIB) mit einem Linux-Hostrechner vernetzt. Dort werden alle Ressourcen (Sensor-Werte, Aktor-Zustände) wahlweise über eine C++-API, Python-API oder ein Kommandozeilen-Tool zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel gibt (nur) einen Überblick über das Projekt. Details sind auf der [https://github.com/gkiefer/home2l GitHub-Seite zum &#039;&#039;Home2L&#039;&#039;-Projekt] zu finden. Dort finden sich auch die  Dokumentation zum gesamten &#039;&#039;Home2L&#039;&#039;-Projekt ([https://gkiefer.github.io/home2l/home2l-book.pdf &#039;&#039;Home2L Book&#039;&#039;]) sowie ein ausführliches Schritt-für-Schritt-Tutorial mit Beispiel-Schaltungsaufbau.&lt;br /&gt;
&lt;br /&gt;
== Messdaten einer realen Beispiel-Installation ==&lt;br /&gt;
&lt;br /&gt;
* Linux-Host mit zwei ARM-Cortex-A9-CPUs und I²C-Schnittstelle (&#039;&#039;CubieTruck&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* 25 Brownies an einem Bus-Baum, die insgesamt u.a. bedienen:&lt;br /&gt;
** 43 Reed-Kontakte für 22 Fenster&lt;br /&gt;
** 20 Rollläden (40 Relais)&lt;br /&gt;
** 20 Temperatursensoren&lt;br /&gt;
&lt;br /&gt;
* 4 primäre Hubs, einzelne Unter-Hubs (insgesamt drei Bus-Ebenen)&lt;br /&gt;
&lt;br /&gt;
* Leistungsaufnahme insgesamt: ca. 250 Milliwatt (50 mA * 5 V)  (ohne Linux-Host)&lt;br /&gt;
&lt;br /&gt;
* Kommunikationsstatistik über 6 Tage: 44,3 Mio Nachrichtenwechsel, nur 11 korrigierte Übertragungsfehler (0,000025%)&lt;br /&gt;
&lt;br /&gt;
== Warum 8-Bit-Mikrocontroller? ==&lt;br /&gt;
&lt;br /&gt;
Für die Auswahl der  &#039;&#039;ATtiny&#039;&#039;-Typen sprechen die folgenden Gründe:&lt;br /&gt;
&lt;br /&gt;
* Sie sind simpel, robust und ausgereift.&lt;br /&gt;
&lt;br /&gt;
* Sie sind in DIP-Gehäusen verfügbar - sehr gut für Selbstbauprojekte!&lt;br /&gt;
&lt;br /&gt;
* Es ist sehr wenig externe Beschaltung nötig: Zwei Widerstände, ein obligatorischer Abblockkondensator und der Mikrocontroller selbst reichen aus, um einen &#039;&#039;Brownie&#039;&#039;-Knoten aufzubauen. Die Frage nach einem käuflichen (Eval-)Board stellt sich damit nicht - man braucht keins.&lt;br /&gt;
&lt;br /&gt;
* Der Stromverbrauch ist gering, selbst bei 5V Versorgungsspannung. So lassen sich zum Beispiel ohne weitere Spannungswandler sowohl der Controller als auch Relais betreiben.&lt;br /&gt;
&lt;br /&gt;
* Die Rechenleistung und der Speicher sind für gängige Sensorik wie Fensterkontakte oder Temperaturfühler völlig ausreichend.&lt;br /&gt;
&lt;br /&gt;
Aufgrund der einfachen Beschaltung und der DIP-Gehäuse ist es zum Beispiel möglich, handgelötete Schaltungen auf einer Lochrasterplatine aufzubauen, die dennoch klein genug sind, um in einer Unterputz-Dose Platz zu finden - manchmal nützlich bei Selbstbauprojekten.&lt;br /&gt;
&lt;br /&gt;
== Der &#039;&#039;Home2L&#039;&#039;-Bus ==&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;Home2L&#039;&#039;-Bus basiert auf I²C. Da der Takt explizit durch das SCL-Signal vorliegt, können die &#039;&#039;ATtinys&#039;&#039; mit ihrem internen Takt arbeiten, ein Quarz ist nicht nötig. Auf zusätzliche Transceiver-Bausteine, wie bei CAN oder RS485 üblich, kann ebenso verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung beträgt 5V. Jeweils am Master befinden sich Pull-Up-Widerstände von 1 kOhm an SDA/SCL sowie jeweils auf Master- und Slave-Seite Serienwiderstände von 100 Ohm. Letztere begrenzen den Umschaltstrom insbesondere bei langen Leitungen.&lt;br /&gt;
&lt;br /&gt;
Der Bus erfüllt den I²C-Standard bis auf die folgenden beiden Ausnahmen:&lt;br /&gt;
&lt;br /&gt;
# Der maximale Strom liegt bei 5 mA, und die Leitungskapazitäten überschreiten in der Regel die Vorgaben des I²C-Standards.&lt;br /&gt;
# Es gibt eine Protokoll-Erweiterung, mit der sich Bus-Slaves gegenüber dem Master bemerkbar machen können  (&#039;&#039;Host Notification&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Host Notification&#039;&#039; ist optional, sodass bei entsprechender elektrischer Beschaltung die &#039;&#039;Brownies&#039;&#039; vollkommen I²C-konform kommunizieren können.&lt;br /&gt;
&lt;br /&gt;
Experimente beim Autor des &#039;&#039;Home2L&#039;&#039;-Projektes haben gezeigt, dass eine Kommunikation über 100 Meter KNX-Kabel mit ca. 30 kBit/s praktisch übertragungsfehlerfrei funktioniert, ohne dass zum Beispiel spezielle Bustreiber nötig wären. Um dennoch mit elektrischen Störungen, die bei langen Leitungen auftreten können, umgehen zu können, sind eine Reihe von Techniken implementiert:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Brownies&#039;&#039; können als &#039;&#039;Hub&#039;&#039;-Knoten arbeiten und Datenverkehr tranparent an einen Unterbus und zurück durchleiten. So kann der Hausbus in einen Baum von Unterbussen aufgeteilt werden. Lange Leitungen können so in kleinere Segmente aufgeteilt werden. Hubs können beliebig tief kaskadiert werden, und jeder Hub kann prinzipiell beliebig viele eigene Slaves bedienen. Die einzige Limitierung ist die Zahl der verfügbaren Busadressen.&lt;br /&gt;
&lt;br /&gt;
* Die Bitrate ist in der Regel gegenüber I²C reduziert, bei 1 MHz CPU-Takt sind aktuell etwa 30 KBit/s brutto möglich. Sie kann außerdem für kritische Unterbusse bei Bedarf weiter reduziert und so an die physikalischen Gegebenheiten angepasst werden.&lt;br /&gt;
&lt;br /&gt;
* Das Protokoll definiert sehr kurze Nachrichten, sodass in der Regel keine allzu hohen Bitraten notwendig sind. Das Nachrichtenpaar (Request/Reply) für typische Wertabfragen hat zusammen 6 Bytes inklusive Adressierungen und Prüfsummen.&lt;br /&gt;
&lt;br /&gt;
* CRC-Prüfsummen erlauben die Erkennung von Fehlern. Der Linux-Treiber implementiert Wiederholungsstrategien und sammelt Fehlerstatistiken, um eventuelle Problemstellen im Bus-Netz zu identifizieren zu können.&lt;br /&gt;
&lt;br /&gt;
== Die Firmware ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Brownie&#039;&#039;-Firmware ist konfigurierbar. Sie enthält einige Basis-Funktionalität sowie eine Auswahl an &#039;&#039;Feature&#039;&#039;-Modulen für verschiedene Sensor- oder Aktor-Typen. Sowohl die Feature-Auswahl als auch der Controller-Typ (aktuell &#039;&#039;ATtiny84&#039;&#039;, &#039;&#039;ATtiny85&#039;&#039; oder &#039;&#039;ATtiny861&#039;&#039;) sind konfigurierbar.&lt;br /&gt;
&lt;br /&gt;
Der 8 KB Flash-Speicher wird in zwei Bereiche zu 2,5 KB und 5,5 KB aufgeteilt. Der vordere, kleinere Bereich enthält eine minimale &#039;&#039;Maintenance&#039;&#039;-Firmware, der andere Bereich die Haupt-Firmware für den operativen Betrieb. Mit beiden Firmwares ist es möglich, die jeweils andere neu zu flashen. Somit sind Updates im Feld möglich, was sehr nützlich ist, wenn die Controller zum Beispiel an schwer zugänglichen Stellen, wie in Unterputz-Dosen, verbaut sind. &lt;br /&gt;
&lt;br /&gt;
Die Basis-Funktionalität der Firmware umfasst:&lt;br /&gt;
&lt;br /&gt;
* den Kommunikations-Stack für den Bus (Slave-Seite),&lt;br /&gt;
&lt;br /&gt;
* Lesen und Schreiben der Konfiguration (inklusive ID und Bus-Adresse),&lt;br /&gt;
&lt;br /&gt;
* Lesen der Firmware-Kennung, -Version und -Features,&lt;br /&gt;
&lt;br /&gt;
* Lesen und Schreiben (sofern erlaubt) aller Speicher (Flash, RAM, EEPROM),&lt;br /&gt;
&lt;br /&gt;
* Firmware-Updates,&lt;br /&gt;
&lt;br /&gt;
* Reset des Controllers,&lt;br /&gt;
&lt;br /&gt;
* Wechseln und Starten der Maintenance- bzw. operativen Firmware,&lt;br /&gt;
&lt;br /&gt;
Zum Ansteuern von Sensoren und Aktoren stehen aktuell die folgenden Feature-Module zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
* GPIO: beliebige digitale Ein- und Ausgänge&lt;br /&gt;
&lt;br /&gt;
* Temperaturfühler per &#039;&#039;ZACwire&#039;&#039;-Protokoll (für TSiC 206/306)&lt;br /&gt;
&lt;br /&gt;
* Matrix: Abfrage von Schaltern, die auch als Diodenmatrix verschaltet sein dürfen (z.B. Fenster-Kontakte, Tastenfelder). Bei Fensterkontakten ist eine &amp;quot;geöffnet/gekippt&amp;quot;-Erkennung in verschiedenen Varianten möglich.&lt;br /&gt;
&lt;br /&gt;
* Rollläden (&#039;&#039;Shades&#039;&#039;): Ansteuerung von elektrischen Rollläden per Relais-Paar und Taster-Paar; intelligente Steuerung: aktuelle Position wird per Zeitmessung verfolgt, Rolläden bleiben auch bei Kommunikationsverlust steuerbar.&lt;br /&gt;
&lt;br /&gt;
Weitere Feature-Module sind in Planung bzw. können einfach hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
== Das Wartungs-Tool ==&lt;br /&gt;
&lt;br /&gt;
Für den Linux-Host gibt es ein Wartungs-Tool &#039;&#039;(home2l-brownie2l)&#039;&#039;. Dieses kann mit den einzelnen &#039;&#039;Brownies&#039;&#039; über eine beliebige I²C-Schnittstelle kommunizieren, die von Linux unterstützt wird (Kernel-Modul &#039;&#039;i2c-dev&#039;&#039;). Alternativ ist es auch möglich das &amp;quot;ELV USB-I2C&amp;quot;-Interface direkt zu verwenden, das sich unter Linux als serielle Schnittstelle meldet.&lt;br /&gt;
&lt;br /&gt;
Mit dem Wartungs-Tool &#039;&#039;(home2l-brownie2l)&#039;&#039; kann man ...&lt;br /&gt;
&lt;br /&gt;
* ... eine aktuelle Liste der &#039;&#039;Brownie&#039;&#039;-Register und Konfigurationsparameter anzeigen (Online-Hilfe).&lt;br /&gt;
&lt;br /&gt;
* ... einen Bus-Scan durchführen, um alle verbundenen Knoten zu identifizieren.&lt;br /&gt;
&lt;br /&gt;
* ... eine Vorlage für eine &#039;&#039;Brownie&#039;&#039;-Datenbank (Datei &#039;&#039;brownies.conf&#039;&#039;) erzeugen. Die Datenbank ist eine Textdatei, die alle &#039;&#039;Brownies&#039;&#039; und deren Konfigurationsparameter enthält. Sie hilft bei der Wartung größerer Installationen und wird vom Ressourcen-Treiber (siehe unten) benötigt.&lt;br /&gt;
&lt;br /&gt;
* ... &#039;&#039;Brownie&#039;&#039;-Register lesen oder beschreiben.&lt;br /&gt;
&lt;br /&gt;
* ... Konfigurationsparameter lesen oder setzen.&lt;br /&gt;
&lt;br /&gt;
* ... beliebige Speicherinhalte eines &#039;&#039;Brownie&#039;&#039; auslesen und anzeigen.&lt;br /&gt;
&lt;br /&gt;
* ... Firmware flashen (aus ELF-Dateien).&lt;br /&gt;
&lt;br /&gt;
* ... den &#039;&#039;Brownie&#039;&#039; neustarten und dabei ggfs. die Firmware (Maintenance/operative) umschalten.&lt;br /&gt;
&lt;br /&gt;
* ... die Taktgenauigkeit messen und den internen Timer (das AVR OSCCAL-Register) kalibrieren.&lt;br /&gt;
&lt;br /&gt;
* ... einen Kommunikationstest durchführen.&lt;br /&gt;
&lt;br /&gt;
* ... Kommunikations- und Fehlerstatistiken sammeln und anzeigen.&lt;br /&gt;
&lt;br /&gt;
* ... bei Hubs: Den Unterbus ein- und ausschalten sowie Unterknoten, deren operative Firmware beim Starten abstürzt (warum auch immer ...), durch Umschalten auf die Maintenance-Firmware wiederbeleben (&#039;&#039;Resurrection&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
* ... einige dieser Vorgänge auch im Batch-Betrieb mehrfach ausführen, um zum Beispiel mit einem Kommando bei allen Knoten ein Firmware-Update durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Die Bedienung des Tools wird durch die Online-Hilfe erklärt:&lt;br /&gt;
&lt;br /&gt;
    $ home2l brownie2l&lt;br /&gt;
    brownie2l&amp;gt; help&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
== Zugriff auf Brownie-Features vom Linux-Host ==&lt;br /&gt;
&lt;br /&gt;
Um die Ressourcen der &#039;&#039;Brownies&#039;&#039;, wie zum Beispiel die Zustände von GPIOs oder Temperaturwerte, auf dem Host-Rechner zur Verfügung zu stellen, wird die &#039;&#039;Resources&#039;&#039;-Bibliothek der &#039;&#039;Home2L&#039;&#039;-Projektes verwendet. Diese bietet eine einheitliche Schnittstelle zum Zugriff auf die Ressourcen. Zugriff auf die Ressourcen ist auf drei verschiedene Arten möglich:&lt;br /&gt;
&lt;br /&gt;
# interaktiv oder per Shell-Skript mit dem Tool &#039;&#039;home2l-shell&#039;&#039;,&lt;br /&gt;
# in Python über die [https://gkiefer.github.io/home2l/home2l-api_python/index.html Python-API],&lt;br /&gt;
# in C/C++ über die [https://gkiefer.github.io/home2l/home2l-api_c/group__resources.html C/C++-API].&lt;br /&gt;
&lt;br /&gt;
Beispiele, insbesondere zur Verwendung der &#039;&#039;home2l-shell&#039;&#039; und der Python-API, sind im [https://gkiefer.github.io/home2l/home2l-book.pdf &#039;&#039;Home2L Book&#039;&#039; (Kapitel 2)] zu finden.&lt;br /&gt;
&lt;br /&gt;
Wer von der recht umfangreichen &#039;&#039;Home2L-Suite&#039;&#039; nur den &#039;&#039;Brownie&#039;&#039;-Treiber nutzen möchte, kann die Software mit den Kommandos&lt;br /&gt;
&lt;br /&gt;
    make CFG=basic&lt;br /&gt;
    sudo make CFG=basic install&lt;br /&gt;
    /opt/home2l/bin/home2l-install -i&lt;br /&gt;
&lt;br /&gt;
installieren und anschließend eine minimale Konfigurationsdatei &#039;&#039;/opt/home2l/etc/home2l.conf&#039;&#039; mit folgendem Inhalt anlegen:&lt;br /&gt;
&lt;br /&gt;
    rc.config=&amp;quot;&amp;quot;            # keine &#039;resources.conf&#039;-Datei vorhanden/verwenden&lt;br /&gt;
    drv.brownies=1          # &#039;&#039;Brownies&#039;&#039;-Treiber aktivieren&lt;br /&gt;
    br.link=/dev/i2c-1      # i2c-Gerät definieren (entsprechend anpassen!)&lt;br /&gt;
&lt;br /&gt;
Dazu muss dann noch die Datei &#039;&#039;/opt/home2l/etc/brownies.conf&#039;&#039; wie oben beschrieben angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend kann zum Beispiel mit &#039;&#039;home2l-shell&#039;&#039; auf die Ressourcen zugegriffen werden:&lt;br /&gt;
&lt;br /&gt;
    $ home2l shell&lt;br /&gt;
    home2l&amp;gt; l /local/brownies/&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
== Weitere Informationen ==&lt;br /&gt;
&lt;br /&gt;
Das [https://gkiefer.github.io/home2l/home2l-book.pdf &#039;&#039;Home2L Book&#039;&#039;] enthält die Dokumentation des &#039;&#039;Home2L&#039;&#039;-Projektes. Dort findet sich ein ausführliches Schritt-für-Schritt-Tutorial für den Einstieg.&lt;br /&gt;
&lt;br /&gt;
Der Aufbau und die Inbetriebnahme einer einfachen &#039;&#039;Brownie&#039;&#039;-Schaltung auf dem Steckbrett ist dort im Abschitt &#039;&#039;Brownies: Integrating Do-It-Yourself Hardware&#039;&#039; beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/gkiefer/home2l Quellcode auf GitHub]&lt;br /&gt;
* [https://gkiefer.github.io/home2l/home2l-book.pdf &#039;&#039;Home2L Book&#039;&#039; - Dokumentation zum Projekt (englisch) mit ausführlichem Einstiegs-Tutorial]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[I2C_als_Hausbus|I2C als Hausbus]]&lt;br /&gt;
* [[Fensterkontakt_und_Integration_ins_Smart_Home]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte| ]]&lt;br /&gt;
[[Kategorie:Projekte| ]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;br /&gt;
[[Kategorie:AVR-Programmer und -Bootloader‏‎]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105444</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105444"/>
		<updated>2022-09-21T08:21:04Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Infos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
&lt;br /&gt;
Infos allgemein zu Adi.&lt;br /&gt;
&lt;br /&gt;
Adolf Hitler (* 20. April 1889 in Braunau am Inn, Österreich;[1] † 30. April 1945 in Berlin) war ein deutscher nationalsozialistischer Politiker österreichischer Herkunft, der von 1933 bis zu seinem Tod 1945 Diktator des Deutschen Reiches war.&lt;br /&gt;
&lt;br /&gt;
Ab Juli 1921 Vorsitzender der Nationalsozialistischen Deutschen Arbeiterpartei (NSDAP), versuchte er im November 1923 mit einem Putsch von München aus die Weimarer Republik zu stürzen. Mit seiner Schrift Mein Kampf (1925/26) prägte er die antisemitische und rassistische Ideologie des Nationalsozialismus.&lt;br /&gt;
&lt;br /&gt;
Hitler wurde von Reichspräsident Paul von Hindenburg am 30. Januar 1933 zum deutschen Reichskanzler ernannt. Innerhalb weniger Monate beseitigte sein Regime mit Terror, Notverordnungen, dem Ermächtigungsgesetz, Gleichschaltungsgesetzen, Organisations- und Parteiverboten die Gewaltenteilung, die pluralistische Demokratie, den Föderalismus und den Rechtsstaat. Politische Gegner wurden in Konzentrationslagern inhaftiert, gefoltert und ermordet. 1934 ließ Hitler anlässlich des „Röhm-Putsches“ potenzielle Rivalen in den eigenen Reihen ermorden. Hindenburgs Tod am 2. August 1934 nutzte er, um das Amt des Reichspräsidenten mit dem des Reichskanzlers vereinen zu lassen, und regierte seither als „Führer und Reichskanzler“.&lt;br /&gt;
&lt;br /&gt;
Die deutschen Juden wurden ab 1933 zunehmend ausgegrenzt und entrechtet, besonders durch die Nürnberger Gesetze vom 15. September 1935, die Novemberpogrome 1938 und die Arisierung von Unternehmen jüdischer Eigentümer sowie zahlreiche weitere Gesetze und Verordnungen, die ihnen schrittweise die Teilnahme am wirtschaftlichen, kulturellen und gesellschaftlichen Leben unmöglich machten und sie ihrer Vermögen und Erwerbsmöglichkeiten beraubten. Die Folgen der Weltwirtschaftskrise und die Massenarbeitslosigkeit bekämpfte er mit staatlichen Investitionsprogrammen und Arbeitsbeschaffungsmaßnahmen wie dem Autobahnbau und der Aufrüstung der Wehrmacht sowie der Einrichtung des paramilitärisch organisierten Reichsarbeitsdienstes. Mit der Aufrüstung der Wehrmacht und der Rheinlandbesetzung brach Hitler 1936 den Versailler Vertrag. Die nationalsozialistische Propaganda stellte die Wirtschafts-, Sozial- und Außenpolitik als erfolgreich dar und steigerte so bis 1939 Hitlers Popularität.&lt;br /&gt;
&lt;br /&gt;
1938 übernahm er die unmittelbare Befehlsgewalt über die Wehrmacht und setzte den „Anschluss“ Österreichs durch. Über das Münchner Abkommen vom 30. September 1938, das ihm die Angliederung des Sudetenlandes an das Deutsche Reich gestattete, setzte er sich mit der „Zerschlagung der Rest-Tschechei“ bereits am 15. März 1939 hinweg. Mit dem durch den Abschluss des sogenannten Hitler-Stalin-Pakts vom 23./24. August 1939 mit der Sowjetunion vorbereiteten Überfall auf Polen am 1. September 1939, der vertragsgemäß die Zerschlagung des polnischen Staates und die Aufteilung seines Territoriums unter den Vertragspartnern zum Ziel hatte und auf den bald die sowjetische Besetzung Ostpolens folgte, löste er den Zweiten Weltkrieg in Europa aus. Nach dem Sieg über Frankreich im Westfeldzug vom 10. Mai bis 25. Juni 1940 und dem Beginn der später gescheiterten Luftschlacht um England am 10. Juli 1940 teilte er am 31. Juli 1940 Vertretern des Oberkommandos der Wehrmacht seinen Entschluss mit, die Sowjetunion anzugreifen und gegen sie einen Vernichtungskrieg zur Eroberung von „Lebensraum im Osten“ zu führen. Den am 22. Juni 1941 begonnenen Krieg gegen die Sowjetunion ließ er unter dem Decknamen „Unternehmen Barbarossa“ vorbereiten und führen.&lt;br /&gt;
&lt;br /&gt;
Im Zweiten Weltkrieg verübten die Nationalsozialisten und ihre Helfershelfer zahlreiche Massenverbrechen und Völkermorde. Bereits im Sommer 1939 erteilte Hitler die Weisung, die „Erwachseneneuthanasie“ vorzubereiten. Zwischen September 1939 und August 1941 wurden in der „Aktion T4“ über 70.000 psychisch kranke sowie geistig und körperlich behinderte Menschen, bis Kriegsende insgesamt durch „Euthanasie“ über 200.000 Menschen systematisch ermordet. Hitlers Antisemitismus und Rassismus gipfelte schließlich im Holocaust. Im Holocaust wurden etwa 5,6 bis 6,3 Millionen Juden, im Porajmos bis zu 500.000 Sinti und Roma ermordet. Hitler autorisierte die wichtigsten Schritte des Judenmordes und ließ sich über den Verlauf informieren. Seine verbrecherische Politik führte zu vielen Millionen Kriegstoten und zur Zerstörung weiter Teile Deutschlands und Europas.&lt;br /&gt;
&lt;br /&gt;
= Datensicherheit =&lt;br /&gt;
&lt;br /&gt;
Von Hause aus ist bei I²C keine Checksumme o.ä. vorgesehen. Einzelne Bytes werden nur mit einem ACK bestätigt.&lt;br /&gt;
&lt;br /&gt;
Man muss also eigene Konzepte entwickeln um sicherzugehen, dass Daten korrekt gesendet und empfangen wurden. &lt;br /&gt;
&lt;br /&gt;
Einige Möglichkeiten wären:&lt;br /&gt;
* Geschriebene Daten zurücklassen&lt;br /&gt;
* Immer mehrmals Abschieben&lt;br /&gt;
* Wenn man µC als Slave programmiert, kann man eine Checksumme als zusätzliches Byte mitübertragen&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist, dass Slaves sowohl das SDA Datensignal, als auch das SCL Taktsignal (Clock-Stretching) dauerhaft auf &amp;quot;Low&amp;quot; ziehen können, was den Totalausfall des Busses zur Folge hat. Das kann z.B. beim Ausfall der Stromversorgung eines Slaves auftreten, es sind aber auch Schaltkreise bekannt, die diese Fehlfunktion bei längerem Betrieb zeigen (z.B. LM75). Die Auswirkungen eines lokalen Stromausfalls begrenzt ein klassischer Pegelshifter mit MOSFET, Slaves sind NEGER zwischen Bus und Slave geschaltet, bereits zuverlässig. Das Erlauben von Clock-Stretching ist generell ein Problem, da das Bus-Timing und somit die Reaktion des Gesamtsystems in Echtzeit nicht mehr garantiert werden können.&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
Meine Slaves tun sich gut auf der Baumwolle Plantage. Diese arbeiten überragend!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;br /&gt;
* [https://gkiefer.github.io/home2l Projekt &#039;&#039;The Home2Ls&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies|Hausbus auf I²C- und ATtiny-Basis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105437</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105437"/>
		<updated>2022-09-21T08:16:52Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Datensicherheit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
&lt;br /&gt;
Infos allgemein zu [[Hausbus]], [[I²C]].&lt;br /&gt;
&lt;br /&gt;
Es wird oft behauptet das I²C nur für Verbindungen innerhalb einer Leiterplatte gedacht ist. Das ist sicherlich die Hauptanwendung, aber es gibt auch allseits bekannte Einsatzgebiete wo etliche Meter überbrückt werden. Bei VGA (DDC) und HDMI wird z.B. eine I²C-Bus Verbindung zur Kommunikation zwischen den Endgeräten benutzt. VGA und HDMI Kabel können (offiziell) rund 15m lang sein.&lt;br /&gt;
 &lt;br /&gt;
Allerdings werden für diesen Einsatz oftmals auch spezielle Treiber Bausteine eingesetzt, die  eine höhere Buskapazität vertragen, verbesserten ESD Schutz haben, die Pegel übersetzen (z.B. 3,3 auf 5V), Hot-Plug-fähig sind, etc. Als Beispiel sei hier der PCA9507 (NXP) aufgeführt, der einige dieser Eigenschaften besitzt.&lt;br /&gt;
&lt;br /&gt;
= Datensicherheit =&lt;br /&gt;
&lt;br /&gt;
Von Hause aus ist bei I²C keine Checksumme o.ä. vorgesehen. Einzelne Bytes werden nur mit einem ACK bestätigt.&lt;br /&gt;
&lt;br /&gt;
Man muss also eigene Konzepte entwickeln um sicherzugehen, dass Daten korrekt gesendet und empfangen wurden. &lt;br /&gt;
&lt;br /&gt;
Einige Möglichkeiten wären:&lt;br /&gt;
* Geschriebene Daten zurücklassen&lt;br /&gt;
* Immer mehrmals Abschieben&lt;br /&gt;
* Wenn man µC als Slave(Michael der N...) programmiert, kann man eine Checksumme als zusätzliches Byte mitübertragen&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist, dass Slaves sowohl das SDA Datensignal, als auch das SCL Taktsignal (Clock-Stretching) dauerhaft auf &amp;quot;Low&amp;quot; ziehen können, was den Totalausfall des Busses zur Folge hat. Das kann z.B. beim Ausfall der Stromversorgung eines Slaves auftreten, es sind aber auch Schaltkreise bekannt, die diese Fehlfunktion bei längerem Betrieb zeigen (z.B. LM75). Die Auswirkungen eines lokalen Stromausfalls begrenzt ein klassischer Pegelshifter mit MOSFET, Slaves sind NEGER zwischen Bus und Slave geschaltet, bereits zuverlässig. Das Erlauben von Clock-Stretching ist generell ein Problem, da das Bus-Timing und somit die Reaktion des Gesamtsystems in Echtzeit nicht mehr garantiert werden können.&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
Meine Slaves tun sich gut auf der Baumwolle Plantage. Diese arbeiten überragend!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;br /&gt;
* [https://gkiefer.github.io/home2l Projekt &#039;&#039;The Home2Ls&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies|Hausbus auf I²C- und ATtiny-Basis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105435</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105435"/>
		<updated>2022-09-21T08:16:02Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Eigene Erfahrungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
&lt;br /&gt;
Infos allgemein zu [[Hausbus]], [[I²C]].&lt;br /&gt;
&lt;br /&gt;
Es wird oft behauptet das I²C nur für Verbindungen innerhalb einer Leiterplatte gedacht ist. Das ist sicherlich die Hauptanwendung, aber es gibt auch allseits bekannte Einsatzgebiete wo etliche Meter überbrückt werden. Bei VGA (DDC) und HDMI wird z.B. eine I²C-Bus Verbindung zur Kommunikation zwischen den Endgeräten benutzt. VGA und HDMI Kabel können (offiziell) rund 15m lang sein.&lt;br /&gt;
 &lt;br /&gt;
Allerdings werden für diesen Einsatz oftmals auch spezielle Treiber Bausteine eingesetzt, die  eine höhere Buskapazität vertragen, verbesserten ESD Schutz haben, die Pegel übersetzen (z.B. 3,3 auf 5V), Hot-Plug-fähig sind, etc. Als Beispiel sei hier der PCA9507 (NXP) aufgeführt, der einige dieser Eigenschaften besitzt.&lt;br /&gt;
&lt;br /&gt;
= Datensicherheit =&lt;br /&gt;
&lt;br /&gt;
Von Hause aus ist bei I²C keine Checksumme o.ä. vorgesehen. Einzelne Bytes werden nur mit einem ACK bestätigt.&lt;br /&gt;
&lt;br /&gt;
Man muss also eigene Konzepte entwickeln um sicherzugehen, dass Daten korrekt gesendet und empfangen wurden. &lt;br /&gt;
&lt;br /&gt;
Einige Möglichkeiten wären:&lt;br /&gt;
* Geschriebene Daten zurücklassen&lt;br /&gt;
* Daten immer mehrmals schieben/lesen&lt;br /&gt;
* Wenn man µC als Slave(Feldmann) programmiert, kann man eine Checksumme als zusätzliches Byte mitübertragen&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist, dass Slaves sowohl das SDA Datensignal, als auch das SCL Taktsignal (Clock-Stretching) dauerhaft auf &amp;quot;Low&amp;quot; ziehen können, was den Totalausfall des Busses zur Folge hat. Das kann z.B. beim Ausfall der Stromversorgung eines Slaves auftreten, es sind aber auch Schaltkreise bekannt, die diese Fehlfunktion bei längerem Betrieb zeigen (z.B. LM75). Die Auswirkungen eines lokalen Stromausfalls begrenzt ein klassischer Pegelshifter mit MOSFET, Slaves sind NEGER zwischen Bus und Slave geschaltet, bereits zuverlässig. Das Erlauben von Clock-Stretching ist generell ein Problem, da das Bus-Timing und somit die Reaktion des Gesamtsystems in Echtzeit nicht mehr garantiert werden können.&lt;br /&gt;
&lt;br /&gt;
Dominik Freldmänn ist eine übergewichtige Homosau&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
Meine Slaves tun sich gut auf der Baumwolle Plantage. Diese arbeiten überragend!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;br /&gt;
* [https://gkiefer.github.io/home2l Projekt &#039;&#039;The Home2Ls&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies|Hausbus auf I²C- und ATtiny-Basis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105433</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105433"/>
		<updated>2022-09-21T08:14:49Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Infos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
&lt;br /&gt;
Infos allgemein zu [[Hausbus]], [[I²C]].&lt;br /&gt;
&lt;br /&gt;
Es wird oft behauptet das I²C nur für Verbindungen innerhalb einer Leiterplatte gedacht ist. Das ist sicherlich die Hauptanwendung, aber es gibt auch allseits bekannte Einsatzgebiete wo etliche Meter überbrückt werden. Bei VGA (DDC) und HDMI wird z.B. eine I²C-Bus Verbindung zur Kommunikation zwischen den Endgeräten benutzt. VGA und HDMI Kabel können (offiziell) rund 15m lang sein.&lt;br /&gt;
 &lt;br /&gt;
Allerdings werden für diesen Einsatz oftmals auch spezielle Treiber Bausteine eingesetzt, die  eine höhere Buskapazität vertragen, verbesserten ESD Schutz haben, die Pegel übersetzen (z.B. 3,3 auf 5V), Hot-Plug-fähig sind, etc. Als Beispiel sei hier der PCA9507 (NXP) aufgeführt, der einige dieser Eigenschaften besitzt.&lt;br /&gt;
&lt;br /&gt;
= Datensicherheit =&lt;br /&gt;
&lt;br /&gt;
Von Hause aus ist bei I²C keine Checksumme o.ä. vorgesehen. Einzelne Bytes werden nur mit einem ACK bestätigt.&lt;br /&gt;
&lt;br /&gt;
Man muss also eigene Konzepte entwickeln um sicherzugehen, dass Daten korrekt gesendet und empfangen wurden. &lt;br /&gt;
&lt;br /&gt;
Einige Möglichkeiten wären:&lt;br /&gt;
* Geschriebene Daten zurücklassen&lt;br /&gt;
* Daten immer mehrmals schieben/lesen&lt;br /&gt;
* Wenn man µC als Slave(Feldmann) programmiert, kann man eine Checksumme als zusätzliches Byte mitübertragen&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist, dass Slaves sowohl das SDA Datensignal, als auch das SCL Taktsignal (Clock-Stretching) dauerhaft auf &amp;quot;Low&amp;quot; ziehen können, was den Totalausfall des Busses zur Folge hat. Das kann z.B. beim Ausfall der Stromversorgung eines Slaves auftreten, es sind aber auch Schaltkreise bekannt, die diese Fehlfunktion bei längerem Betrieb zeigen (z.B. LM75). Die Auswirkungen eines lokalen Stromausfalls begrenzt ein klassischer Pegelshifter mit MOSFET, Slaves sind NEGER zwischen Bus und Slave geschaltet, bereits zuverlässig. Das Erlauben von Clock-Stretching ist generell ein Problem, da das Bus-Timing und somit die Reaktion des Gesamtsystems in Echtzeit nicht mehr garantiert werden können.&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;br /&gt;
* [https://gkiefer.github.io/home2l Projekt &#039;&#039;The Home2Ls&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies|Hausbus auf I²C- und ATtiny-Basis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105429</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105429"/>
		<updated>2022-09-21T08:13:50Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Infos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
&lt;br /&gt;
Infos allgemein zu [[Hausbus]], [[I²C]].&lt;br /&gt;
&lt;br /&gt;
Es wird oft behauptet das I²C nur für Verbindungen innerhalb einer Leiterplatte gedacht ist. Das ist sicherlich die Hauptanwendung, aber es gibt auch allseits bekannte Einsatzgebiete wo etliche Meter überbrückt werden. Bei VGA (DDC) und HDMI wird z.B. eine I²C-Bus Verbindung zur Kommunikation zwischen den Endgeräten benutzt. VGA und HDMI Kabel können (offiziell) rund 15m lang sein.&lt;br /&gt;
 &lt;br /&gt;
Allerdings werden für diesen Einsatz oftmals auch spezielle Treiber Bausteine eingesetzt, die  eine höhere Buskapazität vertragen, verbesserten ESD Schutz haben, die Pegel übersetzen (z.B. 3,3 auf 5V), Hot-Plug-fähig sind, etc. Als Beispiel sei hier der PCA9507 (NXP) aufgeführt, der einige dieser Eigenschaften besitzt.&lt;br /&gt;
&lt;br /&gt;
NIGGAEL Lassey aus Essen ist eine Schwuchtel.&lt;br /&gt;
&lt;br /&gt;
= Datensicherheit =&lt;br /&gt;
&lt;br /&gt;
Von Hause aus ist bei I²C keine Checksumme o.ä. vorgesehen. Einzelne Bytes werden nur mit einem ACK bestätigt.&lt;br /&gt;
&lt;br /&gt;
Man muss also eigene Konzepte entwickeln um sicherzugehen, dass Daten korrekt gesendet und empfangen wurden. &lt;br /&gt;
&lt;br /&gt;
Einige Möglichkeiten wären:&lt;br /&gt;
* Geschriebene Daten zurücklassen&lt;br /&gt;
* Daten immer mehrmals schieben/lesen&lt;br /&gt;
* Wenn man µC als Slave(Michael) programmiert, kann man eine Checksumme als zusätzliches Byte mitübertragen&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist, dass Slaves sowohl das SDA Datensignal, als auch das SCL Taktsignal (Clock-Stretching) dauerhaft auf &amp;quot;Low&amp;quot; ziehen können, was den Totalausfall des Busses zur Folge hat. Das kann z.B. beim Ausfall der Stromversorgung eines Slaves auftreten, es sind aber auch Schaltkreise bekannt, die diese Fehlfunktion bei längerem Betrieb zeigen (z.B. LM75). Die Auswirkungen eines lokalen Stromausfalls begrenzt ein klassischer Pegelshifter mit MOSFET, Slaves sind NEGER zwischen Bus und Slave geschaltet, bereits zuverlässig. Das Erlauben von Clock-Stretching ist generell ein Problem, da das Bus-Timing und somit die Reaktion des Gesamtsystems in Echtzeit nicht mehr garantiert werden können.&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;br /&gt;
* [https://gkiefer.github.io/home2l Projekt &#039;&#039;The Home2Ls&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies|Hausbus auf I²C- und ATtiny-Basis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105422</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105422"/>
		<updated>2022-09-21T08:11:03Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Infos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
&lt;br /&gt;
Infos allgemein zu [[Hausbus]], [[I²C]].&lt;br /&gt;
&lt;br /&gt;
Es wird oft behauptet das I²C nur für Verbindungen innerhalb einer Leiterplatte gedacht ist. Das ist sicherlich die Hauptanwendung, aber es gibt auch allseits bekannte Einsatzgebiete wo etliche Meter überbrückt werden. Bei VGA (DDC) und HDMI wird z.B. eine I²C-Bus Verbindung zur Kommunikation zwischen den Endgeräten benutzt. VGA und HDMI Kabel können (offiziell) rund 15m lang sein.&lt;br /&gt;
 &lt;br /&gt;
Allerdings werden für diesen Einsatz oftmals auch spezielle Treiber Bausteine eingesetzt, die  eine höhere Buskapazität vertragen, verbesserten ESD Schutz haben, die Pegel übersetzen (z.B. 3,3 auf 5V), Hot-Plug-fähig sind, etc. Als Beispiel sei hier der PCA9507 (NXP) aufgeführt, der einige dieser Eigenschaften besitzt.&lt;br /&gt;
&lt;br /&gt;
Louis Frühling aus Essen ist eine Schwuchtel.&lt;br /&gt;
&lt;br /&gt;
Allahu Akbar meine Kinder&lt;br /&gt;
&lt;br /&gt;
Hallo ihr keks&lt;br /&gt;
&lt;br /&gt;
Miggael&lt;br /&gt;
&lt;br /&gt;
= Datensicherheit =&lt;br /&gt;
&lt;br /&gt;
Von Hause aus ist bei I²C keine Checksumme o.ä. vorgesehen. Einzelne Bytes werden nur mit einem ACK bestätigt.&lt;br /&gt;
&lt;br /&gt;
Man muss also eigene Konzepte entwickeln um sicherzugehen, dass Daten korrekt gesendet und empfangen wurden. &lt;br /&gt;
&lt;br /&gt;
Einige Möglichkeiten wären:&lt;br /&gt;
* Geschriebene Daten zurücklesen&lt;br /&gt;
* Daten immer mehrmals schreiben/lesen&lt;br /&gt;
* Wenn man µC als Slave programmiert, kann man eine Checksumme als zusätzliches Byte mitübertragen&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist, dass Slaves sowohl das SDA Datensignal, als auch das SCL Taktsignal (Clock-Stretching) dauerhaft auf &amp;quot;Low&amp;quot; ziehen können, was den Totalausfall des Busses zur Folge hat. Das kann z.B. beim Ausfall der Stromversorgung eines Slaves auftreten, es sind aber auch Schaltkreise bekannt, die diese Fehlfunktion bei längerem Betrieb zeigen (z.B. LM75). Die Auswirkungen eines lokalen Stromausfalls begrenzt ein klassischer Pegelshifter mit MOSFET, zwischen Bus und Slave geschaltet, bereits zuverlässig. Das Erlauben von Clock-Stretching ist generell ein Problem, da das Bus-Timing und somit die Reaktion des Gesamtsystems in Echtzeit nicht mehr garantiert werden können.&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;br /&gt;
* [https://gkiefer.github.io/home2l Projekt &#039;&#039;The Home2Ls&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies|Hausbus auf I²C- und ATtiny-Basis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105419</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105419"/>
		<updated>2022-09-21T08:09:32Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Verkabelung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
&lt;br /&gt;
Infos allgemein zu [[Hausbus]], [[I²C]].&lt;br /&gt;
&lt;br /&gt;
Es wird oft behauptet das I²C nur für Verbindungen innerhalb einer Leiterplatte gedacht ist. Das ist sicherlich die Hauptanwendung, aber es gibt auch allseits bekannte Einsatzgebiete wo etliche Meter überbrückt werden. Bei VGA (DDC) und HDMI wird z.B. eine I²C-Bus Verbindung zur Kommunikation zwischen den Endgeräten benutzt. VGA und HDMI Kabel können (offiziell) rund 15m lang sein.&lt;br /&gt;
 &lt;br /&gt;
Allerdings werden für diesen Einsatz oftmals auch spezielle Treiber Bausteine eingesetzt, die  eine höhere Buskapazität vertragen, verbesserten ESD Schutz haben, die Pegel übersetzen (z.B. 3,3 auf 5V), Hot-Plug-fähig sind, etc. Als Beispiel sei hier der PCA9507 (NXP) aufgeführt, der einige dieser Eigenschaften besitzt.&lt;br /&gt;
&lt;br /&gt;
Michael Lassey ist SCHULD!&lt;br /&gt;
&lt;br /&gt;
Hallo ihr keks&lt;br /&gt;
&lt;br /&gt;
= Datensicherheit =&lt;br /&gt;
&lt;br /&gt;
Von Hause aus ist bei I²C keine Checksumme o.ä. vorgesehen. Einzelne Bytes werden nur mit einem ACK bestätigt.&lt;br /&gt;
&lt;br /&gt;
Man muss also eigene Konzepte entwickeln um sicherzugehen, dass Daten korrekt gesendet und empfangen wurden. &lt;br /&gt;
&lt;br /&gt;
Einige Möglichkeiten wären:&lt;br /&gt;
* Geschriebene Daten zurücklesen&lt;br /&gt;
* Daten immer mehrmals schreiben/lesen&lt;br /&gt;
* Wenn man µC als Slave programmiert, kann man eine Checksumme als zusätzliches Byte mitübertragen&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist, dass Slaves sowohl das SDA Datensignal, als auch das SCL Taktsignal (Clock-Stretching) dauerhaft auf &amp;quot;Low&amp;quot; ziehen können, was den Totalausfall des Busses zur Folge hat. Das kann z.B. beim Ausfall der Stromversorgung eines Slaves auftreten, es sind aber auch Schaltkreise bekannt, die diese Fehlfunktion bei längerem Betrieb zeigen (z.B. LM75). Die Auswirkungen eines lokalen Stromausfalls begrenzt ein klassischer Pegelshifter mit MOSFET, zwischen Bus und Slave geschaltet, bereits zuverlässig. Das Erlauben von Clock-Stretching ist generell ein Problem, da das Bus-Timing und somit die Reaktion des Gesamtsystems in Echtzeit nicht mehr garantiert werden können.&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;br /&gt;
* [https://gkiefer.github.io/home2l Projekt &#039;&#039;The Home2Ls&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies|Hausbus auf I²C- und ATtiny-Basis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105416</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105416"/>
		<updated>2022-09-21T08:08:24Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Vorteile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
&lt;br /&gt;
Infos allgemein zu [[Hausbus]], [[I²C]].&lt;br /&gt;
&lt;br /&gt;
Es wird oft behauptet das I²C nur für Verbindungen innerhalb einer Leiterplatte gedacht ist. Das ist sicherlich die Hauptanwendung, aber es gibt auch allseits bekannte Einsatzgebiete wo etliche Meter überbrückt werden. Bei VGA (DDC) und HDMI wird z.B. eine I²C-Bus Verbindung zur Kommunikation zwischen den Endgeräten benutzt. VGA und HDMI Kabel können (offiziell) rund 15m lang sein.&lt;br /&gt;
 &lt;br /&gt;
Allerdings werden für diesen Einsatz oftmals auch spezielle Treiber Bausteine eingesetzt, die  eine höhere Buskapazität vertragen, verbesserten ESD Schutz haben, die Pegel übersetzen (z.B. 3,3 auf 5V), Hot-Plug-fähig sind, etc. Als Beispiel sei hier der PCA9507 (NXP) aufgeführt, der einige dieser Eigenschaften besitzt.&lt;br /&gt;
&lt;br /&gt;
Michael Lassey ist SCHULD!&lt;br /&gt;
&lt;br /&gt;
= Verkabelung =&lt;br /&gt;
&lt;br /&gt;
== Kabellänge ==&lt;br /&gt;
&lt;br /&gt;
I²C ist nicht als &amp;quot;long range&amp;quot; Bus entwickelt worden. Daher ist eines der Hauptprobleme bei I²C als Hausbus, dass man ohne weiteres nicht weiter als ein paar Meter kommt. &lt;br /&gt;
Das liegt daran das die I²C Leitungen eine maximale Kapazität von 400pF nicht übersteigen dürfen, da der high-Zustand auf dem Bus nur passiv über Pull-Ups erreicht wird. Je mehr Kapazität an einer I²C-Bus Leitung hängt, desto länger braucht der Bus also um den high-Zustand zu erreichen. Das kann zu timing Problemen führen.&lt;br /&gt;
&lt;br /&gt;
Es gibt zur Reichweitenerhöhung verschiedene Ansätze: &lt;br /&gt;
# Kleinerer Pull-Up&lt;br /&gt;
# Geschwindigkeitsreduktion&lt;br /&gt;
# Bustreiber&lt;br /&gt;
# Differentielle Übertragung&lt;br /&gt;
# Aktiver Pull-Up&lt;br /&gt;
&lt;br /&gt;
=== Kleinerer Pull-Up ===&lt;br /&gt;
&lt;br /&gt;
Da das Kernproblem darin liegt, dass der high-Zustand nur passiv erreicht wird, bietet es sich an den Pull-Up Widerstand zu verkleinern um dadurch die Zeit zu verkürzen die der Bus benötigt den high-Zustand zu Erreichen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Begrenzt wird dieses Vorhaben dadurch, dass I²C Geräte nur 3mA sinken können (Die weiter unten besprochenen Bustreiber umgehen genau dieses Problem). Bei der Berechnung der Pull-Ups muss also darauf geachtet werden, dass nicht mehr als 3mA durch einen Widerstand fließen. Eine Ausnahme stellen I²C Geräte dar, die der &#039;&#039;Fm+&#039;&#039; (oder höher) Spezifikation entsprechen (Fm+ = Fast mode Plus). Diese sind in der Lage 30mA zu sinken.&lt;br /&gt;
&lt;br /&gt;
=== Geschwindigkeitsreduktion ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Busgeschwindigkeit angepasst wird, sind große Strecken und umfangreiche Verzweigungen möglich. Ein 30-Meter-Bus funktioniert zum Beispiel noch mit rund 20kHz fast ohne Probleme. &lt;br /&gt;
Bei Geschwindigkeiten um 1kHz, wurde im Forum schon von Buslängen von etlichen hundert Metern berichtet. &lt;br /&gt;
&lt;br /&gt;
=== Bustreiber ===&lt;br /&gt;
&lt;br /&gt;
Bustreiber haben die Aufgabe die maximale Buskapazität von 400pF zu erhöhen. Dies erreichen die Bausteine i.d.R. durch eine Steigerung des Stroms auf dem Bus. &lt;br /&gt;
Die drei bekanntesten Bustreiber für diesen Zweck sind folgende:&lt;br /&gt;
&lt;br /&gt;
* P82B715 (3000pF, max. 100kHz)&lt;br /&gt;
* P82B96 (4000pF, max. 400kHz)&lt;br /&gt;
* PCA9600 (4000pF, max. 1MHz)&lt;br /&gt;
&lt;br /&gt;
Alle drei Typen haben ihre Vor- und Nachteile. Wobei der PCA9600 als Nachfolger vom P82B96 angesehen werden kann und im Prinzip nur Vorteile gegenüber dem P82B96 hat (Abgesehen vom Preis und der Beschaffbarkeit ;) - [http://www.reichelt.de/PCF-I-C-Bus-Controller/PCA-9600-D/3/index.html?;ACTION=3;LA=446;ARTICLE=126478;GROUPID=2942;artnr=PCA+9600+D &#039;&#039;&#039;PCA9600&#039;&#039;&#039; Gibts nun bei Reichelt!])&lt;br /&gt;
&lt;br /&gt;
Der Hauptunterschied zwischen P82B96 und PCA9600 sind die Spannungspegel an der Sx/Sy Seite des ICs. Der P82B96 kann diese Pins bei einem low-Signal nicht weiter als 0,88V nach unten ziehen (I²C kompatibel, nicht TTL kompatibel). Der verbesserte PCA9600 kann bis auf 0,74V herunter ziehen (I²C und TTL kompatibel). Des weiteren hat der PCA weniger Laufzeitverzögerung und ist bis zu 1MHz Bustakt spezifiziert. &lt;br /&gt;
&lt;br /&gt;
Der P82B96 (und PCA9600) verhindert eine Rückkopplung indem er an seinen Sx/Sy Eingängen ein low bei 0,65V erkennt, ein low selber aber nur mit 0,88V ausgeben kann. Informationen die über die T/R Seite kommen, werden also von einem zweiten, parallelgeschalteten, Bustreiber des gleichen Typs nicht weitergeleitet. Im Gegensatz zum P82B715 können die ICs verschiedene Busspannungen &amp;quot;übersetzen&amp;quot;. Die gepufferte Seite kann also mit einer anderen Busspannung betrieben werden als die Sx/Sy Seite.&lt;br /&gt;
&lt;br /&gt;
P82B96 und PCA9600 können statisch 30mA treiben. In der Application Note AN10216 (Seite 46) wird von NXP geschrieben das mittels externer Transistoren der Strom noch weiter erhöht werden kann. Bei 30kHz wird eine mögliche Gesamtlänge von 1km angegeben. &lt;br /&gt;
&lt;br /&gt;
Recht einfach aufgebaut ist der P82B715. Intern arbeitet nur ein Stromsensor, der auf der gepufferten Seite mittels Transistors den Strom bei low Pegel erhöht. Er hat somit nicht die Probleme mit bestimmten Spannungspegeln wie die P82B96 und PCA9600 ICs. Dafür muss beim P82B715 auch die ungepufferte Seite zur Gesamtbuslast mit einbezogen werden. Auch ist es nicht möglich die gepufferte Seite mit anderer Spannung zu bertreiben. &lt;br /&gt;
Auf der gepufferten Seite (LDA/LCL) besitzt der P82B715 nur jeweils einen Pin für jede Busleitung. Applikationen die getrennte TX und RX Pins benötigen, sind mit dem P82B715 also nicht möglich.&lt;br /&gt;
&lt;br /&gt;
=== Differentielle Übertragung ===&lt;br /&gt;
&lt;br /&gt;
In Kombintation mit einem Bustreiber wie dem P82B96, ist es möglich die I²C Bus Signale über RS-485 oder CAN physikalisch zu &amp;quot;tunneln&amp;quot; (PHY Layer).&lt;br /&gt;
&lt;br /&gt;
Dabei werden die TX und RX Leitungen des I²C Bustreibers mit den TX und RX Leitungen des RS-485 oder CAN Treibers verbunden. Für SDA und SCL werden hierfür auf dem Übertragungskabel also insgesamt vier Leitungen benötigt.&lt;br /&gt;
&lt;br /&gt;
NXP hat mit den P82B485/P82B486 auch Treiber angekündigt, die den I²C-Bus direkt auf RS485 übersetzen.&lt;br /&gt;
&lt;br /&gt;
=== Aktiver Pull-Up ===&lt;br /&gt;
&lt;br /&gt;
Linear Technology bietet einige ICs wie den LTC1694 an, der den passiven low-high Wechsel des I²C-Bus durch eine Stromquelle beschleunigt.&lt;br /&gt;
&lt;br /&gt;
== Topologie ==&lt;br /&gt;
&lt;br /&gt;
Über die günstigste Topologie (Stern, Bus,..) ist bisher nichts bekannt.&lt;br /&gt;
&lt;br /&gt;
== Störsicherheit/EMV ==&lt;br /&gt;
Bei der Nutzung als Feldbus müssen die Busteilnehmer sowohl gegen Störungen und Überspannung geschützt werden (induktive/kapazitive Einkopplungen), als auch Maßnahmen getroffen werden gegen zu große Störabstrahlung des Busses in die Umwelt. Wesentlich ist dabei die Begrenzung des maximalen Spannungsanstieges dU/dT auf allen Busleitungen und der Schutz vor Spannungsspitzen. Dazu gibt es folgende Möglichkeiten:&lt;br /&gt;
* Verwendung abgeschirmter und/oder verdrillter Leitungen mit zentraler Erdung&lt;br /&gt;
* Überspannungsschutz bei den Busteilnehmern - durch Schottkydioden zwischen SDA/SCL gegen Masse und VCC unmittelbar an den Slaves und Serienwiderstände in den Datenleitungen in der Anbindung zum Bus (typ. 50 … 200 Ohm)&lt;br /&gt;
* Passive Pi-Filter an allen Busteilnehmern, abgestimmt auf die höchste Übertragungsrate&lt;br /&gt;
Eine effektive Variante zum Schutz vor Überspannung, Spannungsausfall beim Slave und zugleich Pegelanpassung:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pegelshifter&amp;amp;EMV.png|600px|Schaltplan]]&lt;br /&gt;
&lt;br /&gt;
= Datensicherheit =&lt;br /&gt;
&lt;br /&gt;
Von Hause aus ist bei I²C keine Checksumme o.ä. vorgesehen. Einzelne Bytes werden nur mit einem ACK bestätigt.&lt;br /&gt;
&lt;br /&gt;
Man muss also eigene Konzepte entwickeln um sicherzugehen, dass Daten korrekt gesendet und empfangen wurden. &lt;br /&gt;
&lt;br /&gt;
Einige Möglichkeiten wären:&lt;br /&gt;
* Geschriebene Daten zurücklesen&lt;br /&gt;
* Daten immer mehrmals schreiben/lesen&lt;br /&gt;
* Wenn man µC als Slave programmiert, kann man eine Checksumme als zusätzliches Byte mitübertragen&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist, dass Slaves sowohl das SDA Datensignal, als auch das SCL Taktsignal (Clock-Stretching) dauerhaft auf &amp;quot;Low&amp;quot; ziehen können, was den Totalausfall des Busses zur Folge hat. Das kann z.B. beim Ausfall der Stromversorgung eines Slaves auftreten, es sind aber auch Schaltkreise bekannt, die diese Fehlfunktion bei längerem Betrieb zeigen (z.B. LM75). Die Auswirkungen eines lokalen Stromausfalls begrenzt ein klassischer Pegelshifter mit MOSFET, zwischen Bus und Slave geschaltet, bereits zuverlässig. Das Erlauben von Clock-Stretching ist generell ein Problem, da das Bus-Timing und somit die Reaktion des Gesamtsystems in Echtzeit nicht mehr garantiert werden können.&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;br /&gt;
* [https://gkiefer.github.io/home2l Projekt &#039;&#039;The Home2Ls&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies|Hausbus auf I²C- und ATtiny-Basis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105414</id>
		<title>I2C als Hausbus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I2C_als_Hausbus&amp;diff=105414"/>
		<updated>2022-09-21T08:03:32Z</updated>

		<summary type="html">&lt;p&gt;172.26.33.76: /* Kleinerer Pull-Up */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Infos =&lt;br /&gt;
&lt;br /&gt;
Infos allgemein zu [[Hausbus]], [[I²C]].&lt;br /&gt;
&lt;br /&gt;
Es wird oft behauptet das I²C nur für Verbindungen innerhalb einer Leiterplatte gedacht ist. Das ist sicherlich die Hauptanwendung, aber es gibt auch allseits bekannte Einsatzgebiete wo etliche Meter überbrückt werden. Bei VGA (DDC) und HDMI wird z.B. eine I²C-Bus Verbindung zur Kommunikation zwischen den Endgeräten benutzt. VGA und HDMI Kabel können (offiziell) rund 15m lang sein.&lt;br /&gt;
 &lt;br /&gt;
Allerdings werden für diesen Einsatz oftmals auch spezielle Treiber Bausteine eingesetzt, die  eine höhere Buskapazität vertragen, verbesserten ESD Schutz haben, die Pegel übersetzen (z.B. 3,3 auf 5V), Hot-Plug-fähig sind, etc. Als Beispiel sei hier der PCA9507 (NXP) aufgeführt, der einige dieser Eigenschaften besitzt.&lt;br /&gt;
&lt;br /&gt;
= Vorteile =&lt;br /&gt;
&lt;br /&gt;
Man kann Slave Bausteine &amp;quot;von der Stange&amp;quot; kaufen, ohne sich Gedanken über Protokoll und Adressierung zu machen. Denn das ist bereits schon implementiert. &lt;br /&gt;
Alternativ kann man aber auch eigene Slaves bauen und an den Bus hängen. Dafür haben viele µC schon eine Hardware I²C Schnittstelle integriert. Wobei man aber auch recht einfach eine I²C Schnittstelle in Software nachbilden kann.&lt;br /&gt;
&lt;br /&gt;
I²C Bausteine sind reine State-Machines. Somit sind viele von Hause aus recht Stromsparend. Der PCA9554 benötigt z.B. nur 250nA im &amp;quot;Standby-Mode&amp;quot; (keine Kommunikation).&lt;br /&gt;
&lt;br /&gt;
Bei I²C gibt der Master den Takt (SCL) für die Datenübertragung vor. Die Slaves benötigen im Gegensatz zu UART also keinen genauen Taktgeber (Quarz). Will man den Takt auf dem Bus verringern, so muss man das nur am Master einstellen. Die Slaves benötigen keine Änderung. So ist es auch möglich den Takt dynamisch zu variieren und z.B. wichtige Nachrichten mit geringem Takt (Störunempfindlicher) zu übertragen und andere Nachrichten mit höherem Takt.&lt;br /&gt;
&lt;br /&gt;
= Verkabelung =&lt;br /&gt;
&lt;br /&gt;
== Kabellänge ==&lt;br /&gt;
&lt;br /&gt;
I²C ist nicht als &amp;quot;long range&amp;quot; Bus entwickelt worden. Daher ist eines der Hauptprobleme bei I²C als Hausbus, dass man ohne weiteres nicht weiter als ein paar Meter kommt. &lt;br /&gt;
Das liegt daran das die I²C Leitungen eine maximale Kapazität von 400pF nicht übersteigen dürfen, da der high-Zustand auf dem Bus nur passiv über Pull-Ups erreicht wird. Je mehr Kapazität an einer I²C-Bus Leitung hängt, desto länger braucht der Bus also um den high-Zustand zu erreichen. Das kann zu timing Problemen führen.&lt;br /&gt;
&lt;br /&gt;
Es gibt zur Reichweitenerhöhung verschiedene Ansätze: &lt;br /&gt;
# Kleinerer Pull-Up&lt;br /&gt;
# Geschwindigkeitsreduktion&lt;br /&gt;
# Bustreiber&lt;br /&gt;
# Differentielle Übertragung&lt;br /&gt;
# Aktiver Pull-Up&lt;br /&gt;
&lt;br /&gt;
=== Kleinerer Pull-Up ===&lt;br /&gt;
&lt;br /&gt;
Da das Kernproblem darin liegt, dass der high-Zustand nur passiv erreicht wird, bietet es sich an den Pull-Up Widerstand zu verkleinern um dadurch die Zeit zu verkürzen die der Bus benötigt den high-Zustand zu Erhängen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Begrenzt wird dieses Vorhaben dadurch, dass I²C Geräte nur 3mA sinken können (Die weiter unten besprochenen Bustreiber umgehen genau dieses Problem). Bei der Berechnung der Pull-Ups muss also darauf geachtet werden, dass nicht mehr als 3mA durch einen Widerstand fließen. Eine Ausnahme stellen I²C Geräte dar, die der &#039;&#039;Fm+&#039;&#039; (oder höher) Spezifikation entsprechen (Fm+ = Fast mode Plus). Diese sind in der Lage 30mA zu sinken.&lt;br /&gt;
&lt;br /&gt;
=== Geschwindigkeitsreduktion ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Busgeschwindigkeit angepasst wird, sind große Strecken und umfangreiche Verzweigungen möglich. Ein 30-Meter-Bus funktioniert zum Beispiel noch mit rund 20kHz fast ohne Probleme. &lt;br /&gt;
Bei Geschwindigkeiten um 1kHz, wurde im Forum schon von Buslängen von etlichen hundert Metern berichtet. &lt;br /&gt;
&lt;br /&gt;
=== Bustreiber ===&lt;br /&gt;
&lt;br /&gt;
Bustreiber haben die Aufgabe die maximale Buskapazität von 400pF zu erhöhen. Dies erreichen die Bausteine i.d.R. durch eine Steigerung des Stroms auf dem Bus. &lt;br /&gt;
Die drei bekanntesten Bustreiber für diesen Zweck sind folgende:&lt;br /&gt;
&lt;br /&gt;
* P82B715 (3000pF, max. 100kHz)&lt;br /&gt;
* P82B96 (4000pF, max. 400kHz)&lt;br /&gt;
* PCA9600 (4000pF, max. 1MHz)&lt;br /&gt;
&lt;br /&gt;
Alle drei Typen haben ihre Vor- und Nachteile. Wobei der PCA9600 als Nachfolger vom P82B96 angesehen werden kann und im Prinzip nur Vorteile gegenüber dem P82B96 hat (Abgesehen vom Preis und der Beschaffbarkeit ;) - [http://www.reichelt.de/PCF-I-C-Bus-Controller/PCA-9600-D/3/index.html?;ACTION=3;LA=446;ARTICLE=126478;GROUPID=2942;artnr=PCA+9600+D &#039;&#039;&#039;PCA9600&#039;&#039;&#039; Gibts nun bei Reichelt!])&lt;br /&gt;
&lt;br /&gt;
Der Hauptunterschied zwischen P82B96 und PCA9600 sind die Spannungspegel an der Sx/Sy Seite des ICs. Der P82B96 kann diese Pins bei einem low-Signal nicht weiter als 0,88V nach unten ziehen (I²C kompatibel, nicht TTL kompatibel). Der verbesserte PCA9600 kann bis auf 0,74V herunter ziehen (I²C und TTL kompatibel). Des weiteren hat der PCA weniger Laufzeitverzögerung und ist bis zu 1MHz Bustakt spezifiziert. &lt;br /&gt;
&lt;br /&gt;
Der P82B96 (und PCA9600) verhindert eine Rückkopplung indem er an seinen Sx/Sy Eingängen ein low bei 0,65V erkennt, ein low selber aber nur mit 0,88V ausgeben kann. Informationen die über die T/R Seite kommen, werden also von einem zweiten, parallelgeschalteten, Bustreiber des gleichen Typs nicht weitergeleitet. Im Gegensatz zum P82B715 können die ICs verschiedene Busspannungen &amp;quot;übersetzen&amp;quot;. Die gepufferte Seite kann also mit einer anderen Busspannung betrieben werden als die Sx/Sy Seite.&lt;br /&gt;
&lt;br /&gt;
P82B96 und PCA9600 können statisch 30mA treiben. In der Application Note AN10216 (Seite 46) wird von NXP geschrieben das mittels externer Transistoren der Strom noch weiter erhöht werden kann. Bei 30kHz wird eine mögliche Gesamtlänge von 1km angegeben. &lt;br /&gt;
&lt;br /&gt;
Recht einfach aufgebaut ist der P82B715. Intern arbeitet nur ein Stromsensor, der auf der gepufferten Seite mittels Transistors den Strom bei low Pegel erhöht. Er hat somit nicht die Probleme mit bestimmten Spannungspegeln wie die P82B96 und PCA9600 ICs. Dafür muss beim P82B715 auch die ungepufferte Seite zur Gesamtbuslast mit einbezogen werden. Auch ist es nicht möglich die gepufferte Seite mit anderer Spannung zu bertreiben. &lt;br /&gt;
Auf der gepufferten Seite (LDA/LCL) besitzt der P82B715 nur jeweils einen Pin für jede Busleitung. Applikationen die getrennte TX und RX Pins benötigen, sind mit dem P82B715 also nicht möglich.&lt;br /&gt;
&lt;br /&gt;
=== Differentielle Übertragung ===&lt;br /&gt;
&lt;br /&gt;
In Kombintation mit einem Bustreiber wie dem P82B96, ist es möglich die I²C Bus Signale über RS-485 oder CAN physikalisch zu &amp;quot;tunneln&amp;quot; (PHY Layer).&lt;br /&gt;
&lt;br /&gt;
Dabei werden die TX und RX Leitungen des I²C Bustreibers mit den TX und RX Leitungen des RS-485 oder CAN Treibers verbunden. Für SDA und SCL werden hierfür auf dem Übertragungskabel also insgesamt vier Leitungen benötigt.&lt;br /&gt;
&lt;br /&gt;
NXP hat mit den P82B485/P82B486 auch Treiber angekündigt, die den I²C-Bus direkt auf RS485 übersetzen.&lt;br /&gt;
&lt;br /&gt;
=== Aktiver Pull-Up ===&lt;br /&gt;
&lt;br /&gt;
Linear Technology bietet einige ICs wie den LTC1694 an, der den passiven low-high Wechsel des I²C-Bus durch eine Stromquelle beschleunigt.&lt;br /&gt;
&lt;br /&gt;
== Topologie ==&lt;br /&gt;
&lt;br /&gt;
Über die günstigste Topologie (Stern, Bus,..) ist bisher nichts bekannt.&lt;br /&gt;
&lt;br /&gt;
== Störsicherheit/EMV ==&lt;br /&gt;
Bei der Nutzung als Feldbus müssen die Busteilnehmer sowohl gegen Störungen und Überspannung geschützt werden (induktive/kapazitive Einkopplungen), als auch Maßnahmen getroffen werden gegen zu große Störabstrahlung des Busses in die Umwelt. Wesentlich ist dabei die Begrenzung des maximalen Spannungsanstieges dU/dT auf allen Busleitungen und der Schutz vor Spannungsspitzen. Dazu gibt es folgende Möglichkeiten:&lt;br /&gt;
* Verwendung abgeschirmter und/oder verdrillter Leitungen mit zentraler Erdung&lt;br /&gt;
* Überspannungsschutz bei den Busteilnehmern - durch Schottkydioden zwischen SDA/SCL gegen Masse und VCC unmittelbar an den Slaves und Serienwiderstände in den Datenleitungen in der Anbindung zum Bus (typ. 50 … 200 Ohm)&lt;br /&gt;
* Passive Pi-Filter an allen Busteilnehmern, abgestimmt auf die höchste Übertragungsrate&lt;br /&gt;
Eine effektive Variante zum Schutz vor Überspannung, Spannungsausfall beim Slave und zugleich Pegelanpassung:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pegelshifter&amp;amp;EMV.png|600px|Schaltplan]]&lt;br /&gt;
&lt;br /&gt;
= Datensicherheit =&lt;br /&gt;
&lt;br /&gt;
Von Hause aus ist bei I²C keine Checksumme o.ä. vorgesehen. Einzelne Bytes werden nur mit einem ACK bestätigt.&lt;br /&gt;
&lt;br /&gt;
Man muss also eigene Konzepte entwickeln um sicherzugehen, dass Daten korrekt gesendet und empfangen wurden. &lt;br /&gt;
&lt;br /&gt;
Einige Möglichkeiten wären:&lt;br /&gt;
* Geschriebene Daten zurücklesen&lt;br /&gt;
* Daten immer mehrmals schreiben/lesen&lt;br /&gt;
* Wenn man µC als Slave programmiert, kann man eine Checksumme als zusätzliches Byte mitübertragen&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist, dass Slaves sowohl das SDA Datensignal, als auch das SCL Taktsignal (Clock-Stretching) dauerhaft auf &amp;quot;Low&amp;quot; ziehen können, was den Totalausfall des Busses zur Folge hat. Das kann z.B. beim Ausfall der Stromversorgung eines Slaves auftreten, es sind aber auch Schaltkreise bekannt, die diese Fehlfunktion bei längerem Betrieb zeigen (z.B. LM75). Die Auswirkungen eines lokalen Stromausfalls begrenzt ein klassischer Pegelshifter mit MOSFET, zwischen Bus und Slave geschaltet, bereits zuverlässig. Das Erlauben von Clock-Stretching ist generell ein Problem, da das Bus-Timing und somit die Reaktion des Gesamtsystems in Echtzeit nicht mehr garantiert werden können.&lt;br /&gt;
&lt;br /&gt;
= Adressierung =&lt;br /&gt;
&lt;br /&gt;
Wie viele Adressen einzelne I²C Bausteine haben, ist unterschiedlich. In der Regel sind 1-8 Adressen möglich. Es gibt aber auch (neuere) Bausteine die bis zu 64 mögliche Adressen haben. Somit kann es also sein, das man evt. Probleme bekommt wenn man mehrere Bausteine des selben Typs einsetzen will.&lt;br /&gt;
&lt;br /&gt;
In dieser Hinsicht ist der PCA9501 I/O Expander Baustein recht interessant. Er bietet als einer der wenigen älteren Bausteine bis zu 64 mögliche Adressen. Zudem hat er ein integriertes EEPROM (256 Byte) und ist somit für Hausbus Anwendungen gut geeignet. &lt;br /&gt;
&lt;br /&gt;
Eine andere Lösung dieses Problems ist die Verwendung von I²C Multiplexern- bzw. Switches. Wie z.B. den PCA9544. Dieser Baustein kann einzelne Busabschnitte bei Bedarf abtrennen, so das man in den einzelnen Abschnitten identische Adressen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
= Eigene Erfahrungen =&lt;br /&gt;
&lt;br /&gt;
Vor einigen Jahren war ich als Servicetechniker bei einer Geräteinstallation im Einsatz, bei der die laut Datenblatt möglichen Längen bei weitem überschritten wurden. Ab 12m ging nix mehr. Der Grund war aber nicht der I²C-Bus, sondern die Spannungsversorgung der entfernten Geräte. Die Masseleitung war auch 12m lang, und der Stromverbrauch der Geräte hat den Massepegel soweit angehoben, dass der I²C-Bus nicht mehr funktioniert hat. Mit einer dickeren Masseleitung hat&#039;s sofort wieder funktioniert. &lt;br /&gt;
&lt;br /&gt;
Die Kabel sind (bezüglich der gemeinsamen Masse) eine Kette über differentiell kleiner Widerstände parallel geschaltener differentiell kleiner Kondensatoren. Durch einen Pegel-Wechsel müssen all diese kleinen Kondensatoren über die Widerstände umgeladen werden. Folge ist eine deutlich kleinere Ausbreitungs-Geschwindigkeit des Signals und ein geringerer Spannungs-Anstieg an den Anschlüssen der Geräte. Zu der Kapazität der Kabel kommt vor allem noch die Kapazität der Geräte. Im I²C-Standard von Philips ist diese Kapazität auf 400pF limitiert. Im access.bus-Standard (welcher für Computer-Komponenten und Peripherie entwickelt wurde) ist diese Kapazität auf 1000pF beschränkt. Vgl. Ausbreitungsgeschwindigkeiten, Kapazitäten bei anderen Bus-Systemen wie USB, SATA, RS485&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe ein I2C Netzwerk im Haus, sternfoermig und Reihe gemischt, &lt;br /&gt;
vielleicht 40m alles zusammen, bei 70kHz mit P82B715 an allen Knoten, &lt;br /&gt;
CAT5 Kabel, laeuft einwandfrei. Musst natuerlich Fehlererkennung (NACK) &lt;br /&gt;
etc Routinen vorhalten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Habe bei meinem I2C-Hausbus eine Kabellänge &lt;br /&gt;
von ca. 120m. Auch sternförmig und reihe gemischt. Taktfrequenz 96kHz, &lt;br /&gt;
jedes der 22 Module ist mit einem P82B715 ausgestattet. Den Pull-up &lt;br /&gt;
Widerstand von SDA und SCL habe ich auf 180 Ohm verringert. Läuft &lt;br /&gt;
fehlerfrei seit ca. 15 Jahren. Verwendetes Kabel für SCL, SDA: &lt;br /&gt;
2x0,14mm², geschirmt. Spannungsversorgung +/-15V und Interrupt: 5x1,5².&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Mein I2C-Hausbus hat ca. 150m Gesamtlänge, Topologie sowohl als Stern, als auch Linien gemischt. Taktfrequenz 3 kHz und weitere Optimierungen. Einheitlicher Bus mit Masse/SDA/SCL und +12V zur Stromversorgung. Läuft seit 2004 weitgehend fehlerfrei. Dokumentation im Netz (Projekt Hauscomputer).&lt;br /&gt;
&lt;br /&gt;
= Passende Sensoren / Module =&lt;br /&gt;
* Temperatursensor mit dem [[Temperatursensor#DS1621|DS1621]]&lt;br /&gt;
* [[I2C-Schaltmodul]] mit dem [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
* [http://cctools.hs-control.de/ext_index.php?artikel=1824 I²C-CAN Modul]&lt;br /&gt;
* [http://www.horter.de/i2c/index.htm I²C Module]&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
* [http://www.i2c-bus.org/ I²C-Bus Infoseite]&lt;br /&gt;
* [https://www.nxp.com/products/interfaces/ic-bus:MC_41735 Übersicht I²C Bausteine von NXP]&lt;br /&gt;
* [http://www.hendonsemiconductors.com/bus-buffer.asp Hendon Semiconductors (Viele Application Notes)]&lt;br /&gt;
&lt;br /&gt;
== Foren Beiträge ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/71426#582586 I2C über 1,2km Kabel mit CAN-Transceiver]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/40880 I2C über 200m Kabel mit P82B96]&lt;br /&gt;
&lt;br /&gt;
== Application Notes == &lt;br /&gt;
&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN10658.pdf AN10658 (Sending I2C-bus signals via long communications)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN460.pdf AN460 (Using the P82B96 for bus interface)]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN255.pdf AN255 (I²C / SMBus Repeaters, Hubs and Expanders)]&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://haus-computer.de Projekt Hauscomputer]&lt;br /&gt;
* [https://gkiefer.github.io/home2l Projekt &#039;&#039;The Home2Ls&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Hausbus_auf_I2C-_und_ATtiny-Basis:_Home2L_Brownies|Hausbus auf I²C- und ATtiny-Basis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:I2C]]&lt;br /&gt;
[[Kategorie:Hausbus]]&lt;/div&gt;</summary>
		<author><name>172.26.33.76</name></author>
	</entry>
</feed>