N K
/
GaNtroller
a fork of priustroller
Fork of priustroller_current by
sensors/sensors.h
- Committer:
- bwang
- Date:
- 2015-03-14
- Revision:
- 28:af9d43bcb371
- Parent:
- 11:dccbaa9274c5
- Child:
- 29:cb03760ba9ea
File content as of revision 28:af9d43bcb371:
#ifndef __SENSORS_H #define __SENSORS_H #include "includes.h" class NativeAnalogIn { public: NativeAnalogIn(PinName pin); float Read(); operator float() {return Read();} private: unsigned char PinToAdcChannel(PinName pin); private: unsigned char _channel; }; class CurrentSensor { public: virtual float GetCurrent() {return 0.0f;} virtual void Zero() {} }; class VoltageSensor { public: virtual float GetVoltage() {return 0.0f;} virtual void Zero(){} }; class PositionSensor { public: virtual float GetPosition() {return 0.0f;} }; class TempSensor { public: virtual float GetTemp() {return 0.0f;} }; class AnalogCurrentSensor: public CurrentSensor { public: AnalogCurrentSensor(PinName pin, float volts_per_amp); virtual void Zero(); virtual float GetCurrent(); private: float _zero_level, _volts_per_amp; NativeAnalogIn *_in; }; class AnalogVoltageSensor: public VoltageSensor { public: AnalogVoltageSensor(PinName pin, float scale); virtual void Zero(); virtual float GetVoltage(); private: float _zero_level, _scale; NativeAnalogIn *_in; }; class AnalogHallPositionSensor: public PositionSensor { public: AnalogHallPositionSensor(PinName pin_a, PinName pin_b, float cal1_a, float cal2_a, float cal1_b, float cal2_b, float offset); virtual float GetPosition(); private: float _cal1_a, _cal2_a; float _cal1_b, _cal2_b; float _offset; NativeAnalogIn *_in_a, *_in_b; }; class NtcTempSensor: public TempSensor { public: NtcTempSensor(PinName pin, float r_25, float ntc_b, float r_divider); virtual float GetTemp(); private: float _ntc_a, _ntc_b, _r_divider; NativeAnalogIn *_in; }; class Throttle { public: Throttle(PinName pin, float min, float max); float GetThrottle(); private: float _min, _max; VoltageSensor *_in; }; #endif