Forum: Mikrocontroller und Digitale Elektronik unzuverlässiger Temperaturregler


von Tilmann (Gast)


Lesenswert?

Hallo,

ich habe mit Bascom, Atmega 168, DS18B20-Temperaturfühler und einem 
16*2-LCD einen Wohnwagen-Kühlschrank-Regler gebaut, der im ersten Urlaub 
auch prima funktioniert hat, danach aber immer öfter nicht mehr, und 
zwar schaltet er den Kühlschrank nicht aus. Ich habe den Microcontroller 
schon getauscht, habe am Code herumoptimiert, ihn dann gut drei Tage 
zuhause eine Kühlbox regeln lassen und mitgeloggt, da ging es absolut 
zuverlässig. Dann in den Wohnwagen eingebaut und sofort wollte er nicht 
ausschalten nachdem kalt genug war. Dabei zeigt er immer korrekte 
Temperatur-Meßwerte an und bleibt bedienbar (man kann 
Einschalttemperatur und Hysterese abrufen und ändern).
Er zeigt auch zwei weitere Temperaturen und die Batteriespannung 
(12-V-Autobatterie) korrekt an, hängt also nicht in einer Schleife fest.

An EEprom-Werten hat er einen Startzähler, der bei jedem Start um eins 
hochzählt, Einschalttemperatur und Hysterese.

Ich verdächtige das EEprom, das es in einen Speicherbereich schreibt in 
dem es nichts verloren hat. Ist so etwas möglich ?

Es liegt auch nicht an der Spannungsversorgung, die ist ein Linearregler 
7805 von 12 V, hinter einer Verpol- und einer Überspannungsschutzdiode 
und einem Elko vor und einem hinter dem Linearregler. Wenn man die 
Spannung abschaltet braucht er ca. 2 Sekunden bis er aus ist, ist also 
gut gepuffert. µC und LCD haben auch ihren 1µF-Kondensator dicht am 
Spannungseingang.

Die Wartezeit zur Messung ist 800 ms, es sind drei Temperaturfühler 
verbaut, jeder in 3-Leiter-Technik an einem eigenen Pin des µC.

Vor allem: Er zeigt mir die Temperatur der Fühler ja an (CRC-Code 
geprüft), hat klar definiert eine Temperatur, bei der er schalten soll, 
macht es aber manchmal nicht.

Was gibt es bei µC für Unzuverlässigkeits-Effekte ?

Ratlos
Gruß Tilmann

von Einer K. (Gast)


Lesenswert?

Tilmann schrieb:
> Was gibt es bei µC für Unzuverlässigkeits-Effekte ?

In der Regel befindet sich der Fehler im OSI Schichtenmodel auf Level 8

Tipp:
Es ist eine gute Idee, Schaltplan und Code geheim zu halten, denn so 
kann man sich viel länger und absolut erfolglos mit dem Problem 
herumschlagen.
;-)

(Obwohl: Bascom kann ich nicht)

von Bastian W. (jackfrost)


Lesenswert?

Hi,

Das EEPROM kann in meinen anderen Bereidch schreiben. Wie schaltest due 
den Kühlschrank ? Mit einem Mosfet oder einem Relais ? Geht das alles 
wenn du ohne den Controler den Kühlschrank über das Stellglied schaltest 
?

Gruß JackFrost

von Stefan F. (Gast)


Lesenswert?

Kann es sein, daß dein Thermostat am Ausgang ein Relais hat und dessen 
Kontakte Klebrig geworden sind?

Dann solltest du das Relais erneuern und einen Snubber (100nF + 220 Ohm) 
parallel zu seinen Kontakten schalten.

> Was gibt es bei µC für Unzuverlässigkeits-Effekte ?

Wenn du ihn außerhalb seiner Spezifikation betreibst, musst du mit jeder 
denkbaren fehlfunktion rechnen. Warscheinlicher ist aber, daß du da an 
der falschen Stelle suchst.

von Michael B. (laberkopp)


Lesenswert?

Tilmann schrieb:
> Ich verdächtige das EEprom

Ich verdächtige die Stromversorgung, die zu Störungen führt.

von H. E. (hobby_elektroniker)


Lesenswert?

@TO

Verdächtigungen bringen uns nicht weiter. Deine Schaltung hast du vage 
beschrieben. Theoretische Fehlerquellen hast du bekommen. Die relevanten 
Informationen fehlen uns noch um das Problem an der Wurzel anzupacken.

