Forum: Mikrocontroller und Digitale Elektronik Algorithmus und Denkproblem


von Fragender (Gast)


Lesenswert?

Hallo zusammen

Es existiert ein Wert zB v=1500 der um +-20 stets variiert.
Jetzt möchte ich eine Aktion ausführen, die von der Wertänderung v 
abhängt. Also wenn der Wert um mehr als 200 sinkt, soll eine Aktion 
ausgeführt werden. Das ist ja kein Problem und kann einfach 
implementiert werden. Jetzt ist es aber so, dass sich der Wert mit der 
Temperatur ändert und v = 2000 sein kann. (Die Temperatur kann ich nicht 
beeinflussen, auch nicht die Umgebung.)Nun habe ich mir überlegt, die 
Differenz des Wertes zu berechnen und das Ergebnis für die Auslösung der 
Aktion zu verwenden.
Angenommen ich nehme den Wert v=1500, der um +-20 variiert und scanne 
den
Wert alle 1ms und speichere ihn in einer Variable ab. Dann habe ich
immer den letzten aktuellen Wert v gespeichert.
Jetzt nehmen wir wirklich an, dass sich der Wert um 200 Punkte
geändert hat (gesunken ist) und mehr als 1ms anhält. Dann würde 
spätestens nach 1ms, keine Detektion erkannt werden, da der zuletzt 
gespeicherte Wert auf den aktuellen Wert geändert wurde. Jetzt könnte 
ich die Zeit ändern auf zB 5 Sekunden oder sogar 10. Dann würde das 
besser funktionieren.
Etwas konkreter: Ich habe ein Blech, das vor einen Sensor fährt und den 
oben genannten Wert ändert.
Sagen wir er hält jetzt eine Ganze Weile vor dem Sensor an. Nun soll 
auch die Detektion für die jeweilige Zeit anhalten. Nach 10s würde aber 
der gespeicherte Wert wieder aktualisiert werden und die Differenz 
wieder 0. Das Blech wird somit nicht mehr erkannt. Und im anderen Fall 
wenn angenommen das Blech 10s anhält, der gespeicherte Wert auf den 
aktuellen Wert geändert wird und gleich danach sich das Blech wieder 
wegbewegt, dann habe ich das Problem, dass der gespeicherte Wert für die 
nächsten  10s kleiner ist als der aktuelle Wert. Die Differenz ist dann 
negativ. Mit uint's gibt das ja wieder ein Problem.

Habt ihr einen Tipp für mich und könnt mir aus dem Dilemma helfen?

von Stefan F. (Gast)


Lesenswert?

Entschuldigung, ich meine das nicht böse: Du solltest erstmal deine 
Gedanken sortieren. Beschreibe

a) die Aufgabenstellung aus High-Level Sicht (so wie es deine Frau oder 
Schwester verstehen würde)
b) den technischen Lösungsansatz
c) die erkannten Probleme

Ich habe massive Probleme, deinen Text zu verstehen. Und ich denke, du 
auch.

von Flip B. (frickelfreak)


Lesenswert?

speichere als auslöseschwelle den durchschnittswert über eine längere 
zeit, z.b. 2min.

von Wilhelm M. (wimalopaan)


Lesenswert?

Stichwort: gleitender Mittelwert

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefanus F. schrieb:
> Ich habe massive Probleme, deinen Text zu verstehen.
Weil hier auch viele unterschiedliche Abstraktionsebenen (vom Blech bis 
zum uint) plattgeklopft und gleichgestellt werden.

Bleiben wir mal einfach auf der Signalebene: zeichne doch mal eine 
Skizze mit einem normalen und einem kritischen Signalverlauf und 
beschreibe, was da passieren soll.

Ob für diese Berechnung letztlich dann ein Timer oder ein uint oder 
sonstwas benötigt wird, das wird dann bei der Umsetzung abgevespert...

von fop (Gast)


Lesenswert?

Hm, Signal rein in einen Tiefpass. Signal mit Ausgang Tiefpass 
vergleichen.
Wenn Hüpfer nach unten, Variable auf Blech da setzen. Wenn Hüpfer nach 
oben, Variable auf Blech weg setzen.

