Forum: Projekte & Code NTC-Thermometer mit Padauk PFS154 und 7-Segementanzeige und UART-Ausgang


von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Tja, hallo nochmal, ich weiß ja nicht ob sie es schon wußten, aber hier 
jetzt einmal ein Hinweiß in eigener Sache: Ich beschäftige mich jetzt 
auch mit den ultrabilligen Mikrocontrollern von Padauk, und hier dann 
der PFS154
---------------------------------------------------

Um den Chip besser kennen zu lernen, erarbeit ich für mich mehrere 
Evaluationsarbeiten mit dem PFS154 und die letzte hiervon möchte ich 
Euch hier vorstellen. Wie der Titel es oben schon sagt: Thermometer mit 
Anzeige.

Erstaunlicherweise habe ich mit dem Konstrukt eine Genauigkeit von +- 
1°C erreichen können.

Ein Video kann man hier begutachten:

https://www.youtube.com/watch?v=zQDooIyMVsk

----------------------------------------------------------------

Grundlegend für mein Temperaturschätzeisen war es, einen, wie auch immer 
gearteten, Analog-Digital-Wandler mit dem Padauk zu realisieren und, um 
dem Paradigma des Ultrabilligen zu folgen, soll das nichts (oder nur im 
absoluten Centbereich) kosten.

Hinweis: PFS154 hat im Gegensatz zu PFS173 keinen internen ADC, sondern 
nur einen analogen Komparator.

Sämtliche Programme im folgenden sind unter einem Linux 64-Bit System 
entstanden, Hilfsprogramme sind von daher 64-Bit Linuxprogramme

Realisierung eines ADC
--------------------------------------------
1
                + 5V      + 5V
2
                  ^         ^
3
                  |         |
4
                  |         |
5
                  |        +-+ R2
6
                  |        | |
7
                  |        | | 4,7k
8
                  |        | |
9
               / +-+       +-+
10
              / \| |        |
11
                 \ | 10k    |
12
              R1 |\        |<                 Umess o---+------> PA4
13
                 | |\------|  BC547                     |
14
                 +-+       |\                           |
15
                  |         |                          +-+
16
                  |         |                          | |
17
   PA3 <--------------------+                          | | 1M
18
                  |         |                          | |
19
                  |         |  100n                    +-+
20
                  |        ---                          |
21
                  |        ---                          |
22
                  |         |                           |
23
                 ---       ---                         ---
Eine sehr einfache Konstantstromquelle laedt einen Kondensator der 
dadurch mit einen (nahezu) linearen Spannungsanstieg geladen wird.

PA3 schliesst den Kondensator kurz und dieser ist somit entladen. Wird 
PA3 nun von digitalem Ausgang auf analogen Eingang umgeschaltet ist PA3 
nun der + Eingang des Komparators.

Die Zeit, bis die Spannung am Kondensator die Spannung am- Eingang des 
Komparators (zu messende Spannung) ueberschreitet, wird ermittelt und 
entspricht somit direkt proportional der angelegten Spannung.

Funktionsweise der "Einfachstkonstantstromquelle"
----------------------------------------------------------

Eine hinreichend stabile Versorgungsspannung wird voraus gesetzt, die 
Stabilitaet (nicht der Absolutwert der Spannung) bestimmt die spaetere 
Genauigkeit des ADC, da diese die Referenzspannung darstellt.

Mittels des Trimmers R1 kann die Spannung +5V <-> Basis eingestellt 
werden. Diese Spannung veraendert sich nicht und ist somit konstant. Am 
Widerstand R2 betraegt die Spannung somit die eingestellte Spannung 
minus der Ube des Transistors. Die Ube betraegt (annaehernd) konstant 
0,68V und somit aendert sich die Spannung am R2 ebenfalls nicht. Durch 
ihn fliesst somit ein konstanter Strom und dieser in den Emitter des 
Transistors.

Vernachlaessigt man den Basisstrom (der aber ebenfalls konstant sein 
sollte) entspricht der Strom in den Emitter dem Strom, der aus dem 
Kollektor fliesst und somit ist der Kollektorstrom ebenfalls konstant.

---------------------------------------------------------

Wichtigstes Merkmal: Der Kondensator wird hier mit einem konstanten 
Strom geladen

---------------------------------------------------------

Ein Spannungsteiler bestehend aus 10k Ohm Festwiderstand und 10k Ohm NTC 
bildet den "Meßfühler", die am NTC abfallende Spannung wird dem oben 
beschriebenen ADC zugeführt.

Diese Spannung wird im PFS154 Mikrocontroller mittels Look-Up Tabelle 
ausgewertet, die mit einem Tabellengenerator erstellt wurde. Der 
Tabellengenerator ist ein Kommandozeilentool im Ordner:

 /padauk/ntc/divers

Mit diesem können Tabellen auch für andere NTC-Widerstände erstellt 
werden.

Die Firmware des PFS154 wurde mit SDCC 4.0.4 übersetzt.

----------------------------------------------------------

Kalibrierung der Schaltung steht als Text im Schaltplan. Viel Spaß beim 
evtl. Nachbau oder bei der Betrachtung dieses "Projekts",

Gruß,

Ralph

von Gerd E. (robberknight)


Lesenswert?

Spannend. Ich mag die Herausforderung, aus den kleinen Padauks so viel 
wie möglich herauszuholen.

Was mir noch einfällt wie man die Genauigkeit verbessern könnte: der 
interne Osziallator der Padauks ist ja nicht der beste, selbst wenn man 
beim Flashen die Kalibrierfunktion verwendet.

Könntest Du nicht den Komparator auf die interne 1.2V-Referenz stellen 
und damit die Zeit vermessen, die Deine KSQ braucht um den Kondensator 
zu laden? Damit kalibrierst Du die Temperaturabhängigkeit des internen 
Oszialltors, die des KSQ-Transistors und die des Komparators alle raus 
und referenzierst alles auf die interne 1.2V-Referenz. Ich vermute die 
dürfte von allem noch am stabilsten sein.

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Gerd E. schrieb:
> Könntest Du nicht den Komparator auf die interne 1.2V-Referenz stellen
> und damit die Zeit vermessen, die Deine KSQ braucht um den Kondensator
> zu laden? Damit kalibrierst Du die Temperaturabhängigkeit des internen
> Oszialltors, die des KSQ-Transistors und die des Komparators alle raus
> und referenzierst alles auf die interne 1.2V-Referenz. Ich vermute die
> dürfte von allem noch am stabilsten sein.

Zum einen:

selbst wenn man etwas genaueres herausholen könnte:

a.)

ich habe die 8-Bit Auflösung absichtlich nicht "aufgebohrt" (theoretisch 
wäre sogar ein 16-Bit ADC möglich), weil:

- die Anzeige ist sowieso nur 2 stellig, eine bessere Genauigkeit wäre 
gar nicht darstellbar (zumindest nicht auf der Anzeige)

- als Konstantstromquelle habe ich das billigste gemacht, was gerade so 
noch geh: Widerstand, Trimmer, Transistor, Kondensator. Alles schön 
temperaturabhängig. Zudem wird die Konstantstromquelle von der 
Betriebsspannung versorgt und für das Einprägen der Spannung am 
Emitterwiderstand habe ich keine stabile Referenz für den Transistor 
verwendet. Bei genauerer Betrachtung ist der Spannungsanstieg am 
Kondensator nicht 100% linear. Wenn man hier etwas macht, wäre der 
Effekt wahrscheinlich größer.

b.)

- es werden alle Portpins benötigt, auch die, an denen man einen Quarz 
anschließen könnte. Entweder man läßt die serielle Übertragung weg, dann 
braucht es keine erweiterte Genauigkeit, oder man läßt die Anzeige weg.

c.)

- Wenn ich die interne Referenz verwenden möchte, müßte diese an einen 
der Komparatorpins angelegt werden. Das erfordert ein ganz anderes 
Meßverfahren  (bspw. Dual-Slope). Hierfür würden dann aber 
Opererationsverstärker notwendig werden.
Man könnte auch einen integrierenden Verstärker aufbauen (mit C im 
Gegenkopplungszweig), aber auch hier benötigt es dann einen Rail to Rail 
OP.

