First version of program for measuring current of three phase BLDC motor.

Dependencies:   AutomationElements CurrentRegulation_ mbed

Files at this revision

API Documentation at this revision

Comitter:
dfraj
Date:
Thu Aug 20 15:08:50 2015 +0000
Parent:
0:c499ebd23db0
Commit message:
Current regulation

Changed in this revision

AutomationElements.lib Show annotated file Show diff for this revision Revisions of this file
CurrentMeasurement.cpp Show diff for this revision Revisions of this file
CurrentMeasurement.h Show diff for this revision Revisions of this file
CurrentRegulation.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AutomationElements.lib	Thu Aug 20 15:08:50 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/TVZ-Mechatronics-Team/code/AutomationElements/#b9e11da0f2eb
--- a/CurrentMeasurement.cpp	Sat Jul 18 20:01:58 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#include "CurrentMeasurement.h"
-
-CurrentMeasurement::CurrentMeasurement(PinName pI_A, PinName pI_B, PinName pI_C, PinName pI_TOTAL):I_A(pI_A), I_B(pI_B), I_C(pI_C), I_TOTAL(pI_TOTAL){
-    setValues(1e-3, 1e3, 1e3, 40e3, 20e3, 3.3);
-    calculateCurrentA();
-    calculateCurrentB();
-    calculateCurrentC();
-    calculateCurrentTotal();
-}
-
-CurrentMeasurement::CurrentMeasurement(PinName pI_A, PinName pI_B, PinName pI_C, PinName pI_TOTAL, float R_sh, float R_1s, float R_1t, float R_fs, float R_ft, float V_ref):I_A(pI_A), I_B(pI_B), I_C(pI_C), I_TOTAL(pI_TOTAL){
-    setValues(R_sh, R_1s, R_1t, R_fs, R_ft, V_ref);
-    calculateCurrentA();
-    calculateCurrentB();
-    calculateCurrentC();
-    calculateCurrentTotal();
-}
-
-void CurrentMeasurement::setValues(float R_sh, float R_1s, float R_1t, float R_fs, float R_ft, float V_ref){
-    this->R_sh = R_sh;
-    this->R_1s = R_1s;
-    this->R_1t = R_1t;
-    this->R_fs = R_fs;
-    this->R_ft = R_ft;
-    this->V_ref = V_ref;    
-}
-
-float CurrentMeasurement::calculateCurrentA(){
-    return I_A_ = (R_sh * R_1s * (V_ref * I_A.read()))/R_fs - (R_sh * R_1s * (V_ref/2))/R_fs;
-}
-
-float CurrentMeasurement::calculateCurrentB(){
-    return I_B_ = (R_sh * R_1s * (V_ref * I_B.read()))/R_fs - (R_sh * R_1s * (V_ref/2))/R_fs;
-}
-
-float CurrentMeasurement::calculateCurrentC(){
-    return I_C_ = (R_sh * R_1s * (V_ref * I_C.read()))/R_fs - (R_sh * R_1s * (V_ref/2))/R_fs;
-}
-
-float CurrentMeasurement::calculateCurrentTotal(){
-    return I_TOTAL_ = (R_1t * (V_ref * I_TOTAL.read()))/(R_ft * R_sh) - (R_1t * (V_ref/2))/(R_ft * R_sh);       
-}
\ No newline at end of file
--- a/CurrentMeasurement.h	Sat Jul 18 20:01:58 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-#ifndef CURRENTMEASUREMENT_H
-#define CURRENTMEASUREMENT_H
-
-#include "mbed.h"
-
-class CurrentMeasurement{
-    public:
-        CurrentMeasurement(PinName I_A, PinName I_B, PinName I_C, PinName I_TOTAL);
-        CurrentMeasurement(PinName I_A, PinName I_B, PinName I_C, PinName I_TOTAL, float R_sh, float R_1s, float R_1t, float R_fs, float R_ft, float V_ref);
-        void setValues(float R_sh, float R_1s, float R_1t, float R_fs, float R_ft, float V_ref);
-        float calculateCurrentA();
-        float calculateCurrentB();
-        float calculateCurrentC();
-        float calculateCurrentTotal();
-        
-    private:
-        AnalogIn I_A, I_B, I_C, I_TOTAL;
-        float R_sh, R_1s, R_1t, R_fs, R_ft, V_ref, I_A_, I_B_, I_C_, I_TOTAL_; 
-    };
-
-#endif
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CurrentRegulation.lib	Thu Aug 20 15:08:50 2015 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/dfraj/code/CurrentRegulation_/#d8dab3dae6f2
--- a/main.cpp	Sat Jul 18 20:01:58 2015 +0000
+++ b/main.cpp	Thu Aug 20 15:08:50 2015 +0000
@@ -1,3 +1,30 @@
+#include "mbed.h"
+#include "CurrentRegulation.h"
+#include "PI.h"
+
+Serial pc(USBTX, USBRX);
+CurrentRegulation cr(p17, p18, p19, p20);
+
+int main() {    
+    double K_R;
+    double T_I = 1.428e-3;
+    double T_d  = 500e-6;
+    while(true) {
+      double I_Ar = cr.showResult();
+      pc.printf("Current phase A: %f\n\r", I_Ar);  
+      K_R = cr.calculateKr();
+      PI reg(K_R, T_I, T_d);
+      double in = pc.getc();
+      double u = in - I_Ar;
+      reg.in(u);
+    }  
+}
+
+
+
+
+
+/*
 #include "mbed.h"
 #include "CurrentMeasurement.h"
 
@@ -13,8 +40,10 @@
         wait_ms(1);       
     }
 }
+*/
 
-/*#include "mbed.h"
+/*
+#include "mbed.h"
 
 AnalogIn gas(p16);
 AnalogIn I_A(p17);