War bestimmt jetzt genauso verständlich wie die Aufgabenstellung. ;-)

von Georg M. (g_m)


Lesenswert?

Fragender schrieb:
> Nach 10s würde aber
> der gespeicherte Wert wieder aktualisiert werden und die Differenz
> wieder 0. Das Blech wird somit nicht mehr erkannt.

Präsenzmelder sind generell wesentlich komplizierter als 
Bewegungsmelder.


Fragender schrieb:
> Die Differenz ist dann negativ.

Das ist auch gut so. Wie sonst soll man die Veränderungsrichtung 
erkennen?

von Fabian (Gast)


Lesenswert?

Nimm zwei gleitende Mittelwerte. Einen der viele Werte beinhaltet und 
entsprechend langfristig mittelt und einen der nur wenige Werte 
mittelte. Die Differenz zwischen den beiden Mittelwerten kannst Du mit 
einem Schwellwert vergleichen.

von fop (Gast)


Lesenswert?

> Nimm zwei gleitende Mittelwerte.
Das wäre eine Form des Tiefpasses. Du hast Recht, er kann ruhig zwei 
nehmen, damit einzelne Fehlmessungen nicht gleich auch Fehler am Ausgang 
verursachen.

> Die Differenz zwischen den beiden Mittelwerten kannst Du mit
> einem Schwellwert vergleichen.
Genau da braucht er 2 Vergleichswerte. Einen im Positiven und einen im 
Negativen. Ok, man könnte auch sagen, er schaltet mit einer großen 
Hysterese.
Alles läuft daraus hinaus, dass er den letzten Ausgangszustand 
beibehält, wenn der Betrag der Differenz nahe 0 ist.

von Stefan F. (Gast)


Lesenswert?

fop schrieb:
> Signal rein in einen Tiefpass....
> Wenn Hüpfer nach unten, Variable auf Blech da setzen. Wenn Hüpfer nach
> oben, Variable auf Blech weg setzen.
>
> War bestimmt jetzt genauso verständlich wie die Aufgabenstellung. ;-)

Ich hab das auf jeden Fall besser verstanden. Fehlt nur noch die 
Aufgabenstellung.

von Fragender (Gast)


Lesenswert?

Fabian schrieb:
> Nimm zwei gleitende Mittelwerte. Einen der viele Werte beinhaltet
> und entsprechend langfristig mittelt und einen der nur wenige Werte
> mittelte. Die Differenz zwischen den beiden Mittelwerten kannst Du mit
> einem Schwellwert vergleichen.

Ich werde das mal versuchen umzusetzen.

Stefanus F. schrieb:
> Entschuldigung, ich meine das nicht böse: Du solltest erstmal
> deine Gedanken sortieren. Beschreibe
>
> a) die Aufgabenstellung aus High-Level Sicht (so wie es deine Frau oder
> Schwester verstehen würde)
> b) den technischen Lösungsansatz
> c) die erkannten Probleme
>
> Ich habe massive Probleme, deinen Text zu verstehen. Und ich denke, du
> auch.

Ich werde es machen, sobald ich mehr Zeit habe.

fop schrieb:
> Nimm zwei gleitende Mittelwerte.
>
> Das wäre eine Form des Tiefpasses. Du hast Recht, er kann ruhig zwei
> nehmen, damit einzelne Fehlmessungen nicht gleich auch Fehler am Ausgang
> verursachen.

Was hat das jetzt mot einem Tiefpass genau zu tun? Das verstehe ich 
irgendwie nicht.
Das variierende Signal existiert bei mir auf Softwarebasis.

fop schrieb:
> Hm, Signal rein in einen Tiefpass. Signal mit Ausgang Tiefpass
> vergleichen.
> Wenn Hüpfer nach unten, Variable auf Blech da setzen. Wenn Hüpfer nach
> oben, Variable auf Blech weg setzen.
>
> War bestimmt jetzt genauso verständlich wie die Aufgabenstellung. ;-)

Ok, koenntest du trotzdem mal erklaeren, wie ich das auf Softwarebasis 
machen soll und warum ich einen TP am Eingang mit dem am Ausgang 
vergleichen muss?