Hier wäre es dann deutlich besser, einen PFS173 mit integriertem ADC zu 
verwenden (der nur 2 ct mehr als der PFS154 kostet).

Es ging / geht mir vor allem darum, was aus dem PFS154 mit dem 
aller-aller-aller kleinsten Geldeinsatz machbar ist (und was nicht).

-----------------------------------------------

Gerd E. schrieb:
> der
> interne Osziallator der Padauks ist ja nicht der beste, selbst wenn man
> beim Flashen die Kalibrierfunktion verwendet.

Nach meinem "Meßprinzip" ist es gar nicht notwendig, dass der Padauk 
eine absolute Genauigkeit beim Systemtakt hat (er wird ja mittels des 
Trimmers kalibriert), aber selbst wenn dem so wäre: Ich habe einen 
Portpin mittels Timerinterrupts togglen lassen und den Chip zur Laufzeit 
mit dem Fön erhitzt. Eine Abweichung > 3,5% hatte ich selbst bei einer 
Temperatur von 70°C nicht. Auf die Temperatur umgerechnet wären das ein 
zusätzlicher Fehler von 0,07°K bei 20°C

------------------------------------------------

Meine Schaltung funktioniert auch noch mit 3,3V. Hier wäre es bspw. 
Sinnvoll, die Konstantstromquelle bspw. ueber einen AMS1117 mit 3,3V 
laufen zu lassen.

Hier fällt mir gerade noch ein Fehler im obigen Schaltplan auf: Der 
GND-Anschluss des PFS154 ist nicht Pin 9 sonder Pin 12 !

Verzichtet man auf die Möglichkeit, dass der PFS154 über UART Zeichen 
empfangen kann (wird hier mit dem Thermometer nicht benötigt), dann kann 
man diesen freiwerdenden Pin dazu verwenden, dem dann hinzugefügten 
Spannungsregler die Versorgungsspannung abzuschalten und somit die 
Konstantstromquelle ebenfalls. Dies spart dann hier Strom, wenn keine 
Messwandlung vorgenommen wird.

-------------------------------------------------

Korrigierten Schaltplan habe ich hier mal angefügt

von Tim  . (cpldcpu)


Lesenswert?

Interessantes Projekt!

Beim Auslesen des NTC könnte auch das undokumentierte RFC-Peripheral 
helfen: 
https://deploy-preview-47--free-pdk-preview.netlify.app/undocumented-features#resistance-to-frequency-converter-pfs154-and-pfs173

von Gerd E. (robberknight)


Angehängte Dateien:

Lesenswert?

Ralph S. schrieb:
> - als Konstantstromquelle habe ich das billigste gemacht, was gerade so
> noch geh: Widerstand, Trimmer, Transistor, Kondensator. Alles schön
> temperaturabhängig. Zudem wird die Konstantstromquelle von der
> Betriebsspannung versorgt und für das Einprägen der Spannung am
> Emitterwiderstand habe ich keine stabile Referenz für den Transistor
> verwendet. Bei genauerer Betrachtung ist der Spannungsanstieg am
> Kondensator nicht 100% linear. Wenn man hier etwas macht, wäre der
> Effekt wahrscheinlich größer.

Klar, aber dann bräuchte man zusätzliche externe Beschaltung. Die 
Herausforderung (zumindest für mich) ist ja so viel wie möglich aus der 
vorhandenen rauszuholen.

> - Wenn ich die interne Referenz verwenden möchte, müßte diese an einen
> der Komparatorpins angelegt werden. Das erfordert ein ganz anderes
> Meßverfahren  (bspw. Dual-Slope). Hierfür würden dann aber
> Opererationsverstärker notwendig werden.

Ok, ich vermute ich hab mich nicht klar genug ausgedrückt. Schaltbild 
des Komparators aus dem Datenblatt ist zur Verdeutlichung angehängt.

