• 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.

How do i make a servomotor using a 3-phase brushless?

Thread starter #1
Basically i have a 3phase brushless DC motor (an RC brushlessmotor), an optical encoder, and a microcontroller fast enough to read the steps, plus a bunch of mosfets for the H-bridge, though i may just cannibalize an existing RC ESC and disconnect its own microcontroller and use my own.

What i want to know is, how do i use this to make a servomotor, for use in CNC applications? i.e, to replace a stepper.
Does anyone know of any arduino libraries on how to control it?

So far ive been told i both do and dont need absolute encoding, so i want to know what the deal is, what do i need to do? If i need additional hardware for this.

I get that absolute positioning isnt really needed for a constant speed drive, thats simple enough, but i mostly plan on using this for controlling an axis.

Please understand i am allergic to buying an actual servomotor, i will die, i have to make my own. So that is not an option. I already have all the parts and i just really want to construct one, but im really having difficulties locating the information about how, as well as sourcing arduino libraries for this, even if not for making cnc-servomotors, im finding 3-phase BLDC driver code exceptionally difficult to locate, for digitally controlling a BLDC motor, i.e, controlling the H-bridge, rather than generating a PWM signal for an ESC to use.
 

alec_t

Well-Known Member
Most Helpful Member
#3

MaxHeadRoom78

Well-Known Member
#4
Considering the cost of BLDC servo motors on ebay etc, I would not even bother with a RC brushless, they are not designed for servo use, but high rpm,high current usage.
I have stayed away from steppers for CNC use, much prefer servo's.
Picmicro have some examples of BLDC controller usage in their Picdem LC MV board software.
Max.
 

dknguyen

Well-Known Member
#7
An arduino is not fast enough to use in a BLDC motor driver, let alone a servo controller. That's why you find no libraries.

You don't need absolute encoding to commutate a brushless motor (aka free spinning), but you do need one if you want to use it as a servo.

Not sure but think you are talking about a different type of CNC than Max. Max works with industrial not DIY machines. But then I may be wrong .
Don't industrial machines use steppers too? I always did feel like our mill did not move like it used steppers.
 
Last edited:

MaxHeadRoom78

Well-Known Member
#8
Max, what kind of servos do you use for cnc? I've not heard of suitable ones.

Mike.
I am talking industrial servo's not RC, I have used quality surplus BLDC and DC brushed, the BLDC typically have a dual purpose combined encoder fitted, one for the commutation, the other quadrature for positioning.
Only the very low end Industrial machines use steppers, yes I work with industrial machines but also have built PC based small custom CNC applications, and always have used servo's.
If not wishing to go to that extent, there are many DIY'ers that use steppers for small machines, you don't have to worry about the encoder/feedback issue..
Max.
 

dknguyen

Well-Known Member
#9
Not sure but think you are talking about a different type of CNC than Max. Max works with industrial not DIY machines. But then I may be wrong .
Why dont they just use the quadrature for commutation as well? Does the counts not divide perfectly into the motor poles?
 

MaxHeadRoom78

Well-Known Member
#10
There are some drives that 'exercise' the motor initially to define a encoder point with the armature location and from there on use the encoder count to switch the stator coils, but it requires a specialized drive that is able to achieve this.
Max.
 

dknguyen

Well-Known Member
#11
Oh, is the commutating encoder a low res absolute encoder? I initially assumed it was incremental because absolutes are so expensive, but a low res one with just enough steps to match the poles would be much cheaper.
 

MaxHeadRoom78

Well-Known Member
#12
It is incremental that is used for that method.
But it does not have to match the poles, just be high enough resolution to maintain the coarse pole count normally done with Hall effect or equivalent.
Max.
 

dknguyen

Well-Known Member
#13
Then what's the benefit of the dedicated commutation encoder rather than just using the quad encoder? If it's incremental then you would have to "exercise" the motor anyways when starting up just like you would with the quad encoder.
 

dknguyen

Well-Known Member
#15
Oh, I see. It's a hall-effect (or simulates ones) so no motion is needed to detect a tick, unlike the quad encoder, and it's 3 incremental output signals instead of the two of the quad encoder. When I think encoder, I think quad encoder or absolute encoder.
 
Last edited:
Thread starter #17
yes, i meant a servomotor, not an RC servo.

Anyway this isnt out of necessity, i want to do this as a learning experience.
Im not using an arduino as arduino hardware is costy trash most of the time. i have a better microcontroller in mind.

So, how do i go about doing this? or am i the first person to ever want to build a servomotor out of a BLDC like actual servomotors are?

Otherwise, if not a BLDC, what libraries exist for diy servomotors, like for brushed, or AC motors of sorts?

Understand that i dont want this for anything specifically, i just "want" a servomotor, not enough to pay for one, but enough that id like to learn my way through making one myself.

Also my motor is sensorless. But ive since established that a small calibration activity on start will solve the pole allignment issue
 

dknguyen

Well-Known Member
#18
yes, i meant a servomotor, not an RC servo.

Anyway this isnt out of necessity, i want to do this as a learning experience.
Im not using an arduino as arduino hardware is costy trash most of the time. i have a better microcontroller in mind.

So, how do i go about doing this? or am i the first person to ever want to build a servomotor out of a BLDC like actual servomotors are?

Otherwise, if not a BLDC, what libraries exist for diy servomotors, like for brushed, or AC motors of sorts?

Understand that i dont want this for anything specifically, i just "want" a servomotor, not enough to pay for one, but enough that id like to learn my way through making one myself.

Also my motor is sensorless. But ive since established that a small calibration activity on start will solve the pole allignment issue
For something like this, you would need to read application notes and whitepapers from some place like TI or Freescale to get what you need. You will also need to read whitepapers on high-side gate drive for those inverters. You will also need to know what a 6-step inverter circuit is.
 
Thread starter #19
just to clarify, i have an RC type BLDC, driving it is simple to do, just need 3 half H bridges, applying control is easy done, interpreting data to determine the output is the difficult part. or were you reffering to if i was to use an AC motor? if so, id like to avoid those if possible, but im still open to the idea. just not very. of course if the arduino (as in arduino IDE) libraries exist for such a thing id still like to take a look.
 

dknguyen

Well-Known Member
#20
just to clarify, i have an RC type BLDC, driving it is simple to do, just need 3 half H bridges, applying control is easy done, interpreting data to determine the output is the difficult part. or were you reffering to if i was to use an AC motor? if so, id like to avoid those if possible, but im still open to the idea. just not very. of course if the arduino (as in arduino IDE) libraries exist for such a thing id still like to take a look.
I am referring to a BLDC motor (technically, the same thing as a 3-phase synchronous AC motor)

Interpreting the encoder signals for commutation is not too bad but you are best looking for it in a whitepaper from one of the companies I mentioned.

If it's a quad encoder that can couple directly to the motor shaft, then you will also have to write an algorithm to open-loop commutate or jiggle the motor on power up so you can trigger the quad encoder index signal so before you start to close-loop commutate. You will have to properly mechanically align the encoder properly so it lines up with the poles in a known way. Or you can use a sensorless circuit for commutation. Or you can use a sensorless circuit so that the drive can calibrate itself to the encoder and then use the encoder for commutation. Lots of ways.
 

Latest threads

EE World Online Articles

Loading

 
Top