motor control code by JYB

Dependencies:   mbed-dev-f303 FastPWM3

Committer:
MrStark
Date:
Tue Dec 15 08:46:20 2020 +0000
Revision:
48:e9f6441bacf5
Parent:
47:f4ecf3e0576a
Try to publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benkatz 0:4e1c4df6aabd 1 #ifndef POSITIONSENSOR_H
benkatz 0:4e1c4df6aabd 2 #define POSITIONSENSOR_H
benkatz 0:4e1c4df6aabd 3 class PositionSensor {
benkatz 0:4e1c4df6aabd 4 public:
benkatz 45:aadebe074af6 5 virtual void Sample(float dt) = 0;
benkatz 0:4e1c4df6aabd 6 virtual float GetMechPosition() {return 0.0f;}
benkatz 38:67e4e1453a4b 7 virtual float GetMechPositionFixed() {return 0.0f;}
benkatz 0:4e1c4df6aabd 8 virtual float GetElecPosition() {return 0.0f;}
benkatz 9:d7eb815cb057 9 virtual float GetMechVelocity() {return 0.0f;}
benkatz 13:a3fa0a31b114 10 virtual float GetElecVelocity() {return 0.0f;}
benkatz 22:60276ba87ac6 11 virtual void ZeroPosition(void) = 0;
benkatz 22:60276ba87ac6 12 virtual int GetRawPosition(void) = 0;
benkatz 22:60276ba87ac6 13 virtual void SetElecOffset(float offset) = 0;
benkatz 22:60276ba87ac6 14 virtual int GetCPR(void) = 0;
benkatz 22:60276ba87ac6 15 virtual void WriteLUT(int new_lut[128]) = 0;
benkatz 0:4e1c4df6aabd 16 };
benkatz 0:4e1c4df6aabd 17
benkatz 0:4e1c4df6aabd 18
Wooden 47:f4ecf3e0576a 19 //class PositionSensorEncoder: public PositionSensor {
Wooden 47:f4ecf3e0576a 20 //public:
Wooden 47:f4ecf3e0576a 21 // PositionSensorEncoder(int CPR, float offset, int ppairs);
Wooden 47:f4ecf3e0576a 22 // virtual void Sample(float dt);
Wooden 47:f4ecf3e0576a 23 // virtual float GetMechPosition();
Wooden 47:f4ecf3e0576a 24 // virtual float GetElecPosition();
Wooden 47:f4ecf3e0576a 25 // virtual float GetMechVelocity();
Wooden 47:f4ecf3e0576a 26 // virtual float GetElecVelocity();
Wooden 47:f4ecf3e0576a 27 // virtual void ZeroPosition(void);
Wooden 47:f4ecf3e0576a 28 // virtual void SetElecOffset(float offset);
Wooden 47:f4ecf3e0576a 29 // virtual int GetRawPosition(void);
Wooden 47:f4ecf3e0576a 30 // virtual int GetCPR(void);
Wooden 47:f4ecf3e0576a 31 // virtual void WriteLUT(int new_lut[128]);
Wooden 47:f4ecf3e0576a 32 //private:
Wooden 47:f4ecf3e0576a 33 // InterruptIn *ZPulse;
Wooden 47:f4ecf3e0576a 34 // DigitalIn *ZSense;
Wooden 47:f4ecf3e0576a 35 // //DigitalOut *ZTest;
Wooden 47:f4ecf3e0576a 36 // virtual void ZeroEncoderCount(void);
Wooden 47:f4ecf3e0576a 37 // virtual void ZeroEncoderCountDown(void);
Wooden 47:f4ecf3e0576a 38 // int _CPR, flag, rotations, _ppairs, raw;
Wooden 47:f4ecf3e0576a 39 // //int state;
Wooden 47:f4ecf3e0576a 40 // float _offset, MechPosition, MechOffset, dir, test_pos, oldVel, out_old, velVec[40];
Wooden 47:f4ecf3e0576a 41 // int offset_lut[128];
Wooden 47:f4ecf3e0576a 42 //};
benkatz 14:80ce59119d93 43
benkatz 14:80ce59119d93 44 class PositionSensorAM5147: public PositionSensor{
benkatz 14:80ce59119d93 45 public:
benkatz 14:80ce59119d93 46 PositionSensorAM5147(int CPR, float offset, int ppairs);
benkatz 45:aadebe074af6 47 virtual void Sample(float dt);
benkatz 14:80ce59119d93 48 virtual float GetMechPosition();
benkatz 38:67e4e1453a4b 49 virtual float GetMechPositionFixed();
benkatz 14:80ce59119d93 50 virtual float GetElecPosition();
benkatz 14:80ce59119d93 51 virtual float GetMechVelocity();
benkatz 37:c0f352d6e8e3 52 virtual float GetElecVelocity();
benkatz 14:80ce59119d93 53 virtual int GetRawPosition();
benkatz 14:80ce59119d93 54 virtual void ZeroPosition();
benkatz 22:60276ba87ac6 55 virtual void SetElecOffset(float offset);
benkatz 37:c0f352d6e8e3 56 virtual void SetMechOffset(float offset);
benkatz 22:60276ba87ac6 57 virtual int GetCPR(void);
benkatz 22:60276ba87ac6 58 virtual void WriteLUT(int new_lut[128]);
benkatz 14:80ce59119d93 59 private:
benkatz 35:69b24894c11d 60 float position, ElecPosition, ElecOffset, MechPosition, MechOffset, modPosition, oldModPosition, oldVel, velVec[40], MechVelocity, ElecVelocity, ElecVelocityFilt;
benkatz 22:60276ba87ac6 61 int raw, _CPR, rotations, old_counts, _ppairs;
Wooden 47:f4ecf3e0576a 62 bool flag_first_time; // avoid the first time angle - old_counts
benkatz 14:80ce59119d93 63 SPI *spi;
benkatz 14:80ce59119d93 64 DigitalOut *cs;
benkatz 14:80ce59119d93 65 int readAngleCmd;
benkatz 22:60276ba87ac6 66 int offset_lut[128];
benkatz 14:80ce59119d93 67
benkatz 14:80ce59119d93 68 };
benkatz 20:bf9ea5125d52 69
benkatz 0:4e1c4df6aabd 70 #endif