Basic class for reading SPTE 10 bar 0-5V analog pressure sensor made by Festo
Dependents: heros_leg_readout_torque_addition heros_leg_readout_torque_addition_V3 DROPSAWTestRigCode_V4
SPTEPressureSensor.h@1:189d6f2b0612, 2018-10-12 (annotated)
- Committer:
- cnckiwi31
- Date:
- Fri Oct 12 12:10:26 2018 +0000
- Revision:
- 1:189d6f2b0612
- Parent:
- 0:642482fd9da0
- Child:
- 2:f31829b587b4
current on 12-10-2018
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cnckiwi31 | 0:642482fd9da0 | 1 | #ifndef _SPTEPSensor_H_ |
cnckiwi31 | 1:189d6f2b0612 | 2 | #define _SPTEPSensor_H_ |
cnckiwi31 | 0:642482fd9da0 | 3 | |
cnckiwi31 | 0:642482fd9da0 | 4 | #include "mbed.h" |
cnckiwi31 | 0:642482fd9da0 | 5 | /** |
cnckiwi31 | 0:642482fd9da0 | 6 | * Reading and nulling the SPTE pressure sensor made by festo (analog input) |
cnckiwi31 | 0:642482fd9da0 | 7 | */ |
cnckiwi31 | 0:642482fd9da0 | 8 | |
cnckiwi31 | 0:642482fd9da0 | 9 | class SPTEPressureSensor { |
cnckiwi31 | 0:642482fd9da0 | 10 | public: |
cnckiwi31 | 0:642482fd9da0 | 11 | |
cnckiwi31 | 0:642482fd9da0 | 12 | /** |
cnckiwi31 | 0:642482fd9da0 | 13 | * @param pin_a_in PinName of analog input |
cnckiwi31 | 0:642482fd9da0 | 14 | * @param offset of analog value (calibration data) |
cnckiwi31 | 0:642482fd9da0 | 15 | * @param factor multiplication factor for analog value (calibration data) |
cnckiwi31 | 0:642482fd9da0 | 16 | */ |
cnckiwi31 | 0:642482fd9da0 | 17 | SPTEPressureSensor(PinName pin_a_in, float offset, float factor) : |
cnckiwi31 | 0:642482fd9da0 | 18 | analog_in_(pin_a_in), |
cnckiwi31 | 0:642482fd9da0 | 19 | kOffset_(offset), |
cnckiwi31 | 0:642482fd9da0 | 20 | kFactor_(factor) |
cnckiwi31 | 0:642482fd9da0 | 21 | { |
cnckiwi31 | 0:642482fd9da0 | 22 | } |
cnckiwi31 | 0:642482fd9da0 | 23 | |
cnckiwi31 | 0:642482fd9da0 | 24 | /** |
cnckiwi31 | 0:642482fd9da0 | 25 | * @return unscaled analog input value |
cnckiwi31 | 0:642482fd9da0 | 26 | */ |
cnckiwi31 | 0:642482fd9da0 | 27 | float getPressureRaw() |
cnckiwi31 | 0:642482fd9da0 | 28 | { |
cnckiwi31 | 0:642482fd9da0 | 29 | return analog_in_.read(); |
cnckiwi31 | 0:642482fd9da0 | 30 | } |
cnckiwi31 | 0:642482fd9da0 | 31 | |
cnckiwi31 | 0:642482fd9da0 | 32 | /** |
cnckiwi31 | 0:642482fd9da0 | 33 | * @return force value kOffset_ + kFactor_ * getPressureRaw(); |
cnckiwi31 | 0:642482fd9da0 | 34 | */ |
cnckiwi31 | 0:642482fd9da0 | 35 | float getPressure() |
cnckiwi31 | 0:642482fd9da0 | 36 | { |
cnckiwi31 | 0:642482fd9da0 | 37 | return kOffset_ + kFactor_ * getPressureRaw(); |
cnckiwi31 | 0:642482fd9da0 | 38 | } |
cnckiwi31 | 0:642482fd9da0 | 39 | |
cnckiwi31 | 0:642482fd9da0 | 40 | /** |
cnckiwi31 | 0:642482fd9da0 | 41 | * sets pressure scaling offset so that current output is pressure zero |
cnckiwi31 | 0:642482fd9da0 | 42 | */ |
cnckiwi31 | 0:642482fd9da0 | 43 | void nullPressure() |
cnckiwi31 | 0:642482fd9da0 | 44 | { |
cnckiwi31 | 0:642482fd9da0 | 45 | kOffset_ = kOffset_ - getPressure(); |
cnckiwi31 | 0:642482fd9da0 | 46 | return; |
cnckiwi31 | 0:642482fd9da0 | 47 | } |
cnckiwi31 | 0:642482fd9da0 | 48 | |
cnckiwi31 | 0:642482fd9da0 | 49 | /** |
cnckiwi31 | 0:642482fd9da0 | 50 | * @return ffset of analog value |
cnckiwi31 | 0:642482fd9da0 | 51 | */ |
cnckiwi31 | 0:642482fd9da0 | 52 | float get_offset() { return kOffset_; } |
cnckiwi31 | 0:642482fd9da0 | 53 | |
cnckiwi31 | 0:642482fd9da0 | 54 | /** |
cnckiwi31 | 0:642482fd9da0 | 55 | * @return factor multiplication factor for analog value |
cnckiwi31 | 0:642482fd9da0 | 56 | */ |
cnckiwi31 | 0:642482fd9da0 | 57 | float get_factor() { return kFactor_; } |
cnckiwi31 | 0:642482fd9da0 | 58 | |
cnckiwi31 | 0:642482fd9da0 | 59 | |
cnckiwi31 | 0:642482fd9da0 | 60 | private: |
cnckiwi31 | 0:642482fd9da0 | 61 | AnalogIn analog_in_; |
cnckiwi31 | 0:642482fd9da0 | 62 | |
cnckiwi31 | 0:642482fd9da0 | 63 | float kOffset_; |
cnckiwi31 | 0:642482fd9da0 | 64 | const float kFactor_; |
cnckiwi31 | 0:642482fd9da0 | 65 | }; |
cnckiwi31 | 0:642482fd9da0 | 66 | |
cnckiwi31 | 0:642482fd9da0 | 67 | #endif |