das neue Modul hat 4 bytes und ich hab nu ma l Grundsätzliche Fragen dazu
ich frage die Bytes mit folgendem Sketch ab und lass diese auf dem Display anzeigen:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 20 chars and 4 line display
int b0 = 0; // byte 1 I2C Sensor für MSB Thermospannung
int b1 = 0; // byte 2 I2C Sensor für LSB Thermospannung
int b2 = 0; // byte 3 I2C Sensor für MSB Ausgleichstellen- Temperatur
int b3 = 0; // byte 4 I2C Sensor für LSB Ausgleichstellen Temperatur
float Thermospannung = 0;// Variable für b0 und b1
float Temperaturwert = 0;// Variable für b2 und b3
float temp = 0; //Variable für Temperatur
void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight();
}
void loop()
{
Wire.requestFrom(0x78,4); // lese von adresse 0x78 4 bytes aus
b0 = Wire.read(); // lese 1. byte
b1 = Wire.read(); // lese 2. byte
b2 = Wire.read(); // lese 3. byte
b3 = Wire.read(); // lese 4. byte
lcd.clear();
lcd.setCursor(0,0);
lcd.print (b0,HEX); //anzeige b0 als Hex wert
lcd.print(" ");
lcd.print(b0); // anzeige b0 wird als dezimalwert angezeigt
lcd.setCursor(0,1);
lcd.print(b1,HEX);
lcd.print(" ");
lcd.print(b0);
lcd.setCursor(0,2);
lcd.print(b2,HEX);
lcd.print(" ");
lcd.print(b2);
lcd.setCursor(0,3);
lcd.print(b3,HEX);
lcd.print(" ");
lcd.print(b3);
delay(1000);
}
soweit so gut ich hab 4 Hex werte und 4 Dez Werte die passen auch soweit…
nun die 1. Frage:
was ist denn nun wirklich in den Variablen gespeichert? Dezimal oder Hexadezimal oder gar binär und wird dann nur zur Anzeige entsprechend umgerechnet?
die 2. Frage:
die Hex Anzeige ist z. Bsp für
b0 = 0F und
b1 = BC
wie führe ich diese Zusammen um in einer Varable 0FBC zu erhalten damit ich diesen Wert in Dezimal umrechnen kann, und wie erfolgt die Umrechnung?
Zahlen werden in Computern immer binär gespeichert und verarbeitet. Binär, oktal, dezimal oder hexadezimal sind Darstellungsarten, die von Fall zu Fall vorteile bieten.
Grüße Uwe
Hallo Uwe,
Danke , ich war anfangs völlig verwirrt weil ich für jedes Byte einen Dezimalwert hatte und mit dem nicht weiter kam. Konnte diese beiden Werte nicht zur Hex Zahl Vereinen aber das ist ja soweit gelöst.
Jetzt Brauch ich nur noch die Initialzündung wie ich die 4 Byte s zur gesamt Temperatur verrechne. Am Ende will ich 15- 1200 Grad messen.
Jedes Thermoelement besteht aus der Verbindung 2 verschiedener Metalle. Wenn Du es Dir überlegst hat man 2 Berührungspunkte der verschiedenen Metalle: Vorne am Meßpunkt und nochmal irgendwo auf der Platine. Darum mißt das Thermoelemnt nicht absolut die Temperatur sondern die Temperaturdifferenz der 2 verscheidenen Berührungspunkte.
Das Modul gibt für die Thermospannung einen 14Bit Wert. Die 2 niederwertigsten Bytes sind zu eliminieren (einfach divison durch 4) Thermospannung = (b0*256+b1)/4.
Für die Referenztemperatur gibt es einen 12Bit Wert. Die 3 niederwertigsten Bytes sind zu eliminieren (einfach divison durch 8 )
ADCReferenztemperatur = (b2*256+b3)/8
Die Referenztemperatur erhälst Du durch die Formel: T (°C)=ADCReferenztemperatur / 256 - 32
Das Modul mißt 2 Spannungen. Du mußt der Temperatur des Meßthermoelements die Ausgleichsstellen-Temperatur (Referenztemperatur) addieren .
[Grrr]Wieso müssen die eine Tabella angeben und keine Formel [/Grrr]
Bin zu müde die Formel jetzt zu errechenen.
Du weißt schon, daß die migelieferte Meßsonde nicht für 1200 Grad geeignet ist (Kunststoffisolierung)
Ein guter Ratschlag fürs nächst mal: kauf Dir einen MAX6675
so früh halb 5 hätt ich erst recht keinen Kopf für Formeln :)
Deinen Vorschlag die Formel nochmal durch 4 und die andere durch 8 zu teilen bringt keine guten Werte
Displayanzeige gemäß letztem Sketch mit der Formelanpassung:
509 -12,.5
3205 -20
[Grrr]Wieso müssen die eine Tabella angeben und keine Formel [/Grrr]
jo das ist auch mein Problem
ich hab keine Werte zum addieren heraus bekommen
ich hab eben nur aus Tabelle 1 die digits und die Temperatur
und Tabelle 2 die Digits und die mV
ich habs noch nicht geschafft aus Tabelle 2 die Formel zu finden die mir die Temperatur errechnet
es sollte dann ja reichen wenn ich diese beiden Temperaturen addiere
Du weißt schon, daß die migelieferte Meßsonde nicht für 1200 Grad geeignet ist (Kunststoffisolierung)
ja die gelieferte ist nur zum testen, es ist eingebaut eine mit entsprechender Hülse und Kabelisolierung eingebaut