Prius IPM controller

Dependencies:   mbed

Fork of analoghalls5_5 by N K

Committer:
bwang
Date:
Sat Mar 14 19:18:34 2015 +0000
Revision:
28:af9d43bcb371
Parent:
11:dccbaa9274c5
Child:
29:cb03760ba9ea
[NONWORKING] Switched sensors to delay-based NativeAnalogIn class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 1:1f58bdcf2956 1 #ifndef __SENSORS_H
bwang 1:1f58bdcf2956 2 #define __SENSORS_H
bwang 1:1f58bdcf2956 3
bwang 1:1f58bdcf2956 4 #include "includes.h"
bwang 1:1f58bdcf2956 5
bwang 28:af9d43bcb371 6 class NativeAnalogIn {
bwang 28:af9d43bcb371 7 public:
bwang 28:af9d43bcb371 8 NativeAnalogIn(PinName pin);
bwang 28:af9d43bcb371 9 float Read();
bwang 28:af9d43bcb371 10 operator float() {return Read();}
bwang 28:af9d43bcb371 11 private:
bwang 28:af9d43bcb371 12 unsigned char PinToAdcChannel(PinName pin);
bwang 28:af9d43bcb371 13 private:
bwang 28:af9d43bcb371 14 unsigned char _channel;
bwang 28:af9d43bcb371 15 };
bwang 28:af9d43bcb371 16
bwang 1:1f58bdcf2956 17 class CurrentSensor {
bwang 1:1f58bdcf2956 18 public:
bwang 1:1f58bdcf2956 19 virtual float GetCurrent() {return 0.0f;}
bwang 1:1f58bdcf2956 20 virtual void Zero() {}
bwang 1:1f58bdcf2956 21 };
bwang 1:1f58bdcf2956 22
bwang 1:1f58bdcf2956 23 class VoltageSensor {
bwang 1:1f58bdcf2956 24 public:
bwang 1:1f58bdcf2956 25 virtual float GetVoltage() {return 0.0f;}
bwang 1:1f58bdcf2956 26 virtual void Zero(){}
bwang 1:1f58bdcf2956 27 };
bwang 1:1f58bdcf2956 28
bwang 1:1f58bdcf2956 29 class PositionSensor {
bwang 1:1f58bdcf2956 30 public:
bwang 1:1f58bdcf2956 31 virtual float GetPosition() {return 0.0f;}
bwang 1:1f58bdcf2956 32 };
bwang 1:1f58bdcf2956 33
bwang 1:1f58bdcf2956 34 class TempSensor {
bwang 1:1f58bdcf2956 35 public:
bwang 1:1f58bdcf2956 36 virtual float GetTemp() {return 0.0f;}
bwang 1:1f58bdcf2956 37 };
bwang 1:1f58bdcf2956 38
bwang 1:1f58bdcf2956 39 class AnalogCurrentSensor: public CurrentSensor {
bwang 1:1f58bdcf2956 40 public:
bwang 1:1f58bdcf2956 41 AnalogCurrentSensor(PinName pin, float volts_per_amp);
bwang 1:1f58bdcf2956 42 virtual void Zero();
bwang 1:1f58bdcf2956 43 virtual float GetCurrent();
bwang 1:1f58bdcf2956 44 private:
bwang 1:1f58bdcf2956 45 float _zero_level, _volts_per_amp;
bwang 28:af9d43bcb371 46 NativeAnalogIn *_in;
bwang 1:1f58bdcf2956 47 };
bwang 1:1f58bdcf2956 48
bwang 1:1f58bdcf2956 49 class AnalogVoltageSensor: public VoltageSensor {
bwang 1:1f58bdcf2956 50 public:
bwang 1:1f58bdcf2956 51 AnalogVoltageSensor(PinName pin, float scale);
bwang 1:1f58bdcf2956 52 virtual void Zero();
bwang 1:1f58bdcf2956 53 virtual float GetVoltage();
bwang 1:1f58bdcf2956 54 private:
bwang 1:1f58bdcf2956 55 float _zero_level, _scale;
bwang 28:af9d43bcb371 56 NativeAnalogIn *_in;
bwang 1:1f58bdcf2956 57 };
bwang 1:1f58bdcf2956 58
bwang 1:1f58bdcf2956 59 class AnalogHallPositionSensor: public PositionSensor {
bwang 1:1f58bdcf2956 60 public:
bwang 1:1f58bdcf2956 61 AnalogHallPositionSensor(PinName pin_a, PinName pin_b, float cal1_a, float cal2_a,
bwang 1:1f58bdcf2956 62 float cal1_b, float cal2_b, float offset);
bwang 1:1f58bdcf2956 63 virtual float GetPosition();
bwang 1:1f58bdcf2956 64 private:
bwang 1:1f58bdcf2956 65 float _cal1_a, _cal2_a;
bwang 1:1f58bdcf2956 66 float _cal1_b, _cal2_b;
bwang 1:1f58bdcf2956 67 float _offset;
bwang 28:af9d43bcb371 68 NativeAnalogIn *_in_a, *_in_b;
bwang 1:1f58bdcf2956 69 };
bwang 1:1f58bdcf2956 70
bwang 1:1f58bdcf2956 71 class NtcTempSensor: public TempSensor {
bwang 1:1f58bdcf2956 72 public:
bwang 1:1f58bdcf2956 73 NtcTempSensor(PinName pin, float r_25, float ntc_b, float r_divider);
bwang 1:1f58bdcf2956 74 virtual float GetTemp();
bwang 1:1f58bdcf2956 75 private:
bwang 1:1f58bdcf2956 76 float _ntc_a, _ntc_b, _r_divider;
bwang 28:af9d43bcb371 77 NativeAnalogIn *_in;
bwang 1:1f58bdcf2956 78 };
bwang 1:1f58bdcf2956 79
bwang 1:1f58bdcf2956 80 class Throttle {
bwang 1:1f58bdcf2956 81 public:
bwang 1:1f58bdcf2956 82 Throttle(PinName pin, float min, float max);
bwang 1:1f58bdcf2956 83 float GetThrottle();
bwang 1:1f58bdcf2956 84 private:
bwang 1:1f58bdcf2956 85 float _min, _max;
bwang 1:1f58bdcf2956 86 VoltageSensor *_in;
bwang 1:1f58bdcf2956 87 };
bwang 1:1f58bdcf2956 88
bwang 1:1f58bdcf2956 89 #endif