Forum: Mikrocontroller und Digitale Elektronik Realisierung Schaltregler mit Hysterese


von Meier (Gast)


Lesenswert?

hallo,

kann mal jemand bitte um nachfolgende Funktion drüber schauen, ob diese 
so korrekt ist? Oder ob ich vielleicht irgendwas bzw. irgendeinen Fall 
übersehen bzw. vergessen habe?

Möchte eine Schaltregler mit Hysterese realisieren, wobei die beiden 
Schaltschwelle variabel einstellbar sein sollen.

1
uint8_t hystereseregler(int16_t istwert, int16_t sollwert, int16_t hysterese1, int16_t hysterese2)
2
{
3
  //alle Input-Parameter im Format S(11,4)
4
  
5
  static uint8_t stellwert;
6
  
7
  if(istwert<(sollwert-hysterese1))
8
  {
9
    stellwert=1;
10
  }
11
  
12
  else if(istwert>=(sollwert+hysterese2))
13
  {
14
    stellwert=0;
15
  }
16
  
17
  return stellwert;
18
}

von Ben (Gast)


Lesenswert?

Du hast einen undefinierten Startwert, wenn ich das richtig überblicke. 
Wenn der istwert sehr nahe am sollwert dran ist, also innerhalb der 
Hysterese, dann kriegst du den initialisierungswert von stellwert. Und 
den weiß nur der liebe gott!

von Meier (Gast)


Lesenswert?

Welchen Startwert würdest du jetzt daher vorgeben? 0 oder 1?

Ich würde zur 0 tendieren, da sich der Istwert in diesem Fall ja schon 
bereits innerhalb der Schaltdifferenz vom Sollwert befindet.
Korrekt so?

von Karl H. (kbuchegg)


Lesenswert?

Meier schrieb:
> Welchen Startwert würdest du jetzt daher vorgeben? 0 oder 1?

Der der in deiner Anwendung sinnvoll ist.

> Ich würde zur 0 tendieren, da sich der Istwert in diesem Fall ja schon
> bereits innerhalb der Schaltdifferenz vom Sollwert befindet.
> Korrekt so?

Wenn dir 0 gefällt und das in deiner Situation sinnvoll ist, dann nimm 
ihn.

In dem Fall gibt es kein richtig oder falsch. Der Sinn der Hysterese ist 
es ja einen Bereich zu schaffen, in dem man keine gesicherte ja/nein 0/1 
Aussage treffen kann, sondern pragmatisch einfach den letzten Zustand 
weiter beibehält, damit sich kleine Schwankungen rund um den Schaltpunkt 
nicht verheerend in Dauerschalten auswirken.

Normal nimmt man einfach den Wert, der (wenn er falsch ist), den 
geringeren Schaden anrichtet.
Wenn es zb um Raumtemperaturen in einem Wohnraum geht und der Schaltwert 
Heizung ein/aus bedeutet, dann nehm ich den Wert, bei dem die Heizung 
aus ist. Denn sind die beiden Temperaturen sowieso schon bei 20°, greift 
also die Hysterese, dann kann ich nach dem Online-gehen des µC die 
Raumtemperatur ruhig um die 2° Hysterese absinken lassen, ehe dann der 
Brenner feuert. Auf der anderen Seite will ich aber nicht haben, dass 
nach dem Einschalten des µC der erst mal den Raum sinnlos von 20° auf 
23° hochheizt, nur damit er erstmalig aus der Hysterese rauskommt.

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.