Inside of a SONY brushless dc motor
For an upcoming project I’ll be needing a brushless dc motor controller so I had to choose between purchasing one (more than 4 actually) and adapt my system around those or design&build one that would best fit my system. Obviously I went with the second option for 2 reasons : I like making stuff & it’s cheaper to make than to buy. After I finish it , this project will be open-source and I hope people will contribute by making it better.
Brushless DC motors (BLDC motors, also known as electronically commutated motors) are electric motors powered by DC electricity that have electronic commutation systems. Usually the electronic commutation system is external and this is our case also. A BLDC motor is constructed with a permanent magnet rotor and wire wound stator; This type of construction offers many advantages including more efficiency and torque per weight, reduced noise, reliability, longer lifetime (no brush erosion), elimination of ionizing sparks from the commutator, more power, and overall reduction of electromagnetic interference (EMI).
There are 2 main methods for controlling a BLDC motor one is with the use of hall sensors for sensing the position of the rotor and the other one also called sensorless driving involves sensing the rotor position by measuring the back EMF (electromotive force) feedback from the motor instead of external sensors. I’m gonna focus my project on the sensorless method, the advantage being the ability to use any motor no matter if it has the sensors fitted or not.
I’m gonna post updates as I make progress on the project, but first here is the documentation that I’ve read so far:
- wikipedia on BLDC motors
- Microchip AN857 – Brushless DC Motor Control Made Easy
- Atmel AVR444 – Sensorless control of 3-phase brushless DC motors
- Atmel AVR443 – Sensor-based control of three phase brushless DC motor (although I’m going to use sensorless control its good to know the difference between the two methods)
- Atmel AVR194 – Brushless DC motor Control using ATmega32M1
These documents cover the basics and the actual control of BLDC motors so I suggest you start by reading these.
The PWM frequency is about 10 kHz and does not make a noise in the motor. The 5 K Ohm potentiometer is connected to ADC input channel 0 and is converted to 1024 (10 bit) value, this value is applied to the PWM control and produces very smooth speed control. The HEXFET type IRL1004 has extremely low on resistance (0.009 Ohm) and requires only logic level drive, in this application it does not get warm even when controlling 1 Amp motor current. according the IRL1004 data sheet it can handle much higher motor current.
DC motor speed control using PWM: [Link]
The main PCB for the charger is a single sided, 1.6mm tick printed circuit board. The DC/DC converter is now integrated within the charger in order to allow the charge of high number cell packs. The people that charges only few batteries (12Vdc supplies sufficient) can not mount the components for the DC/DC converter saving the money of this part. The DC/DC converter part is a generic step-up converter, capable to deliver 7.5A and an output voltage of 24Vdc, starting from a 12Vdc supply. The main parts are the following:
- PWM controller UC3843 very cheap and easy to find
- Power inductor from Bourns, type 2306RC (27uH, 15A), Farnell 1167731
- The power diode is a schottky type,and a N-type mosfet can be generic: all the two components are in case TO-220
Universal Charger: [Link]
This project was developed as an inexpensive way to drive small dc brushed motors as positioning servos for use on a desktop sized CNC machine. The board is interfaced to the PC through 2 pins of a parallel port. The drive signal on these pins is known as quadrature drive. The power stage consists of a power op amp driven in constant current mode. The internal PIC processor ( a 30f4012 from Microchip ) is programmed in C through the C30 compiler and the Microchip IDE. The servo loop parameters are programmed through a serial port connection and are saved in the dspic eeprom.
Once set for a particular drive, they should not need to be changed. The serial programming interface is used to tune the PID and other servo loop parameters to optimize the performance in a particular application. The serial port runs at a fixed baud rate of 9600N81. Any terminal program such as minicom, gtkterm, or hyperterminal may be used to talk to the dspic-servo.
PIC30f4012 DC motor controller: [Link]
For this project you will need a disposable camera. Why a disposable camera ? Because the flash circuit inside the camera contains a hi-voltage oscillator and transformer that outputs about 300 Volts AC & DC. When opening the camera to get to the flash circuit you should be extremely careful so you don’t get electrocuted by the high voltage’s inside the capacitor. First thing you need to do is to discharge the capacitor so its more safer to work with. Then with a small modification into the existing circuit you’re ready to power the 4 watt fluorescent lamp
4 Watt fluorescent lamp powered by a 1.5 volt battery: [Link]