Ohne ein Schaltplan kann dir keiner weiterhelfen. Wenn du ganz faul 
bist, machst du gute Fotos von der Schaltung. Wenn du dein Code nicht 
preisgeben willst, sollte zumindest deine Hardware (der Aufbau) gecheckt 
werden. ;)

von H. E. (hobby_elektroniker)


Lesenswert?

Michael B. schrieb:
> Tilmann schrieb:
>> Ich verdächtige das EEprom
>
> Ich verdächtige die Stromversorgung, die zu Störungen führt.

Denke ich auch. Es hilft zwar nicht, aber ich verdächtige einfach mal 
fehlende Abblockkondensatoren. Wollte auch mal mitmachen.

von Route_66 H. (route_66)


Lesenswert?

H. E. schrieb:
> Wenn du dein Code nicht
> preisgeben willst,

Wenn ich zum Arzt gehe, muss ich mich ausziehen...
...oder krank bleiben!

von Tilmann W. (tilmann)


Lesenswert?

Hallo,

ich kenne auch die Regel, daß der Fehler meistens vor der Tastatur sitzt 
... aber wenn es nur gelegentlich auftritt ?

Schalten tut ein Mosfet, der ist prima, und wenn ich ins Nachregelmenü 
gehe, schaltet es ja auch wieder. An dem liegt es also nicht.

Warum soll die Spannungsversorgung schuld sein, wenn doch das Display 
ständig 4 Meßwerte liefert und aktuell hält, also läuft doch der µC. 
Dann müßte er doch merken das die Temperatur niedrig genug ist und er 
mal abschalten sollte.

Seine Spannung ist sehr konstant 4,99 V, und die Frequenz des 
Quarzoszillators gut ein Viertel von Maximum, d.h. 5,1 ... MHz. Von 
wegen außerhalb der Spezifikation. Er zeigt auch am Display an ob ein- 
oder ausgeschaltet ist, und da bleibt es bei eingeschaltet.

Gruß Tilmann

von H. E. (hobby_elektroniker)


Lesenswert?

Route 6. schrieb:
> H. E. schrieb:
>> Wenn du dein Code nicht
>> preisgeben willst,
>
> Wenn ich zum Arzt gehe, muss ich mich ausziehen...
> ...oder krank bleiben!

Hoffentlich nicht auch beim Zahnarzt. :-)

von Tilmann W. (tilmann)


Lesenswert?

Hallo Leute,

ich bedanke mich für die rege Anteilnahme. Wenn ich heute abend 
nachhause komme, stelle ich den Code rein, da soll nix geheim sein.

Abblockkondensatoren sind an LCD und µC.

Gruß Tilmann

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Tilmann W. schrieb:
> Er zeigt auch am Display an ob ein-
> oder ausgeschaltet ist, und da bleibt es bei eingeschaltet.

Angeschaltet bleiben ist falsch? Es ist dann doch wohl klar, das es an 
der Software liegt, denn wenn die weiter anschaltet, obwohl sie es nicht 
soll, das aber auch korrekt kundtut, ist da wohl was im argen.

von Florian F. (flof3000)


Lesenswert?

Mein erster Vorschlag: Code erweitern, neben Mosfet noch einen Pin 
schalten, an dem eine LED anschließen.

Das sagt dir dann klipp und klar ob das Problem in der 
Entscheidungsfindung (A) oder beim eigentlichen Schalten (B) zu suchen 
ist.

(Deswegen auch nicht parallel LED zum Mosfet-Gate, wenn z.B. dein 
treibender Pin defekt wäre würde das wie (A) aussehen, wenn's eigenlich 
(B) ist...)


Wenn (A), dann würde ich mir erst mal die Schaltschwellen mit auf's 
Display ausgeben lassen. Das sagt dir dann ob Du mit deiner EEPROM 
Hypothese auf der richtigen Fährte bist.

von Einer K. (Gast)


Lesenswert?

Tilmann W. schrieb:
> ich kenne auch die Regel, daß der Fehler meistens vor der Tastatur sitzt
> ... aber wenn es nur gelegentlich auftritt ?

Auch dann!

Ich behaupte:
Eine deiner vielen Annahmen ist falsch.
Vielleicht schon bei der Konstruktion des "Dingen".

von H. E. (hobby_elektroniker)


Lesenswert?

