190711

Committer:
Jeonghoon
Date:
Thu Jul 11 13:29:17 2019 +0000
Revision:
8:4fa7fadc583d
Parent:
7:42c478f9a1fe
190711;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kangmingyo 0:20e026e254d6 1 #ifndef MBED_MOTOR_h
kangmingyo 0:20e026e254d6 2 #define MBED_MOTOR_h
kangmingyo 0:20e026e254d6 3
kangmingyo 0:20e026e254d6 4 #include "mbed.h"
kangmingyo 0:20e026e254d6 5
kangmingyo 0:20e026e254d6 6 #define PWMOFFSET 512 // pwm @ Duty 50%
kangmingyo 0:20e026e254d6 7 #define MaxBuf 255 // buffer size to store the speed data
kangmingyo 0:20e026e254d6 8
kangmingyo 0:20e026e254d6 9 class MotorCtl
kangmingyo 0:20e026e254d6 10 {
kangmingyo 0:20e026e254d6 11 public:
kangmingyo 0:20e026e254d6 12
kangmingyo 0:20e026e254d6 13 MotorCtl(PinName Pwm, PinName Dir, PinName tachoA, PinName tachoB);
kangmingyo 0:20e026e254d6 14
kangmingyo 0:20e026e254d6 15 ~MotorCtl();
kangmingyo 0:20e026e254d6 16
kangmingyo 0:20e026e254d6 17 int getRPM();
kangmingyo 5:15d0276d7e21 18 float CalculateCumDis();
kangmingyo 5:15d0276d7e21 19 float CalculateRelaDis();
kangmingyo 7:42c478f9a1fe 20 float CalculateVelocity();
kangmingyo 0:20e026e254d6 21 int getTarget();
kangmingyo 0:20e026e254d6 22 int getError();
kangmingyo 0:20e026e254d6 23 float getKP();
kangmingyo 0:20e026e254d6 24 float getKI();
kangmingyo 0:20e026e254d6 25 float getKD();
kangmingyo 0:20e026e254d6 26 int *getHistory();
kangmingyo 0:20e026e254d6 27 int getCurrentPosition();
kangmingyo 0:20e026e254d6 28
kangmingyo 0:20e026e254d6 29 void SetPeriod(long pwmPeriod); // set pwm period
kangmingyo 0:20e026e254d6 30 void setTarget(int spd);
kangmingyo 0:20e026e254d6 31 void setPID(float p, float i, float d);
kangmingyo 0:20e026e254d6 32 void setDirection(); // set the direction
kangmingyo 4:a629f46d6594 33
kangmingyo 5:15d0276d7e21 34
kangmingyo 0:20e026e254d6 35 //Control Methods
kangmingyo 0:20e026e254d6 36 void UpdateCurrentPosition();
kangmingyo 0:20e026e254d6 37 void PIDControl();
kangmingyo 0:20e026e254d6 38 void Reset(void);
kangmingyo 0:20e026e254d6 39
kangmingyo 4:a629f46d6594 40
kangmingyo 0:20e026e254d6 41
kangmingyo 0:20e026e254d6 42 private:
kangmingyo 0:20e026e254d6 43 PwmOut _pwm;
kangmingyo 0:20e026e254d6 44 DigitalOut _Dir;
kangmingyo 0:20e026e254d6 45 DigitalInOut _tachoA;
kangmingyo 0:20e026e254d6 46 DigitalInOut _tachoB;
kangmingyo 0:20e026e254d6 47 Ticker _tick;
kangmingyo 0:20e026e254d6 48
kangmingyo 5:15d0276d7e21 49 long CurrentPosition, PreviousPosition, DistancePosition; // Position Value
kangmingyo 4:a629f46d6594 50 int CurrentSpeed, Error,PreviousError; // Speed Data
kangmingyo 5:15d0276d7e21 51 float duty; // Duty level ( 0-1024)
kangmingyo 0:20e026e254d6 52 unsigned int pwmPeriod; // default 50ms
kangmingyo 0:20e026e254d6 53 unsigned char pwmpin; // PB2 ( 10 )
kangmingyo 0:20e026e254d6 54 unsigned char ppin, npin,dr; // dr =10 means ccwise, dr=0 means clockwise
kangmingyo 0:20e026e254d6 55 unsigned int CntPerRev;
kangmingyo 0:20e026e254d6 56 unsigned int DeltaT;
kangmingyo 0:20e026e254d6 57 unsigned char PreviousEncode;
kangmingyo 0:20e026e254d6 58 float kp, ki, kd;
kangmingyo 0:20e026e254d6 59 int integ, derv,control,cw0[MaxBuf];
kangmingyo 0:20e026e254d6 60 unsigned char cpidx;
kangmingyo 0:20e026e254d6 61 float CalculateRPM(int DeltaCnt); // Calculate RPM value
kangmingyo 5:15d0276d7e21 62
kangmingyo 1:911f5a86c105 63 float vel;
kangmingyo 4:a629f46d6594 64 int TargetSpeed;
kangmingyo 0:20e026e254d6 65
kangmingyo 0:20e026e254d6 66 };
kangmingyo 0:20e026e254d6 67 #endif
kangmingyo 0:20e026e254d6 68
kangmingyo 0:20e026e254d6 69
kangmingyo 0:20e026e254d6 70