I want to design a circuit and software to control the speed of 3 phase BLDC motor. Image of motor is attached here. i want to learn the control of BLDC motor, i have made a driver circuit with SL100 transistor, and make it on/off using switch, push button. it vibrate , but not rotate in any direction. kindly help me in writing code and hardware design for very basic movement, clock wise and counter clock wise of motor. i am learner...thanks .
I think you underestimate the control of sensorless 3-phase BLDC motors - get an ESC and use
the Servo library perhaps?
[ To drive such a motor you'll need a bunch of very low on-resistance MOSFETs, a 3-phase bridge
MOSFET driver, a microcontroller and some analog circuitry to sense back EMF. This is what an
ESC does for you ]
It sure seems like it would have been more considerate to reply to MarkT's reply to your earlier thread on almost the same topic.
It looks like the only difference is the choice of transistor.
First of all Thank you so much for guiding me. I know ESC to use readymade can not give real experience of building drivers and other analog circuits. i told, i m learner i want to learn the things from basic. anybody who has build their own driver and circuit for such bldc sensor less motor, can help me. Thank you once again.
Have you looked at any open source ESC projects?
http://vedder.se/2015/01/vesc-open-source-esc/
http://open-bldc.org/wiki/Open-BLDC
I have put together a few brushless controllers myself. Here's my two cents
The commutation timing and zero crossing detection pretty much will take all of the processing power of an atmega8, 88, 168, 328, so a mcu for just the commutation and back emf sensing is pretty much needed.
If you want to start from scratch and write the commutation / zero crossing scheme then that is a massive learning curve but can be done but i can't help you with that. Someone much smarter than i ported some assembler code to c called ardu_esc but it was for an atmega8. You would need to do some work to make it work on a 328. I'll attach that sketch.
If you just want to build the controller hardware that you can program and tinker to your liking (what i wanted) i found it was easiest to use an esc firmware that is already out there like "simonk" or "blheli". Flash it with the "arduino as isp" or usb programmer to a cheap mcu like an atmega8 or silabs f850. You can also find lots of rc esc's schematics for a base or make your own and then alter the firmware for your mosfet configuration, pinout.
The next issue is mosfet choices and gate driving. The arduino can source/sink 40ma max per pin, that is ok to drive a gate up to about 25 to 30 nC gate charge at 8khz to 20khz pwm speed. Any larger gate capacitance will need a gate driver. ir2101,2104,2110, half bridge or fan7388 fan7888 3 phase. There are lots , these are just cheaper and more common options.
I think the easiest configuration i found was silabs C8051F850 (1.00) and blheli firmware, GitHub - bitdump/BLHeli: BLHeli for brushless ESC firmware to drive low gate capacitance mosfets. If you need to go bigger than 10-20 amps then look at adding the fan7888 or ir2XXX to drive the fets.
Here is the simonk firmware for atmega: GitHub - sim-/tgy: tgy -- Open Source Firmware for ATmega-based Brushless ESCs
Silabs has all kinds of info for sensorless motor control for their mcu too and a tool to create firmware
The simple option:
If the expense is not a problem then get an Allegro a4960. Its does commutation timing, fet driving,has charge pump, current sensing, fault detection and interfaces really nicely with the arduino using spi. This was by far the easiest to get spinning with the smallest number of components.
Good luck , expect to explode a few mosfets/ drivers along the way and always order more than you need (wear goggles). I am not an engineer and am just learning myself but hopefully this can get you going.
Al
ArduEsc_b35.zip (11.8 KB)