von Fragender (Gast)


Lesenswert?

Fragender schrieb im Beitrag
>
> Ok, koenntest du trotzdem mal erklaeren, wie ich das auf Softwarebasis
> machen soll und warum ich einen TP am Eingang mit dem am Ausgang
> vergleichen muss?

Ich weiss zwar was ein TP etc. ist, aber wie man es in meinem Fall genau 
anwendet, wuerde mir vorerst genuegen, wenn ich etwas zum Nachlesen 
haette.

von Wolfgang (Gast)


Lesenswert?

Fragender schrieb:
> Etwas konkreter: Ich habe ein Blech, das vor einen Sensor fährt und den
> oben genannten Wert ändert.
> Sagen wir er hält jetzt eine Ganze Weile vor dem Sensor an. Nun soll
> auch die Detektion für die jeweilige Zeit anhalten.

Dann braucht deine Sensorelektronik also eine zusätzlich Information, 
wann er (wer ist das?) anhält und darf in dieser Zeit nicht messen bzw. 
muss die Daten anders auswerten.

von Wolfgang (Gast)


Lesenswert?

Fragender schrieb:
> Das variierende Signal existiert bei mir auf Softwarebasis.

Dann filtere das Signal auch auch Softwarebasis.

Ein Medianfilter ist bei Ausreißern allerdings immer günstiger als ein 
gleitender Mittelwert, der ein stümperhaftes Tiefpassfilter darstellt.

von Michael B. (laberkopp)


Lesenswert?

Fragender schrieb:
> keine Detektion erkannt

Geil.

Du weisst was Detektion heisst, du weisst was erkennen heisst ?

Fragender schrieb:
> könnt mir aus dem Dilemma helfen?

Kein Computer kann unlogische Schlusssfolgerungen ziehen.

Fragender schrieb:
> Was hat das jetzt mot einem Tiefpass genau zu tun? Das verstehe ich
> irgendwie nicht.
> Das variierende Signal existiert bei mir auf Softwarebasis.

Die Funktion des Tiefpasses kann man auch in Software abbilden, heisst 
dann gleitender Mittelwert.


Du möchtest scheinbar erkennen, ob sich ein Wert um mehr als 10% ändert 
der sich sonst nur um 1% ändert. Kein Problem. Aber was soll nun der 
Wert von 2000, also 25% mehr ? Geht es dir um die Erkennung einer 
langsamen Änderung vs. einer schnellen Änderung ? Die wäre kein Problem. 
Geht es dir um Erkennung einer Änderung wegen Temperaturänderung zu 
unterscheiden wegen einer Änderung wegen Annäherung ? Das ist ein 
Problem, da es für den Sensor dasselbe ist, woher soll der ahnen was die 
Änderung verursacht hat, dann solltest du wohl noch die Temperatur 
messen.

von HildeK (Gast)


Lesenswert?

Michael B. schrieb:
> Du möchtest scheinbar erkennen, ob sich ein Wert um mehr als 10% ändert
> der sich sonst nur um 1% ändert. Kein Problem. Aber was soll nun der
> Wert von 2000, also 25% mehr ? Geht es dir um die Erkennung einer
> langsamen Änderung vs. einer schnellen Änderung ? Die wäre kein Problem.

So verstehe ich die Aufgabe auch. Das 1% wegen einem Temperaturdrift und 
die 10% wegen der Annäherung durch das Blech.

Wenn dem so ist:
- die Messwerte in einen Ringpuffer schreiben, ggf. über Median- oder 
Mittelwertfilter die kleinen Ausreißer eliminieren.
- den aktuellen mit dem ältesten vergleichen und wenn die Ablage 
entsprechend groß ist, reagieren.

Das bringt zwar eine Verzögerung von Messrate * Ringpufferlänge, aber ob 
das akzeptabel ist, hängt auch von der Geschwindigkeitsdifferenz der 
langsamen und schnellen Änderungen ab und von der Frage, wie schnell 
reagiert werden muss.

Fragender schrieb:
> Die Differenz ist dann
> negativ. Mit uint's gibt das ja wieder ein Problem.

Es gibt ja auch "int" und man kann den Betrag berechnen.

