Rotork Research Team / Mbed 2 deprecated TFM_Encoder

Dependencies:   mbed QEI

Revision:
8:2e690f407ec6
Parent:
7:b8de1529c7fc
Child:
9:061600a6c750
--- a/main.cpp	Mon Nov 19 11:14:28 2018 +0000
+++ b/main.cpp	Mon Nov 19 15:30:08 2018 +0000
@@ -1,5 +1,6 @@
 #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);
@@ -21,10 +22,10 @@
 
 Timer t;
 
-PwmOut      Phase1       (p21);         //Pin and LED set up                   
-PwmOut      Phase2       (p22);
-PwmOut      Phase3       (p23);
-PwmOut      Phase4       (p24);
+FastPWM      Phase1       (p21);         //Pin and LED set up                   
+FastPWM      Phase2       (p22);
+FastPWM      Phase3       (p23);
+FastPWM      Phase4       (p24);
 
 AnalogOut Aout(p18);
 
@@ -47,10 +48,11 @@
 int rpm = 0;
 int SetPoint = 250;
 int z = 80;
+int PWMduty = 10000;
 
 char c;
 
-float duty   =   1;
+float duty   =   0;
 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
@@ -58,16 +60,24 @@
 int main(void) 
 {   
     pc.baud(230400);        //Set fastest baud rate
-    Phase1.period(0.000001);
-    Phase2.period(0.000001);
-    Phase3.period(0.000001);
-    Phase4.period(0.000001);
+  /*  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);
     StepCW();
     Initialisation();
     wait(0.1);
     t.start();
-  
-  
+
     while(wheel.getRevolutions()<2)
     { 
         switch(StateA)
@@ -107,10 +117,10 @@
         while((led1 == 0) && (led2 == 0))
         {
             Aout = 0;
-            Phase1.write(0);
-            Phase2.write(0);
-            Phase3.write(0);
-            Phase4.write(0);
+            Phase1.pulsewidth_ticks(0);
+            Phase2.pulsewidth_ticks(0);
+            Phase3.pulsewidth_ticks(0);
+            Phase4.pulsewidth_ticks(0);
             GetChar();            
             //StateB = wheel.getPulses()%16;
             //StateC = (800+wheel.getPulses()+StateA+AdjCW)%16;
@@ -277,85 +287,85 @@
 
 void Ph1(void)
 {
-        Phase1.write(duty);
-        Phase2.write(0);
-        Phase3.write(0);
-        Phase4.write(0);                         
+        Phase1.pulsewidth_ticks(PWMduty);
+        Phase2.pulsewidth_ticks(0);
+        Phase3.pulsewidth_ticks(0);
+        Phase4.pulsewidth_ticks(0);                  
         //wait(x);
         //pc.printf("Phase 1 = %i\n\r", wheel.getPulses());   
 }
 
 void Ph12 (void)
 {
-        Phase1.write(duty);
-        Phase2.write(duty);
-        Phase3.write(0);
-        Phase4.write(0);
+        Phase1.pulsewidth_ticks(PWMduty);
+        Phase2.pulsewidth_ticks(PWMduty);
+        Phase3.pulsewidth_ticks(0);
+        Phase4.pulsewidth_ticks(0);
         //wait(y);
 }
 
 void Ph2(void)
 {
-        Phase1.write(0);
-        Phase2.write(duty);
-        Phase3.write(0);
-        Phase4.write(0);
+        Phase1.pulsewidth_ticks(0);
+        Phase2.pulsewidth_ticks(PWMduty);
+        Phase3.pulsewidth_ticks(0);
+        Phase4.pulsewidth_ticks(0);
         //wait(x);
         //pc.printf("Phase 2 = %i\n\r", wheel.getPulses());
 }
 
 void Ph23 (void)
 {
-        Phase1.write(0);
-        Phase2.write(duty);
-        Phase3.write(duty);
-        Phase4.write(0);
+        Phase1.pulsewidth_ticks(0);
+        Phase2.pulsewidth_ticks(PWMduty);
+        Phase3.pulsewidth_ticks(PWMduty);
+        Phase4.pulsewidth_ticks(0);
         //wait(y);
 }
 
 void Ph3(void)
 {
-        Phase1.write(0);
-        Phase2.write(0);
-        Phase3.write(duty);
-        Phase4.write(0);
+        Phase1.pulsewidth_ticks(0);
+        Phase2.pulsewidth_ticks(0);
+        Phase3.pulsewidth_ticks(PWMduty);
+        Phase4.pulsewidth_ticks(0);
         //wait(x);
         //pc.printf("Phase 3 = %i\n\r", wheel.getPulses());
 }
 void Ph34 (void)
 {
-        Phase1.write(0);
-        Phase2.write(0);
-        Phase3.write(duty);
-        Phase4.write(duty);
+        Phase1.pulsewidth_ticks(0);
+        Phase2.pulsewidth_ticks(0);
+        Phase3.pulsewidth_ticks(PWMduty);
+        Phase4.pulsewidth_ticks(PWMduty);
         //wait(y);
 }
 
 void Ph4(void)
 {
-        Phase1.write(0);
-        Phase2.write(0);
-        Phase3.write(0);
-        Phase4.write(duty);
+        Phase1.pulsewidth_ticks(0);
+        Phase2.pulsewidth_ticks(0);
+        Phase3.pulsewidth_ticks(0);
+        Phase4.pulsewidth_ticks(PWMduty);
         //wait(x);
         //pc.printf("Phase 4 = %i\n\r", wheel.getPulses());
 }
 
 void Ph41 (void)
 {
-        Phase1.write(duty);
-        Phase2.write(0);
-        Phase3.write(0);
-        Phase4.write(duty);
+        Phase1.pulsewidth_ticks(PWMduty);
+        Phase2.pulsewidth_ticks(0);
+        Phase3.pulsewidth_ticks(0);
+        Phase4.pulsewidth_ticks(PWMduty);
         //wait(y);
 }
 
 void Initialisation (void)
 {
-    Phase1.write(0);
-    Phase2.write(0);
-    Phase3.write(0);
-    Phase4.write(0);
+    Phase1.pulsewidth_ticks(0);
+    Phase2.pulsewidth_ticks(0);
+    Phase3.pulsewidth_ticks(0);
+    Phase4.pulsewidth_ticks(0);
     led1 = 0;
     led2 = 0;
     led3 = 0;
@@ -389,6 +399,14 @@
                           // SetPoint = 100;
                        // }
             }
+            if(c == 'p')  
+            {
+                duty = duty+0.1;         
+            }
+            if(c == 'l')  
+            {
+                duty = duty-0.1;
+            }
         }
 }
 
@@ -402,6 +420,7 @@
     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());
 }
@@ -409,14 +428,18 @@
 void VelocityLoop (void)
 {
    diff = SetPoint - rpm;
-   duty = duty + (diff*0.00005); 
-   if (duty > 0.9)
+   duty = duty + (diff*0.01);
+   
+    
+   if (duty > 19)
    {
-       duty = 0.9;
+       duty = 19;
     }
-    if (duty <0.1)
+    if (duty <2)
    {
-       duty = 0.1;
+       duty = 2;
     }
-    pc.printf("duty = %f, SetPoint = %i, rpm = %i\n\r", duty, SetPoint, rpm);    
+    PWMduty = (int) duty;
+    pc.printf("duty = %f, PWMduty = %i, SetPoint = %i, rpm = %i\n\r", duty, PWMduty, SetPoint, rpm); 
+       
 }
\ No newline at end of file