-
-
Erfahrener Benutzer
Begeisterter Techniker
Hi jgueth,
zu Deinem 2. Absatz. Da liegt der Fehler. Es treten sowohl innen als auch aussen immer ein positiver UND ein negativer Peak auf! Nur die Abfolge hängt von innen und aussen ab.
Deshalb steht in der Programmschleife
If Svr > Max0 Or Svr < SMin0 then ....
D.h. es wird der erste Peak, egal ob positiv oder negativ erfasst. Dann wird die Programmschleife verlassen und es werden die Sensorwerte des ersten Peaks bestimmt.
Je nachdem ob dieser pos oder neg ist, ist´s innen oder aussen. ms danach kommt der 2.Peak, der einfach ignoriert wird. Mit den 2 Interrupts ist´s letztlich das gleiche. Man muss feststellen welcher Interrupt als erster ausgelöst wird. Der 2. Interrupt, wenige ms später kann ignoriert werden. Programmtechnisch kann man das machen, indem man ein flag (mögliche Werte 0 oder 1) verwendet. Bei Interrupt wird flag = 1 gesetzt. Interrupt wird nur verarbeitet falls flag=0. Zwischendurch wird im Programm flag auf 0 zurückgesetzt.
For I = 1 To 2000
Svr = S0 '1. Sensor wird gemessen
If Svr > Max0 Or Svr < Min0 Then 'Wert ausserhalb Grenzwert>Impuls
Svr = S0 : Exit For 'Sensorwerte bei Impuls erfassen
End If
Next
Zwischendurch habe ich auch versucht diesen 2. Peak zu minimieren (MichaelM´s Weg, Ansatz mit Einbrechen der Spannung). Den 2.Peak habe ich aber nie ganz richtig weg bekommen. Deshalb bin ich wieder zur ursprünglichen Idee zurück und finde der 2. Peak kann ganz nützlich sein, um die Impulsbreite zusätzlich bestimmen zu können.
gruss
Christian
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen