update with altimeter, swimfile.txt endleg.txt, etc see changes_13sep.txt also reset_PI()
Dependencies: mbed MODSERIAL FATFileSystem
OuterLoop/OuterLoop.hpp@11:3b241ecb75ed, 2017-10-27 (annotated)
- Committer:
- danstrider
- Date:
- Fri Oct 27 00:37:32 2017 +0000
- Revision:
- 11:3b241ecb75ed
- Parent:
- 10:085ab7328054
This version has been in the pool, working with all the hardware. Had occasional string pot problems and got stuck in RISE, letting the battery stall out against the endcap.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
danstrider | 10:085ab7328054 | 1 | #ifndef OUTERLOOP_HPP |
danstrider | 10:085ab7328054 | 2 | #define OUTERLOOP_HPP |
danstrider | 10:085ab7328054 | 3 | |
danstrider | 10:085ab7328054 | 4 | #include "mbed.h" |
danstrider | 10:085ab7328054 | 5 | #include "PidController.hpp" |
danstrider | 10:085ab7328054 | 6 | #include "PosVelFilter.hpp" |
danstrider | 10:085ab7328054 | 7 | |
danstrider | 10:085ab7328054 | 8 | // This class is an outer loop controller with its own instance of a position velocity filter. |
danstrider | 10:085ab7328054 | 9 | |
danstrider | 10:085ab7328054 | 10 | class OuterLoop { |
danstrider | 10:085ab7328054 | 11 | public: |
danstrider | 10:085ab7328054 | 12 | OuterLoop(float interval, int sensor); |
danstrider | 10:085ab7328054 | 13 | |
danstrider | 10:085ab7328054 | 14 | // functions for setting up |
danstrider | 10:085ab7328054 | 15 | void init(); |
danstrider | 10:085ab7328054 | 16 | void update(); |
danstrider | 10:085ab7328054 | 17 | void start(); |
danstrider | 10:085ab7328054 | 18 | void stop(); |
danstrider | 10:085ab7328054 | 19 | |
danstrider | 10:085ab7328054 | 20 | // setting and getting variables |
danstrider | 10:085ab7328054 | 21 | void setCommand(float cmd); |
danstrider | 11:3b241ecb75ed | 22 | float getCommand(); |
danstrider | 11:3b241ecb75ed | 23 | |
danstrider | 10:085ab7328054 | 24 | float getOutput(); |
danstrider | 10:085ab7328054 | 25 | |
danstrider | 10:085ab7328054 | 26 | float getPosition(); |
danstrider | 10:085ab7328054 | 27 | float getVelocity(); |
danstrider | 10:085ab7328054 | 28 | |
danstrider | 10:085ab7328054 | 29 | void setControllerP(float P); |
danstrider | 10:085ab7328054 | 30 | float getControllerP(); |
danstrider | 10:085ab7328054 | 31 | |
danstrider | 10:085ab7328054 | 32 | void setControllerI(float I); |
danstrider | 10:085ab7328054 | 33 | float getControllerI(); |
danstrider | 10:085ab7328054 | 34 | |
danstrider | 10:085ab7328054 | 35 | void setControllerD(float D); |
danstrider | 10:085ab7328054 | 36 | float getControllerD(); |
danstrider | 10:085ab7328054 | 37 | |
danstrider | 10:085ab7328054 | 38 | void setTravelLimit(float limit); |
danstrider | 10:085ab7328054 | 39 | float getTravelLimit(); |
danstrider | 10:085ab7328054 | 40 | |
danstrider | 10:085ab7328054 | 41 | void setFilterFrequency(float frequency); |
danstrider | 10:085ab7328054 | 42 | float getFilterFrequency; |
danstrider | 10:085ab7328054 | 43 | |
danstrider | 10:085ab7328054 | 44 | void setDeadband(float deadband); |
danstrider | 10:085ab7328054 | 45 | bool toggleDeadband(bool toggle); |
danstrider | 10:085ab7328054 | 46 | |
danstrider | 11:3b241ecb75ed | 47 | void setOutputOffset(float offset); |
danstrider | 11:3b241ecb75ed | 48 | float getOutputOffset(); |
danstrider | 11:3b241ecb75ed | 49 | |
danstrider | 10:085ab7328054 | 50 | protected: |
danstrider | 10:085ab7328054 | 51 | PosVelFilter _filter; |
danstrider | 10:085ab7328054 | 52 | PIDController _pid; |
danstrider | 10:085ab7328054 | 53 | Ticker _pulse; |
danstrider | 10:085ab7328054 | 54 | |
danstrider | 10:085ab7328054 | 55 | void refreshPVState(); |
danstrider | 10:085ab7328054 | 56 | |
danstrider | 10:085ab7328054 | 57 | float _SetPoint; |
danstrider | 10:085ab7328054 | 58 | float _sensorVal; |
danstrider | 10:085ab7328054 | 59 | |
danstrider | 10:085ab7328054 | 60 | // position and velocity in raw units |
danstrider | 10:085ab7328054 | 61 | float _position; |
danstrider | 10:085ab7328054 | 62 | float _velocity; |
danstrider | 10:085ab7328054 | 63 | |
danstrider | 10:085ab7328054 | 64 | // setup parameters |
danstrider | 10:085ab7328054 | 65 | float _Pgain; |
danstrider | 10:085ab7328054 | 66 | float _Igain; |
danstrider | 10:085ab7328054 | 67 | float _Dgain; |
danstrider | 10:085ab7328054 | 68 | float _dt; |
danstrider | 10:085ab7328054 | 69 | float _filterFrequency; |
danstrider | 10:085ab7328054 | 70 | float _deadband; |
danstrider | 10:085ab7328054 | 71 | char _sensor; |
danstrider | 11:3b241ecb75ed | 72 | float _offset; |
danstrider | 10:085ab7328054 | 73 | }; |
danstrider | 10:085ab7328054 | 74 | |
danstrider | 10:085ab7328054 | 75 | #endif |