Hi, ich möchte über den I2Cbus, einige Sensoren wie Temperatur und Rel.Luftfeuchtigkeit abfragen, sowie Verbraucher ein und ausschalten. Das aus einem Grund, weil mir sonsts die Pins des Atmega 128 nicht ausreichen und aus dem anderen dass ich nich so viele Leitungen legen muss bzw. eine Erweiterungsmöglichkeit vorhanden ist. Nun stehe ich vor eineigen Problemen. 1. Wie steure ich Optokopler oder Transistoren (MOSFETs) über den I2C BUS? Gibt es da module die auf der einen Seite an den I2C Bus angeklemmt werden und auf der anderen Seite Ausgänge wie am µc haben? 2. Ich habe einige Luftfeuchtigkeitssensoren von Sensorik diese sind schon für einen 2 wire Bus gedacht. Allerdings besteht da das Problem dass ich nicht wie bei den Tem.Sensoren von Maxim o. Dalas die Adresse durch Beschaltung von Pins bestimmen kann. An den Feuchtesensoren ist die Adresse fest vergeben und zwar bei allen auf 000. Nun weiss ich nicht wie ich da mehrere an einen Bus hängen soll. Soll ich vielleicht nen AtTini nehmen und dem I2C beibringen? Oder gibt es da einfachere bzw. originellere und kostengünstigere Möglichkeiten? Ich bedanke mich mal im vorraus. Gruss. Georg.
obs was fertiges gibt, weiß ich nicht, glaube aber eher nicht. Der I2C-Bus ist zum Datenaustausch auf der Platine vorgesehen und von den technischen Parametern darauf ausgelegt. Lange Leitungen sind da nicht vorgesehen (und funktionieren auch nicht). Was die Sache weiter erschwert, ist der bidirektionale Betreib. Mein Rat, wenn du nicht gewaltige Klimmzüge in Sachen Störsicherheit machen willst, such dir ein Bussystem, das geeigneter ist.
hi, die IC's von philips sind genau dass was ich gesucht habe. Jetzt brauche ich nur etwas womit ich meinen Sensoren die alle die gleiche Adresse haben ein andere beibringen kann. Was die Kabellänge bei i2c betrifft. Ist es meines erachtens kein so großes Problem. Mit Flachbandkabeln bei denen jede 2.Leitung auf Masse sitzt schaft man meherere Meter ohne Probleme. Aber eventuell wird es eh ohen Kabel laufen. Mal schauen. Danke. Georg.
Prinzipiell stimmt das, was crazy horse schrieb. Mit ein paar Tricks kann man dem I²C-Bus aber ein paar Meter herausleiern: Bei vielen Anwendungen ist es gar nicht notwendig, die volle Geschwidigkeit zu nutzen. Je niedriger die Geschwindigkeit, umso länger darf der Bus werden. Es gibt Bus-Repeater, einfache ICs. Ich muß mal die Nummer raussuchen, aber die machen dem I²C-Bus auch nochmal Beine. So unsicher ist der I²C-Bus eigentlich garnicht: - nicht zeitkritisch, da synchron - Fehlertolerantes Protokoll (start,stop,acknowledge) Mit Deinen Sensoren kann ich Dir leider nicht weiterhelfen. Lassen die sich evtl. per Bus anders adressieren (umprogrammieren)? So etwas habe ich auch schon gesehen. Die Adresse "0" ist eigentlich die "Broadcast" -Adresse.
Nachtrag: Hier die Nummer des Bus-Repeaters: 82B715 (auch vom Philips) Laut Autor des Buchs "I²C-Bus angewandt" (ISBN 3-928051-71-7, Elektor-Verlag) konnten damit 100 m Leitung überbrückt werden. Allerdings wird keine Aussage zur Übertragungsrate gemacht.
hi, super danke. Die Geschwindigkeit ist mir egal. Da die Temperaturregelung sowieso ziemlich träge ist. Im datenblatt von den Feuchtesensoren habe ich nichts gefungden was auf eine Adressänderung per Bus ermöglicht. Werde mal weitersuchen. Danke euch allen. Georg
hi, kennte einer von euch Adressmultiplexer? Wurde mir heute mal vorgeschlagen einen Adressmultiplexer zu nehmen. Ich weis allerdings nicht was er genau macht und wo ich welche bekommmen kann. Gruss und danke.
Adressmultiplexer kenne ich nur von parallelen Adressbussen. Bei I²C ist mir so etwas noch nicht untergekommen. Was vorstellbar wäre: Einen Chip vor die Sensoren, der die Adresse umwandelt - Also die Anfrage nur dann an den entsprechenden Sensor weiterleitet, wenn er auch angesprochen werden soll.
Hi Georg, unter http://www.philipslogic.com/products/i2cmuxes/ gibt's was zu I2C-MUXES und -SWITCHES!!!
hi, das ist ja super. Genau dass ist die lösung. Ganau nach so was habe ich gesucht. Ein i2c bus switch. Vielen dank. Jetzt ist mein Projet doch noch gerettet. Ich dachte schon im muss einen anderen buss nehmen und wieder auf Sensorsuche gehen. Vielen vielen dank. Jupiii. Jetzt noch die letzten Prüfungen schreiben und dann kann mich nichts mehr aufhalten. Gruss Georg.
Die Sensoren sind nicht zufällig diese SHT11? Die gibs nämlich als kostenlose Muster und haben auch alle die gleiche (noch) unveränderbare Adresse 000: http://www.sensirion.com/de/sensors/humidity/default.htm Die sind zwar für einen 2-Draht Bus ausgelegt, aber nicht zu I2C kompatibel! Ansonsten würde ich es wie vorgeschlagen machen und einfach z.B. noch einen tiny nehmen (die sind ja nicht teuer). Man kann ja auch mehrere an einen mc anschließen, man muss nur für jeden Sensor praktisch einen extra Bus machen und die dann einfach nacheinnander auslesen. So long, Felix
Es sind die SHT11 Sensoren. Was nicht kompatibel ist wird komatibel gemacht. Aber ich denke dass müsste gehen. Gruss.
hi, Habe 2 von den Sensoren. Oder habt ihr ne andere idee luftfeuchte über den i2C Bus zu messen. Georg.
Also, ich habe das so vor. Da der STH11 Start und Endbits etwas anders handeln. Kommt eine I2C Porterweiterung davor und der rest wird über den µC geregelt. Sowas ähnliches hat da jemand schon gemacht: http://www.emesystems.com/OL2sht1x.htm Da es mir nicht auf die Geschwindigkeit sondern auf die Daten ankommt auch wenn diese nur jede minute abgefragt werden. Das reicht. Na was meint ihr? Wird es so funzen oder nicht? Ich denke schon. Georg.
Hallo, ich möchte den Uhrenbaustein PCF 8583 benutzen, hat zufällig jemand einen fertigen Treiber in Assembler dazu? Zu den vorigen Beiträgen habe ich 8 Temperatursensoren Typ DS 1621 auf dem I2C Bus jedoch treten nach ca. 1 Stunde Laufzeit immer wieder Fehler auf diese werden durch die Programmroutine aufgefanngen. Zur Länge die 8 Sensoren sind an Telefonkabel 8 x 0,6 mm auf ca. 5 Meter angeschlossen. Zur Porterweiterung kann der PCF 8574 genutz werden. Achtung Lowaktiver Ausgang an dem LEDs direkt angeschlossen werden können (30 mA Ausgangsstrom). Es gibt den PCF 8574 und PCF 8574 A somit hat man an einem Bus 128 Ein- bzw. Ausgänge verwalten. Bei wem gibt es den oben erwähnten Feuchtigkeitssensor zu erwerben?
hi, bei www.sensirion.com kostet ca 15.$ ist ne schweizer firma. Da kriegst du auch 1 als musterstück. Danke für die Tips.
Hi, hätte mir jemand nen Assembler Quell Code für den SHT11 für µVision von Keil!? Sind nämlich grad am rumprbieren und bekommen den Sensor nicht zum laufen, er sendet uns einfach kein ACK! mfg bäri
- ist SDA auf Eingang, wenn das ACK-Bit abgefragt wird? - ist die Adresse richtig? - stimmt das Datenrichtungs-Bit? - Start-Kondition richtig gesendet? (Oszilloskop hilfreich) - Pull-Ups an SDA/SCL?
Hi, also im Anhang unser Assembler Quellcode für µVision von Keil! (ist en Bissel aufgebläht, sind auch noch andere I2C Unterprogramme drinnen....!) Haben nur an der SDA Leitung en Pull Up von 2k dran gehabt, laut Blockschaltbild vom SHT11 reicht das.. Brauchen wir für beide Leitungen einen Pullup!?!? Wenn ja, mit wieviel kOhm sollen wir diese gegen die Versorgungsspannung schalten!?!? Die Adresse steht auf 000, müsste also schon stimmen! kannst du evt einen fehler in unserem programm finden!?!? lg bäri
Hi bäri, versuchs mal mit 'nem "clr SCL" vor dem Return in der Routine "wait_bus_start"!
Also der wait_bus_start den Führt er ja noch komplett aus, habe ja extra mit SENDADEZ immer nach jedem aufruf eines Unterprogramms einen Wert ausgeben lassen, also über V24, aber beim wait_ack da bleibt er eben hängen .. :-( werde es trotzdem mal versuchen! Den C Code habe ich auch schon gesehen, aber leider läuft der net mit der alten µVision version, oder liege ich da falsch!? lg bäri
Hi bäri, das überarbeitete Programm ist im Anhang und sollte jetzt laufen. Konnte nur die Ausgabe über V24 nicht testen. 1. SCL auf Low ist für die Transmission Start Bedingung erforderlich 2. Nach der Befehlssequenz musst du auf das Ende der ADU warten 3. Wenn die CRC nicht benötigt wird, muss das letzte übertragene Byte mit ACK=High bestätigt werden
hi Olli, vielen Dank für deine Bemühungen, das Programm läuft jetzt! Habe aber noch ein paar kleine schwierigkeiten, und zwar hängt sich das Programm nach ein paar durchläufen auf, manchmal sind es 10, aber es war auch schon nach einem! Muss man nach jedem durchlauf einen Soft Reset auslösen!? Und dann habe ich noch das Problem, wie ich die Werte umrechne! Also ich habe jetzt ja 2 x 8Bit Werte vom SHT11 bekommen, einmal das MSB und einmal das LSB, wie bekomme ich jetzt die aus den 2x8Bit werten die 14 Bit herraus!? Kann ich einfach die Dezimalwerte von dem MSB und LSB zusammen zählen und dann mit der Formel für z.B. die Temperatur (steht ja im Datenblatt) die Temp. ausrechnen!?!? Danke schon mal im voraus... lg bäri
>und zwar hängt sich das Programm nach ein paar durchläufen auf< Versuchs mal mit einer gewissen Zeitverzögerung nach jedem Durchlauf >Muss man nach jedem durchlauf einen Soft Reset auslösen!?< Ist nicht notwendig >wie bekomme ich jetzt die aus den 2x8Bit werten die 14 Bit herraus!?< MSB * 256 + LSB und dann in die Formel einsetzen, z.B.: MSB=0x1Eh=30dez, LSB=0x75h=117dez T=(30*256+117)*0.01-40=37.97°C
Hallo Olli, nochmals vielen vielen Dank für deine Hilfe, funktioniert jetzt alles bestens, leider nur wenn ich den SHT11 direkt am µC angeschlossen habe...! Wenn ich ein Kabel, ca. 3m zwischen den Controller und dem Sensor verwende, dann geht es leider nicht mehr, bekomme dann immer nur 255 255 als MSB/LSB vom Sensor! Die Versorgungsspannung beträgt auch am Ende der Leitung noch ca. 5V, an dem kann es also nicht liegen! evt. weißt du ja auch hier weiter! liebe grüße bäri
Hi bäri, die Überbrückung größerer Entfernungen kannst du beim I²C-Bus eigentl. nur mit entsprechenden Treibern realisieren, z.B.: P82B715 I²C-Bus Extender PCA9515 I²C-Bus Repeater Mit dem SHT11 habe ich (durch die Verringerung des Pull-Ups an SDA auf 1k) aber auch schon Messwerte über ca. 2m Flachbandkabel übertragen.
Dein Beitrag ist schon eine Tage alt. Kannst Du mir das Ergebnis mitteilen. Ich möchte meine Orchideenvitrine mit c-control regeln und finde keine passenden Feuchtesensoren. I2C kann c-control ja auch. danke im Voraus
Mein Gott... Wie kann man so scheiße sein und den dreck tatsache hobbymäßig machen??! wir müssen den siff inner schule machen und es is zum kotzen... ihr seid so arm! musste mal gesagt werden mfg xD
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.