Prius IPM controller

Dependencies:   mbed

Fork of analoghalls5_5 by N K

Revision:
11:dccbaa9274c5
Parent:
1:1f58bdcf2956
Child:
28:af9d43bcb371
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sensors/sensors.h	Sun Mar 08 08:37:38 2015 +0000
@@ -0,0 +1,78 @@
+#ifndef __SENSORS_H
+#define __SENSORS_H
+
+#include "includes.h"
+
+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;
+    AnalogIn *_in;
+};
+
+class AnalogVoltageSensor: public VoltageSensor {
+public:
+    AnalogVoltageSensor(PinName pin, float scale);
+    virtual void Zero();
+    virtual float GetVoltage();
+private:
+    float _zero_level, _scale;
+    AnalogIn *_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;
+    AnalogIn *_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;
+    AnalogIn *_in;
+};
+
+class Throttle {
+public:
+    Throttle(PinName pin, float min, float max);
+    float GetThrottle();
+private:
+    float _min, _max;
+    VoltageSensor *_in;
+};
+
+#endif
\ No newline at end of file