Temperaturanzeige mit PIC18F14K22

In dieses Forum gehören all deine Fragen rund um die Elektrotechnik und im Speziellen zum Bereich der Mikrocontrollertechnik.

Temperaturanzeige mit PIC18F14K22

#1

Ungelesener Beitrag picass » 6. Aug 2019, 12:34

Nach der Vorstellung nun zum Projekt. Das hatte ich in einem anderen Forum schon vorgestellt, und deshalb hatte „vloki“ auch dort geantwortet. Ich möchte aber doch „umziehen“ und das P hier weiter verfolgen: es geht um die Erstellung einer Öltemperaturanzeige für den Einsatz im Auto. Der verwendete PIC ist der 18F14K22, programmiert in Assembler. Alle meine möglichen Fragen stelle ich in diesem einen Fred ein.
Die Erste bezog sich auf die Aufbereitung, bzw. Anpassung des analogen Eingangssignals, generiert von einem NTC-Sensor, welcher mit 2 mA aus einer Stromquelle gespeist wird, auf den Eingang des ADC‘s im PIC. Die Anzeige soll den Bereich von 20° C bis 120° C umfassen, der Sensor hält dann die Werte von 2.498 O, bzw. 113 O. Die resultierenden Spannungen liegen dann bei 4,99 V, bzw. 0,23 V. Das wäre beinahe perfekt der volle Bereich des ADC‘s.

Aber natürlich gab es als erstes und zweites die Fragen, bzw. Anregungen, sich das elektronische Leben leichter zu gestalten, und statt der Stromquelle einfach einen Vorwiderstand zu nehmen, und den Spannungsteiler an die 5 V zu legen. Damit wäre es halt einfacher, die Anforderungen an die Genauigkeit der Anzeige sollten eh‘ eher gering sein, und das leidige Überspannungs-Prob wäre nicht existent. Das letztere Argument könnte unangenehm werden, denn unterhalb von 20° C steigt die NTC-Spannung auf Werte deutlich oberhalb von 5 Volt an. Ein begründeter Vorschlag lautete, 500 Ohm als Rv zu nehmen. Das würde aber bedeuten, dass mehr als 8 mA durch den Sensor fließen könnten, und das ist nicht gerade wenig, Stichwort: Eigenerwärmung.

Aus diesem und anderen Gründen würde ich gerne bei meiner ursprünglichen Wahl – Stromquelle – bleiben, und habe wegen der möglichen Überspannung mal Datenblätter (DB) gewälzt und heute experimentiert. Als Maßnahmen gegen Überspannung (ÜS) wären möglich:
- vor den PIC einen OP schalten, z.B. als Spannungsfolger, sozusagen als Schutzstufe
- natürlich eine Diode, welche die ÜS auf die + 5 V ableitet.
- Nimmt man zur Erzeugung dieser 5 V einen LM317, ist man fein raus, weil der laut DB für genau solche Fälle einen internen 500 O- Ableitungs-Widerstand besitzt. Und das funktioniert!
- nicht funktioniert das mit einem 78L05-Regler, da steigt die Spannung an!
- an die + 5 V-Leitung schlicht eine LED setzen, welche den „überschüssigen“ Strom aufnimmt.
- als OP einen OPA335 verwenden. Neben seinen anderen guten Eigenschaften darf der laut DB bis zu 10 mA an ÜS auf seinen Eingängen haben!

Mehr als Test, wie das mit dem Einstellen von Bildern in diesem Forum funktioniert, gibt es eine „schnelle“ Handskizze des Experiments von heute. Als OP ist hier noch ein TS921 verwendet, welcher wohl allergisch reagiert laut DB. Die Plus-Spannung kommt von dem ebenfalls allergischen 78L05, einzig die Schottky-Diode BAT15 und eine LED dienen als Schutz.

Passt perfekt! Die Sensorspannung, welche bei 3,5 kO einen output von 7 V erzeugen würde, bricht auf freundliche 5,12 V am Eingang des OPs ein. Das wird dann für den angepeilten OPA kein Prob werden. Am Ausgang des OPs liegen jetzt 4,948 V, die für den PIC bereitliegen.
Das erst mal zur Diskussion gestellt, Fragen kommen noch.
Grüße, picass
Dateianhänge
schaltung.jpg

Re: Temperaturanzeige mit PIC18F14K22

#2

Ungelesener Beitrag vloki » 6. Aug 2019, 15:02

Die >8mA wären dann ja bei 120° Öltemperatur und ~100Ohm.
Die für die "Eigenerwärmung" zur Verfügung stehende Energie von >64mW
wird bestimmt von Öl und Motor gut aufgenommen.
Kann mir irgendwie nicht vorstellen, dass sich das System dadurch messbar erwärmt.

