Hier sind die Schaltpläne meiner NTC - ADC-Schaltung,
ADC 10 Bit, ADCVCC 2,56 V
Vin = 5 V
Kann mir jemand erklären, wie ich RT erhalte, den Widerstandswert von NTC aus dem ADC-Wert? Danke.
Ich verwende die Spannungsteilerformel:
Vout = ADCVCC * ADC_value / 1024
BETA = 3950
R25 = 4700
RT = 10K / (Vin - Vout - 1)
T = (1 / (1/298.16 + 1/BETA * ln(RT/R25 )) - 273.15
Aber ich habe falsche Ergebnisse:
Meine Temperaturbereiche sind:
adc = 1 -> T = 344 °C;
adc = 1023 -> T = 8
Wie muss ich den ADC im AVR einrichten? mit interner Spannungsreferenz oder nicht?
Habe ich eine falsche Formel?
Ich muss mehr oder weniger "genaue" Temperaturen im Bereich von -10 ° C bis + 30 ° C lesen.
Ich habe es bereits mit der SH-Gleichung mit den Koeffizienten A, B, C versucht, aber ich habe die schlechtesten Ergebnisse erzielt !!!
Ich glaube, ich habe die Schaltpläne von NTC-ADC-Schaltungen nicht verstanden ...
Und mein ATMega mit falschen Parametern eingerichtet.
Jemand kann versuchen, mir zu erklären, wie ich meinen ADC-Wert mit diesen Schaltplänen in den Widerstand des Thermistors umwandeln kann?
Danke an Rat für Hilfe.
[BEARBEITEN]
Mein Setup für AVR ADC:
ADMUX |= (1<<REFS0) | (1<<REFS1);
ADCSRA |= (1<<ADEN) |(1<<ADSC) |(1<<ADIE);
ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
und die Formel, die verwendet wird, um den Widerstand aus dem ADC-Wert zu erhalten: Vin = 5 V Vref = 2,56 V (AREF)
Vout = adc_val * (Vref / 1024.0))
RT = 10k / (Vin / Vout - 1.0)
Dieser Code stimmt mit den Schaltplänen überein? Ist es richtig, dass mein ADC mit diesen Schaltplänen eingerichtet ist? danke im rat.
Jemand kann versuchen, mir zu erklären, wie ich meinen ADC-Wert mit diesen Schaltplänen in den Widerstand des Thermistors umwandeln kann?
Erstens macht die Operationsverstärkerschaltung sehr wenig anderes, als einen kleinen Fehler hinzuzufügen. Wenn es einen Gewinn hatte, könnte man argumentieren, dass es einen Nutzen hatte.
Zweitens profitiert diese Schaltung von der Verwendung der Versorgungsspannung als analoge Referenz, da Sie dann einen weiteren Fehlerterm entfernen, nämlich die variable Differenz zwischen der Versorgungsspannung an R1 und der Referenzspannung des ADC.
Der Wert des ADC repräsentiert also das Verhältnis
Kannst du es von hier nehmen?
Ich habe Ihren Code in Python ausgeführt und 285 für adc_val = 1 und -84 für adc_val = 1023 erhalten. Bei einem adc_val von 318 erhalte ich 25,9. RT ist zu diesem Zeitpunkt 4504. Es sieht also so aus, als ob Ihre Gleichungen stimmen sollten. Sind Sie sicher, dass es in Bezug auf die Typen korrekt implementiert wird? Es muss alles Fließkomma sein. Wenn etwas in eine ganze Zahl oder so umgewandelt wird, könnten Sie einige seltsame Ergebnisse erhalten.
>>> BETA = 3950
>>> R25 = 4700
>>> Vin = 5
>>> Vref = 5
>>> adc_val = 1
>>> Vout = adc_val * (Vref / 1024.0)
>>> RT = 10000 / (Vin / Vout - 1.0)
>>> T = (1 / (1/298.16 + 1/BETA * log(RT/R25 ))) - 273.15
>>> T
285.3553121325664
>>> adc_val = 1023
>>> Vout = adc_val * (Vref / 1024.0)
>>> RT = 10000 / (Vin / Vout - 1.0)
>>> T = (1 / (1/298.16 + 1/BETA * log(RT/R25 ))) - 273.15
>>> T
-84.45667531777428
>>> adc_val = 318
>>> Vout = adc_val * (Vref / 1024.0)
>>> RT = 10000 / (Vin / Vout - 1.0)
>>> RT
4504.249291784702
>>> T = (1 / (1/298.16 + 1/BETA * log(RT/R25 ))) - 273.15
>>> T
25.970525623383708
Löffel
Raffaello