Momentan hast Du Deine KSQ+Kondensator an PA3 und das auf CIN0- 
geschaltet und den NTC an PA4 auf CIN+. Du vergleichst die beiden 
miteinander und misst die Zeit von Entladen des C bis sie die gleiche 
Spannung haben.

Mein Vorschlag wäre KSQ+Kondensator an PA4/CIN+ und den NTC an 
PA3/CIN0-. Damit fährst Du jetzt prinzipiell den selben Vergleich wie 
bisher, nur die Ausgabe einmal invertiert.

Du bekommst jetzt aber die Möglichkeit am internen Mux den - Eingang des 
Komparators statt auf die NTC auf die interne Bandgap-Referenz zu 
schalten. Damit kannst Du jetzt Deine KSQ+Kondensator gegen eine 
bekannte Spannungsreferenz kalibrieren. Zumindest mal die 
Temperaturabhängigkeit Deines Transistors sollstes Du so rauskalibrieren 
können ohne extra Hardware zu verwenden.

von Ralph S. (jjflash)


Lesenswert?

Tim  . schrieb:
> Beim Auslesen des NTC könnte auch das undokumentierte RFC-Peripheral
> helfen:
> 
https://deploy-preview-47--free-pdk-preview.netlify.app/undocumented-features#resistance-to-frequency-converter-pfs154-and-pfs173

Wenn ich das richtig sehe (bitte korrigiere mich, wenn ich falsch 
liege), sind die Controller von Puolop "ältere" Versionen der Padauk 
Chips ?!?

Lt. Datenblatt von Puolop hätte demzufolge nur ein PTBO165 dieses RFC, 
der 154er aber nicht (in einer Vergleichsliste 165 <-> 154 auch keinen 
sogenannte IO Inverters).