Re: Temperaturanzeige mit PIC18F14K22

#3

Ungelesener Beitrag vloki » 6. Aug 2019, 15:59

Jetzt habe ich mich auch noch vertan. Sind ja nur >6.4mW ;-)

Re: Temperaturanzeige mit PIC18F14K22

#4

Ungelesener Beitrag picass » 6. Aug 2019, 16:34

Jetzt habe ich auch einen Versuch, frei nach U x I = W !
Abfallende Spannung 0,228 V mal Strom 0,002 A ergäbe 0,000456 Watt, also ca. 0,5 mW.
Aber du hast schon richtig erkannt, dass dies nicht der einzige und auch nicht der Hauptgrund für die Wahl war. Ein Grund war, dass sich bei der Kombi des verwendeten NTCs und just diesen 2 mA eher zufällig rausstellte, dass der ADC-Bereich fast perfekt abgebildet werden konnte, ohne das sonst übliche Gestrampel mit vorgeschalteten und nicht für jeden einfach handzuhabenden OPs.
Anderer Grund: Du erinnest dich evtl. noch an meinen allerersten Fred in dem anderen Forum, in welchem ich um die Erstellung einer Formel nachsuchte, mit welcher die - sowieso lückenhaft vorhandenen - Widerstandswerte aus der Tabelle der Herstellerfirma des Sensors umzurechnen wären in resultierende Spannungen. Das gelang ja irgendwann, aber vor der Komplexheit dieser Formel kapitulierte ich schon fast alleine, jede einzelne Berechnung mit meinem HP41 war ein einziges Gestrampel. Und das auf einem 8-bit-µC ....? Und das dann von mir programmiert in Assembler..? Lass gut sein, da ging nur eine rote Lampe an.

Mein Prog ist so angelegt, dass nach der Vorberechnung ALLER 100 benötigten Widerstandswerte das in die entsprechenden, genauer gesagt: erhofft entsprechenden Bit-Werte umgerechnet wird.... extern, also z.B. mit meinem HP41. Diese Bitwerte sollen dann in das EEprom transferiert werden, und der µC schaut dann nach seiner Befragung des ADCs in dieser Aufstellung von "unten" nach "oben" nach, wo es denn nun reinpasst. Dabei werden die Runden gezählt, und der Rundenzähler stellt die auszugebende Temperatur da. Diese externen Vorausberechnungen und das Eintragen der Werte in ein Programm wird eh' noch ein Fleißarbeit - wenn man es freundlich ausdrückt. Einen Spannungsteiler hundertmal zu berücksichtigen, macht die Sache nicht besser.

Den OPA habe ich eben bestellt, Probleme bereitete die Bestellung der Platinen bei den Krähen in China. Die meckerten bei beiden Platinen das Fehlen einer passenden Drill-Datei an, obwohl ich deren CAM-Job, bzw. deren Programm zur Erstellung der gewünschten Files benutzt hatte. Heute sandten die mir ihr CAM-File in einer neuen Version zu. Abgesehen davon, dass eine Statistikdatei mehr erstellt wurde, welche die aber offiziell gar nicht anfordern, und dass eine TXT-Datei mit Bohrdaten nun um den Faktor 10 kleiner (!) geworden ist, kann ich keinen Unterschied erkennen. Letztlich half da nur das Übersenden der orig-Eagle-BRD-Datei. Hm....
Grüße, picass

Re: Temperaturanzeige mit PIC18F14K22

#5

Ungelesener Beitrag vloki » 7. Aug 2019, 10:46

Warum orientierst du nicht einfach an der vorbereiteten C-Version da,
https://www.mikrocontroller.net/topic/354266#3955129
passt die meinetwegen nach deinem Geschmack an und setzt alles in Assembler um?

Steht sogar im Data Sheet, wie man das machen kann
3.1.4 LOOK-UP TABLES IN PROGRAM MEMORY

<edit> Sorry, ich sehe gerade das ist gar nicht das,
wofür ich es hielt sondern mehr oder weniger das, was du machen willst?

Re: Temperaturanzeige mit PIC18F14K22

#6

Ungelesener Beitrag picass » 7. Aug 2019, 12:37

Hatte mich gerade eingeloggt, um nachfolgenden Beitrag einzustellen, und sehe nun deinen neuen Beitrag, "vloki". Meinen Vorbereiteten stelle ich dennoch ein, und deinen kopiere ich und bearbeite deine Anregungen heute Nachmittag.
----------------------

