Wie hast du das ermittelt?
Hiernach ist das nicht normal:
http://www.temperaturblog.de/2017/11/20/grenzabweichung-typ-k-thermoelement/
Hast du ein (gutes) DVM?
Für die verschiedenen Thermoelemente gibt es Tabellen.
Wie hast du das ermittelt?
Hiernach ist das nicht normal:
http://www.temperaturblog.de/2017/11/20/grenzabweichung-typ-k-thermoelement/
Hast du ein (gutes) DVM?
Für die verschiedenen Thermoelemente gibt es Tabellen.
mfG
Willi
Hallo,
Bei 25°C - ca. -2,5°C Abweichung (Abweichung zur Referenztemperatur des Max31855 und Raumthermometer)
Bei 100°C - ca. -5°C Abweichung (Ermittelt im Backofen mit einsteckbarem Thermometer und die automatische Abschaltung des Backofens bei erreichen der Zieltemperatur (interne Messfühler oder Bimetall))
Bei 250°C- ca. -10°C Abweichung (Ermittelt im Backofen mit einsteckbarem Thermometer und die automatische Abschaltung des Backofens bei erreichen der Zieltemperatur (interne Messfühler oder Bimetall))
ich habe folgenden K-Typ Sensor:
https://www.amazon.de/gp/product/B00...?ie=UTF8&psc=1
Interessante Tabelle, zumindest würden die 2,5°C Abweichung bei Raumtemperatur stimmen.
Ich könnte das ja Softwaremäßig kompensieren...
mfG
Mario
Wenn das die Lösung sein soll...
...will ich mein Problem zurück !!!
ist ja offenbar recht linear, -2,5K Abweichung pro +75K = -3,3%, ausgehend von 25°C =~ 300K
Nullstelle wäre rechnerisch bei ca. -50°C =~ 225K
Ok, mir ist grad eingefallen das mein Messgerät Temperaturen bis 1000°C messen kann. (Obs der mitgelieferte Sensor kann, muss ich erstmal sehen.)
https://www.amazon.de/Profitec-MY-64.../dp/B00GL37U1W
Ich denke das sollte reichen um bis 1000°C zu kalibrieren und die restlichen 200°C werde ich liniear erweitern. (Sofern ich solche Temperaturen erreichen sollte...)
Segerkegel musste ich erstmal googeln... wieder was gelernt.
Danke
mfG
Mario
Wenn das die Lösung sein soll...
...will ich mein Problem zurück !!!
Hallo,
ich muss das Thema noch mal aufwärmen da ich noch Probleme mit der Temperaturmessung habe.
Ich benutze als Basis den hier geposteten Code von WL (Danke nochmal...)
Am Anfang waren die gemessenen Werte noch relativ Plausibel (wenn auch mit ein paar Grad Abweichung), aber seit einiger Zeit fangen die Messwerte an, stark zu springen. Teilweise mehrere 100°C.
Ich dachte erst das ich ein Zeitproblem mit der Messung und meinen Interuppts bekommen habe, daher habe ich das reine Temperaturmessprogramm auf dem MC gespielt. Funktioniert auch nicht besser.
Dann hatte ich eine unsaubere Spannungsversorgung unter Verdacht. Habe verschiedene Netzteile, USB-Versorgung, Eigenbaulösung, Kondensatoren und Batterien versucht. Funktionierte auch nicht besser.
Ich habe ein neues MAX31855 Modul und MAX6675 bestellt. Funktionierte auch nicht.
Hat jemand eine Idee / Erfahrungen woran das liegen kann?
-Pullup Widerstände am Spi?
-könnte die Spi am MC kaputt sein?
-Die Module/Spi können doch mit 5v betrieben werden, oder? (lt. schlecht übersetzter Beschreibung habe ich was vom integrierten Level Shifter 3,3-5V gelesen)
Vielen Dank für eure Hilfe
mfG
Mario
Geändert von dj_cyborg (09.09.2020 um 12:29 Uhr)
Wenn das die Lösung sein soll...
...will ich mein Problem zurück !!!
Hallo Mario,
die Temperaturerfassung ist doch nicht im ms-Takt notwendig.
Wenn du die Ausreisser herausfilterst und gleichzeitig die Werte mittelst wird das für den Regler ausreichen.
Selbst 10 Sekunden Zykluszeit würde reichen.
mfG
Willi
Hallo Willi,
danke für deine Antwort.
Da gebe ich dir Recht, aber die Zeit ist auch nicht das Problem (das war nur meine erste Vermutung). Betreibst du deine Module an 5V?
Ich lese im Hauptprogramm die Temperatur alle 500ms aus und in deinem Programm jede Sekunde und trotzdem bekomme ich so wilde Werte das da auch mit Filtern nichts zu machen ist. (Im Hauptprogramm ist ein Filter drin)
Selbst die Referenztemperatur passt überhaupt nicht mehr...
Hier mal dein angepasster TestCode und ein paar Werte (bei Raumtemperatur ca. 22°C):Atmega328P_MAX31855.TXT
Code:'*******************************************************************************. '******************************************************************************* '******************************** MAX31855 ************************************* '******************************************************************************* '************************** 25.08.2020 by CYBORG ******************************* '******************************************************************************* '******************************************************************************* $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 40 $swstack = 40 $framesize = 40 Baud = 9600 '*************************** UART - Interrupt ********************************** Dim Iuart As Integer On Urxc Onrxd 'Interrupt-Routine setzen Enable Urxc 'Interrupt URXC einschalten Enable Interrupts 'Interrupts global zulassen '************************* I2C - DISPLAY 1602 ********************************** $lib "YwRobot_Lcd_i2c.lib" 'My I2C driver for the LCD Const Pcf8574_lcd = &H4E 'Defines the address of the I/O expander for LCD Dim Lcd_backlight As Byte Lcd_backlight = 1 'Hintergrundbeleuchtung einschalten (1/0) Config Scl = Portc.5 'Configure I2C SCL Config Sda = Portc.4 'Configure I2C SDA Config Lcd = 16 * 2 'nicht unbedingt nötig Config I2cdelay = 1 Waitms 300 'warte bis Kondensator bei Ta0 geladen, auch für LCD-Init! '**************************** SPI - MAX31855 ************************************ Config Spi = Hard , Interrupt = Off , Data_Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 16 , Noss = 1 Spiinit Config Portb.3 = Output Max_cs Alias Portb.3 Max_cs = 1 Dim Text11 As String * 40 Dim Temp_s As Single Dim Element As Integer Dim Element_l As Byte At Element Overlay Dim Element_h As Byte At Element + 1 Overlay Dim Referenz As Integer Dim Referenz_l As Byte At Referenz Overlay Dim Referenz_h As Byte At Referenz + 1 Overlay print "Start" Locate 1 , 1 Lcd "Start" wait 1 '**************************** HAUPTSCHLEIFE ************************************ Do Max_cs = 0 Spiin Element_h , 1 Spiin Element_l , 1 Spiin Referenz_h , 1 Spiin Referenz_l , 1 Max_cs = 1 cls Text11 = Bin(referenz) print text11 Locate 1 , 8 Lcd Text11 Text11 = Bin(element) print text11 Locate 1 , 1 Lcd Text11 Shift Referenz , Right , 4 Temp_s = Referenz \ 16 Text11 = Fusing(temp_s , "#.#") print text11 Locate 2 , 1 Lcd Text11 Shift Element , Right , 2 Temp_s = Element \ 4 Text11 = Fusing(temp_s , "#.#") print text11 Locate 2 , 8 Lcd temp_s waitms 1000 Loop end '**************************** UART - Interrupt ********************************* Onrxd: Iuart = Udr Print "+++ Empfangen: " ; Iuart Select Case Iuart 'RESET Case 123 Print "+++ Reset: " ; Iuart Goto &H3C00 'M328 Case Else Print "+++ Unbekannter Befehl: " ; Iuart End Select Return
Wenn das die Lösung sein soll...
...will ich mein Problem zurück !!!
Lesezeichen