Tilmann W. schrieb:
> Hallo Leute,
>
> ich bedanke mich für die rege Anteilnahme. Wenn ich heute abend
> nachhause komme, stelle ich den Code rein, da soll nix geheim sein.
>
> Abblockkondensatoren sind an LCD und µC.
>
> Gruß Tilmann

Und der Schaltplan bleibt auch nicht geheim?

von Tilmann W. (tilmann)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe keinen Schaltplan gemacht, sondern das so Stück für Stück 
gebastelt :-)

In Anlage ein Bild und der Quellcode.

Den glorreichen Schalttransistor habe ich vor einem Jahr schon 
vorgestellt:
Beitrag "Logic-Level MOSFET"

Gruß Tilmann

von Marc H. (marchorby)


Lesenswert?

Arduino F. schrieb:
> In der Regel befindet sich der Fehler im OSI Schichtenmodel auf Level 8

Kann ich unterschreiben:

Tilmann W. schrieb:
> ich habe keinen Schaltplan gemacht, sondern das so Stück für Stück
> gebastelt :-)

Ich sehe auf dem Bild am AVR keinen einzigen Abblock-C

von Einer K. (Gast)


Lesenswert?

Tilmann W. schrieb:
> Abblockkondensatoren sind an LCD und µC.

Marc H. schrieb:
> Ich sehe auf dem Bild am AVR keinen einzigen Abblock-C

? ?


Manchmal macht ein Schaltplan einfach Sinn!

von H. E. (hobby_elektroniker)


Lesenswert?

Arduino F. schrieb:
> Tilmann W. schrieb:
>> Abblockkondensatoren sind an LCD und µC.
>
> Marc H. schrieb:
>> Ich sehe auf dem Bild am AVR keinen einzigen Abblock-C
>
> ? ?
>
>
> Manchmal macht ein Schaltplan einfach Sinn!

Das Bild ist nicht aussagekräftig. Wenn dann sind sie gut versteckt oder 
an einem geheimen Ort. ?

Ich erkenne nicht mal ob der Tiny gesockelt ist. Es gibt auch Sockel mit 
abblockkondensatoren. Am LCD sehe ich auch nichts. ?

von Peter D. (peda)


Lesenswert?

Tilmann schrieb:
> Ich verdächtige das EEprom

Verdächtigen kann man vieles, nur bringt das nichts außer verlorener 
Zeit.
Ich würde nicht verdächtigen, sondern gezielt den Fehler suchen. Eh Du 
die SW verdächtigst, solltest Du erstmal die HW überprüfen. Welcher 
Pegel ist denn an dem MC-Pin, der ausschaltet? Schaltet er bei Reset 
aus?

von Stefan F. (Gast)


Lesenswert?

Wo hast du denn die Abblock-Kondensatoren versteckt?
Was ist jetzt mit dem Relais? Wird die Maschine mit Relais geschaltet, 
oder nicht?

von Peter D. (peda)


Lesenswert?

Tilmann schrieb:
> Was gibt es bei µC für Unzuverlässigkeits-Effekte ?

Wenn der MC nicht allzu neu ist, stehen seine Fehler im Datenblatt:
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2545-8-bit-AVR-Microcontroller-ATmega48-88-168_Datasheet.pdf
"38.3. Errata ATmega168/V"

Weitaus häufiger sind dagegen Schaltungsfehler oder Programmfehler des 
Benutzers.

von Karl M. (Gast)


Lesenswert?

Guten Morgen Tilmann,

wenn Du das EEprom "verdächtigst", dann bitte ich dich, lese bitte die 
Atmel Application Note:

*AVR180: External Brown-out Protection*
http://www.atmel.com/Images/doc1051.pdf

Dort findet man u.a. das Stichwort "EEPROM Corruption" !

Unter Goo* kannst Du mal nach "Atmel EEPROM Corruption" suchen. :-)

Bitte berichte.

Wenn ich das Ich EEprom nutze schalte ich immer die für die 
Versogungsspannung Vcc passenden BOD-Level ein, t.B. BOD-Level 4,3V.

Siehe: http://www.engbedded.com/fusecalc/

von Karl M. (Gast)


Lesenswert?


von H. E. (hobby_elektroniker)


Lesenswert?

Und wie ist der Stand der Dinge? @TO

von Alex W. (Gast)


Lesenswert?

Tilmann schrieb:
> ich habe

Tilmann W. schrieb:
> ich kenne auch die Regel, daß der Fehler meistens vor der Tastatur sitzt
> ... aber wenn es nur gelegentlich auftritt ?

Tilmann W. schrieb:
> stelle ich den Code rein,