In meinem vorigen Beitrag hatte ich angesprochen, dass vorberechnete Werte (vbW) ins EEprom eingetragen und dann später im Betrieb ausgelesen werden sollen. Die Umsetzung stelle ich mir so vor, dass zwei voneinander unabhängige Programme erstellt werden. Das erste davon – P1 - enthält die vbW‘s, und nach der Programmierung des PICs schreibt dieses P1 bei seiner Inbetriebnahme die vbW‘s ins EEprom. Danach ist P1 nutzlos.
Das zweite Programm – P2 – ist das für den Dauergebrauch des PICs. Das müsste dann in denselben PIC rein programmiert werden, überschreibt P1, und findet – hoffentlich – die vormals ins EEprom geschriebenen vbWs alle noch vor.

Meine Frage lautet also: Bleiben bei einer zweiten/ wiederholten Programmierung ein und desselben PICs die alten EEpromwerte erhalten oder werden die bei Neuprogrammierung gelöscht?
Grüße, picass

Re: Temperaturanzeige mit PIC18F14K22

#7

Ungelesener Beitrag vloki » 7. Aug 2019, 15:17

Ja, man auswählen, welche Bereiche Programmiert werden.

Du könntest aber auch alles in ein Programm packen und gleich am Anfang entscheiden
(z.B. anhand eines gedrückten Tasters, Jumpers oder ...)
ob der "Inbetriebnahme" Zweig oder der "normale" ausgeführt wird.

Re: Temperaturanzeige mit PIC18F14K22

#8

Ungelesener Beitrag picass » 8. Aug 2019, 09:09

vloki hat geschrieben:
7. Aug 2019, 15:17
z.B. anhand eines gedrückten Tasters, Jumpers oder ...
Das war mein "Plan B" ! Da hatte ich vor, einen Port-Eingang je nach Erfordernis mit einem Widerstand auf Masse oder Plus zu legen.
Habe aber gerade ein Päckchen von RS-Online bekommen, drinnen etliche PICs zum Experimentieren, und werde erstmal versuchen, ob es tatsächlich möglich ist, einem µC erst ein Prog und damit verbunden eine EEprom-Füllung zu verpassen, und danach auf demselben ein anderes Prog zu installieren. Da bin ich einfach mal wieder neugierig. Hoffe, dass das auch ohne komplizierte Auswahl von Adressen möglich ist, also ganz "normal" programmieren.....

Habe gerade von den Krähen die Nachricht bekommen, dass die erste meiner beiden Platinen auf den Weg gebracht wurde, Transportzeit ca. 2 Wochen. Die Spannung steigt....
Grüße, picass

Re: Temperaturanzeige mit PIC18F14K22

#9

Ungelesener Beitrag pic18 » 8. Aug 2019, 10:45

Sollte eigentlich funktionieren. Man kann normalerweise auswählen was programmiert werden soll. (durch Haken machen bei Flash, EEProm und Config)

Re: Temperaturanzeige mit PIC18F14K22

#10

Ungelesener Beitrag picass » 13. Aug 2019, 19:18

Ich werd' narrisch!
Just eben ist es mir gelungen, meine Programmierumgebung mit PicKit 3 und viel mehr noch einer Mischung aus dem Board "Pickit Low Pin Count Demo" und einer auf Lochrasterplatine aufgebauten 7-Seg.-Anzeige mit wüster Fädeltechnik-Verdrahtung zum Laufen zu bringen.
Ähm..., das lief schon, aber nicht mit meinen neuen Progs. Und da hatte ich doch "mal eben" ein Prog erstellen wollen, welches an einem Port die vom Trimmer gelieferte Spannung abfragt und dann schlicht in Bits von 0 bis 1023 ausgibt, bzw. anzeigen lässt.

Au man, hat mich das Ding heute gequält. Ist echt nicht gut, das Programmieren in Assembler jahrelang liegen zu lassen, und - is klar - dabei fast alles zu vergessen. Es hakte an vielen Stellen: die Ports waren nicht richtig initialisiert, einige Variable nicht für die richtige Speicherbank ausgewählt, das 7-Segm.-IC 74HC4511 an einem Pin falsch angesteuert,.....das mal nur zur Auswahl. Sich da durchprügeln zu müssen, kostete Zeit und Nerven....
Ich will's kaum glauben, aber nu' isses geschafft. Das Teil wird mir noch viel nützen, aber jetzt muss ich mich erst mal wieder beruhigen, und werde das mit einem guten Schluck an Rotwein angehen, und etliche Stunden mal gar nicht an PICs denken.....
Grüße, picass

