Wo ist der Fehler in der folgenden Schaltung/Code?
Vor einiger Zeit habe ich mir diverse Sensoren zugelegt. Einer davon war der kty 10-6 (3 Stück). Anfangs konnte ich kein Datenblatt oder Beispiele zu diesem Temperatursensor finden. Also habe ich einen LM35 bekommen, der sehr einfach einzurichten war, da er linear ist. Jetzt, nach einigen Monaten, habe ich endlich das richtige Datenblatt und die mathematische Gleichung gefunden, um die richtigen Widerstandswerte zu erhalten.
KTY 10-6 (dies ist der Link zum Datenblatt)
Schaltkreis
Ich fand heraus, dass es dem kty81-210 ähnlich ist
(Vcc 5+)--+-->2.7k--+-->kty81-110-->(GND)
| |
+->100nF--+-----> ADC0 (Analog Port 0)
Da ich keinen 2,7k Ω Widerstand habe, habe ich einen 2200 Ohm Widerstand verwendet.
der kondensator ist 100nf ich denke: IJ63 ist oben auf dem gehäuse. richtig?
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Code
Da dieser Thermistor nicht linear ist und ich immer die richtige mathematische Formel verwenden wollte, um die Temperatur zu berechnen, ist dies die beste Lösung. Basierend auf dem, was ich im kty10-6-Datenblatt gelesen habe, habe ich einige Werte wie den Widerstand und den Beta (a) -Wert geändert. das alpha(b) .00788 scheint bei beiden Sensoren gleich zu sein.
float resistor = 2200; // changed
float temp = analogRead(A5);
float ukty = 5*temp/1023.0;
float a = 0.00001937*1000; // changed
float b = 0.00788*1000;
float c = 1000-resistor*ukty/(5-ukty);
float delta = b * b - 4 * a * c;
float delta1 = sqrt (delta);
float x2 =(-b + delta1)/(2 * a);
float temp1 = x2 + 25 ;
Ist die Berechnung korrekt?
Ich frage, weil es heutzutage wirklich heiß ist. Ich glaube nicht, dass es 132-135 ° Celsius gibt. Die Formel ist für Celsius.
Auch wenn ich diese Formel nicht benutze, sondern andere einfachere Berechnungen (linear) verwende, komme ich immer über 130-140°Celsius
Anmerkungen
Wenn ich den Sensor berühre, erhöht sich der Messwert ... wie erwartet.
Ich habe an allen analogen Pins getestet.
Ich benutze das Arduino-Mikro.
Ich benutze es mit einem i2cLCD.
Es ist USB-betrieben.
Sonst ist nichts angeschlossen.
Wenn ich den Widerstand auf der Protoplatine messe, wenn alles ausgeschaltet ist, lese ich ihn als 1200 Ohm ... die Kappe?
Warum bekomme ich 120 bis 140 als Temperaturwert?
Optional
Ich habe gerade einen Beitrag zum Elektronikstapel geschlossen, in dem beschrieben wird, wie die Auflösung von Thermistoren mit Widerständen erhöht werden kann. fand es
Wenn jemand weiß, wie ich meine Schaltung ändern kann, um Temperaturen von -10/-20 bis +40/+50 zu lesen, wäre ich sehr glücklich. dies würde die Auflösung verdoppeln. Ich denke, in meiner Zone werden die Temperaturen nie unter -20 oder über +50 ° Celsius sinken.
Ich habe 3 davon gekauft, ich weiß, dass sie billig sind. Ich kenne den netten DS##### Temperatursensor, der perfekt für die Mikrocontroller ist. Aber ich möchte diesen auch zum Laufen bringen.
Wir wissen, dass analoge Messwerte zwischen 0 (=0 V) und 1023 (5 V) variieren.
Der erste Schritt besteht darin, den Messwert des Analogwerts (der Spannung) in einen tatsächlichen Widerstandswert umzuwandeln .
Vorgeschlagenes neues Programm (nicht getestet, daher Kommentare/Korrekturen willkommen)
float resistorfixed = 2200;
float temp = analogRead(A5);
// calculate sensor resistance value (Rkty)
float Rkty = (resistorfixed * temp) / (1023 - temp);
// From the data sheet the value of the resistance of the sensor
// @ 25 degrees is 2000 +/- 20 ohmsStart with calculating the measured
// resistance.
float R25 = 2000;
// We are also given alpha and beta
float alpha = 7.88 / 1000;
float beta = 1.937 / 100000; // divide by 10^-5
// Now we need to calculate the temperature factor (KayTee)
float KayTee = Rkty / R25;
// We now have all the information to calculate the actual temperature
// (AcT)
float AcT = 25 + ((sqrt((alpha * alpha) - (4 * beta) + (4 * beta * KayTee)) - alpha) / (2 * beta));
// Just hope I've got my brackets is the correct place!
Jim Dearden
cocco
cocco
cocco
Jim Dearden
cocco
cocco
cocco
cocco
cocco
cocco
cocco