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@2:f31829b587b4, 2020-10-26 (annotated)
- Committer:
- cnckiwi31
- Date:
- Mon Oct 26 08:31:29 2020 +0000
- Revision:
- 2:f31829b587b4
- Parent:
- 1:189d6f2b0612
Prepared for documentation with boilerplate added
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cnckiwi31 | 2:f31829b587b4 | 1 | /* Copyright 2020 Allan Joshua Veale |
cnckiwi31 | 2:f31829b587b4 | 2 | |
cnckiwi31 | 2:f31829b587b4 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); |
cnckiwi31 | 2:f31829b587b4 | 4 | you may not use this file except in compliance with the License. |
cnckiwi31 | 2:f31829b587b4 | 5 | You may obtain a copy of the License at |
cnckiwi31 | 2:f31829b587b4 | 6 | |
cnckiwi31 | 2:f31829b587b4 | 7 | http://www.apache.org/licenses/LICENSE-2.0 |
cnckiwi31 | 2:f31829b587b4 | 8 | |
cnckiwi31 | 2:f31829b587b4 | 9 | Unless required by applicable law or agreed to in writing, software |
cnckiwi31 | 2:f31829b587b4 | 10 | distributed under the License is distributed on an "AS IS" BASIS, |
cnckiwi31 | 2:f31829b587b4 | 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
cnckiwi31 | 2:f31829b587b4 | 12 | See the License for the specific language governing permissions and |
cnckiwi31 | 2:f31829b587b4 | 13 | limitations under the License. |
cnckiwi31 | 2:f31829b587b4 | 14 | */ |
cnckiwi31 | 2:f31829b587b4 | 15 | |
cnckiwi31 | 0:642482fd9da0 | 16 | #ifndef _SPTEPSensor_H_ |
cnckiwi31 | 1:189d6f2b0612 | 17 | #define _SPTEPSensor_H_ |
cnckiwi31 | 0:642482fd9da0 | 18 | |
cnckiwi31 | 0:642482fd9da0 | 19 | #include "mbed.h" |
cnckiwi31 | 0:642482fd9da0 | 20 | /** |
cnckiwi31 | 0:642482fd9da0 | 21 | * Reading and nulling the SPTE pressure sensor made by festo (analog input) |
cnckiwi31 | 2:f31829b587b4 | 22 | * Based on Martijn Grootens' LCM101 class |
cnckiwi31 | 0:642482fd9da0 | 23 | */ |
cnckiwi31 | 0:642482fd9da0 | 24 | |
cnckiwi31 | 0:642482fd9da0 | 25 | class SPTEPressureSensor { |
cnckiwi31 | 0:642482fd9da0 | 26 | public: |
cnckiwi31 | 0:642482fd9da0 | 27 | |
cnckiwi31 | 0:642482fd9da0 | 28 | /** |
cnckiwi31 | 2:f31829b587b4 | 29 | * @param pin_a_in: PinName of analog input |
cnckiwi31 | 2:f31829b587b4 | 30 | * @param offset: of analog value read from the sensor(calibration data) |
cnckiwi31 | 2:f31829b587b4 | 31 | * @param factor: multiplication factor for analog value read from the sensor(calibration data) |
cnckiwi31 | 0:642482fd9da0 | 32 | */ |
cnckiwi31 | 0:642482fd9da0 | 33 | SPTEPressureSensor(PinName pin_a_in, float offset, float factor) : |
cnckiwi31 | 0:642482fd9da0 | 34 | analog_in_(pin_a_in), |
cnckiwi31 | 0:642482fd9da0 | 35 | kOffset_(offset), |
cnckiwi31 | 0:642482fd9da0 | 36 | kFactor_(factor) |
cnckiwi31 | 0:642482fd9da0 | 37 | { |
cnckiwi31 | 0:642482fd9da0 | 38 | } |
cnckiwi31 | 0:642482fd9da0 | 39 | |
cnckiwi31 | 0:642482fd9da0 | 40 | /** |
cnckiwi31 | 0:642482fd9da0 | 41 | * @return unscaled analog input value |
cnckiwi31 | 0:642482fd9da0 | 42 | */ |
cnckiwi31 | 0:642482fd9da0 | 43 | float getPressureRaw() |
cnckiwi31 | 0:642482fd9da0 | 44 | { |
cnckiwi31 | 0:642482fd9da0 | 45 | return analog_in_.read(); |
cnckiwi31 | 0:642482fd9da0 | 46 | } |
cnckiwi31 | 0:642482fd9da0 | 47 | |
cnckiwi31 | 0:642482fd9da0 | 48 | /** |
cnckiwi31 | 0:642482fd9da0 | 49 | * @return force value kOffset_ + kFactor_ * getPressureRaw(); |
cnckiwi31 | 0:642482fd9da0 | 50 | */ |
cnckiwi31 | 0:642482fd9da0 | 51 | float getPressure() |
cnckiwi31 | 0:642482fd9da0 | 52 | { |
cnckiwi31 | 0:642482fd9da0 | 53 | return kOffset_ + kFactor_ * getPressureRaw(); |
cnckiwi31 | 0:642482fd9da0 | 54 | } |
cnckiwi31 | 0:642482fd9da0 | 55 | |
cnckiwi31 | 0:642482fd9da0 | 56 | /** |
cnckiwi31 | 0:642482fd9da0 | 57 | * sets pressure scaling offset so that current output is pressure zero |
cnckiwi31 | 0:642482fd9da0 | 58 | */ |
cnckiwi31 | 0:642482fd9da0 | 59 | void nullPressure() |
cnckiwi31 | 0:642482fd9da0 | 60 | { |
cnckiwi31 | 0:642482fd9da0 | 61 | kOffset_ = kOffset_ - getPressure(); |
cnckiwi31 | 0:642482fd9da0 | 62 | return; |
cnckiwi31 | 0:642482fd9da0 | 63 | } |
cnckiwi31 | 0:642482fd9da0 | 64 | |
cnckiwi31 | 0:642482fd9da0 | 65 | /** |
cnckiwi31 | 2:f31829b587b4 | 66 | * @return offset of analog value |
cnckiwi31 | 0:642482fd9da0 | 67 | */ |
cnckiwi31 | 0:642482fd9da0 | 68 | float get_offset() { return kOffset_; } |
cnckiwi31 | 0:642482fd9da0 | 69 | |
cnckiwi31 | 0:642482fd9da0 | 70 | /** |
cnckiwi31 | 0:642482fd9da0 | 71 | * @return factor multiplication factor for analog value |
cnckiwi31 | 0:642482fd9da0 | 72 | */ |
cnckiwi31 | 0:642482fd9da0 | 73 | float get_factor() { return kFactor_; } |
cnckiwi31 | 0:642482fd9da0 | 74 | |
cnckiwi31 | 0:642482fd9da0 | 75 | |
cnckiwi31 | 0:642482fd9da0 | 76 | private: |
cnckiwi31 | 0:642482fd9da0 | 77 | AnalogIn analog_in_; |
cnckiwi31 | 0:642482fd9da0 | 78 | |
cnckiwi31 | 0:642482fd9da0 | 79 | float kOffset_; |
cnckiwi31 | 0:642482fd9da0 | 80 | const float kFactor_; |
cnckiwi31 | 0:642482fd9da0 | 81 | }; |
cnckiwi31 | 0:642482fd9da0 | 82 | |
cnckiwi31 | 0:642482fd9da0 | 83 | #endif |