Rotork Research Team / Mbed 2 deprecated TFM_Encoder

Dependencies:   mbed QEI

Revision:
17:19b2c598810a
Parent:
16:e6c8df9960c6
Child:
18:3493de6fe8ce
--- a/main.cpp	Wed Feb 06 15:46:51 2019 +0000
+++ b/main.cpp	Wed Apr 03 10:46:47 2019 +0000
@@ -23,11 +23,11 @@
 
 Timer t;                                                //timer used in RPM
 
-PwmOut      Phase1       (p21);                         //Pin and LED set up - originally standard pins but changed to PWM to enable speed control
-PwmOut      Phase2       (p22);
-PwmOut      Phase3       (p23);
-PwmOut      Phase4       (p24);
-DigitalOut      UnUsedPhase1 (p25);
+DigitalOut      UnUsedPhase1 (p21);
+PwmOut      Phase1       (p22);                         //Pin and LED set up - originally standard pins but changed to PWM to enable speed control
+PwmOut      Phase2       (p23);
+PwmOut      Phase3       (p24);
+PwmOut      Phase4       (p25);
 DigitalOut      UnUsedPhase2 (p26);
 
 //AnalogOut Aout(p18);                                    //Used with multimeter to give a speed indicator 1mV = 1RPM
@@ -53,8 +53,8 @@
 int TimePerClick = 0;                                   //for calc of RPM
 int RPS = 0;                                            //for calc of RPM
 int rpm = 0;                                            //for calc of RPM
-int SetPoint = 1500;                                     //for adjusting the speed
-int enc = 3200;
+int SetPoint = 1000;                                     //for adjusting the speed
+int enc = 3200;                                         //800 x4 enc = 3200 Pulses Per Rev
 int i = 0;
 int j = 0;
 int k = 0;
@@ -62,15 +62,15 @@
 int m = 0;
 int n = 0;
 int s = enc/50;
-int z = 3200;                                           //TimePerRev = TimePerClick * (800/z); 800 pulses per rev, PulseCount2_==800 for wheel.getwhoop_ flag. i.e. 10 points per reoluition for RPM calc.
+int z = 3200;                                           //TimePerRev = TimePerClick * (3200/z); 3200 pulses per rev, PulseCount2_==3200 for wheel.getwhoop_ flag. i.e. 1 points per reoluition for RPM calc.
 int T = 80;                                             //Motor temp limit
 int slowloop = 0;
      
 char c;                                                 //keyboard cotrol GetChar
 
-float duty   =   1;                                     //velocity loop: 1 = fastest, 0.96 = slowest. Below 0.96 the motor will not operate.
+float duty   =   1;                                    
 float diff = 0.0;                                       //Velocity loop: diff = SetPoint - rpm;
-float AdjDiff = 0.00001;
+float AdjDiff = 0.0001;
 float p = 0.000014;
 float x=0.1;                                            //x=time of square wave when 1 phase energised, 
 float TimePerRev = 0;                                     //for calc of RPM
