Im Prinzip nimmst du einen ADC Kanal und hängst da den NTC/PTC dran.
Code ist dann quasi das ADC-Sample aus der Anleitung plus ein wenig Rumrechnen abhängig von deinem NTC/PTC.
Hallo
Möchte Temperatur von etwa -15 bis 120 Grad, mit einen NTC oder PTC messen. Hat das schon jemand gemacht?
Den DS18xx möchte ich nicht benutzen weil ich es an einen Motor befestigen muss und dafür gibt es NTC und PTC die man einfach mit eine Schraube befestigen kann.
Danke für jede Hilfe, Beispiel code wäre sehr hilfreich
Gruss
Pinto
Im Prinzip nimmst du einen ADC Kanal und hängst da den NTC/PTC dran.
Code ist dann quasi das ADC-Sample aus der Anleitung plus ein wenig Rumrechnen abhängig von deinem NTC/PTC.
Oder genauer:
Du baust dir aus einem möglichst Temperaturstabilen Widerstand und dem NTC/PTC einen Spannungsteiler und misst die Spannung die an einem der beiden Widerstände abfällt.
Das Messen erledigst du, wie oben bereits gesagt, mit Hilfe des ADCs.
Sieht dann so aus:
Bild hier
R1 ist der festwiderstand und R2 natürlich der NTC/PTC.
Wegen dem Programm, schau mal hier: https://www.roboternetz.de/wissen/index.php/ADC_(Avr)
Code:Config Adc = Single , Prescaler = Auto , Reference = [wenn du AVCC auf VCC gelegt hast] AVCC Start Adc Dim W As Word , Channel As Byte Channel = 0 Do W = Getadc(channel) 'Womit "W" jetzt der Wert des ADCs zwischen 0 und 1023 wäre '... Loop End
Die Referenzspannung für den AD erzeugt man sich am besten durch einen Spannungsteiler aus der Versorgungsspannung.
Prinzipiell kann man mit NTC / PTC Temperaturen messen, aber leider
haben diese Teile eine sehr "krumme" Kennlinie die man mittels Software
"begradigen" muss. Wenn du noch nicht so viel Programmiererfahrung hast
würde ich die eher einen LM335 empfehlen. Den kann man zwar nicht einschrauben aber der hat eine lineare Kennlinie und ist mit dem ADC einfacher auszuwerten.
Gruß
Neutro
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
Die NTC haben in der Regel eine sehr steile, aber nichtlineare Kennlinie. Die PTCs haben oft eine ziehmlich linieare Kennlinie, wenn man den passenden Widerstand dazu nimmt (z.B. KTY81 + 2,7 Kohm).
Eine andere alternative mit recht linearer Kennlinie (ca. -2 mV/K) hat ein Diode bzw. ein als Diode geschalteter Transistor. Die Transistoren im TO126 Gehäuse lassen sich auch gut anschrauben.
Da muss ich Neutro Recht geben! Hab das auch schon probiert, Temperaturen mit einem PTC messen - werde ich nie wieder!
Wegen diesen Kurven muss man wirklich erst sehr viel rumrechnen und probieren!
So hat die berechnung bei mir damals ausgesehen:
Wobei das ganze aufgrund der Variablen Single (für das rechnen mit solchen Kommazahlen) natürlich auch noch extrem viel Speicher benötigte!Code:W = Getadc(channel) B = W * W C = B * 0.0000395965 D = 0 - C E = 0.0415089404 * W F = D - E G = F + 47.7049853735 H = Fusing(g , "#.#")
Und dafür noch nicht mal für einen größeren Bereich als 20°C halbwegs genau blieb...
Jetzt messe ich die Temperatur mit DS1820s, wobei auch das alles andere als leicht is
Mit einem LM335 über den ADC sollte das ganze jedoch relativ schön und einfach funktionieren!
Wenn der feste Widerstand für die Messung halbwegs stimmt, sollte die Kennlinie schon recht gut linear sein. Das die Rechnung so umständlich ist, liegt aber auch an den etwas beschränkten Fähigkeiten von BASCOM. Etwas einfacher sollte aber auch gehen. Ein Polynom berechent man besser nicht als
a + b*x+c*x*x
sondern besser als
a + x * (b+x*c)
Das Spart schon mal einen Schritt. Außerdem sollte Bascom doch wenigstens direkt mit negativen Constanten arbeiten können. Oder etwa nicht ?
"Linear" wird so eine Kennlinie wohl nicht sein Höchstens "gleichmäßig"
Ob Bascom direkt mit negativen Konstanten rechnen kann, kann ich nicht mehr sagen , aber ich habe die Single-Variable benutzt um überhaupt mit derartigen Kommazahlen zu rechnen
Hi,
ich denke Dir könnte dieser Link weiterhelfen
http://mikrocontroller.cco-ev.de/fil...nung_draft.pdf
Lesezeichen