Tilmann W. schrieb:
> In Anlage ein Bild

Die korrekte Herangehensweise wäre den post vom TE komplett zu löschen, 
da er sich an gar keine Regel gehalten hat! Weder im Eröffnungspost ein 
aussagekräftiges Foto, noch die Quellen noch sich die Mühe gemacht hat 
den Schaltplan zu zeichnen wie die aktuelle Schaltung ist. Darüber 
hinaus hat er vom AVR nicht einmal das Datenblatt gelesen, sonst wüsste 
er das an jedem Pin der zur Spannungsversorgung dient einen Kondensator 
gegen Masse so kurz als möglich angeschlossen werden muss.

Das wir hier oft genug gepredigt, nutzt nur nix!

Und dann schließt er unterschwellig den Fehler seiner Hardware aus!

von Oberlajtnant (Gast)


Lesenswert?

Alex W. schrieb:
> Die korrekte Herangehensweise wäre den post vom TE komplett zu löschen,
> da er sich an gar keine Regel gehalten hat!

Geht's wieder?!

Es gibt Leute, die zu Hause noch etwas Anderes als eine 
Kühlschranksteuerung zu betreuen haben. Er schrieb: "Heute Abend". Der 
heutige Abend ist noch lang.

von Tilmann W. (tilmann)


Lesenswert?

Hallo Leute,

also nochmal: Ich habe Abblock-Kondensatoren à 0,1 µF an den 
Stromversorgungseingängen von LCD und µC; bei letzterem unter dem 
Sockel.
Außerdem, auch wie schon geschrieben, wenn ich die Betriebsspannung 
abschalte dauert es ca. 2 Sekunden bis im Display nichts mehr zu sehen 
ist, weil vorn ein 2,2mF Elko auf der 12-V-Seite sitzt, der den 
Spannungsregler eine Weile versorgt. Das ist nicht der Punkt.

Aber was ist eigentlich mit diesen Angaben "$hwstack, $swstack, 
$framesize", die habe ich irgendwie auf Verdacht vergeben, da kenne ich 
keine Regel wie die zu dimensionieren sind. Vielleicht hätte ich das 
weglassen sollen.

Gruß Tilmann

von Sascha K. (captain)


Lesenswert?

Servus!
Hat der 7805 Regler auch 100NF direkt am Eingang?

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

Bascom ist nicht wirklich mein Fachgebiet, jedoch könnte ein 
Stacküberlauf auch ein in dieser Sprache geschriebenes Programm 
auslösen. Dieser tritt nicht immer und nicht immer gleich auf.

MfG

von N2 (Gast)


Lesenswert?

Hi,

BASCOM ist auch nicht mein Fachgebiet, der ATMEGA168 schon eher.

Nach kurzer Recherche hast Du $hwstack $swstack und $framesize 
ausreichend dimensioniert und nicht stark überdimensioniert.
Du kannst trotzdem mal alles auf 100 setzen.

Was mich irritiert ist die Timer ISR:
Nach meinem Verständnis machst Du alle 30s einen Reset ->

if Sekunden>30
...
start watchdog
waitms 20
...

Watchdog ist auf 16ms eingestellt....sollte zum Reset führen.

Abgesehen davon macht man kein wait in einer Interrupt-Routine.

Vielleicht versteh ich auch kein BASCOM.

Aber WatchDog muss einmal konfiguriert / gestartet werden und dann 
innerhalb der Zeit (nach Deinem Kommentar 16ms) resettet werden. 
Passiert das nicht gibt es ein Prozessor-Reset.
D.h. Dein Reset WatchDog in der Hauptschleife ist OK aber das Watchdog 
Start gehört aus der Interruptroutine in die Initializierung.

Gruß N2

von grundschüler (Gast)


Lesenswert?

Sinnvolle Fehlersuche: Feststellen ob hw oder sw-Fehler. code so ändern, 
dass im Lcd der Schaltzustand angezeigt wird. Ich mach das über 
on/off-Funktionen, in denen auf demem lcd "+"/"-" geschrieben wird. 
Damit können Fehler in der sw ausgeschieden werden.

Wenn es denn die hw ist, Mosfet durch arduino-relaiskarte ersetzen. Wenn 
das nicht hilft uc durch arduino mini-board ersetzen, Stromversorgung 
durch fertiges Stepdown-modul ersetzen. Das ist dann praktisch komplett 
neue hw -. ist aus fertigen arduino-Bausteinen aber schnell und billig 
zusammengelötet.

