Rotork Research Team / Mbed 2 deprecated TFM_Encoder

Dependencies:   mbed QEI

Revision:
9:061600a6c750
Parent:
8:2e690f407ec6
Child:
10:808cb9052f14
--- a/main.cpp	Mon Nov 19 15:30:08 2018 +0000
+++ b/main.cpp	Tue Nov 20 15:34:06 2018 +0000
@@ -1,6 +1,5 @@
 #include "mbed.h"
 #include "QEI.h"
-#include "FastPWM.h"
 
 void Initialisation (void); //These voids are written after the main. They must be listed here too (functional prototypes).
 void StepCW(void);
@@ -22,10 +21,10 @@
 
 Timer t;
 
-FastPWM      Phase1       (p21);         //Pin and LED set up                   
-FastPWM      Phase2       (p22);
-FastPWM      Phase3       (p23);
-FastPWM      Phase4       (p24);
+PwmOut      Phase1       (p21);         //Pin and LED set up                   
+PwmOut      Phase2       (p22);
+PwmOut      Phase3       (p23);
+PwmOut      Phase4       (p24);
 
 AnalogOut Aout(p18);
 
@@ -40,19 +39,18 @@
 int StateA = 0;
 int StateB  = 0;
 //int StateC = 0;
-int AdjCW = 2;
-int AdjACW = 5;
-int TimePerClick = 0;  
+int AdjCW = 3;
+int AdjACW = 6;
+int TimePerClick = 0; 
 int TimePerRev = 0;
 int RPS = 0;
 int rpm = 0;
-int SetPoint = 250;
+int SetPoint = 500;
 int z = 80;
-int PWMduty = 10000;
 
 char c;
 
-float duty   =   0;
+float duty   =   1;
 float diff = 0.0;
 float x=0.1;       //x=time of square wave when 1 phase energised, 
 float y=0.04;        //y=time of square wave when 2 phases energised
@@ -60,24 +58,16 @@
 int main(void) 
 {   
     pc.baud(230400);        //Set fastest baud rate
-  /*  while (1)
-    {
-    Phase1.period_ticks(20);
-    Phase1.pulsewidth_ticks(10);
-    while(1)
-    {
-        
-    }    
-    } */   
-    Phase1.period_ticks(10000);
-    Phase2.period_ticks(10000);
-    Phase3.period_ticks(10000);
-    Phase4.period_ticks(10000);
+    Phase1.period(0.00002);
+    Phase2.period(0.00002);
+    Phase3.period(0.00002);
+    Phase4.period(0.00002);
     StepCW();
     Initialisation();
     wait(0.1);
     t.start();
-
+  
+  
     while(wheel.getRevolutions()<2)
     { 
         switch(StateA)
@@ -117,10 +107,10 @@
         while((led1 == 0) && (led2 == 0))
         {
             Aout = 0;
-            Phase1.pulsewidth_ticks(0);
-            Phase2.pulsewidth_ticks(0);
-            Phase3.pulsewidth_ticks(0);
-            Phase4.pulsewidth_ticks(0);
+            Phase1.write(0);
+            Phase2.write(0);
+            Phase3.write(0);
+            Phase4.write(0);
             GetChar();            
             //StateB = wheel.getPulses()%16;
             //StateC = (800+wheel.getPulses()+StateA+AdjCW)%16;
@@ -159,7 +149,7 @@
             if(wheel.getWhoop()==1)
             {
                 RPM();
-                //VelocityLoop();
+                VelocityLoop();
             }  
         }
     
@@ -194,7 +184,7 @@
             if(wheel.getWhoop()==1)
             {
                 RPM();
-                //VelocityLoop();
+                VelocityLoop();
             }  
         }
         while((wheel.getRevolutions()>1) && (wheel.getPulses()>0) && (led2==1))
@@ -228,7 +218,7 @@
             if(wheel.getWhoop()==1)
             {
                 RPM();
-                //VelocityLoop();
+                VelocityLoop();
             }
         }
         while((wheel.getRevolutions()>1) && (wheel.getPulses()<1) && (led2==1))
@@ -260,7 +250,7 @@
            if(wheel.getWhoop()==1)
             {
                 RPM();
-                //VelocityLoop();
+                VelocityLoop();
             }    
         }
     }
