d

Dependencies:   mbed

Fork of MyClass by Roboshark

Committer:
fluckmi1
Date:
Thu Apr 19 11:53:52 2018 +0000
Revision:
0:af3f2e5c9cd4
peace

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fluckmi1 0:af3f2e5c9cd4 1 /*
fluckmi1 0:af3f2e5c9cd4 2 * LowpassFilter.h
fluckmi1 0:af3f2e5c9cd4 3 * Copyright (c) 2018, ZHAW
fluckmi1 0:af3f2e5c9cd4 4 * All rights reserved.
fluckmi1 0:af3f2e5c9cd4 5 */
fluckmi1 0:af3f2e5c9cd4 6
fluckmi1 0:af3f2e5c9cd4 7 #ifndef LOWPASS_FILTER_H_
fluckmi1 0:af3f2e5c9cd4 8 #define LOWPASS_FILTER_H_
fluckmi1 0:af3f2e5c9cd4 9
fluckmi1 0:af3f2e5c9cd4 10 #include <cstdlib>
fluckmi1 0:af3f2e5c9cd4 11
fluckmi1 0:af3f2e5c9cd4 12 /**
fluckmi1 0:af3f2e5c9cd4 13 * This class implements a time-discrete 2nd order lowpass filter for a series of data values.
fluckmi1 0:af3f2e5c9cd4 14 * This filter can typically be used within a periodic task that takes measurements that need
fluckmi1 0:af3f2e5c9cd4 15 * to be filtered, like speed or position values.
fluckmi1 0:af3f2e5c9cd4 16 */
fluckmi1 0:af3f2e5c9cd4 17 class LowpassFilter {
fluckmi1 0:af3f2e5c9cd4 18
fluckmi1 0:af3f2e5c9cd4 19 public:
fluckmi1 0:af3f2e5c9cd4 20
fluckmi1 0:af3f2e5c9cd4 21 LowpassFilter();
fluckmi1 0:af3f2e5c9cd4 22 virtual ~LowpassFilter();
fluckmi1 0:af3f2e5c9cd4 23 void reset();
fluckmi1 0:af3f2e5c9cd4 24 void reset(float value);
fluckmi1 0:af3f2e5c9cd4 25 void setPeriod(float period);
fluckmi1 0:af3f2e5c9cd4 26 void setFrequency(float frequency);
fluckmi1 0:af3f2e5c9cd4 27 float getFrequency();
fluckmi1 0:af3f2e5c9cd4 28 float filter(float value);
fluckmi1 0:af3f2e5c9cd4 29
fluckmi1 0:af3f2e5c9cd4 30 private:
fluckmi1 0:af3f2e5c9cd4 31
fluckmi1 0:af3f2e5c9cd4 32 float period;
fluckmi1 0:af3f2e5c9cd4 33 float frequency;
fluckmi1 0:af3f2e5c9cd4 34 float a11, a12, a21, a22, b1, b2;
fluckmi1 0:af3f2e5c9cd4 35 float x1, x2;
fluckmi1 0:af3f2e5c9cd4 36 };
fluckmi1 0:af3f2e5c9cd4 37
fluckmi1 0:af3f2e5c9cd4 38 #endif /* LOWPASS_FILTER_H_ */
fluckmi1 0:af3f2e5c9cd4 39
fluckmi1 0:af3f2e5c9cd4 40