Hysterese programmieren

tasili
Benutzer
Avatar
Gender: n/a
Posts: 75
Registered: 02 / 2007
Subject:

Hysterese programmieren

 · 
Posted: 04.09.2011 - 18:10  ·  #1
Hallo,
wie programmiere ich eine Hysterese?
Also ich benötige das für eine Akkuausgleichsschaltung.
Also
Wenn Akku 1 > Akku2 dann
Wenn Akku 1 > Akku 3 dann
Wenn Akku 2 > Akku 1 dann
etc...
Das alles benötige ich aber zusätzlich halt noch mit einer Hysterese..also
Wenn Akku 1 > Akku2 +- 0,1V dann
Wenn Akku 1 > Akku 3 +- 0,1V dann
Wenn Akku 2 > Akku 1+- 0,1V dann

Da die Schaltung sonst nie fertig wird was natürlich nicht sehr zweckmäßig ist...
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Hysterese programmieren

 · 
Posted: 04.09.2011 - 20:26  ·  #2
Hi,
ich vermute Du suchst die Funktion ValueInTolerance
Oder halt zufuss:

if abs(Akku1-Akku2) <= 0,1 then //im Limit

Gunter
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1373
Registered: 03 / 2005
Subject:

Re: Hysterese programmieren

 · 
Posted: 05.09.2011 - 11:26  ·  #3
Hi.

If you think about it,

Wenn Akku1 > Akku2 +- 0,1V dann

makes no sense. It should be

If Akku1 > (Akku2 + 0.1) then // (probably, if hysterisis required), with the complementary test

If Akku1 < (Akku2 - 0.1) then

These are probably implied 'reals' with actual values fom the ADC. If si, some care needs to be taken with

if abs( Akku1 - Akku2 ) < ....

This works if Akku1 and Akku2 are signed (such as real, integer, etc) but not necessarily for unsigned. For example, with bytes,

if abs( 0 - 255 ) < 2 then

evaluates to TRUE! (because of wrap around).

Regards

Merlin.
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 14 · Cache Hits: 14   61   75 · Page-Gen-Time: 0.016271s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI