Quantcast
Channel: Motor drivers forum - Recent Threads
Viewing all articles
Browse latest Browse all 14309

BOOSTXL-DRV8305EVM: BLDC FOC. Always jittering speed

$
0
0
Part Number: BOOSTXL-DRV8305EVM
Other Parts Discussed in Thread: DRV8305

Tool/software:

Hello,

I'm tryng to implement FOC for a 36V BLDC motor. But I can't manage to get a stable speed. So I try to use open loop (no load) to see if the speed becomes stable. But still jittering speed.

	 theta_elec += 0.000628; //Increase angle every ISR loop (10kHz)

	 theta_elec = fmodf(theta_elec, 2.0f * 3.14159265359f);
	 if (theta_elec < 0.0f) {
	     theta_elec += 2.0f * 3.14159265359f;
	 } // reset angle when it exceeds 2pi

	vd = 0;
	vq = 0.5; //Open loop constant voltage vectors


    sin_theta = sinf(theta_elec);
    cos_theta = cosf(theta_elec);


	v_alpha = vd * cos_theta - vq * sin_theta;
	v_beta  = vd * sin_theta + vq * cos_theta;


	Va = v_alpha;
	Vb = -0.5f * v_alpha + 0.866f * v_beta;
	Vc = -0.5f * v_alpha - 0.866f * v_beta;


	Va = 0.5f + Va / 36; // Just some normalization of the voltages
	Vb = 0.5f + Vb / 36;
	Vc = 0.5f + Vc / 36;

	Va = 1.0f - Va; // Need to invert them, because I have center aligned PWM (count up then down)
	Vb = 1.0f - Vb; // So duty cycle is 0% when CMPA is TBPRD and 100% when CMPA is 0
	Vc = 1.0f - Vc;

	Va = fminf(fmaxf(Va, 0.0f), 1.0f); // make sure its within [0,1]
	Vb = fminf(fmaxf(Vb, 0.0f), 1.0f);
	Vc = fminf(fmaxf(Vc, 0.0f), 1.0f);

	v_offset = (Va + Vb + Vc) / 3.0f; // Just checking that my 3-phase is balanced

	EPwm1Regs.CMPA.half.CMPA = Va * EPWM1_TIMER_TBPRD; // Apply duty
	EPwm2Regs.CMPA.half.CMPA = Vb * EPWM2_TIMER_TBPRD;
	EPwm3Regs.CMPA.half.CMPA = Vc * EPWM3_TIMER_TBPRD;


The motor does reach a stable speed, but its jittering. I just don't understand what could possibly cause the jittering. 

For encoder I am using the AMT102-V, https://www.sameskydevices.com/product/resource/amt10-v.pdf?srsltid=AfmBOopzeZD5O_iFLEs7LClAbDyvhAYRlTbcETgZ_nwnSlppNVfU2lTk

The motor is: https://docs.rs-online.com/fc1a/0900766b8162b79a.pdf

I am using the DRV8305 eval board, and a C2000 launchpad with F28069.

Here is an example of the output from my encoder. The pulse train is not regular:








Viewing all articles
Browse latest Browse all 14309

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>