von controllergirl (Gast)


Lesenswert?

Könnte auch am Kühlschrank liegen, wenn der nicht ausgeht... duck

von Mario M. (thelonging)


Lesenswert?

"Single_aus" bekommt beim Programmstart keinen Wert zugewiesen. Erst 
beim Aufruf von "Nachregeln" wird "Single_aus" auf einen sinnvollen Wert 
gesetzt.

von Fred R. (fredylich)


Lesenswert?

Im ISR erst mal raus damit.
Start Watchdog
    Waitms 20

Wenn nicht dann auch mal diese Zeile deaktivieren.

Loop Until Ds18b20_scratchpad_k(9) = Crc8(ds18b20_scratchpad_k(1) , 8)
Vermute ich er da der Rest ja abgearbeitet wird.

Gruß
Bacomfreund

von Stefan F. (Gast)


Lesenswert?

Was ist denn jetzt mit dem Relais? Wird dein Gerät über Relais 
geschaltet?

Ich bin ehrlich gesagt genervt, daß diese simple Frage trotz mehrfacher 
Wiederholung gar nicht beantwortet wird.

Wenn Du Hilfe von mir (oder wem auch immer) bekommen möchtest, solltest 
du auch auf die Rückfragen antworten. Zum einen aus Gründen der 
Fairness, zum anderen damit du uns durch deine falschen Annahmen nicht 
in eine falsche Richtung lenkst. Wenn DU korrekt entscheiden könntest, 
in welche Richtung die Fehlersuche gehen soll, dann bräuchtest du unsere 
Hilfe ja nicht und hättest das Problem längst selbst gelöst.

von Buratino (Gast)


Lesenswert?

Stefan U. schrieb:
> Was ist denn jetzt mit dem Relais? Wird dein Gerät über Relais
> geschaltet?
>
> Ich bin ehrlich gesagt genervt, daß diese simple Frage trotz mehrfacher
> Wiederholung gar nicht beantwortet wird.

Vor geraumer Zeit wurde diese Frage so beantwortet:

Tilmann W. schrieb:
> Schalten tut ein Mosfet, der ist prima, und wenn ich ins Nachregelmenü
> gehe, schaltet es ja auch wieder. An dem liegt es also nicht.

Ich bin ehrlich gesagt genervt, daß Du die Antworten offenbar gar 
nicht zur Kenntnis nimmst, sondern nur einen Punkt suchst, an dem Du 
Reibereien und Stunk erzeugen willst.

von Stefan F. (Gast)


Lesenswert?

> daß Du die Antworten offenbar gar nicht zur Kenntnis nimmst

Das ist nicht wahr. Wo ist denn die Antwort auf meine Frage?
Hinter dem MOSFET könnte durchaus ein Relais kommen. Irgenwie muss ja 
auch der Übergang von Kleinspannung zum Motor des Kühlschrankes sein, 
der sicher mit 230V~ betrieben wird.

von Einer K. (Gast)


Lesenswert?

Stefan U. schrieb:
> Irgenwie muss ja
> auch der Übergang von Kleinspannung zum Motor des Kühlschrankes sein,
> der sicher mit 230V~ betrieben wird.

Nein, das ist ein Pelztier-Dingen.
(das konnte ja sogar ich da raus lesen)

von Buratino (Gast)


Lesenswert?

Stefan U. schrieb:
> Das ist nicht wahr.

Ich hatte erst das Gefühl: Der stellt sich blöde. Langsam bekomme ich 
aber Gewissheit!

> Wo ist denn die Antwort auf meine Frage?

Die habe ich eben erst zitiert!

> Hinter dem MOSFET könnte durchaus ein Relais kommen.

Nein -kommt da nicht weil das eine Kühlbox ist, die mit der im Kfz 
vorhandenen Spannung betrieben wird:

Tilmann schrieb:
> ...ihn dann gut drei Tage
> zuhause eine Kühlbox regeln lassen und mitgeloggt, da ging es absolut
> zuverlässig. Dann in den Wohnwagen eingebaut und sofort wollte er nicht
> ausschalten nachdem kalt genug war.

Lesen. Einfach nur Lesen. Mehr muß man nicht tun. Dann nachdenken -und 
daran hängt's eben schon...

SCNR

von Stefan F. (Gast)


Lesenswert?

Dass es sich um eine Kühlbox mit Peltier Element handeln könnte, habe 
ich tatsächlich nicht erwägt.

