Tony Stark / BLDC_V2_JYB

Dependencies:   mbed-dev-f303 FastPWM3

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PositionSensor.h Source File

PositionSensor.h

00001 #ifndef POSITIONSENSOR_H
00002 #define POSITIONSENSOR_H
00003 class PositionSensor {
00004 public:
00005     virtual void Sample(float dt) = 0;
00006     virtual float GetMechPosition() {return 0.0f;}
00007     virtual float GetMechPositionFixed() {return 0.0f;}
00008     virtual float GetElecPosition() {return 0.0f;}
00009     virtual float GetMechVelocity() {return 0.0f;}
00010     virtual float GetElecVelocity() {return 0.0f;}
00011     virtual void ZeroPosition(void) = 0;
00012     virtual int GetRawPosition(void) = 0;
00013     virtual void SetElecOffset(float offset) = 0;
00014     virtual int GetCPR(void) = 0;
00015     virtual  void WriteLUT(int new_lut[128]) = 0;
00016 };
00017   
00018   
00019 //class PositionSensorEncoder: public PositionSensor {
00020 //public:
00021 //    PositionSensorEncoder(int CPR, float offset, int ppairs);
00022 //    virtual void Sample(float dt);
00023 //    virtual float GetMechPosition();
00024 //    virtual float GetElecPosition();
00025 //    virtual float GetMechVelocity();
00026 //    virtual float GetElecVelocity();
00027 //    virtual void ZeroPosition(void);
00028 //    virtual void SetElecOffset(float offset);
00029 //    virtual int GetRawPosition(void);
00030 //    virtual int GetCPR(void);
00031 //    virtual  void WriteLUT(int new_lut[128]); 
00032 //private:
00033 //    InterruptIn *ZPulse;
00034 //    DigitalIn *ZSense;
00035 //    //DigitalOut *ZTest;
00036 //    virtual void ZeroEncoderCount(void);
00037 //    virtual void ZeroEncoderCountDown(void);
00038 //    int _CPR, flag, rotations, _ppairs, raw;
00039 //    //int state;
00040 //    float _offset, MechPosition, MechOffset, dir, test_pos, oldVel, out_old, velVec[40];
00041 //    int offset_lut[128];
00042 //};
00043 
00044 class PositionSensorAM5147: public PositionSensor{
00045 public:
00046     PositionSensorAM5147(int CPR, float offset, int ppairs);
00047     virtual void Sample(float dt);
00048     virtual float GetMechPosition();
00049     virtual float GetMechPositionFixed();
00050     virtual float GetElecPosition();
00051     virtual float GetMechVelocity();
00052     virtual float GetElecVelocity();
00053     virtual int GetRawPosition();
00054     virtual void ZeroPosition();
00055     virtual void SetElecOffset(float offset);
00056     virtual void SetMechOffset(float offset);
00057     virtual int GetCPR(void);
00058     virtual void WriteLUT(int new_lut[128]);
00059 private:
00060     float position, ElecPosition, ElecOffset, MechPosition, MechOffset, modPosition, oldModPosition, oldVel, velVec[40], MechVelocity, ElecVelocity, ElecVelocityFilt;
00061     int raw, _CPR, rotations, old_counts, _ppairs;
00062     bool flag_first_time;   // avoid the first time angle - old_counts
00063     SPI *spi;
00064     DigitalOut *cs;
00065     int readAngleCmd;
00066     int offset_lut[128];
00067 
00068 };
00069 
00070 #endif