Arduino Wert aus Tabelle?
Guten Tag,
ich habe ein kleines Problem mit meinem Arduino Code... Ich weiß leider nicht weiter.
ich habe hier schon mal angefangen ein Programm zu schreiben das mir mein Arduino Mega alle 2 sec. eine Temperatur anhand eines Ohm wertes aus gibt.
das Problem liegt jetzt aber dabei das ich den Ohm wert nicht in die Temperatur umwanden kann.
Ich habe mir eine Tabelle erstellt die angibt bei welchem Ohm wert welche Temperatur angezeigt werden soll.
Nun die Frage: Wie gleicht mir der Arduino die Gemessenen werte mit den vorhandenen ab und zeigt mir dann auf meinem OLED Display meine Temperatur an?
ich bedanke mich schon mal recht Herzlich für die antworten.
MfG Dennis
PS: falls es fragen gibt bitte melden!!
Das wäre der Bisher funktionierende Code
#include <GyverOLED.h>
GyverOLED<SSH1106_128x64> oled;
const uint8_t bitmap_32x32[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0x70, 0x70, 0x30, 0x30, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x30, 0x30, 0x20, 0x00, 0x00,
0x00, 0x30, 0x78, 0xFC, 0x7F, 0x3F, 0x0F, 0x0F, 0x1F, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x40, 0xE0, 0xF0, 0xF8, 0xFC, 0xFF, 0x7F, 0x33, 0x13, 0x1E, 0x1C, 0x1C, 0x0E, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xF7, 0xEF, 0x5F, 0x3F, 0x7F, 0xFE, 0xFD, 0xFB, 0xF1, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1E, 0x33, 0x33, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x1F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00,
};
int analogPin = 0;
int raw = 0;
int Vin = 5;
float Vout = 0;
float R1 = 330000;
float R2 = 0;
float buffer = 0;
void setup() {
Serial.begin(9600);
oled.init();
oled.clear();
oled.setScale(1);
oled.update();
}
void loop() {
raw = analogRead(analogPin);
if(raw){
buffer = raw * Vin;
Vout = (buffer)/1024.0;
buffer = (Vin/Vout) - 1;
R2= R1 * buffer;
delay(2000);
oled.home();
oled.print("Temp1:");
oled.update();
oled.setCursor(5, 2);
oled.update();
oled.print(R2);
oled.update();
}
}
1 Antwort
Wie du ja bestimmt erkannt hast sind die Werte nicht zufällig sonder liegen auf einer schönen Kurve. Da wäre es eigentlich Schwachsinn mit einer Look-Up Tabelle zu arbeiten.
Und da NTC Widerstände ja auch was sehr gebräuchliches sind haben sich andere Leute schon damit beschäftigt gute Modelle aufzustellen wie man aus dem Widerstand die Temperatur berechnen kann.
Die Anleitung von Adafruit ist eigentlich da recht ausführlich:
https://learn.adafruit.com/thermistor/using-a-thermistor
Beim umrechnen wird mit bestimmten Parametern gearbeitet, die der Steinhart-Hart Gleichung und das Beta-Modell.
Dafür nehme ich gerne diese Seite um die Parameter zu bestimmen wenn es kein geeignetes Datenblatt gibt.
https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html