FOC Implementation for putting multirotor motors in robots

Dependencies:   FastPWM3 mbed

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 float GetMechPosition() {return 0.0f;}
00006     virtual float GetElecPosition() {return 0.0f;}
00007     virtual float GetMechVelocity() {return 0.0f;}
00008     virtual float GetElecVelocity() {return 0.0f;}
00009 };
00010   
00011   
00012 class PositionSensorEncoder: public PositionSensor {
00013 public:
00014     PositionSensorEncoder(int CPR, float offset, int ppairs);
00015     virtual float GetMechPosition();
00016     virtual float GetElecPosition();
00017     virtual float GetMechVelocity();
00018     virtual float GetElecVelocity();
00019 private:
00020     InterruptIn *ZPulse;
00021     DigitalIn *ZSense;
00022     //DigitalOut *ZTest;
00023     virtual void ZeroEncoderCount(void);
00024     virtual void ZeroEncoderCountDown(void);
00025     int _CPR, flag, rotations, _ppairs;
00026     //int state;
00027     float _offset, MechPosition, dir, test_pos, vel_old, out_old;
00028 };
00029 
00030 class PositionSensorMA700: public PositionSensor{
00031 public:
00032     PositionSensorMA700(int CPR, float offset, int ppairs);
00033     virtual float GetMechPosition();
00034     virtual float GetElecPosition();
00035     virtual float GetMechVelocity();
00036     virtual int GetRawPosition();
00037     virtual void ZeroPosition();
00038 private:
00039     float _offset, MechPosition, MechOffset;
00040     int _CPR, rotations, old_counts, _ppairs;
00041     SPI *spi;
00042     DigitalOut *cs;
00043 };
00044 
00045 class PositionSensorAM5147: public PositionSensor{
00046 public:
00047     PositionSensorAM5147(int CPR, float offset, int ppairs);
00048     virtual float GetMechPosition();
00049     virtual float GetElecPosition();
00050     virtual float GetMechVelocity();
00051     virtual int GetRawPosition();
00052     virtual void ZeroPosition();
00053 private:
00054     float _offset, MechPosition, MechOffset;
00055     int _CPR, rotations, old_counts, _ppairs;
00056     SPI *spi;
00057     DigitalOut *cs;
00058     int readAngleCmd;
00059 
00060 };
00061 #endif