Der Aussage auf Free PDK hätten die neueren PFS154 dieses RFC drin (wenn 
auch wie du anmerkst "undokumentiert".

Von dem was ich jetzt aus dem Puolop Datenblatt entnommen habe ist, dass 
hier dann ein 16-Bit Zähler verwendet wird, der allerdings im Gegensatz 
zum 16-Bit Register des TM16 in 2 x 8-Bit Register aufgeteilt ist. 
Außerdem ist da dann noch nichts linearisiert und die Ladekurve des 
Kondensators entspricht der normalen e-Funktion.

Die Schaltschwellen des Schmitt-Triggers die für das Laden/Entladen sind 
nirgendwo aufgeführt, müßten also (was nicht all zu schwierig sein 
sollte) noch herausgefunden werden.

Für das Thermometer hier ist das nicht mehr relevant, aber für andere 
Anwendungen vllt. gut nützlich. Bei Anwendungen, bei denen man noch 
genügend Speicherplatz hat einen ln zu berechnen und die Ladekurve zu 
korrigieren.

Smile ... danke (das Danke ist ein "herzliches") dass du mich mit 
Informationen zu den Padauk-Dingern fütterst. Wieder etwas zum Knobbeln 
und herausfinden.

Gerd E. schrieb:
> Momentan hast Du Deine KSQ+Kondensator an PA3 und das auf CIN0-
> geschaltet und den NTC an PA4 auf CIN+. Du vergleichst die beiden
> miteinander und misst die Zeit von Entladen des C bis sie die gleiche
> Spannung haben.

genau

Gerd E. schrieb:
> Du bekommst jetzt aber die Möglichkeit am internen Mux den - Eingang des
> Komparators statt auf die NTC auf die interne Bandgap-Referenz zu
> schalten. Damit kannst Du jetzt Deine KSQ+Kondensator gegen eine
> bekannte Spannungsreferenz kalibrieren. Zumindest mal die
> Temperaturabhängigkeit Deines Transistors sollstes Du so rauskalibrieren
> können ohne extra Hardware zu verwenden.

Hier ist dann die Frage, ob beim Anlegen der internen Referenz 
(gpcc[3:1]=010) nicht nur der CIN0- diese Spannung erhält, sondern auch 
am PIN PA3 anliegt (was ich nicht glaube aber ausprobieren werde).

Ich meine, dass ich ähnliches (noch ohne den Thermometer angefangen zu 
haben) ausprobiert habe um zu wissen, ob man an die interne Referenz 
irgendwie nach aussen bekommt (und ich glaube noch, dass ich gescheitert 
bin)

von Tim  . (cpldcpu)


Lesenswert?

Ralph S. schrieb:
> Tim  . schrieb:
>> Beim Auslesen des NTC könnte auch das undokumentierte RFC-Peripheral
>> helfen:
>>
> 
https://deploy-preview-47--free-pdk-preview.netlify.app/undocumented-features#resistance-to-frequency-converter-pfs154-and-pfs173

> Der Aussage auf Free PDK hätten die neueren PFS154 dieses RFC drin (wenn
> auch wie du anmerkst "undokumentiert".
>

Ja, genau. Im PFS154 und PFS173 befindet sich der RFC, auch wenn er in 
der Dokumentation nicht erwähnt wird. Hier habe ich etwas damit 
herumgespielt:

https://hackaday.io/project/174822-sensors-based-on-the-padauk-rfc-peripheral

Es handelt sich im Prinzip um einen RC-Oszillator mit Frequenzmessung. 
Das RC-Glied wird extern angeschlossen. Du könntest also deinen NTC + 
Kondensator direkt an einen der Pins anschließen und mit Hilfe des RFC 
den Widerstand messen.

: Bearbeitet durch User
von Gerd E. (robberknight)


Lesenswert?

Ralph S. schrieb:
> Hier ist dann die Frage, ob beim Anlegen der internen Referenz
> (gpcc[3:1]=010) nicht nur der CIN0- diese Spannung erhält, sondern auch
> am PIN PA3 anliegt (was ich nicht glaube aber ausprobieren werde).

Ich glaube nicht daß die Referenz nach außen geführt werden kann. Die 
wird nur am internen Mux anliegen.

Aber für die von mir vorgeschlagene Kalibrierung Deiner KSQ+Kondensator 
brauchst Du das doch auch gar nicht. Da reicht es doch, wenn Du die Zeit 
messen kannst, die der Kondensator lädt bis die Spannung der internen 
Bandgap-Referenz erreicht ist.

Du musst dazu halt wie von mir vorgeschlagen PA3 und PA4 in Deiner 
Schaltung tauschen und KSQ+Kondensator an PA4 anschließen.

von MaWin (Gast)


Angehängte Dateien:

Lesenswert?

Ralph S. schrieb:
> Thermometer mit Anzeige.

Au ja, hab ich auch gerade zusammenhackt.
Nicht unbedingt weil ich wollte, sondern weil die käuflichen 
Billigthermometer allesamt mit Billigsmikrocontrollern aufgebaut sind, 
denen es gar am A/D Wandler mangelt, so dass die Hersteller es mit 
ausstoppen einer RC Umladung versuchen irgendwas aus dem sich 
veränderndem NTC Widerstand abzuleiten, das sie als Temperatur anzeigen 
können.

Nur leider ist es nicht die Temperatur, zumindest bei den 3 
(unterschiedlichen) LCD Thermometer die ich hier auseinandergebaut habe, 
um das LCD Glas mit Rahmen zu recykeln.

Sondern irgendein Schätzwert, der um durchaus relevante +2 bis -2 GradC 
herumschwankt, WENN MAN DAS ANZEIGEMODUL mit der uC Schaltung einer 
anderen Temperatur aussetzt (Tages  vs. Nachttemperatur draussen), 
während man den NTC Fernfühler am Kabel aber an einem Ort belässt der 
immer dieselbe Temperatur hat.

Also musste ich das Billigding mal auf einen TSIC506 umrüsten, damit 
wenigstens die 0.1GradC Stelle stimmt.

Denn, so wie ich das am Regal im Baumarkt gesehen habe, gibt es 
dummerweise keine genauen Billigthermometer, das dutzend der dort 
ausgestellten zeigten alle am selben Ort um +2..-2 abweichende 
Temperaturen an.

Und Laborthermometer gibt es zwar genau und auch mal preiswert bei eBay, 
aber nicht mit einer Batterie übers Jahr laufend.

Den Strombedarf mit dem ATmega328 auf unter 50uA zu drücken war übrigens 
das Hauptproblem bei dem Gebastel, eine Platine fürs Gehäuse folgt noch.

von Ralph S. (jjflash)


Lesenswert?

Einen solchen Elko wie du auf deinem Steckbrett hast, habe ich schon 
ewig nicht mehr gesehen (das war so in etwa in meiner Lehrzeit). Bist du 
sicher, dass der nicht schon etwas "trocken" ist?

MaWin schrieb:
> damit
> wenigstens die 0.1GradC Stelle stimmt.

 schäm  , den TSic506 kannte ich noch nicht und es ist erstaunlich, 
dass dieser tatsächlich mit +-0,1 °C angegeben ist. Am schönsten 
natürlich, dass der Meßwert praktischerweise digital abgeholt werden 
kann.

Ganz preiswert ist der jedoch nicht, und ich habe mir den jetzt aus 
purer Neugier bestellt.

Normalerweise sind 0,1 °K schon mit einem PT100/PT1000 eine kleine 
Herausforderung.

Für eine dienstliche Aufgabe war die Anfrage, ob es mit "kleinen Mitteln 
kleiner 100 Euro" möglich ist, eine Temperatur auf 0,01°K zu erfassen 
(für kaliometrische Messungen) und ich mußte das verneinen. Das "Beste" 
was ich erreicht hatte waren 0,05°K (ohne Langzeitstabilitätsmessung) im 
Vergleich zum milliK Präzisionsthermometer (Klasmeier)

von Ralph S. (jjflash)


Lesenswert?

ach so, ja:

MaWin schrieb:
> Sondern irgendein Schätzwert, der um durchaus relevante +2 bis -2 GradC
> herumschwankt,

Umsonst habe ich meine Bastelei nicht "Temperatur Schätzometer" genannt.

MaWin schrieb:
> um das LCD Glas mit Rahmen zu recykeln.

Kann ich gut verstehen, LCD-Gläser sind mittlerweile teuer geworden 
(leider).

von MaWin (Gast)


Lesenswert?

Ralph S. schrieb:
> Kann ich gut verstehen, LCD-Gläser sind mittlerweile teuer geworden
> (leider).

Es ging nicht ums Glas, sondern es war der verzweifelte Versuch ein 
Thermometer zu kaufen, das auch die Temperatur anzeigt
Also zumindest wie mein Quecksilberthermometer.
Vergeblich.

Die Gläser waren dann übrig, eins hab ich benutzt.

Aber klar, lieber ein LCD Glas was einem gefällt aus einem Gerät 
ausbauen, als irgendein unpassendes Standardglas teuer kaufen, oder 
ähnlich einer Leiterplatte extra welche in Musterstückzahl anfertigen zu 
lassen.

Ralph S. schrieb:
> es ist erstaunlich, dass dieser tatsächlich mit +-0,1 °C angegeben ist.

Da gibt es einige

Der TSIC301/303/306 von IST/ZMD misst von -50.. +150 teilweise +/-0.3K 
genau und 0.125 GradC auflösend ist aber bei Reichelt und Conrad 5 EUR 
teuer, TSIC716 in 0.07K genau in einem Bereich von 30 GradC, 
TSIC501/503/506 für 15 EUR ist 0.1K genau in einem Bereich von 40 GradC 
und TSIC201/203/206 ist 0.5K genau über 80 GradC, TSYS01 ist 0.1K 
zwischen -5 und +50, der TSYS01-1 sogar 0.1K zwischen -20 und +70, 0.1K 
schafft auch der TMP117, die aber nur von -50/-55 bis +125/+150 GradC 
aushalten und dann auf 0.3 GradC ungenauer werden, also ähnlich genau 
wie Platin Klasse AA sind. Der ADT7320/ADT7420 auf 0.25 GradC genau und 
auf 0.0017K auflösend.

https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.32

von Ralph S. (jjflash)


Lesenswert?

Hey... danke für die Übersicht. Ich werde mir das merken und dann dort 
einsetzen, bei der es auf Genauigkeit und nicht auf Ansprechzeit ankommt 
(die kleinen PT100 / PT1000 sind schon recht schnell).

Ein Sensor, der schon abgeglichen seinen digitalen Wert liefert hat 
schon etwas.

Für mich am interessantesten ist hier dann der TSIC716. 0,07K sind schon 
schier unglaublich, hierbei relativiert sich dann auch ein Preis von 15 
Euro.

(Wird hier langsam nicht mehr zum Thread passend, weil es ja um die 
Padauk Controller ging)

MaWin schrieb:
> Thermometer zu kaufen, das auch die Temperatur anzeigt
> Also zumindest wie mein Quecksilberthermometer.
> Vergeblich.

Leider ist Quecksilber ja verboten, aber die Sachen waren schon sehr 
genau. Langsam aber genau. Die alten Quecksilber-Kontaktthermometer 
vermisse ich schon etwas.

von Ralph S. (jjflash)


Lesenswert?

Gerd E. schrieb:
> messen kannst, die der Kondensator lädt bis die Spannung der internen
> Bandgap-Referenz erreicht ist.

Dazu müßte aber die zu messende Spannung (über einen OP) den Kondensator 
laden. Damit der dann mit einem konstanten, der Meßspannung 
proportionalen Strom geladen wird, ist ein Integrator und ein 
invertierender Verstärker notwendig... abgesehen davon wird das Entladen 
des C dann auch etwas schwieriger.

Alles in allem benötigt es hierfür mindestens einen Doppel-OP (vierfach 
wäre besser: Impedanzwandler, Invertierer, Integrator).

Genauer könnte das werden, wenn hier dann die Auflösung des ADC 
gesteigert wird (sagen wir 12 Bit) und die Look-Up Table mehr 
Stützpunkte erhält.

Für eine zweistellige Anzeige zu viel Aufwand, gerechtfertigt vllt. für 
einen Temperaturschreiber über UART.

von Gerd E. (robberknight)


Lesenswert?

Ralph S. schrieb:
> Gerd E. schrieb:
>> messen kannst, die der Kondensator lädt bis die Spannung der internen
>> Bandgap-Referenz erreicht ist.
>
> Dazu müßte aber die zu messende Spannung (über einen OP) den Kondensator
> laden.

Ich fürchte wir reden aneinander vorbei.

Ich probiere es nochmal:

Du lässt Deine Schaltung wie sie ist, nur schließt Du KSQ+Kondensator an 
PA4/CIN+ und den NTC an PA3/CIN0- (also PA3 und PA4 vertauscht).

Das invertiert Dir nur das Ausgangssignal des Komparators, verändert 
aber erst mal nichts an Deinem Messprinzip und der Genauigkeit.

Aber es gibt Dir die Möglichkeit den internen Mux besser zu nutzen.

So, und jetzt machst Du z.B. jede zehnte Messung (oder wann auch immer) 
folgendes:

Du schaltest mit dem Mux den - Eingang des Komparators auf die Bandgap. 
Auf + hängt weiterhin KSQ+Kondensator.

Jetzt misst Du mit dem Timer, wie lange es braucht, bis der Kondensator 
auf die bekannte Spannung der Bandgap geladen ist. Diesen Timerwert 
speicherst Du als Kalibrierwert.

Jetzt schaltest Du den Mux wieder um auf den NTC und misst den Timerwert 
bis NTC und Kondensator die selbe Spannung haben. Also Deine bisherige 
Messung.

Nur hast Du jetzt den Kalibrierwert von der bekannten Spannung der 
Bandgap und kannst damit Offsetfehler korrigieren.

Dafür brauchst Du keinerlei zusätzliche Hardware wie Opamps oder 
sonstwas.

Ich hoffe jetzt ist klar geworden wie ich das meine.

von Ralph S. (jjflash)


Lesenswert?

lachen muß... (über mich): Jetzt habe ich verstanden was du meinst.
Ehrlich !

Ich bin immer davon ausgegangen, dass du meinst ich solle bei der 
aktiven Messung die Bandgap verwenden.

Deiner Aussage nach nur zum Kalibrieren und nach dem Kalibrieren messen.

Hmmm... kann ich mal versuchen nächste Woche.

von Gerd E. (robberknight)


Lesenswert?

Ralph S. schrieb:
> lachen muß... (über mich): Jetzt habe ich verstanden was du meinst.

:-)

Noch ne Idee wie man mit noch weniger Hardware auskäme:

Transistor und Trimmer weglassen, nur den Kondensator an PA4. Dann über 
den internen Pullup laden lassen.

Um die Krümmung der E-Funktion, mit der der Kondensator jetzt geladen 
wird, auszugleichen, könntest Du die schaltbare Widerstandskaskade im 
Komparator verwenden. Also zuerst den dem Messwert nächsten Punkt in der 
Widerstandskaskade finden und dann das als Kalibrierwert nehmen. Die 
Widerstandskaskade ist ja linear und es sind die Teiler bekannt. Mit 
weiteren solchen Messungen kann man dann auf die Bandgap bzw. die 
Versorgungsspannung rückrechnen. Da müsste man dann ausprobieren was die 
besseren Ergebnisse bringt.

Keine Opamps in meinem Verfahren zu finden, nirgends, garantiert ;)

