# How to simulate a Brushless dc motor drive in MATLAB/SIMULINK? thanks.

tonylim456
I have uploaded the journals which related to the brushless dc motor. I encountered the problems as i dont know how to simulate the voltage source inverter of the Brushless dc motor system (the generation of inverter line to line voltages) and the hysteresis current block. i really need help.. thank you so much. I tried it for a month, still have get it.. i appreciate anyone who can help me. thanks

#### Attachments

• v15n2p218.pdf
453.6 KB · Views: 2,866
• advanced simulation model for brusless dc motor drives.pdf
1.7 MB · Views: 3,614

DragonPetter
I have uploaded the journals which related to the brushless dc motor. I encountered the problems as i dont know how to simulate the voltage source inverter of the Brushless dc motor system (the generation of inverter line to line voltages) and the hysteresis current block. i really need help.. thank you so much. I tried it for a month, still have get it.. i appreciate anyone who can help me. thanks

Hello.

I have run across a few masters thesis papers that show how to simulate BLDC motors. They were written within the last decade. One was from sweden . . wish I had the links.

I think the challenge depends on how accurately you want to model the motor. For most controller purposes, it can be modeled as a brushed DC motor. Is this sufficient, or are you attempting a lower level simulation?

If you wish to go in more depth, then I would offer the idea of using an M-code block in simulink to code the bridge voltages to the motor. There are switch blocks that you can send signals to tell them to switch the connections under certain conditions.

I don't know anything about hysteresis current blocks in BLDCs.

DragonPetter
I just saw the 2nd attachment you provided. That is definitely an in depth model.

It looks like current hysteresis is a control scheme, not a model of the actual BLDC motor. Are you implementing this controller or the PWM method?

tonylim456
I just saw the 2nd attachment you provided. That is definitely an in depth model.

It looks like current hysteresis is a control scheme, not a model of the actual BLDC motor. Are you implementing this controller or the PWM method?

Hello dragon,
Actually i just require a lower simulation which i can take the value of rpm and the torque from this motor simulation. and i come across one report which is doing the same brushless dc motor and i have uploaded "THE LINK of the file: http://www.mathworks.com/matlabcentral/fileexchange/5042-simulink-simulator-for-a-brushless-dc-motor ". the report is likely showing pretty much of everything as in theory and together with the MATLAB/SIMULINK simulation. however, when i try to run the simulation the following error come out. I have to admit my Matlab's skill is not up to the standard yet. Any good suggestion to find up what is the error? and how to fix it as i am using Matlab 7.9.0 (R2009b) thanks.
"At time 0.000515931912672372, simulation hits (1000) consecutive zero crossings. Consecutive zero crossings will slow down the simulation or cause the simulation to hang. To continue the simulation, you may 1) Try using Adaptive zero-crossing detection algorithm or 2) Disable the zero crossing of the blocks shown in the following table."

thanks for you kindly reply. appreciate it so much, thanks God

Last edited:
DragonPetter
Hello dragon,
Actually i just require a lower simulation which i can take the value of rpm and the torque from this motor simulation. and i come across one report which is doing the same brushless dc motor and i have uploaded in this reply. the report is likely showing pretty much of everything. however, when i try to run the simulation the following error come out. I have to admit my Matlab's skill is not up to the standard yet. Any good suggestion to find up what is the error? and how to fix it. thanks.
"At time 0.000515931912672372, simulation hits (1000) consecutive zero crossings. Consecutive zero crossings will slow down the simulation or cause the simulation to hang. To continue the simulation, you may 1) Try using Adaptive zero-crossing detection algorithm or 2) Disable the zero crossing of the blocks shown in the following table."

thanks for you kindly reply. appreciate it so much, thanks God

Sorry, I don't know anything about that error. Seems like you should start in smaller and simpler steps til you have a better understanding of the motor simulation. Why are you using their model other than that its for the same motor? Their model includes the control scheme as well.

tonylim456
Sorry, I don't know anything about that error. Seems like you should start in smaller and simpler steps til you have a better understanding of the motor simulation. Why are you using their model other than that its for the same motor? Their model includes the control scheme as well.

actually i am doing a project which is fuzzy logic vs PID conventional controller of an room air conditioning system which respect to energy perspective. I am using brushless dc motor to represent compressor of the air conditioning system as 80% of the energy consumption is based on the motor(compressor). thus, i just have to get a simple brushless dc motor where i can get the torque and speed(rpm) and then i will be able to calculate the energy use of the motor. any suggestion of the motor i can use for compressor of air conditioning system other than brushless dc motor? as i search through the journal and articles, most of the compressors of air conditioning system are brushless dc motor. thanks..

brupet
Hello.

I have run across a few masters thesis papers that show how to simulate BLDC motors. They were written within the last decade. One was from sweden . . wish I had the links.

I think the challenge depends on how accurately you want to model the motor. For most controller purposes, it can be modeled as a brushed DC motor. Is this sufficient, or are you attempting a lower level simulation?

If you wish to go in more depth, then I would offer the idea of using an M-code block in simulink to code the bridge voltages to the motor. There are switch blocks that you can send signals to tell them to switch the connections under certain conditions.

I don't know anything about hysteresis current blocks in BLDCs.

First: I think the swedish report you're talking about is this:

Secondly:
Can you explain what you mean by
"I think the challenge depends on how accurately you want to model the motor. For most controller purposes, it can be modeled as a brushed DC motor. Is this sufficient, or are you attempting a lower level simulation?"

I'm trying to implement a linear BLDC motor of this type: http://www.faulhaber.com/uploadpk/EN_LM1247-02_MIN.pdf [Broken]

However all relevant papers on the subject is on rotational and not linear (however, this conversion is not a problem I think.)

My problem is that I don't get the model to work. How would an implementation by doing it via the simpler DC-motor? As I know it, it is modelled as: $U=Ri(t)+L\frac{di(t)}{dt}+U_{emf}$

How can I relate this modell to a 3phase DC motor controlled by a PWM inverter? And how do I convert the "phase-phase" values in the datasheet for the motor? Divide it by $\sqrt{3}$?

The purpose of my modelling is to derive a control algorithm suitable for implementation i a microcontroller.

Last edited by a moderator:
DragonPetter
Can you explain what you mean by
"I think the challenge depends on how accurately you want to model the motor. For most controller purposes, it can be modeled as a brushed DC motor. Is this sufficient, or are you attempting a lower level simulation?"

Simply that the BLDC is not really a brushed DC motor, and so modeling it as a brushed motor is not 100% accurate or true to the actual way a BLDC works, especially ones that are not designed or manufactured ideally. A brushed motor model won't behave like a BLDC in all conditions, and you won't be able to look at all of the details, like the current in each winding or the trapezoidal EMF with a generic brushed model.

The thing is that a BLDC can be modeled very much the same as a brushed motor, and it works for a lot of conditions. If I never had made a BLDC simulation model, I would start with a brushed and then work up from there because a lot of the models they talk about in the literature are pretty complicated and confusing. I had started my own attempt to have a more complex and accurate model, but I didn't have time and put it aside.

Gold Member
Dearly Missed
here's a related application note from TI

http://www.ti.com/litv/pdf/slua076

maybe you'll find more in their extensive library..
http://www.unitrode.com/products/apps_prt.htm
is just one shelf.