mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hysterese: Temperaturschalter entkopplung


Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

ich habe ein termometer mit einer genauigkeit von 0.1 grad aufgebaut.

jetzt möchte ich bei einer bestimmten temperatur einen schlatvorgang 
auslösen...

zusätzlich willl ich vermeiden, das dieser jetzt die ganze zeit ein und 
aus schaltet wenn sich die temperatur im bereich der schlatschwelle 
bewegt...

ich stelle mir eine funktion vor, die die schalttemperatur, die 
hysterese und die aktuelle temp übergeben bekommt, und eine eins oder 
null zurückgibt...

z.b: aktuelle temp =14,3 grad
schalttemp 15,0 grad +/- 0,5grad

maddin

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, und. Wo liegt das Problem?

  if( aktuelle_Temp > Schalttemp + Hysterese )
    return Schalte_Aus;
  else if( aktuelle_Temp < Schalttemp - Hysterese )
    return Schalte_Ein;
  else
    return Mach_nichts;

Der Schluessel liegt in der Erkenntnis, dass es insgesamt
3 Zustände gibt:
  Schalte_Aus
  Schalte_Ein
  Mach_nichts : Was immer momentan Sache ist, eingeschaltet
                oder ausgeschaltet, behalte den Zustand bei.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann das dann auch mithilfe einer globalen Variablen
zusammenfassen
uint8_t Derzeitig;

uint8_t NeuerZustand( uint8_t Temp, uint8_t Schalttemp, uint8_t Hysterese )
{
  if( Temp > Schalttemp + Hysterese )
    Derzeitig = AUS;
  else if( Temp < Schalttemp - Hysterese )
    Derzeitig = EIN;

  return Derzeitig;
}

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn die tempertur in dem obigen bsp steigt, soll er bei 15,0 grad 
einschalten...

wenn die temperatur über 15,0 plus hyst steigt, soll er, wenn sie wieder 
fällt, auch bei 15,0 grad wieder ausschalten..

wenn die temperatur allerdings nicht über 15,0 grad plus hyst steigt, 
soll er erst bei 15,0 grad - hyst schalten, usw...

das ganze wird recht komplex, und da dachte ich, evtl hat schonmal 
jemand das selbe problem gelöst...

im grunde genommen, soll er wirklich immer genau bei der eingetsellten 
temp schalten, ausser wenn die temperatur den angegebenen "trägen 
bereich (ich dachte dies ist hysterese)" nicht in einem durchgang 
verlässt, sie also um den schaltbereich schwankt...dann soll darauf 
reagiert werden wie sie ihn verlässt

ich hoffe man kann das verstehen....

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maddin wrote:
> wenn die tempertur in dem obigen bsp steigt, soll er bei 15,0 grad
> einschalten...
>
> wenn die temperatur über 15,0 plus hyst steigt, soll er, wenn sie wieder
> fällt, auch bei 15,0 grad wieder ausschalten..
>
> wenn die temperatur allerdings nicht über 15,0 grad plus hyst steigt,
> soll er erst bei 15,0 grad - hyst schalten, usw...
>

 if( Temp > 15 ) {
   OffTemp = 15 - Hysterese
   Schalte_EIN
 }

 if( Temp > 15 + Hyster ) {
   OffTemp = 15
   Schalte_EIN
 }

 if( Temp < OffTemp )
   Schalte_AUS

So ungefähr?

Autor: Maddin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl Heinz,

dank dir für die schnellen antworten, doch leider ist das ganze nicht so 
trivial...

ich habe im anhang mal ein bildchen, evtl verdeutlicht das was ich 
meine.

tut mi leid, das ich es nicht gleich mit angehängt habe, aber ich dachte 
hysterese erklärt mein problem ausreichend....

das ganze muss warscheinlich eine art state maschine sein, die sich den 
temperaturverlauf merkt, um dann entsprechend zu reagieren....

ich dachte, vielleicht hat jemand einen schönen code der genau dieses 
problem löst...

maddin

Autor: Maddin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
...ach ja, was dieses problem der state  maschine noch verschlimmert ist 
die tatsache das die temp werte auch noch sehr weit auseinander liegen 
können.... sie also nicht langsam durch die hyst  wandern müssen... und 
somit dann ausserhalb liegen...

dann müssen in der state maschine gleich mehrere stati durchlaufen 
werden...

aber evtl. habe ich da ja aúch noch einen denkfehler...oder vielleicht 
kann man das ja auch noch einfacher lösen...

maddin

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In deiner Grafik widerspricht sich erste Zeile / Links
mit zweiter Zeile / rechts

In beiden Fällen kommt die Temp-Kurve von oberhalb
der Hysterese, sinkt unter die Schalttemperatur
unterschreitet aber nicht die untere Hysteresegrenze
und steigt wieder an.

Nur einmal wird bei der Schaltschwelle geschaltet
und einmal bei der oberen Hystereseschwelle

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch noch mal klarer zu beschreiben,
wenn denn nun welche Schaltgrenze gilt.
Das führt dich dann auch zu den richtigen
Abfragen.

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

...die wiedersprechen sich nicht...

in der ersten zeile links wird das ganze voll durchlaufen, also es wird 
jedes mal die hysterese verlassen...

in der zeichnung 2te zeile rechts, wird sie druchlaufen, aber nicht 
verlassen, letztendlich wird sie dann nach unten verlassen, in dem fall 
muss ich auf der unteren schwelle der hyst schalten, da das ganze nur so 
einen sinn ergibt... ansonsten bräuchte ich keine hysterese, da dann 
immer geschaltet werden würde...

m.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.