Library for reading out the LCM 101 sensor and also usable for S610 loadcells

Fork of LCM101 by Martijn Grootens

Committer:
Technical_Muffin
Date:
Tue Jun 05 08:48:06 2018 +0000
Revision:
2:77cffacfd89e
Parent:
1:493c1de4a28d
Changes as a part of adding torque measurement to the Heros leg setup

Who changed what in which revision?

UserRevisionLine numberNew contents of line
megrootens 0:116acb03eb85 1 #ifndef _LCM101_H_
megrootens 0:116acb03eb85 2 #define _LCM101_H_
megrootens 0:116acb03eb85 3
megrootens 0:116acb03eb85 4 #include "mbed.h"
megrootens 0:116acb03eb85 5
megrootens 0:116acb03eb85 6 /**
megrootens 0:116acb03eb85 7 * Simple class to read out an LCM101 S-beam force sensor connected to an analog
megrootens 0:116acb03eb85 8 * input.
megrootens 0:116acb03eb85 9 */
megrootens 0:116acb03eb85 10 class Lcm101 {
megrootens 0:116acb03eb85 11 public:
megrootens 0:116acb03eb85 12
megrootens 0:116acb03eb85 13 /**
megrootens 0:116acb03eb85 14 * @param pin_a_in PinName of analog input
megrootens 0:116acb03eb85 15 * @param offset of analog value (calibration data)
megrootens 0:116acb03eb85 16 * @param factor multiplication factor for analog value (calibration data)
megrootens 0:116acb03eb85 17 */
megrootens 0:116acb03eb85 18 Lcm101(PinName pin_a_in, float offset, float factor) :
megrootens 0:116acb03eb85 19 analog_in_(pin_a_in),
megrootens 0:116acb03eb85 20 kOffset_(offset),
megrootens 0:116acb03eb85 21 kFactor_(factor)
megrootens 0:116acb03eb85 22 {
megrootens 0:116acb03eb85 23 }
megrootens 0:116acb03eb85 24
megrootens 0:116acb03eb85 25 /**
megrootens 0:116acb03eb85 26 * @return unscaled analog input value
megrootens 0:116acb03eb85 27 */
megrootens 0:116acb03eb85 28 float getForceRaw()
megrootens 0:116acb03eb85 29 {
megrootens 0:116acb03eb85 30 return analog_in_.read();
megrootens 0:116acb03eb85 31 }
megrootens 0:116acb03eb85 32
megrootens 0:116acb03eb85 33 /**
megrootens 0:116acb03eb85 34 * @return force value kOffset_ + kFactor_ * getForceRaw();
megrootens 0:116acb03eb85 35 */
megrootens 0:116acb03eb85 36 float getForce()
megrootens 0:116acb03eb85 37 {
megrootens 0:116acb03eb85 38 return kOffset_ + kFactor_ * getForceRaw();
Technical_Muffin 2:77cffacfd89e 39 //it appears that higher order polynomials show better accuracy, within the 40 kg range that is.
Technical_Muffin 2:77cffacfd89e 40 // Awaiting other instructions, a linear fit will be currently used however.
megrootens 0:116acb03eb85 41 }
megrootens 0:116acb03eb85 42
megrootens 0:116acb03eb85 43 /**
megrootens 0:116acb03eb85 44 * @return ffset of analog value
megrootens 0:116acb03eb85 45 */
megrootens 0:116acb03eb85 46 float get_offset() { return kOffset_; }
megrootens 0:116acb03eb85 47
megrootens 0:116acb03eb85 48 /**
megrootens 0:116acb03eb85 49 * @return factor multiplication factor for analog value
megrootens 0:116acb03eb85 50 */
megrootens 0:116acb03eb85 51 float get_factor() { return kFactor_; }
megrootens 0:116acb03eb85 52
megrootens 0:116acb03eb85 53
megrootens 0:116acb03eb85 54 private:
megrootens 0:116acb03eb85 55 AnalogIn analog_in_;
megrootens 0:116acb03eb85 56
megrootens 0:116acb03eb85 57 const float kOffset_;
megrootens 0:116acb03eb85 58 const float kFactor_;
megrootens 0:116acb03eb85 59 };
megrootens 0:116acb03eb85 60
megrootens 0:116acb03eb85 61 #endif