von Michael B. (laberkopp)


Angehängte Dateien:

Lesenswert?

Gerd E. schrieb:
> Noch ne Idee wie man mit noch weniger Hardware auskäme

Na ja, es gibt viele einfache A/D-Wandlungen ohne Zusatzbauteile, aus 
denen sind die handelsüblichen Billigtemperaturschätzeisen gebaut, 
genauer mit eingebautem Analogkomparator oder OpAmp.

 http://www.tij.co.jp/jp/lit/an/snoa328/snoa328.pdf (National) AN-952 
"Low Cost A/D Conversion Using COP800"
 http://ww1.microchip.com/downloads/en/AppNotes/00000513E.pdf AN513 
"Analog to Digital Conversion Using a PIC16C54"
 http://www.lyr-ing.com/DocumentosLyR/EXT/ICs/8051/Atmel/89Cx051Atmel_ADconv_app.pdf 
AN524 "Analog-to-Digital Conversion Utilizing the AT89CX051 
Microcontrollers"
 http://www.zilog.com/force_download.php?filepath=YUhSMGNEb3ZMM2QzZHk1NmFXeHZaeTVqYjIwdlpHOWpjeTloY0hCdWIzUmxjeTloYmw5aFpHTmZZMjl1ZGk1d1pHWT0 
