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

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?

UserRevisionLine numberNew 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