AccelTest_Baseb
Dependencies: MMA7660 Serial_HL mbed
TP1Ord_18.h@1:0c47899d1aba, 2018-11-15 (annotated)
- Committer:
- martwerl
- Date:
- Thu Nov 15 17:22:07 2018 +0000
- Revision:
- 1:0c47899d1aba
AccelTest_Baseb
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
martwerl | 1:0c47899d1aba | 1 | |
martwerl | 1:0c47899d1aba | 2 | |
martwerl | 1:0c47899d1aba | 3 | // Digitaler Tiefpass 1er Ordnung |
martwerl | 1:0c47899d1aba | 4 | |
martwerl | 1:0c47899d1aba | 5 | class TP1Ord { |
martwerl | 1:0c47899d1aba | 6 | private: |
martwerl | 1:0c47899d1aba | 7 | float alpha; // Filter-Constante |
martwerl | 1:0c47899d1aba | 8 | public: |
martwerl | 1:0c47899d1aba | 9 | float yn_1; |
martwerl | 1:0c47899d1aba | 10 | float y; // momentaner Ausgangswert des Filters |
martwerl | 1:0c47899d1aba | 11 | public: |
martwerl | 1:0c47899d1aba | 12 | // Konstruktor wird automatisch aufgerufen wenn eine |
martwerl | 1:0c47899d1aba | 13 | // Variable der Klasse TP1Ord angelegt wird. |
martwerl | 1:0c47899d1aba | 14 | // interne Variablen sinnvoll initialisieren |
martwerl | 1:0c47899d1aba | 15 | TP1Ord(); |
martwerl | 1:0c47899d1aba | 16 | |
martwerl | 1:0c47899d1aba | 17 | // einen Abtastschritt des Filters rechnen |
martwerl | 1:0c47899d1aba | 18 | // es entsteht ein neues y |
martwerl | 1:0c47899d1aba | 19 | void CalcOneStep(float aX); |
martwerl | 1:0c47899d1aba | 20 | |
martwerl | 1:0c47899d1aba | 21 | void SetAlpha(float aAlpha); |
martwerl | 1:0c47899d1aba | 22 | }; |
martwerl | 1:0c47899d1aba | 23 | |
martwerl | 1:0c47899d1aba | 24 | TP1Ord::TP1Ord() |
martwerl | 1:0c47899d1aba | 25 | { |
martwerl | 1:0c47899d1aba | 26 | y=0; yn_1=0; |
martwerl | 1:0c47899d1aba | 27 | SetAlpha(0.1); // sinnvalles Alpha einstellen |
martwerl | 1:0c47899d1aba | 28 | } |
martwerl | 1:0c47899d1aba | 29 | |
martwerl | 1:0c47899d1aba | 30 | void TP1Ord::CalcOneStep(float aX) |
martwerl | 1:0c47899d1aba | 31 | { |
martwerl | 1:0c47899d1aba | 32 | y = alpha*aX + (1-alpha)*yn_1; |
martwerl | 1:0c47899d1aba | 33 | yn_1 = y; // y einmal merken ( zwischenspeichern ) |
martwerl | 1:0c47899d1aba | 34 | } |
martwerl | 1:0c47899d1aba | 35 | |
martwerl | 1:0c47899d1aba | 36 | void TP1Ord::SetAlpha(float aAlpha) |
martwerl | 1:0c47899d1aba | 37 | { // 0..1 absichern |
martwerl | 1:0c47899d1aba | 38 | if( aAlpha>=0 && aAlpha<=1 ) |
martwerl | 1:0c47899d1aba | 39 | alpha = aAlpha; |
martwerl | 1:0c47899d1aba | 40 | } |