AN04001 "Analog-to-Digital Conversion Techniques Using ZiLOG Z8 MCUs"

Das muss man nicht (schlechter) neu erfinden.

von Tim  . (cpldcpu)


Lesenswert?

Gerd E. schrieb:
> Noch ne Idee wie man mit noch weniger Hardware auskäme:

Mit dem im PFS154 eingebauten RFC geht es noch einfacher. Man benötigt 
nur den NTC und einen Kondensator. Der RFC integriert automatisch 
Messungen über einen längeren Zeitraum, so dass auch das SNR 
vergleichsweise gut ist.

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

in Ermangelung eines Zugriffs auf meine Hardware (weil hier nicht 
vorhanden), werkel ich im Moment an dem, was auf dem Bild zu sehen ist:

Einer einfachen Konsolen-IDE für PFS154 und PFS173 mit einem 
integrierten Makefile-Generator.

99% von dem was ich haben möchte funktioniert schon.

Das ganze ist so aufgebaut, dass ein einzelner Ordner in ein Verzeichnis 
der Wahl kopiert wird und damit alles schon lauffähig ist.

Die Pfade zum Compiler sind Relativpfade und in dem erstellten Ordner 
liegt dann in einem Verzeichnis der Compiler, das Upload-Tool und ein 
paar kleinere Programme (wie bspw. die Anzeige, wie viel Speicher ein 
übersetztes Programm im Flash benötigt)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.