Möglicherweise weil die einzigen beiden Boxen, die ich in der Praxis als 
Kind erlebt habe, eine völlig unbrauchbare Kühlleistung hatten. Seit dem 
ist in mein Hirn eingebrannt "Kühlboxen baut man nicht mit Peltier 
Elementen".

Also kein Relais, Abblockkondensatoren sind auf der Rückseite vorhanden. 
Dann ist ein Softwarefehler an warscheinlichsten. Einoge plausible 
Knackpunkte wurden ja schon angesprochen.

von Tilmann W. (tilmann)


Lesenswert?

Hallo,

es ist ein 12-V-Kompressor-Kühlschrank. Die Peltier-Geräte haben einen 
katastrophalen Wirkungsgrad.

Aber hier kommt die Lösung:

@Mario M:
> "Single_aus" bekommt beim Programmstart keinen Wert zugewiesen. Erst
> beim Aufruf von "Nachregeln" wird "Single_aus" auf einen sinnvollen Wert
> gesetzt.

Ich glaube, genau das ist es. Genial ! Danke !
Das erklärt auch den Effekt, das wenn man bei einem "Hänger" 
(Kühlschrank schaltet nicht aus) ins nachregel-Menü geht, es sobald man 
wieder zurück ist ordentlich funktioniert.

Im ersten Urlaub sind auch nie Unregelmäßigkeiten aufgetreten, da haben 
wir oft mit der Nachregel-Funktion gespielt.

Aber es wirft eine andere Frage auf: Wenn man einmal in dem Untermenü 
war, müßte er doch, bis zum nächsten Programmstart, ordnungsgemäß 
funktionieren.
Das tut er scheinbar nicht zuverlässig. Alsheimer ? Sollte man die 
Zuweisung bei jedem Schleifendurchlauf wiederholen ?

Vielen Dank für die Bereitschaft, mitzudenken, und an Mario M im 
Besonderen.

Gruß Tilmann

von Stefan F. (Gast)


Lesenswert?

> es ist ein 12-V-Kompressor-Kühlschrank

Hat der denn ein Relais? :-)

SCNR

von Tilmann W. (tilmann)


Lesenswert?

grundschüler schrieb:
> Sinnvolle Fehlersuche: Feststellen ob hw oder sw-Fehler. code so ändern,
> dass im Lcd der Schaltzustand angezeigt wird. Ich mach das über
> on/off-Funktionen, in denen auf demem lcd "+"/"-" geschrieben wird.
> Damit können Fehler in der sw ausgeschieden werden.

Hallo Grundschüler,

den Schaltzustand habe ich von Anfang an im LCD ausgeben lassen, das ist 
auf dem Foto der erste Buchstabe, der kann "a" wie "ausgeschaltet" oder 
"e" wie "eingeschaltet" sein. Das hat aber immer mit der Realität 
übereingestimmt. Dein Tip ging aber in eine gute Richtung, als nächstes 
habe ich mir dann mal den Zähler anzeigen lassen, der bewirken soll, das 
erst bei drei Meßergebnissen nacheinander, aus denen resuliert das 
geschaltet gehört (ein oder aus), wirklich geschaltet wird. Neben der 
CRC-Prüfung sollte das eine Sicherung gegen unnötige Schaltvorgänge 
sein.

> Wenn es denn die hw ist, Mosfet durch arduino-relaiskarte ersetzen. Wenn
> das nicht hilft uc durch arduino mini-board ersetzen, Stromversorgung
> durch fertiges Stepdown-modul ersetzen. Das ist dann praktisch komplett
> neue hw -. ist aus fertigen arduino-Bausteinen aber schnell und billig
> zusammengelötet.

Genau das wäre mein nächster Schritt gewesen, aber ich glaube, die 
Ursache ist gefunden.

_______________________________________________________________

@N2:
> Was mich irritiert ist die Timer ISR:
>Nach meinem Verständnis machst Du alle 30s einen Reset ->
>
> if Sekunden>30
> ...
> start watchdog
> waitms 20
> ...
>
> Watchdog ist auf 16ms eingestellt....sollte zum Reset führen.