von HildeK (Gast)


Lesenswert?

HildeK schrieb:
> Das 1% wegen einem Temperaturdrift und
> die 10% wegen der Annäherung durch das Blech.

Quatsch.
Die Änderung von 1% ist das Rauschen bei der Erfassung --> Filter
Die Änderung von absolut 200 erfolgt durch das Blech --> Vergleich des 
ältesten Werts mit dem neuesten Wert aus Ringpuffer.
Die Änderung von 1500 auf 2000 und umgekehrt ist verursacht durch den 
Temperaturdrift und vergleichsweise langsam. Dadurch haben die Werte im 
Puffer ohne die Änderung des Blechs praktisch den selben Wert, 
jedenfalls viel kleiner als durch die Änderung des Blechs hervorgerufen 
würde.

Jetzt bräuchte man noch die Zeiten dieser Änderungen.

von Wolfgang (Gast)


Lesenswert?

HildeK schrieb:
> Die Änderung von 1500 auf 2000 und umgekehrt ist verursacht durch den
> Temperaturdrift und vergleichsweise langsam.

Es sei denn, er hält eine ganze Weile an ...

von HildeK (Gast)


Lesenswert?

Wolfgang schrieb:
> Es sei denn, er hält eine ganze Weile an ...

Die Temperaturänderung muss halt so langsam sein, dass zwischen ersten 
und letzten Eintrag im Ringpuffer die Differenz (deutlich) kleiner ist 
als die Änderung, die durch das Annähern/Entfernen des Blechs erfolgt.
Sie kann natürlich auch viel größere/kleinere Werte annehmen, wichtig 
ist dabei: langsam, damit ein Durchlauf des Ringpuffers aus 
Temperaturgründen praktisch den selben Wert enthält.

Ich hab ähnliches mal implementiert, um meine 
Warmwasser-Zirkulationspumpe zu aktivieren. NTC am WW-Steigrohr nahe am 
Boiler. Der Wert ändert sich schnell, wenn mal kurz der Wasserhahn mit 
Warmwasser geöffnet wird und über den NTC die 'schnelle' Änderung 
erkannt wird. Dann schalte ich die Pumpe für einige Minuten an.

Aber vielleicht ist beim TO alles ganz anders, ich tat mich auch schwer, 
die Aufgabe zu verstehen.

von Fragender (Gast)


Lesenswert?

HildeK schrieb:
> HildeK schrieb:
> Das 1% wegen einem Temperaturdrift und
> die 10% wegen der Annäherung durch das Blech.
>
> Quatsch. Die Änderung von 1% ist das Rauschen bei der Erfassung -->
> Filter
> Die Änderung von absolut 200 erfolgt durch das Blech --> Vergleich des
> ältesten Werts mit dem neuesten Wert aus Ringpuffer.
> Die Änderung von 1500 auf 2000 und umgekehrt ist verursacht durch den
> Temperaturdrift und vergleichsweise langsam. Dadurch haben die Werte im
> Puffer ohne die Änderung des Blechs praktisch den selben Wert,
> jedenfalls viel kleiner als durch die Änderung des Blechs hervorgerufen
> würde.
> Jetzt bräuchte man noch die Zeiten dieser Änderungen.

HildeK du hast es begriffen.

Scheinbar wissen die meisten wirklich nicht worum es geht.

Also, ich versuchs mal
Problem:
Der Sensorwert, den ich Auslese variiert +-20 (Rauschen)
Wenn das Geraet eingeschaltet wird bei Raumtemperatur, liefert der 
Sensor Werte um 1500.
Im Betrieb ueber eine Zeit ca. nach 30min bis 1h steigt T von 20 auf 
etwa 60-90 Grad. Der Sensorwert damit kontinuierlich von 1500 auf 
annaehernd 2000.

Aufgabe:
Ich moechte vom Einschaltzeitpunkt bis zum stabilen Zustand (gesamter 
Betriebsbereich) stets Wertaenderungen >200 detektieren koennen. Das 
sind schnelle Aenderungen durch das Blech.

von Stefan F. (Gast)


Lesenswert?