Nachrag für "vloki": Ja doch, nach der Bohr-Dings-Angelegenheit schaue ich auch noch..... später

Re: Temperaturanzeige mit PIC18F14K22

#11

Ungelesener Beitrag picass » 15. Aug 2019, 11:20

Die Wartezeit auf das Eintreffen der Platinen für den Prototypen hatte ich für Diverses genutzt.
Als Erstes hatte ich beim Pic die Handbremse gezogen. Ist bei einem schlichten Temp-Prog nur wenig witzig, wenn das 240 mal pro Sek durchlaufen wird, zudem flickerte die letzte Stelle. Von 500 kHz beruhigt auf 31 kHz ist das immer noch schnell genug, und das Flimmern ist weg.

Als Weiteres kam das Erstellen des o.g. Progs, welches schlicht die analoge Adc-Spannung auf 7-segm.-Anzeige in Bit ausgibt. Das schien auch gut zu funktionieren auf dem Microchip Low Pin Sowieso-Board, bitte auf die Wortwahl achten!
Heute durfte der orig Sensor an seiner Stromquelle nuckeln, und schon wurd‘s putzig, denn bei 23° C und seinem resultierenden Widerstand von 2,294 kO ergaben sich passende 4,246 Volt am Eingang des OPA‘s, aber der PIC behauptete: „Vollauschlag“, also sämtliche 1.023 Bits.
Weg mit dem Sensor, zurück zum 10-kO-Trimmer auf dem scheinbar gut funkenden Microchip-Board. Und da kams Dicke: Fängt man „unten“ bei 0,0 V an, sind OPA und PIC im Gleichklang auch bei 0. Dreht man den Trimmer hoch, bleibt das lange und sehr sauber so mit dem Gleichklang, bis… bis oberhalb 4,2 Volt der OPA am Ausgang ruckartig auf volle Pulle springt, also volle Betriebsspannung, hier 4,95 Volt.

Was gettz? Gettz sind wir wieder bei den OP-Verstärkern und ihren immer für Überraschungen „guten“ Verhaltensweisen. Und – ach ja – Schwingen tut da nichts, sämtliche Spannungen – egal wo – sind cool, trotz der Fädelverdrahtung. Schaltplan gewünscht? Siehe oben, der passt, es fehlt nur ein 1 kO Widerstand zwischen OPA und ADC.
Fotos zum Vor-Prototypen-Versuchsanbau anbei, auch das vom OPA, der so niedlich von dem Hersteller angeboten wird, dass man als Erstes sofort eine Adapter-Platine fertigen muss, sonst kann man da nichts löten.
Grüße, picass

Nachtrag: Datei-Eigenschaften sind umgestellt, die Zipp-Datei betrachtet.
Dateianhänge
opa.jpg
fädeltechnik.jpg
experimentierplatinen.jpg

Re: Temperaturanzeige mit PIC18F14K22

#12

Ungelesener Beitrag picass » 16. Aug 2019, 11:32

picass hat geschrieben:
15. Aug 2019, 11:20
.......sind wir wieder bei den OP-Verstärkern und ihren immer für Überraschungen......
Beim Grübeln über das Prob kam ich auf die Idee, diesen ersten OPA bei den Experimenten mit den vielen fliegenden Verdrahtungen evtl. durch Überspannung gekillt zu haben. Heute kamen die aus Polen angereisten Adapter-Platinen für die SO-8-ICs, und ein neuer OPA wurde montiert, diesmal gleich mit Schutzdiode und Abblockkondensator direkt an der Microplatine. Und es kam tatsächlich anders als gestern, nur dass der heutige OPA nicht wie gestern sprunghaft auf volle Pulle sprang, sondern stattdessen "abregelte", und zwar bei 4,25 Volt. Das schien ein magische Grenze zu sein, also kein Zufall mehr.
Hilfe kam - wie so oft - aus dem Datenblatt. Mangels Erfahrung in diesem Bereich war ich davon ausgegangen, dass ein als Rail-to-Rail beworbener und auch von diversen Anwendern so gelobter OP die vollen Bereiche der Betriebsspannung komplett ausnutzt, rsp. ermöglicht, im Klartext: in seiner Ausgangsspannung und - für mich natürlich - genauso in seiner Eingangsspannung. Iss aber nicht. Das Datenblatt verrät, dass der Opa 335 und seine Verwandten nicht mehr als Vplus minus 1,5 Volt am Eingang haben mag, also bei +5 V dann nur bis 3,5 Volt.
Schäbbig sowas....., jetzt muss eine andere Lösung her, und wieder geht das Gestrampel los, einen OP zu schlichter Mitarbeit überreden zu wollen.
Grüße, picass