Der Reset wird nur ausgeführte wenn die Hauptschleife 30 Sekunden nicht 
durchlaufen wird (am Beginn der Hauptschleife wird der Timer jedesmal 
zurückgesetzt). Das wäre also, wenn der µC sich in einer Schleife 
aufgehängt hätte. Das könnte beispielsweise sein: Versehentlich hat man 
die Taste gedrückt, um ins Nachregel-Menü zu kommen. Wenn er dort nicht 
von selbst nach einem Timeout herausspränge, würde der Kühlschrank in 
seinem Schaltzustand bleiben - also nicht geregelt ! Dann ist es gut, 
wenn er nach 30 Sekunden neu startet.
Also: Wenn die Hauptschleife 30 Sekunden nicht zurückgesetzt wird, wird 
der Watchdog gestartet, und angefangen, 20ms zu warten. Jedoch verliert 
der Wachdog nach 16 ms bereits die Geduld und löste einen Neustart aus - 
soll er ja. Also alles wie es ein soll - läßt sich aber bestimmt 
eleganter programmieren.
_______________________________________________________________

@Fred_red:

> Wenn nicht dann auch mal diese Zeile deaktivieren.
>
> Loop Until Ds18b20_scratchpad_k(9) = Crc8(ds18b20_scratchpad_k(1) , 8)

Nee, das ist die CRC-Überprüfung. Im Prinzip bedeutet die Schleife:
Mache solange, bis du einen Meßwert empfängst der mit seinem CRC-Code 
übereinstimmt - oder anders formuliert: Wenn du einen Meßwert empfängst, 
der nicht mit seinem CRC-Code übereinstimmt, wirf ihn weg und probier 
den nächsten, solange bis es paßt.

Denn bevor ich diese Prüfung drin hatte, hatte ich schon manchmal Werte 
im Display die offensichtlicher Unfug waren. Seither nicht mehr.

Gruß Tilmann

von Tilmann W. (tilmann)


Lesenswert?

Stefan U. schrieb:
>> es ist ein 12-V-Kompressor-Kühlschrank
>
> Hat der denn ein Relais? :-)
>
> SCNR

Hallo Stefan,

nein, kein Relais, nur der Logic-Level-Mosfet, der direkt 
(Vorwiderstand) vom µC angesteuert wird und nicht mal warm wird.

Ein Relais klickt, und man schläft ja in unmittelbarer Nähe des 
Kühlschranks. Das war überhaupt der Grund für das Projekt: Es war ein 
Thermostat drin, das hat lauter geklickt als der Kühlschrank, und sollte 
daher durch einen Transitor ersetzt werden.

Gruß Tilmann

von Christian S. (solder)


Lesenswert?

Tilmann W. schrieb:
> Aber es wirft eine andere Frage auf: Wenn man einmal in dem Untermenü
> war, müßte er doch, bis zum nächsten Programmstart, ordnungsgemäß
> funktionieren.
> Das tut er scheinbar nicht zuverlässig. Alsheimer ? Sollte man die
> Zuweisung bei jedem Schleifendurchlauf wiederholen ?

Könnte das an den oben angesprochenen Watchdog-Problemen liegen? Das 
Teil startet neu und dann ist die Variable wieder ohne Wert. Nur so eine 
Idee.

von Manfred (Gast)


Lesenswert?

Tilmann W. schrieb:
> Wenn du einen Meßwert empfängst,
> der nicht mit seinem CRC-Code übereinstimmt, wirf ihn weg und probier
> den nächsten, solange bis es paßt.

Ich hoffe, Du hast einen Zähler und steigst definiert aus, wenn nach x 
Durchläufen kein gültiger Wert erzielt wurde.

von Tilmann W. (tilmann)


Lesenswert?

Christian S. schrieb:
> Könnte das an den oben angesprochenen Watchdog-Problemen liegen? Das
> Teil startet neu und dann ist die Variable wieder ohne Wert. Nur so eine
> Idee.

Hallo Christian,

ja klar, nachdem die Ursache jetzt gefunden wurde, habe ich die 
Zuweisung der Ausschalttemperatur in jedem Schleifendurchlauf, sofern 
eingeschaltet ist (Ausschaltkriterien muß man ja nur prüfen wenn 
eingeschaltet ist).

Gruß Tilmann
_______________________________________________________

@Manfred:
> Ich hoffe, Du hast einen Zähler und steigst definiert aus, wenn nach x
> Durchläufen kein gültiger Wert erzielt wurde.

Wäre schon eine Idee, sich Fehler anzeigen zu lassen. Aber die 
wichtigste Funktion ist, den Kühlschrank zu regeln. Also finde ich es 
wichtig, das er niemals aufgibt zu versuchen, vernünftige Werte zu 
bekommen.
Aussteigen hieße, der augenblickliche Schaltzustand würde beibehalten.
Nicht gut.

Gruß Tilmann

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Vermutung:
In der Zeit, wo keine gültigen Messwerte kommen, wird auch NICHTS 
Anderes gemacht, als neue Messwerte einzulesen - das Fehlerbild würde 
GENAU Dem von Dir Beschriebenem entsprechen.

MfG

von Manfred (Gast)


Lesenswert?

Tilmann W. schrieb:
>> Ich hoffe, Du hast einen Zähler und steigst definiert aus, wenn nach x
>> Durchläufen kein gültiger Wert erzielt wurde.
>
> Wäre schon eine Idee, sich Fehler anzeigen zu lassen. Aber die
> wichtigste Funktion ist, den Kühlschrank zu regeln. Also finde ich es
> wichtig, das er niemals aufgibt zu versuchen, vernünftige Werte zu
> bekommen.
> Aussteigen hieße, der augenblickliche Schaltzustand würde beibehalten.
> Nicht gut.

Mit "Aussteigen" meine ich, nicht endlos in der Schleife zu hängen 
sondern in eine Fehlerbehandlung zu springen.

Welchen Schaltzustand Du im Fehlerfalle behälst, ist egal - beide sind 
falsch: Aus = vergammelte Wurst, Ein = geplatzte Getränke. Also einen 
Notlauf, per dummen Timer zyklisch ein- / ausschalten?

Patrick J. schrieb:
> In der Zeit, wo keine gültigen Messwerte kommen, wird auch NICHTS
> Anderes gemacht, als neue Messwerte einzulesen - das Fehlerbild würde
> GENAU Dem von Dir Beschriebenem entsprechen.

Die Idee hat 'was! Tilmann schrieb, dass er die Temperatur im Display 
anzeigt. Da kommt direkt die nächste Frage auf:

Tilmann - zeigst Du die letzte gültige Temperatur an oder die _gerade 
aktuell_ gemessene?

(Warum komme ich hier im Forum mit dem beschissenen Formatieren nach 
technischem Stand von 1883 (Unterstreichen) nicht klar?

von Tilmann W. (tilmann)


Lesenswert?

Manfred schrieb:
> ...
> Tilmann - zeigst Du die letzte gültige Temperatur an oder die _gerade
> aktuell_ gemessene?

Hi Manfred,

ungültige Werte (d.h. solche, deren CRC-Code nicht stimmt) werden, wenn 
es sich um den Kühlschrankfühler handelt, sofort verworfen und neu 
gemessen; wenn es sich um den Außen- oder den Fühler auf der Platine 
handelt, einfach ignoriert (übersprungen, d.h. der vorherige Wert bleibt 
solange stehen).

Man könnte natürlich Statistik machen, jeweils einen Zähler für gute und 
einen für faule Werte erzeugen und zueinander ins Verhältnis setzen ...

Ich dachte, ein Wohnwagen hat ja eine Aluminiumhaut, da sollten nicht so 
viele Störungen vorhanden sein das es relevant wird.

Gruß Tilmann

von Manfred (Gast)


Lesenswert?

Tilmann W. schrieb:
> ungültige Werte (d.h. solche, deren CRC-Code nicht stimmt) werden, wenn
> es sich um den Kühlschrankfühler handelt, sofort verworfen und neu
> gemessen;

Fehler! Zeige jeden Wert an, um zu erkennen, ob Patricks Vermutung 
zutreffend ist:
Patrick J. schrieb:
> In der Zeit, wo keine gültigen Messwerte kommen, wird auch NICHTS
> Anderes gemacht, als neue Messwerte einzulesen - das Fehlerbild würde
> GENAU Dem von Dir Beschriebenem entsprechen.

von Marc H. (marchorby)


Lesenswert?

Frage:

Es ist doch ein Peltier-Kühlschrank?

Ein Ausschalten koppelt doch quasi die Kaltseite mit der Warmseite?

Muss man bei Peltier nicht den Strom herunter regeln anstatt es 
auszuschalten?

von Tilmann W. (tilmann)


Lesenswert?

Hallo Manfred,

das wäre schon eine Idee, wenn ein CRC nicht stimmt, anstelle eines 
Meßwertes z.B. "CRC" einzublenden, um Eindrücke zu bekommen.

@ Marc Horby: Kein Peltier (die sind extrem ineffizient) sondern 
Kompressor.

Gruß Tilmann

: Bearbeitet durch User
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.