@@ -287,85 +277,85 @@
 
 void Ph1(void)
 {
-        Phase1.pulsewidth_ticks(PWMduty);
-        Phase2.pulsewidth_ticks(0);
-        Phase3.pulsewidth_ticks(0);
-        Phase4.pulsewidth_ticks(0);                  
+        Phase1.write(duty);
+        Phase2.write(0);
+        Phase3.write(0);
+        Phase4.write(0);                         
         //wait(x);
         //pc.printf("Phase 1 = %i\n\r", wheel.getPulses());   
 }
 
 void Ph12 (void)
 {
-        Phase1.pulsewidth_ticks(PWMduty);
-        Phase2.pulsewidth_ticks(PWMduty);
-        Phase3.pulsewidth_ticks(0);
-        Phase4.pulsewidth_ticks(0);
+        Phase1.write(duty);
+        Phase2.write(duty);
+        Phase3.write(0);
+        Phase4.write(0);
         //wait(y);
 }
 
 void Ph2(void)
 {
-        Phase1.pulsewidth_ticks(0);
-        Phase2.pulsewidth_ticks(PWMduty);
-        Phase3.pulsewidth_ticks(0);
-        Phase4.pulsewidth_ticks(0);
+        Phase1.write(0);
+        Phase2.write(duty);
+        Phase3.write(0);
+        Phase4.write(0);
         //wait(x);
         //pc.printf("Phase 2 = %i\n\r", wheel.getPulses());
 }
 
 void Ph23 (void)
 {
-        Phase1.pulsewidth_ticks(0);
-        Phase2.pulsewidth_ticks(PWMduty);
-        Phase3.pulsewidth_ticks(PWMduty);
-        Phase4.pulsewidth_ticks(0);
+        Phase1.write(0);
+        Phase2.write(duty);
+        Phase3.write(duty);
+        Phase4.write(0);
         //wait(y);
 }
 
 void Ph3(void)
 {
-        Phase1.pulsewidth_ticks(0);
-        Phase2.pulsewidth_ticks(0);
-        Phase3.pulsewidth_ticks(PWMduty);
-        Phase4.pulsewidth_ticks(0);
+        Phase1.write(0);
+        Phase2.write(0);
+        Phase3.write(duty);
+        Phase4.write(0);
         //wait(x);
         //pc.printf("Phase 3 = %i\n\r", wheel.getPulses());
 }
 void Ph34 (void)
 {
-        Phase1.pulsewidth_ticks(0);
-        Phase2.pulsewidth_ticks(0);
-        Phase3.pulsewidth_ticks(PWMduty);
-        Phase4.pulsewidth_ticks(PWMduty);
+        Phase1.write(0);
+        Phase2.write(0);
+        Phase3.write(duty);
+        Phase4.write(duty);
         //wait(y);
 }
 
 void Ph4(void)
 {
-        Phase1.pulsewidth_ticks(0);
-        Phase2.pulsewidth_ticks(0);
-        Phase3.pulsewidth_ticks(0);
-        Phase4.pulsewidth_ticks(PWMduty);
+        Phase1.write(0);
+        Phase2.write(0);
+        Phase3.write(0);
+        Phase4.write(duty);
         //wait(x);
         //pc.printf("Phase 4 = %i\n\r", wheel.getPulses());
 }
 
 void Ph41 (void)
 {
-        Phase1.pulsewidth_ticks(PWMduty);
-        Phase2.pulsewidth_ticks(0);
-        Phase3.pulsewidth_ticks(0);
-        Phase4.pulsewidth_ticks(PWMduty);
+        Phase1.write(duty);
+        Phase2.write(0);
+        Phase3.write(0);
+        Phase4.write(duty);
         //wait(y);
 }
 
 void Initialisation (void)
 {
-    Phase1.pulsewidth_ticks(0);
-    Phase2.pulsewidth_ticks(0);
-    Phase3.pulsewidth_ticks(0);
-    Phase4.pulsewidth_ticks(0);
+    Phase1.write(0);
+    Phase2.write(0);
+    Phase3.write(0);
+    Phase4.write(0);
     led1 = 0;
     led2 = 0;
     led3 = 0;
@@ -389,23 +379,17 @@
             }
             if(c == 'q')  
             {
+                //duty = duty + 0.0001;
                 SetPoint=SetPoint+10;         
             }
             if(c == 'a')  
             {
+                //duty = duty - 0.0001;
                 SetPoint=SetPoint-10;
-                //if (Setpoint <100)
-                       //{
-                          // SetPoint = 100;
-                       // }
-            }
-            if(c == 'p')  
-            {
-                duty = duty+0.1;         
-            }
-            if(c == 'l')  
-            {
-                duty = duty-0.1;
+                if (SetPoint <500)
+               {
+                   SetPoint = 500;
+               }
             }
         }
 }
@@ -420,7 +404,6 @@
     RPS = 10000000 / TimePerRev;
     rpm = (RPS * 60)/10000;
     Aout=((0.298*rpm)/1000);               // for 500 rpm (0.30303*500/1000)*3.3V = 0.500V   
-    pc.printf("duty = %f, PWMduty = %i, SetPoint = %i, rpm = %i\n\r", duty, PWMduty, SetPoint, rpm); 
     //pc.printf("rpm = %i\n\r", rpm);
     //pc.printf("StateA= %i, StateB= %i, StateC= %i, Pulses = %i\n\r", StateA, StateB, StateC, wheel.getPulses());
 }
@@ -428,18 +411,14 @@
 void VelocityLoop (void)
 {
    diff = SetPoint - rpm;
-   duty = duty + (diff*0.01);
-   
-    
-   if (duty > 19)
+   duty = duty + (diff*0.00001); 
+   if (duty > 1)
    {
-       duty = 19;
+       duty = 1;
     }
-    if (duty <2)
+    if (duty <0.96)
    {
-       duty = 2;
+       duty = 0.96;
     }
-    PWMduty = (int) duty;
-    pc.printf("duty = %f, PWMduty = %i, SetPoint = %i, rpm = %i\n\r", duty, PWMduty, SetPoint, rpm); 
-       
+    pc.printf("%i, %.5f\r", SetPoint, duty);   //SetPoint = %i, rpm = %i\n\r", duty, SetPoint, rpm);
 }
\ No newline at end of file