Fragender schrieb:
> Der Sensorwert damit kontinuierlich von 1500 auf annaehernd 2000.
Ich glaube in diesem Satz hast du das Rauschen vernachlässigt.

> stets Werteaenderungen >200 detektieren
Was genau heisst stets?

> Scheinbar wissen die meisten wirklich nicht worum es geht.
Gut erkannt. Du hast die Aufgabe nicht beschrieben, sondern einen 
Lösungsansatz. Wir können nicht feststellen, ob der Lösungsansatz zur 
Aufgabenstellung passt, ohne die Aufgabenstellung zu kennen.

Lautet die Aufgabenstellung so?:

Ein Distanz-Sensor liefert Messwerte als Integer Zahl. Dem Messergebnis 
ist ein geringer Rauschanteil und eine Temperatur-Drift überlagert. Das 
Programm soll reagieren, wenn sich Distanz des Objektes schnell ändert.

Der Sensor liefert numerische Werte im Bereich: xxx bis yyy
Der Rauschanteil liegt im Bereich: +/- xxx
Die Temperatur Drift durch Erwärmung beträgt xxx verteilt auf xxx 
Minuten
Die Schaltschwelle für "schnelle Bewegung" soll sein: 200 innerhalb xxx 
Minuten

Bitte ergänze die fehlenden zahlen.

von HildeK (Gast)


Lesenswert?

Ok, dann wäre das geklärt.
Dann ist auch mein Vorschlag mit dem Ringpuffer sinnvoll.

Es wäre jetzt noch wichtig, wie schnell und wie langsam sich der 
Sensorwert ändern kann - die Grenzwerte.
Die größte Änderungsgeschwindigkeit bestimmt, wie oft du den Sensor 
lesen musst, um alles mitzubekommen. Also die Abtastrate.
Die kleinste Änderungsgeschwindigkeit sollte noch deutlich schneller 
sein, als die Temperaturänderung, sonst wird es schwierig.
Aus der langsamsten Sensoränderung und der genannten Abtastrate bestimmt 
sich die Länge des Ringpuffers.
Dabei musst du dir aber bewusst sein, dass die langsameren Änderungen 
des Sensorwertes durch die in der Zeit sich ändernde Temperatur leicht 
verfälscht werden und auch zu einer Verzögerung der Ausgangsreaktion 
führen können.

Zu dem Rauschanteil:
- 1. Möglichkeit: drei oder 5 Werte (ungeradzahlig) schnell erfassen, in 
ein Feld schreiben und der Größe nach sortieren. Der Wert im mittleren 
Feldelement ist der Median.
- 2. Möglichkeit: 2 oder 4 Werte erfassen (geradzahlig, Teilen ist 
Shiftoperation), aufaddieren und durch 2 bzw. 4 wieder teilen --> 
Mittelwert.

von Fragender (Gast)


Lesenswert?

Stefanus F. schrieb:
> Fragender schrieb:
> Der Sensorwert damit kontinuierlich von 1500 auf annaehernd 2000.
>
> Ich glaube in diesem Satz hast du das Rauschen vernachlässigt.

Nein habe ich nicht. Ich habe: Der Sensorwert, den ich Auslese variiert 
+-20 (Rauschen)
geschrieben. Das gilt wenn der Sensor zB bei T 35 Werte v=1700 bringt, 
aber auch zB bei T 75 v=1900 oder T90 v=2000 liefert. Er driftet immer 
v+-20. Ist halt einfach ein Rauschen.

> stets Werteaenderungen >200 detektieren
>
> Was genau heisst stets.

Heisst immer. Ich will dass der Sensor das Blech erkennt wenn es gerade 
eingeschaltet wurde und bei RT 20 grad v1500 liefert, aber auch wenn es 
eine Zeit laeuft und T halt nicht mehr bei RT ist sondern zB  T 80 
betraegt und v zB 1800 liefert.
Ich will es temp. unabhaengig machen, also bringt es mir herzlich wenig, 
wenn ich definiere: if v_gespeichert minus v_aktuell > 200
in Zahlen also 1500-1400 > 200

