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.

bldc motor control with dsPIC30F

Status
Not open for further replies.

faysal_002299

New Member
Hello all,
I am not sure whether I should raise this question here, but any kind of help or suggestion would be really appreciated. I am controlling bldc motor with dsPIC30F3011.

Now my control strategy is the motor will be started in CW direction, run for 30 rotation, then halt for 5 seconds and start rotating in CCW direction and so on. But the problem is, the motor always has a delay (5/6 seconds) to start. So if I send the start command it takes an unpredictable time to start again, after each 5 seconds halt. How can I solve this? Anyway,I have to be very precise about the rotation rpm and time.

[If I set the PWM PDC as 0 instead of stoping the motor, in that case the speed doesn't reach to 0 instantly, it takes much time to be halted.]

waiting for ur kind reply
 
If you are starting and stopping constantly or position/speed is very important then you should just use a sensored system rather than a sensorless one.

But you tell us nothing about what you are actually working with. Telling us you are using a microcontroller is not enough. But what you need in theory is to model your system and use a control loop (like motor response time, step response, PID, etc). You may also have to relax your requirements. You don't tell us how fast the motor is supposed to go or how fast it's supposed to stop- and these obviously matter a LOT)
 
Last edited:
I am using sensored motors and that's how I am calculating the 30 rotations I was talking about. One thing I need to add is, in this 30 rotation I am also varying the speed of the motors continuously by changing the PDC value of the input PWM. I am using BLDC driver for running the motors and from my microcontroller I am giving 3 inputs to those BLDC drivers- (1) PWM, (2) Direction CW/CCW- 1/0 and (3) Stop/Start

Please refer to my previous question and for further query let me know.

During the motor start and stop there is a click sound. Say I can solve the timing problem, in my system I am using 6 heavy bldc motors- if I start and stop the motor continuously then it makes a lots of sounds each time. So I've wished to do it by sending the Speed_0 signal.

Please help me.
 
Sounds like you have all the hardware in place which is great. THe remaining bit is your control algorithm. Google (or wiki) PID control...the math is not teachable on a forum and if you knew it you wouldn't be asking these questions. EVen if you did know the math, you probably don't have enough information/data/measurements about the system parameters to model the system entirely through calculations. So tHat leaves trial-and-error which probably means you should just use simple PID equations that you can easily calibrate to your system through trial and error.

You tinker with the constants in the equation until the system behaves the way you want it too (until you get acceptable overshoot and response speed). Once you've adjusted for everything the equation should be able to account for most things on it's own...you tell the equation where you want to go, it calculates the signal to send to the motor. How fast it gets there depends on how you adjusted the equation. THe faster it goes there, the more overshoot it has and the louder it will be.

THe equation will also inherently make use of controlled "sending the Speed_0 signal" to slow and stop the motor IF you calibrate it for low overshoot (reduced response time). If you calibrate it for faster response time (more overshoot) it will be louder since it will react more aggressively.

PID controller - Wikipedia, the free encyclopedia

For simplicity, you can probably just set the integral term to zero, and just use PD control.
 
Last edited:
I am using sensored motors and that's how I am calculating the 30 rotations I was talking about. One thing I need to add is, in this 30 rotation I am also varying the speed of the motors continuously by changing the PDC value of the input PWM. I am using BLDC driver for running the motors and from my microcontroller I am giving 3 inputs to those BLDC drivers- (1) PWM, (2) Direction CW/CCW- 1/0 and (3) Stop/Start

Please refer to my previous question and for further query let me know.

During the motor start and stop there is a click sound. Say I can solve the timing problem, in my system I am using 6 heavy bldc motors- if I start and stop the motor continuously then it makes a lots of sounds each time. So I've wished to do it by sending the Speed_0 signal.

Please help me.
Well heavy is a relative term...I work with 2-4HP motors on a regular basis and they are around 100lb each and rated for 130V@30A.

It sounds to me like you are confused and you are actually using BDC and not BLDC. BLDC the controller takes care of the PWM since it is not a steady value - a somewhat finicky trapezoidal waveform in three phases.

It sounds like you are using a low PWM on a BDC motor and expecting it to jump to speed. A stalled motor is an inductor and the current has to reach a high enough value to overcome the mass and friction of the rotor before it will start moving.

Dan
 
faisal

hi faisal , i very sorry that i cannot be of help but if it is possible can i have a look at the code that you use to programme your bldc motors. I am facing a little difficulty in producing pwm waveforms. Mind posting it in this thread. Thanks a lot

civictyper .
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top