Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Servus Rainer, > > also mit der Auswertung habe ich auch Probleme. > Ich habe mir vorerst eine etwas peinliche Lösung zusammengemurkst. > Geht sicher einfacher aber ich habe leider zu wenig Erfahrung. > > <code> > //* Testmodul zum Auslesen des Hygrosens THMOD-I2C Modules *// > //* Habe den Index als Temperatur in °K angenommen, die zugehörigen Werte *// > //* des Sensormodules in die entsprechenden Zellen eingetragen *// > //* Jedoch nur in 2°K Schritten um Platz zu sparen und wegen faulheit *// > //* *// > //* Ein Ausgabewert von 4167 entspricht Inhalt von Zelle 0 *// > //* So ist die Temperatur 0°K weil eben Zelle 0 *// > //* Ausgabe 4194 = Zelle 1 entspricht also 2°K *// > > > const THtemp[] = 4167, 4194, 4221, 4248, 4275, 4302, 4329, 4356, 4383, 4410, > 4437, 4464, 4491, 4517, 4544, 4571, 4598, 4625, 4652, 4679, 4706, 4733, 4760, > //* snip... sind ca 600 Werte *// > 21280, 21304, 21327, 21351, 21375, 21399, 21423, 21446, 21470, 21494, 21518, > 21542, 21566, 21589, 21613, 21637; > > > function readthm(byte addr) returns int > { > int i, adata, tdata; // int reicht, weil bit8 nur bei Fehler gesetzt > // adata = T_Ausgleichsstelle tdata = Thermospannung > if i2c.cstart(addr) // Wenn THModul ACK dann weiter > { > sleep 100; // kleine Pause nach i2cstart > tdata=(256*i2c.read()+i2c.read()); // MSB und LSB der Thermospannung lesen und zusammensetzen > adata=((256*i2c.read()+i2c.readlast())/256)-32; // MSB und LSB der Ausgleichsstelle lesen und den Absolutwert berechnen > i2c.stop(); // I2C beenden > if tdata<4167 tdata=4167; // Werte unter 0°K werden ignoriert > if tdata>21637 tdata=21637; // Werte über 1300°K werden auch ausgeblendet > i=0; // Zähler für Arrayindex setzen > while tdata > THtemp[i] i=i+1; // Schleifendurchlauf solange gemessene Spannung kleinen Array[Wert] > } > return adata+i*2; // Vergleichsstellentemp + Thermoelementtemp zurückgeben > // i*2 weil nur in 2°K Schritten im Array > } > </code> > > Hab bis jetzt keine Formel zur Umrechnung der vom Modul gemeldeten Werte in > Temperatur gefunden. Desshalb der Umweg über das Array. > Noch ne Frage, beim Einlesen von MSB und LSB verwende ich > "INT=MSB*256+LSB". Eigentlich müsste "INT=MSB shl(8) or LSB" das selbe nur > um einiges schneller machen. > Habe aber keinen Unterschied in der Geschwindigkeit feststellen können. > Optimiert der Compiler so etwas von sich aus? > > Ach ja noch was, laut Datenblatt hat das Modul die Adresse 0x78. > Ich kann es jedoch nur unter der Adresse 0xf1 auslesen. > > > mfg > Peter > > > > > Hallo, ich habe ein Problem mit dem gleichen Modul. Wie hast Du die Auswertung hinbekommen ? > > Ein paar Zeilen in c2 wären interessant für mich. > > > > MfG > > > > Rainer > > > > > > > > > > > Hallo zusammen, > > > > > > das Problem hat sich erledigt. > > > Wer lesen kann ist klar im Vorteil. > > > Das Modul benötigt eine Versorgungsspannung von 6-24V, > > > hatte es aber an 5V angeschlossen. :-( > > > Jetzt funktioniert es. > > > > > > mfg > > > Peter > > > > > > > > > > Hallo Zusammen, > > > > > > > > ich habe ein Problem mit einem i2c-Thermomodul von Hygrosens. > > > > Laut Datenblatt sollen an Adresse 0x78 4 byte gelesen werden können. > > > > Die ersten zwei byte MSB,LSB der Thermospannung, byte 3 und 4 die > > > > Temperatur der Vergleichsstelle. > > > > So weit komme ich jedoch nicht, da ein i2c.cstart(0x78) eine 0 meldet. > > > > Ein am Bus angeschlossenes Rel.Board (MAX7311) funktioniert bestens, > > > > also sollte der Bus eigentlich in Ordnung sein. > > > > > > > > Habe leider keine große Erfahrung im Programmieren, der Rest meiner > > > > Software funktioniert dank des Forums und der Hardware von Herrn Helbig > > > > bestens. > > > > > > > > Also hat jemand so einen Fühler schon am laufen? > > > > Wenn Ja , wie??? > > > > > > > > besten Dank > > > > Peter