Dual BLDC Control using AVR

R

Thread Starter

Raag90

Hey there,

I am a final year student in Electronic Engineering, and my project involves the control of two Independence but similar Brushless DC Motors (with one microcontroller, preferably an AVR Atmega). I was planning on using the hall sensors for each motor as an input to the micro and then determining switch pulses corresponding to the motors independently. Has anyone here had any experience in doing such a thing? I was also keen on implementing a PI controller for the scheme, but am having trouble knowing exactly how I would do so.

Help and comments much appreciated.

Cheers
 
Hi,

Probably the trickiest part of working with multiple BLDC motors is making sure that they have independent commutation/feedback sensors as well as independent power stages/amplifiers. This will allow you to control the commutation and position/velocity of the motors independently. Not sure what the AVR interface is, but if it can handle these requirements then you are off to a good start.

Problems come when the same commutation/feedback sensors and power stage/amplifier are used for multiple BLDC motors. The only way this has a chance of working is if the motors are mechanically coupled.
 
B

Bruce Durdle

I have dabbled with this, using a Microchip PIC to control the drive for a Smartdrive washing machine motor.

The problem you have is that you need to vary the voltage seen by the motor as well as control the pulse sequence rate. I am using PWM to adjust the speed, with the correct drive signals being fed to the motor control FETS for a small % of the time for low speed, and a much higher % for high speeds. For the balance of the time, all outputs are OFF.

You can also drive the motor without the sensors as a synchronous machine but again you will have the same trouble.

It would probably be a good idea to get one going, then see how you can adapt that solution for two motors.

Speed control is (relatively) simple - you adjust the pulse ON time for the PWM. Again, matching speed for 2 motors might be a little bit challenging.

Cheers,

Bruce.
 
You might try seeing if the halls are analog. That is to say that if you rotate the motor at constant speed you can see sine waves coming from the halls. If this is the case you can most likely interpolate those signals into an analog voltage and get some kind of position feedback (but very course).

If you really want any sort of fine position control you really should use an encoder. Even a 200 lines per rev encoder will give you 800 counts of information if you go with x4 quadrature decoding (This is well documented on the web).

Anyhow, once you have decoded your position information, store it in a word (24 or 32 bit probably). You can use this as one of your feedback signals for your position loop PI control.

The other challenge is to commutate your motor. What you want is to take a single torque command signal generated from the PI or PID loop and transform this into a three phase vectored signal that gets sent to a PWM to drive the motor coils. The reason to do it this way is so that the PID loop sees torque as the equivalent of a brushed DC motor, it doesn't care that it is a 3 phase because the commutation code is taking the torque command signal and breaking it up.

There is quite a lot to this project but I'd start with the commutation. You should be able to use the hall information (even digital ON OFF halls) to generate the 3 phase signals and then using a POT or a serial cable you can vary the torque signal and see the motor speeds up and down. Once this is done you can look into the feedback and control loop techniques which will feed the torque command signal.

I'd look at using an ARM controller programmed with C. They are out there and are CHEAP. Not as friendly to prototype but you can get prototype boards that fan out to headers or DIP devices. AVR is limited for all the division and multiplication calculations (not that it can't be done, I'm sure).

KEJR
 
Y

ynsal koenig

hey,
I have a similar project task todo here, can you share your development efforts? which board? which bldc controller you use? I was thinking to use arduino microcontroller with 2 bldc controller.

thx in advance
ynsal
 
E
I am not familiar with AVR. But the suggestion about using a microcontroller PIC is the best option, in my opinion.

If you check out Anaheim Automation, they have some really good tools here for you to reference from. Also, they have a big variety of controllers as well as motors you can use as well, just to keep your options open.

check out these links:

http://www.dcbrushlessmotor.net
http://www.brushlessdcmotors.net

Also, if you go to the "downloads" section, you can find the user guides and spec sheets of all of their products.

elecTRONica
 
Top