@@ -79,7 +79,7 @@
 
 int main(void) 
 {   
-    pc.baud(230400);                                    //Set fastest baud rate
+    pc.baud(921600);                                    //Set fastest baud rate
     Phase1.period(p);                             //period of 0.000002 = 2 microseconds (500kHz). Good balance of low and high speed performance.
     Phase2.period(p);
     Phase3.period(p);
@@ -91,8 +91,7 @@
     Initialisation();
     
 /*while(1)        
-{
-   
+{  
 }
 */
 
@@ -741,6 +740,30 @@
             {
 pc.printf("                                                                     0 = Phase Mapping\n\rq = setpoint+, w = duty+, e = AdjDiff+, t = temp, y = states, o = AdjCW+, p = AdjACW+,\n\r a = setpoint-, s = duty-, d = AdjDiff-,                  k = AdjCW-, l = AdjACW-,\n\r   z = CW,         x = ACW\n\r");
             }
+            if(c == '1')
+            {
+                Ph1();
+            }
+            if(c == '2')
+            {
+                Ph2();
+            }
+            if(c == '3')
+            {
+                Ph3();
+            }
+            if(c == '4')
+            {
+                Ph4();
+            }
+            if(c == '5')
+            {
+                Ph0();
+            }
+            if(c == '6')
+            {
+                StepACW();
+            }
             if(c == 'z')                            //turn on led1 causes CW operation
             {
                 led1 = !led1;
@@ -765,9 +788,9 @@
             if(c == 'a')                            //Decreases setpoint used in Velocity loop
             {
                 SetPoint=SetPoint-5;                
-                if (SetPoint <50)
+                if (SetPoint <0)
                {
-                   SetPoint = 50;
+                   SetPoint = 0;
                }
                pc.printf("%i, %.5f, %i, %i, %i  \n\r", SetPoint, duty, AdjCW, AdjACW, rpm);
             }
@@ -872,10 +895,10 @@
 
 void RPM (void)
 {
-    wheel.ResetWhoop();                         //PulseCount2_==400 x 4,  x4 encoding, whoop_=1;
+    wheel.ResetWhoop();                         //Whoop = 1 x per rev
     TimePerClick = (t.read_us());               //read timer in microseconds       
     t.reset();                                  //reset timer
-    TimePerRev = enc * TimePerClick / z;    //z = 400 (PulseCount2_==1600)
+    TimePerRev = TimePerClick;   //enc * TimePerClick / z;        //enc = 3200, z = 3200 (PulseCount2_==1600)
     TimePerRev = TimePerRev / 1000000;          // 1microsecond = 0.000001s
     RPS = 1 / TimePerRev;                       //inverse to convert SPR to RPS
     rpm = RPS * 60;                             //x 60 to convert RPS to RPM
@@ -886,7 +909,7 @@
         if(rpm < 65)
         {
             AdjCW = (57);
-            AdjACW = (12);
+            AdjACW = (14);
         }
         if(rpm > 64 and rpm <75)
         {
@@ -941,7 +964,7 @@
         if(rpm > 974 and rpm < 1150)
         {
             AdjCW = (4);
-            AdjACW = (1-n);
+            AdjACW = (1);
         }              
         if(rpm > 1149 and rpm < 1375)
         {
@@ -1004,543 +1027,14 @@
         if(rpm < 175)
         {
             AdjCW = (60);
-            AdjACW = (11);
+            AdjACW = (14);
         }      
-        if(rpm > 200 and rpm < 275)
-        {
-            AdjCW = (5);
-            AdjACW = (11);
-        }if(rpm > 300 and rpm < 1000)
+        if(rpm > 200 and rpm < 1000)
         {
             AdjCW = (5);
             AdjACW = (5);
         }
     }
-        /*if(rpm < 180)
-    {
-        AdjCW = (57+n);
-        AdjACW = (12-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }                 
-    }
-    if(rpm > 179 and rpm <195)
-    {
-        AdjCW = (58+n);
-        AdjACW = (11-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 194 and rpm <220)
-    {
-        AdjCW = (59+n);
-        AdjACW = (10-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 219 and rpm <240)
-    {
-        AdjCW = (60+n);
-        AdjACW = (9-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 239 and rpm <295)
-    {
-        AdjCW = (61+n);
-        AdjACW = (8-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 294 and rpm <325)
-    {
-        AdjCW = (62+n);
-        AdjACW = (7-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 324 and rpm <355)
-    {
-        AdjCW = (63+n);
-        AdjACW = (6-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 354 and rpm <415)
-    {
-        AdjCW = (0+n);
-        AdjACW = (5-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 414 and rpm <595)
-    {
-        AdjCW = (1+n);
-        AdjACW = (4-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 594 and rpm <655)
-    {
-        AdjCW = (2+n);
-        AdjACW = (3-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 654 and rpm <765)
-    {
-        AdjCW = (3+n);
-        AdjACW = (2-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 764 and rpm <1010)
-    {
-        AdjCW = (4+n);
-        AdjACW = (1-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 1009 and rpm <1150)
-    {
-        AdjCW = (5+n);
-        AdjACW = (0-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 1149 and rpm <1225)
-    {
-        AdjCW = (6+n);
-        AdjACW = (63-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 1224 and rpm <1310)
-    {
-        AdjCW = (7+n);
-        AdjACW = (62-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 1309 and rpm <1670)
-    {
-        AdjCW = (8+n);
-        AdjACW = (61-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 1669 and rpm <2035)
-    {
-        AdjCW = (9+n);
-        AdjACW = (60-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 2034 and rpm <2175)
-    {
-        AdjCW = (10+n);
-        AdjACW = (59-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 2174 and rpm <2275)
-    {
-        AdjCW = (11+n);
-        AdjACW = (58-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 2274 and rpm <2515)
-    {
-        AdjCW = (12+n);
-        AdjACW = (57-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 2514 and rpm <2575)
-    {
-        AdjCW = (13+n);
-        AdjACW = (56-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 2574 and rpm <2755)
-    {
-        AdjCW = (14+n);
-        AdjACW = (55-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 2754 and rpm <2835)
-    {
-        AdjCW = (15+n);
-        AdjACW = (54-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 2834 and rpm <2860)
-    {
-        AdjCW = (16+n);
-        AdjACW = (53-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }
-    if(rpm > 2861)
-    {
-        AdjCW = (17+n);
-        AdjACW = (52-n);
-        if (AdjCW >(s-1))
-        {
-            AdjCW = 0;
-        }
-        if (AdjCW <0)
-        {
-            AdjCW = (s-1);
-        }
-        if (AdjACW <0)
-        {
-            AdjACW = (s-1);
-        }
-        if (AdjACW >(s-1))
-        {
-            AdjACW = 0;
-        }
-    }*/
     //pc.printf("RPS = %i      \r", RPS);
     //pc.printf("StateA= %i, StateB= %i, StateC= %i, Pulses = %i\n\r", StateA, StateB, StateC, wheel.getPulses());
 }