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

Dependencies:   AutomationElements CurrentRegulation_ mbed

main.cpp

Committer:
dfraj
Date:
2015-08-20
Revision:
1:feb19abb96b5
Parent:
0:c499ebd23db0

File content as of revision 1:feb19abb96b5:

#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"

Serial pc(USBTX, USBRX);

int main(){
    CurrentMeasurement c(p17, p18, p19, p20);
    while(true){
        pc.printf("Current phase A: %f\n\r", c.calculateCurrentA());
        pc.printf("Current phase B: %f\n\r", c.calculateCurrentB()); 
        pc.printf("Current phase C: %f\n\r", c.calculateCurrentC()); 
        pc.printf("Total Current: %f\n\r", c.calculateCurrentTotal()); 
        wait_ms(1);       
    }
}
*/

/*
#include "mbed.h"

AnalogIn gas(p16);
AnalogIn I_A(p17);
AnalogIn I_B(p18);
AnalogIn I_C(p19);
AnalogIn I_TOTAL(p20);

Serial pc(USBTX, USBRX);

int main() {
    float R_sh = 1e-3;
    float R_1s = 1e3;
    float R_1t = 1e3;
    float R_fs = 40e3;
    float R_ft = 20e3;
    float V_ref = 3.3;
    float I_A_, I_B_, I_C_, I_TOTAL_;
    while(1) {
        I_A_ = (R_sh * R_1s * (V_ref * I_A.read()))/R_fs - (R_sh * R_1s * (V_ref/2))/R_fs;
        I_B_ = (R_sh * R_1s * (V_ref * I_B.read()))/R_fs - (R_sh * R_1s * (V_ref/2))/R_fs;
        I_C_ = (R_sh * R_1s * (V_ref * I_C.read()))/R_fs - (R_sh * R_1s * (V_ref/2))/R_fs;
        I_TOTAL_ = (R_1t * (V_ref * I_TOTAL.read()))/(R_ft * R_sh) - (R_1t * (V_ref/2))/(R_ft * R_sh);
        pc.printf("Current phase A: %f\n\r", I_A_);
        pc.printf("Current phase B: %f\n\r", I_B_);
        pc.printf("Current phase C: %f\n\r", I_C_);
        pc.printf("Total Current: %f\n\r", I_TOTAL_);
        wait_ms(1);
    }
}
*/