1. Ist es möglich mit einem AVR einen I²C-Bus aufzubauen? 2. gibt es ICs die weitere I/O-Ports haben, die man an den I²C-Bus hängen kann, denen man per Jumper Adressen zuweisen kann, und auf die man von der Microcontrollersoftware direkt zugreifen kann. 3. wenn das möglich ist: wieviele I/O-Ports vertägt der I²C-Bus 4. Ich bin ein einsteiger in der Microkontrollertechnik mfg BS - Energieelektoniker sind die besseren Schlosser g
Hallo zu 1. ja zu 2. ja: z.B. pcf8574 mit 8 Port's (lesen und schreiben) z.B. pcf8591 AD 7 DA-Converter weitere siehe homepage von phillips (bzw. google'n .... / da gibts jede Menge Info im Netz) zu 3. 2 ports : 1 x SDA 1 x SCL bei den AVR's Hardware und/oder Software-Lösungen je nach eingesetzten Typ (siehe Atmel-homepage - Übersicht) zu 4. ??? jeder fängt mal 'klein' an... Günter
Danke!!! ICh hab mämlich ein absolut endgeiles Projekt vor (es is nur geil wenns letztenlich so funktioniert): Ich möchte das I²C System als alternative zum käuflichen Sytem EIB (bus System für Haustechnik) verwenden, Ich hab mir das follgendermaßen Vorgestellt: Lichtschalter => IC => I²C => AVR => I²C => IC => Relais => Lampe oder Lichtschalter => IC => I²C => AVR => I²C => IC => Relais => alle Lampen im Haus aus
Ich glaub nicht das der I²C das mitmacht! Ich kann mich irren bin aber der meinung das I²C Maximal über 10 Meter geht. MfG Björn
Benn, I²C verträgt keinen langen Leitungen. RS485 ist da wohl besser geeignet. Ich bin allerdings der Meinung das ein selbstentwickelter Bus der möglichst wenige Leitungen benötigt (am besten Signalübertragung über die Stromversorgung) noch deulich günstiger währe. Gruß Bernhard
vergiss das ganz schnell wieder, damit wirst du nicht froh. In solch einer Installation wird der I2C niemals zufriedenstellend funktionieren. Gedacht, entwickelt und spezifiziert ist das Ding als Kommunikation innerhalb eines Geräts, mit langen Leitungen, noch dazu in verseuchter Umgebung, funktioniert das nicht. 10m halte ich schon für sehr gewagt.
I²C ist nur für kleinere Leitungslängen geeignet, d.h für Kommunikation auf ner Platine also im cm Bereich. Ich kenn zwar den EIB-Bus net aber der hat mit Sicherheit wesentlich größere Leitungslängen. Hier im Forum gibts sicher ein paar helle Köpfe die mit sowas (EIB) Erfahrung haben. Es gibt sogar nen Port Expander mit 16 Ein/Ausgangspins....von dem dürften so ein par stück ansprechbar sein....normalerweise haben die 3 konfigurierbare Adressbits was 8 verschiedene Adressen bedeutet ich weiß aber jetzt nicht ob sich 8 nacheinander betreiben lassen aber das Datenblatt gibt hier sicher weitere Informationen. Hab jetzt aus Interesse mal nachgelesen der 16biter heißt PCF8575/PCF8575C und es lassen sich maximal 8 Stück mit je 16 Ausgängen an einem Bus betreiben......sind stolze 128 Ein-/Ausgänge mit 400kBit was eigentlich für Hausanwendungen Reichen würde wenn da nicht das Problem mit der Leitungslänge wär. So auch das hab ich nachgelesen auf http://www.eib-home.de gibts sehr nette Infos. Der I2C läßt ca. ne leitunglänge von 0,5-1m zu wobei der EIB mit 24V Betriebsspannung auf 1000m kommt.... Na ja wenn ich sowieso nen anderen Bus brauch um die Daten vom Schalter zum Schütz/Schaltlogic zu schicken kann ich gleich den anderen Bus hernehmen..... MfG & frohes Schaffen Rainer
Hallo, meine Frage passt ganz gut hier her... Wie groß müssen die Pull-Up-Widerstände, die den I2C-Bus abschliessen sein? Danke, Grüsse von Axel
Ich bin der meinung so im bereich zwischen 4,7k und 10k korrigiert mich wenn ich falsch liege.
Hey at all, 4,7k - 10 pull ups sind o.k. 10 Meter ist echt schon lang, da kommen meist nur ganz schlappe flanken auf die leitung und dann ist alles aus. Der Name "I²C-Bus" sagt es bereits schon, "Interner IC-Bus" er wurde zur Kommunikation zwischen einigen IC auf einem Board entwickelt. Reini
HI, @Ben: Such mal nach AVR mit Can Bus. Es hatte mal jemand eine HP zur Hausautomatisierung mittels Can Bus gehabt. Du koennest es auch ueber RS232 machen. Sprich 2 AVR`s ein AVR als steuert Geraet und der andere (nach 10m Entfernung) steuert die Lampe ueber Relai. Mfg Dirk
Hmmm Nett aber nicht gsnz vollständig. @Benn S. Zu 1.und 4. : Is schon beantwortet Zu 2.und 3. Ich formuliere es mal so das der Bus Theoretisch fast unendlich erweiterbar ist. Dazu sind aber einige erfüllte Bedingungen nötig bzw. gibt es da Zeitliche Grenzem. Der einfache Bus läßt als Adressraum Bit zu (Die 10 Bit Geräte lasse ich mal außen vor)so das sich daraus maximal 2 hoch 7 =128 Adressen ergeben. Theoretisch natürlich denn zb. Die Adresse "0" ist nicht verfügbar und einige andere ebenfalls nicht so das es sich am Ende so um die 64 Effektive Adressen beläuft. Dh. du kannst im Einfachsten Fall 64 Chips anschließen. Da gibt es viele verschiedene Sachen (Deswegen nutze ich se ja auch gerne). 8/16 Bit Ports. AD/DA Wandler (1-8 Fach,6-16 Bittig,Gemischt (zb.4AD/1DA) EEProms Ram Diverse HF-Schaltungen (Zähler,Empfänger aller Art,Generatoren usw.) Audiokreise . zb. 2x22W Verstärker mit Klangregelstufe und Selektor + Anti-plopp 5 Band Equalizer Eingangsselektoren Audio/Video-Kreuzmatrix Kelinecontroller für I2C Uhren/Kalender Temparatursensoren Infrarotsensoren Und noch einige Speziellere Sachen Plus dem was mir gerade nicht eingefallen ist. Da der I2C-Bus ursprünglich für die Vereinfachte Steuerung von Fernsehern,Videorecordern,Hifigeräten also generell Audio/Video gedacht ist sind die Bausteine größtenteils auch dort angesiedelt. (Wo ander mit dem Ausschlachten aufhöhren mache ich noch etwas Weiter.Nene einfaches UKW-Radio am I2C is immer ne nette Spielerei) Bei fast allen Chips ist die Adresse in einen Festen und einen Variablen Teil aufgeteilt. Dh. bei den Meisten Chips sind die ersten 4 Adressbits fest vegeben und die letzten 3 Frei verfügbar (Am Chip über 3 Pinne Adressierbar)so das man bis zu 8 Gleiche Chips am Bus hängen und sie auch einzeln ansprechen kann. Einige haben weniger Adressierungsmöglichkeiten und einige haben mehr freie Adressbits. Einer ist der PCA9501 (8 Bit Port + 256 Byte Eeprom) bei dem nur das Erste Bit "fest" ist und die restlichen 6 Bit frei belegbar sind so das man von diesem dann 2 hoch 6 =64 Stück an einem Port betreiben kann. Das sind immerhin 64*8=512 Bit mit denen man Spielen kann. Soviel zu den Möglichkeiten. Dann komme ich zur Erweiterung. Auch für I2C gibt es Portexpander. Die machen eigenlich nix anderes als ganze Busstränge auf den Master (Der der Sagt wo es lang geht) zu schalten so das man 2 oder mehrmals die gleichen Adressen nutzen kann. Nimm mal an du hast einen kompletten Bus 3x aufgebaut und damit alle Adressen 3x vergeben was ja normalerweise nicht geht. Der Expander schaltet eben nur einen der 3 Busse an den Master ud das geschieht natürlich auch per I2C so das alles von einem Master aus kontrollierbar ist. Allerdings kostet das natürlich Zeit da evtl. der Bus erst umgeschaltet werden muß. Will man erweitern dann kann man das ganze auch Kaskadieren was dann wieder mit extraschaltzeiten bezahlt wird. Aber bei 1 zu 5 Expandern hätte man schon bei 2 weiteren Ebenen (Plus Hauptebene.Die kann man ja bis auf die Expanderadresse voll nutzen.Also Zeitkritische Bausteine an den Hauptbus) neben den ersten 64 Adrressen auf maximal 1664 Adressen erweitern ohne wesentlich an geschwindigkeit zu verlieren. das sind dann in Zahlen zb. 1664*8=13312 Bits die man Schalten/Abfragen kann. Das dürfte dann für jeden reichen ggg Bleibt noch das Strittige Thema der Buslänge. Ursprünglich nur für Geräte und damit für kleine Strecken bis ca. 1m gedacht ist es mit größeren längen etwas Schwierig. als Begrenzung wird eine Leitungskapazität vo maximal 400pF angegeben so das bei einfachen Kabeln schon nach einigen Metern Ende ist. Mit geschirmten Strippen kommste vieleicht auf 10-30m aber dann ist schluß. Die Lösung sind Bustreiber die die Leitungskapazitäten reichlich ausweiten (auf Ca. 4000 pF) so das man gegebenenfalls auf einige Hundert meter kommen kann.(Je nach Kabel) Im Grunde sind das nur Impedanzwandler. Als Beispiel sei hier mal der P82B715 genannt. Wenn man genug aufwand betreibt dann geht auch der I2C auf längere Reisen aber man Muß sich überlegen ob sich das auch lohnt. Nicht behandelt habe ich das Problem der Netzeinstreuung die ja zwangsweise auftritt weil der I2C bus sehr Warscheinlich der Stromversorgung folgt also im selben Kanal,Rohr usw. verlegt wird. Die beste Methode ist allerdings die Taktrate runterzusetzen. Je langsamer desto sicherer. Da I2C keinen festen Takt hat (Man kann die Befehle und Daten auch per hand durchtackern .Meinentwegen ein Bit pro Tag) ist eine Beliebige Geschwindigkeit Zwischen 0 und Maximum möglich. Zum Schalten ist es auch nicht so wichtig das es innerhalb von 5 Millisekunden geschieht. Am Besten ist es das mal in ruhe auszuprobieren bevor man sich in Unkosten stürzt. Das waren meine 2 Cent dazu (Ich wollte nur mal wiedersprechen das I2C nur ne Kurzstreckengeschichte ist). Gruß Ratber
Sieh mal hier in den Links nach. Soweit ich dass in Erinnerung habe, gibt es dort 2 Projekte, wo genau das gleiche gemacht wurde, wie Du vorhast. Allerdings mit dem Can-Bus. EIB kannst Du vergessen. Dafür musst Du Dich bzw. Deine Geräte bei der Eiba in Brüssel zertifizieren lassen. Sonst darfst Du da gar nicht ran. Wenn ich dass richtig verstanden habe, willst Du aber nur was ähnliches entwickeln und nicht das EIB-Protokoll nachbilden. Aber warum was neues erfinden, was andere schon gemacht haben. Ich meine, einer der Links war von einer Hochschule komplett mit C-Source-Code
Hallo Benn, wie schon oben gesagt, geht mit dem I2C über echte Entfernungen nichts. Die Störungen, die du dir einfängst, machen alles kaputt. Eine preiswerte Lösung geht in Richtung RS485- und CAN-Treiber. Wenn du dir die Spezifikationen anschaust, wird es klar, dass nur Gegentakt-Betrieb ein Lösungsansatz ist. Ich nutze für meinen KHBus ( Koopis Haus Bus oder Kommunikations Haus Bus ) einen Maga8 und den PCA82C251. Noch ein wenig "Hühnerfutter" und das Grundmodul steht. Beim Protokoll kann man sich an CAN und EIB anlehnen. Preiswert, multimasterfähig und vor allem nicht überladen. Getestete Reichweite ( mit eingespeisten Störungen ) min. 800m. Wobei Fehler auch durch die SW abgefangen werden müssen. Bernhard
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.