Denn wenn mir dann der aktuelle Wert auf sagen wir auf angenommen 1550 
oder 1600 steigt oder noch hoeher stimmt mir die Auswertung nicht mehr. 
Ausserdem darf der gespeicherte Wert auch nicht so schnell aendern wie 
der aktuelle Wert.
Wenn aber der aktuelle Wert einmal laenger anhaelt, soll der 
gespeicherte Wert aber auch nicht, auch wenn es ein Mittelwert ist, 
nicht in die Richtung des aktuellen Werts wandern, da sonst auch eine 
Differenz kleiner als 200 werden wird. Verstehst du jetzt mein Problem?

> Lautet die Aufgabenstellung so?:
>
> Ein Distanz-Sensor liefert Messwerte als Integer Zahl. Dem Messergebnis
> ist ein geringer Rauschanteil ueberlagert. Das
> Programm soll reagieren, wenn sich ein Blech naehert und der aktuelle Wert sich 
damit ploetzlich um groesser 200 reduziert.
>
> Der Sensor liefert numerische Werte im Bereich: 0 bis 4096
> Der Rauschanteil liegt im Bereich: +/- 20
> Die Temperatur Drift durch Erwärmung beträgt ca 500 Punkte im gesamten 
Betriebsbereich ( 2000 max
>
> Minuten
> Die Schaltschwelle für "schnelle Bewegung" soll sein: 200 fuer immer. Ich 
moechte keine zeitliche Beschraenkung.
Die Idee weiter oben bei Detektion Messungen zu stoppen fand ich 
irgendwie gut.
>

von Fragender (Gast)


Lesenswert?

Ich habe uebrigens die xxx oben im Zitat angepasst

Am Schluss meinte ich 500 Punkte also 2000-1500

von Stefan F. (Gast)


Lesenswert?

Deine Aussage, dass sich der Wert kontinuierlich von 1500 nach 2000 
ändert, schliesst das Rauschen aus. Das Rauschen wird bewirken, dass der 
Messwert ständig hich und runter zappelt, also eben NICHT 
kontinuierlich. Wenn du diesen Effekt in der Software ignorierst, wird 
sie nicht funktionieren.

Korrekt heisst es so: Der Messwert steigt im Mittel von 1500 nach 2000, 
ihm ist jedoch ein Rauschanteil von +/- 20 überlagert. Den Rauschanteil 
bekommst du durch einen gleitenden Mittelwert weitgehend heraus 
gerechnet.

Da deine Messung temperaturabhängig ist, deine Auswertung aber ohne 
Berücksichtigung der Temperatur stattfinden soll, bleibt wohl nur noch 
die bereits vorgeschlagene Lösung über die Geschwindigkeit. Die Bewegung 
kann eindeutig von der Temperaturdrift unterschieden werden, wenn sie 
eindeutig schneller ist.

Das heisst im Umkehrschluss aber auch, dass du langsame Bewegungen nicht 
erkennen kannst. Jedenfalls nicht, ohne einen Temperaturfühler an 
geeigneter Stellen anzubringen und eine Tabelle oder Formel 
einzubringen, die den Temperaturdrift für jede mögliche Temperatur 
liefert, damit du diese vom Messwert des Distanz-Sensors subtrahieren 
kannst.

Deiner weiteren Beschreibung entnehme ich, dass du die Differenz von 200 
unabhängig von Zeit, Geschwindigkeit und Temperatur erfassen willst. Das 
geht nicht.

Man kann die Kurve nicht gerade bekommen.

von Thomas (Gast)


Lesenswert?

Ich habe dich so verstanden,dass du nur erkennen willst Blech da oder 
Blech weg.

Du hast einen Referenzwert der sich mit der Zeit verschiebt. Für diesen 
Referenzwert bietet es sich an den Mittelwert auszurechnen. Der absolute 
Wert verschiebt sich langsam ist ist aber für deine Detektion als 
Konstante anzusehen. Irgendwanm hast du ein grosses delta wenn das 
negativ ist ist das Blech da, ist es possitiv ist das Blech weg. Damit 
toggelst du einfach eine Variable.

Thomas

von HildeK (Gast)


Lesenswert?

Fragender schrieb:
> Wenn aber der aktuelle Wert einmal laenger anhaelt, soll der
> gespeicherte Wert aber auch nicht, auch wenn es ein Mittelwert ist,
> nicht in die Richtung des aktuellen Werts wandern, da sonst auch eine
> Differenz kleiner als 200 werden wird.

Vielleicht reicht es auch, nur den Sprung der Werte, hervorgerufen vom 
Sensor zu erkennen und nicht immer nur die absolute Differenz.
Also:
- Sensor hat den Wert 2000.
- Sensor macht einen Sprung auf >2200: Ereignis erkannt und gespeichert, 
entsprechende Aktion ausführen. Weitere Temperaturdrifts einfach genauso 
behandeln wie sonst auch, auch wenn dadurch der Wert langsam weiter auf 
z.B. 2400 steigt. Das wäre dann der neue Referenzwert.
- Sensor macht wieder einen Sprung, jetzt nach unten von den z.B. 
inzwischen aufgelaufenen 2400 auf <2200. Änderung >200 erkannt und neue 
Aktion ausführen.

von W.A. (Gast)


Lesenswert?

Fragender schrieb:
> Sagen wir er hält jetzt eine Ganze Weile vor dem Sensor an.

Nochmal die Frage: Was hat es mit diesem Satz auf sich?
Wie soll "eine ganze Weile anhalten" von Temperaturdrift getrennt 
werden?

von Fragender (Gast)


Lesenswert?

Thomas schrieb:
> Ich habe dich so verstanden,dass du nur erkennen willst Blech da
> oder Blech weg.

Du hast richtig verstanden.
Mir ist die Geschw. egal.

> Du hast einen Referenzwert der sich mit der Zeit verschiebt. Für diesen
> Referenzwert bietet es sich an den Mittelwert auszurechnen. Der absolute
> Wert verschiebt sich langsam ist ist aber für deine Detektion als
> Konstante anzusehen. Irgendwanm hast du ein grosses delta wenn das
> negativ ist ist das Blech da, ist es possitiv ist das Blech weg. Damit
> toggelst du einfach eine Variable.
>
> Thomas

Ich muss mir die vorschlaege zusammentragen und mal eine Umsetzung 
ueberlegen.

von Thomas (Gast)


Lesenswert?

Fragender schrieb:
> Thomas schrieb:
>> Ich habe dich so verstanden,dass du nur erkennen willst Blech da
>> oder Blech weg.
>
> Du hast richtig verstanden.
> Mir ist die Geschw. egal.

nun dann wäre es natürlich sinnvoll gewesen genau das in deine 
Eröffnungspost zu schreiben, anstatt hier alle raten zu lassen was du 
eigendlich machen willst.
Es gibt für deine Anwendung übrigens industriell gefertigte 
Näherungsschalter die genau das machen was du brauchst. Bei einem 
Einzelstück würde ich mir deshalb keinen Kopf machen und auf eine 
fertige Lösung zurückgreifen aanstatt selber was zu konstruieren.
Alternativ würde wohl auch eine Lichtschranke funktionieren.

Thomas

von Fragender (Gast)


Lesenswert?

Thomas schrieb:
> Fragender schrieb:
>> Thomas schrieb:
>>> Ich habe dich so verstanden,dass du nur erkennen willst Blech da
>>> oder Blech weg.
>>
>> Du hast richtig verstanden.
>> Mir ist die Geschw. egal.
>
> nun dann wäre es natürlich sinnvoll gewesen genau das in deine
> Eröffnungspost zu schreiben, anstatt hier alle raten zu lassen was du
> eigendlich machen willst.
> Es gibt für deine Anwendung übrigens industriell gefertigte
> Näherungsschalter die genau das machen was du brauchst. Bei einem
> Einzelstück würde ich mir deshalb keinen Kopf machen und auf eine
> fertige Lösung zurückgreifen aanstatt selber was zu konstruieren.
> Alternativ würde wohl auch eine Lichtschranke funktionieren.
>
> Thomas

Stimmt.
Aber das ist wie, wenn ich eine Hausaufgabe bekomme und sie von jemand 
anderem wie dir lösen lasse. -> Lerneffekt = 0;
Mir geht es ja um Lernen.

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.