Re: Temperaturanzeige mit PIC18F14K22

#13

Ungelesener Beitrag vloki » 16. Aug 2019, 11:38

Beim OPA335 sehe ich nichts von wegen rail-to-rail. Wie kommst du darauf?
Der TS921 aus deinem Eingangspost scheint da schon eher solche Fähigkeiten zu haben

Re: Temperaturanzeige mit PIC18F14K22

#14

Ungelesener Beitrag picass » 17. Aug 2019, 10:34

vloki hat geschrieben:
16. Aug 2019, 11:38
......rail-to-rail. Wie kommst du darauf?
Siehe unten Auszug aus dem TI-Datenblatt.
Aufmerksam geworden auf diesen OP-Typ bin ich durch diverse lobende Hinweise auf seine Rail-to-Rail-Fähigkeiten in Beiträgen von Usern aus einem anderen, großen Forum. Dortselbst gibt es auch diverse grundlegende Artikel über solche Bausteine, und im Beitrag „Standarbauelemente“ ist genau dieser OP auch als rtr-fähig gekennzeichnet. Den dort in einer der vielen Spalten versteckten Hinweis auf den verringerten Eingangsspannungsbereich hatte ich übersehen oder einfach missachtet.

Hilfe bei der Verwendung von OP Amps sind ja nicht gerade selten im Inet zu finden, da gibt es z.B. den grundlegenden Beitrag „OP Amps for everyone“ von TI selbst aus dem Jahr 2002. Der enthält nur das nötigste Grundwissen, zusammen gepfercht auf 464 Seiten – is klar – alles in schönstem technischen English.

Nachdem es mir gestern auch nicht gelang, diesen OPA zu einem einfachen Gleichspannungsverstärker (GSV) umzubauen, habe ich den beiseite gelegt und mir wieder den vorher schon vorhandenen TS 912 genommen. Leider funktioniert die Grundschaltung der GSV bei dem auch gänzlich anders, als es die Prinzipschaltungen und deren Formeln versprechen, aber mit anderen, unerwartet und den Formeln widersprechenden R-Werten lässt der sich ggf. doch noch zu seiner Grundfunktion überreden.
Die zweite Platine ist übrigens auch in D angekommen und lagert beim Zoll. Vermutlich Mitte der nächsten Woche wird sie hier sein, und dann kann endlich ein soliderer Versuchsaufbau stattfinden.

Bis dahin pansche ich mit Wasser! Die Grundeichung bei 20° C ist erfolgreich absolviert, übers Wochenende erhitze ich das Aqua auf 80° C und lese mit freundlicher Unterstützung zweier Thermometer und des Pics, der die zur Temperatur passenden Bits (16 bit) ausgibt, beim langsamen Abkühlen des A's die Pic-Anzeige an markanten Stellen ab, mindestens bei den 10° C-Sprüngen, ggf. auch bei den 5-er Zwischenschritten.
Für den wichtigsten Temp-Bereich, hier 70° C, steht ein Thermometer (Tm) bereit, das sonst bei der Herstellung von Alkohol verwendet wird, auch da wird’s ab 70 C interessant. Für den untersten Bereich hält ein Tm aus dem Farbfoto-Labor Präzises zur Verfügung.

Der TS921 aus meinem Eingangsbeitrag ist übrigens ein TS912. Da hatte ich anfangs auch die an die "912" angehängten Buchstaben "IN" missverstanden und das große "i" als Zahl interpretiert. War einer der typischen Stolpersteine, die Nicht-Profis das elektronische Leben so schwer machen.
Grüße, picass
Dateianhänge
auszug-opa.jpg

Re: Temperaturanzeige mit PIC18F14K22

#15

Ungelesener Beitrag vloki » 17. Aug 2019, 11:14

Was für einen "GSV" wolltest du denn aufbauen?
Halber Strom und dann nichtinvertierender Verstärker x2, damit das Problem mit dem nicht r2r Eingangsbereich wegfällt?
Sollte doch eigentlich keine größeren Probleme machen.
Lass den OP doch erst mal ganz weg. Die Schutzdioden am Eingang des uC können deine 2mA bestimmt ableiten. Wären ja auch nicht mal 2mA, sondern nur der Teil davon, der an deinem Sensor eine höhere Spannung als sagen wir mal 5,6V verursachen würde. Wenn die Spannung wie irgendwo oben angegeben theoretisch 7V erreichen könnte, dann wird über die interne Schutzdiode wohl ein Strom von ca. (2mA/7)*1,4= 0,4mA fließen.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast