Field oriented control (or vector control) of brushless motors promises many advantages over the simpler 6 step trapezoidal control.
Here are a few advantages that spring to mind;
1) Because the force is always kept at 90deg to the rotor, it should be more efficient.
2) For the same reason it should also generate less audible noise.
3) The use of space vector modulation, means it should be better able to drive low inductance loads.
4) The use of fast phase current monitoring means it should be better able to protect the power stage.
5) The algorithm allows accurate +/- torque control, allowing variable regenerative braking
The disadvantages ??
1) The algorithm requires a lot of computational power
2) It takes me ages to get my head around how it works :?
There are a handful of development kits around for this sort of work, from companies like Ti, ST, NXP, Toshiba, many of them based on ARM 32bit processors.
Atmel also have a kit based on their AVR32.
Microchip offer their motor development platform based on their range of digital signal processors dsPIC30 and dsPIC33.
Although only 16 bits, these devices run fast, have a specialised instruction set and compiler for doing this kind of job, and contain hardware specialy designed to deal with motor control.
I chose the Microchip dsPIC33, since it seemed about the cheapest way for me to get up and going, there is a whole raft of application notes and example code to start you off, and captain Lebowski appears to be having great success with a similar device !
Most of the Microchip examples are aimed at reducing the parts count to a minimum when driving things like washing machines and air conditioner fans. Where starting torque and slow speed operation is not so important. The FOC examples are all sensorless and required careful tailoring of hard coded parameters to work with each different motor I tried.
The sensorless position estimating needed to know the inductance and resistance values of each motor, so the motor behaviour could be modeled (or predicted).
This is all well and good, if you are making 100,000 washing machines -all the same, but no good for the 1-off ebike here and there
Consequently I found some adaptation was necessary:
I removed the open-loop sensorless startup, and the sensorless position estimation , and replace it all with our familiar 3 hall sensors and a bit of code to run a timer which interpolates the rotors angle between the sensors.
It works a treat. Nice dependable high torque startup, smooth slow running, and no need to know the values of the motor phase inductance or resistance
http://www.youtube.com/watch?v=YFREKbPm5Gw&feature=youtu.be
[youtube]YFREKbPm5Gw[/youtube]
Next step, will be to build a bigger power stage so I can run the C80-100 motor on my RC dyno.
EDIT: Now done, can be seen in this thread here:
http://endless-sphere.com/forums/viewtopic.php?f=30&t=44910&start=100#p694066
Burtie
Here are a few advantages that spring to mind;
1) Because the force is always kept at 90deg to the rotor, it should be more efficient.
2) For the same reason it should also generate less audible noise.
3) The use of space vector modulation, means it should be better able to drive low inductance loads.
4) The use of fast phase current monitoring means it should be better able to protect the power stage.
5) The algorithm allows accurate +/- torque control, allowing variable regenerative braking
The disadvantages ??
1) The algorithm requires a lot of computational power
2) It takes me ages to get my head around how it works :?
There are a handful of development kits around for this sort of work, from companies like Ti, ST, NXP, Toshiba, many of them based on ARM 32bit processors.
Atmel also have a kit based on their AVR32.
Microchip offer their motor development platform based on their range of digital signal processors dsPIC30 and dsPIC33.
Although only 16 bits, these devices run fast, have a specialised instruction set and compiler for doing this kind of job, and contain hardware specialy designed to deal with motor control.
I chose the Microchip dsPIC33, since it seemed about the cheapest way for me to get up and going, there is a whole raft of application notes and example code to start you off, and captain Lebowski appears to be having great success with a similar device !
Most of the Microchip examples are aimed at reducing the parts count to a minimum when driving things like washing machines and air conditioner fans. Where starting torque and slow speed operation is not so important. The FOC examples are all sensorless and required careful tailoring of hard coded parameters to work with each different motor I tried.
The sensorless position estimating needed to know the inductance and resistance values of each motor, so the motor behaviour could be modeled (or predicted).
This is all well and good, if you are making 100,000 washing machines -all the same, but no good for the 1-off ebike here and there
Consequently I found some adaptation was necessary:
I removed the open-loop sensorless startup, and the sensorless position estimation , and replace it all with our familiar 3 hall sensors and a bit of code to run a timer which interpolates the rotors angle between the sensors.
It works a treat. Nice dependable high torque startup, smooth slow running, and no need to know the values of the motor phase inductance or resistance
http://www.youtube.com/watch?v=YFREKbPm5Gw&feature=youtu.be
[youtube]YFREKbPm5Gw[/youtube]
Next step, will be to build a bigger power stage so I can run the C80-100 motor on my RC dyno.
EDIT: Now done, can be seen in this thread here:
http://endless-sphere.com/forums/viewtopic.php?f=30&t=44910&start=100#p694066
Burtie