IMU measurement + Speed controller

Dependencies:   mbed

Committer:
boro
Date:
Thu May 30 13:21:44 2019 +0000
Revision:
1:17fdd812cb8d
Parent:
0:5a93e4916fb1
a

Who changed what in which revision?

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