Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Fan jerks when turned ON

I am using LPC804M101JD24 & DRV10983 for BLDC fan control. The issue I am facing is that the fan jerks when turned ON. After initial jerk, it runs fine through various speeds. The motor parameters I have set is listed below. Please help me in finding which of them is not set properly and causes jerking.
Thank you.

// ---------------------------------------- Parameter Config ---------------------------------------- //
// ----------- Setup ----------- EEPROM MotorParameter of DRV10983 ----------- //

struct_drv10983.MotorParam1.bit.Rm = 0x48; // Pg.19 , Rm (Motor Phase Resistance) // 0x48 - 1.23Ohm
struct_drv10983.MotorParam2.bit.Kt = 0x5A; // Pg.20 , Kt (BEMF Constant) // 0x69 - 528mV/Hz

struct_drv10983.SysOpt8.bit.VregSel = 1; // Pg.14 , Buck Regulator Voltage // 1 - 3.3V

struct_drv10983.SysOpt2.bit.BrkDoneThr = 4; // Pg.24 , Braking Mode Setting // 4 - 0.33s

struct_drv10983.SysOpt1.bit.RvsDrThr = 0; // Pg.22 , Reverse Drive Threshold // 0 - 6.3Hz
struct_drv10983.SysOpt1.bit.RvsDrEn = 0; // Pg.22 , Reverse drive enable // 0 - disable

struct_drv10983.SysOpt1.bit.ISDen = 1; // Pg.22 , Initial speed detect (ISD) // 1 - enable
struct_drv10983.SysOpt1.bit.ISDThr = 0; // Pg.23 , ISD stationary judgment threshold // 0 - 6Hz(80ms,no zero cross)

struct_drv10983.SysOpt8.bit.IPDCurrThr = 4; // Pg.25 , IPD current threshold 0.2Ax(n+1) // 4 - 0.8A
struct_drv10983.SysOpt8.bit.IPDClk = 3; // Pg.25 , Inductive sense clock // 3 - 95Hz
struct_drv10983.SysOpt5.bit.IPDRlsMd = 1; // Pg.25 , IPD release mode (Brake.Recirculate.Clk) // 1 - recirculate mode
struct_drv10983.SysOpt1.bit.IPDAdvcAgl = 0; // Pg.26 , Advancing angle after inductive sense // 0 - 30* degree

struct_drv10983.SysOpt4.bit.AlignTime = 7; // Pg.27 , Align time // 7 - 0.04s
struct_drv10983.SysOpt2.bit.OpenLCurr = 3; // Pg.27 , Open loop current setting // 3 - 1.6A
struct_drv10983.SysOpt2.bit.OpLCurrRt = 2; // Pg.27 , Open loop current ramp-up rate setting // 2 - 1.5 Vcc/s
struct_drv10983.SysOpt3.bit.StAccel = 7; // Pg.27 , Open loop start-up accelerate (first order) // 7 - 0.3Hz/s
struct_drv10983.SysOpt3.bit.StAccel2 = 7; // Pg.27 , Open loop start-up accelarate (second order) // 7 - 0.22Hz/s2
struct_drv10983.SysOpt4.bit.Op2ClsThr = 10; // Pg.27 , Open to closed loop threshold// 0-15 = n*0.8Hz, 16-31=(n+1)*12.8Hz // 10 - 8Hz

struct_drv10983.SysOpt7.bit.ClsLpAccel = 7; // Pg.30 , Closed loop accelerate // 7 - 0.045/s
struct_drv10983.SysOpt9.bit.CLoopDis = 0; // Pg.47 , close loop disable // 0 - Transfer to closeloop

struct_drv10983.SysOpt6.bit.HWiLimitThr = 7; // Lock detection current limit threshold((n+1)x0.4A) // 7 - 3.2A
struct_drv10983.SysOpt6.bit.SWiLimitThr = 0; // Acceleration current limit threshold(nx0.2A) // 0 - no acceleration

// Pg.33 , Lock Detect and Fault Handling
struct_drv10983.SysOpt5.bit.LockEn0 = 0; // Pg.34 , Lock detection current limit // 0 - disable // 1 - enable
struct_drv10983.SysOpt5.bit.LockEn1 = 1; // Pg.34 , Abnormal speed // 1 - enable // 1 - enable
struct_drv10983.SysOpt5.bit.LockEn2 = 1; // Pg.35 , Abnormal Kt // 1 - enable // 1 - enable
struct_drv10983.SysOpt5.bit.LockEn3 = 1; // Pg.35 , no motor fault // 1 - enable // 1 - enable
struct_drv10983.SysOpt8.bit.LockEn4 = 1; // Pg.36 , Open loop stuck(no zero cross detected) // 1 - enable// 1 - enable
struct_drv10983.SysOpt7.bit.LockEn5 = 1; // Pg.36 , Stuck in closed loop(no zero cross detected) // 1 - enable// 1 enable

struct_drv10983.SysOpt9.bit.KtLckThr = 3; // Abnormal Kt lock detect threshold // 3 - Kt_high=2Kt, Kt_low=1/2Kt

struct_drv10983.MotorParam1.bit.DoubleFreq = 0; // Pg.44 , Set Driver Output // 0 - 25 kHz
struct_drv10983.SysOpt7.bit.Deadtime = 10; // Pg.37 , dead time btn HS & LS gate drive (n+1)40ns // 10 - 440ns
struct_drv10983.MotorParam3.bit.CtrlAdvMd = 0; // Pg.31 , Motor commutate time // 0 - Fixed time
struct_drv10983.SysOpt3.bit.CtrlCoef = 3; // Pg.31 , Control Coefficient // 3 - 1
struct_drv10983.MotorParam2.bit.AdjMode = 1; // Pg.28 , Closed loop Full cycle adjustment // 1 - half cycle
struct_drv10983.MotorParam3.bit.Tdelay = 0x6B; // Pg.31 , Commutation Control Advance Angle (2.5us*TCtrlAdv) // 6B -
struct_drv10983.SysOpt9.bit.SpdCtrlMd = 1; // Pg.47 , Speed input mode // 1 = PWM input
// Pg.36 , AVS(Anti Voltage Surge)
struct_drv10983.SysOpt5.bit.AVSIndEn = 1; // Pg.46 , No available function // 1
struct_drv10983.SysOpt5.bit.AVSMEn = 0; // Pg.46 , Mechanical AVS Disable
struct_drv10983.SysOpt5.bit.AVSMMd = 0; // Pg.46 , Mechanical AVS mode // 0 - AVS to Vcc

struct_drv10983.SysOpt9.bit.FGcycle = 3; // Pg.47 , FG cycle select // 3 - 1 pulse output per 3 electrical cycle
struct_drv10983.SysOpt9.bit.FGOLsel = 0; // Pg.47 , FG open loop output select // 0 - FG outputs in both open loop and closed loop
 

Latest threads

Back
Top