Maker Pro
Maker Pro

misc idea: small (3-phase BLDC) motors with built-in drivers.

BGB

Nov 30, 2014
154
Joined
Nov 30, 2014
Messages
154
this is one of those ideas that keeps popping up (mostly in the context of robotics use-cases).

I am mostly interested on opinions, or if such a thing could be technically / economically feasible.

ADD: well, they basically exist, but are generally crazy expensive, so it is more a question of if they could be made more cost-competitive with conventional "dumb" motors.


typically, when building something using motors, there are several types of issues:
needing to power the motor;
needing to control the motor.

for very small motors, it is easy enough to drive the motor over light-gauge wire (say, pairs of 24AWG stranded wire). however, much past a few amps, and progressively heavier wire is needed.

ideally, you would run power to the motors separate from the controls, where if a project uses multiple motors close together, all of these can share the same power connections (say, by daisy-chaining off the same wires).

or, you can use motor-drivers (such as Talon or Jaguar modules), but these are fairly limited and expensive (you give them PWM to control the motor, and there is generally no feedback about motor status, and for smaller motors they may cost significantly more than the motor). if you want feedback on a DC motor, generally an encoder is needed, which in turn means more wires and more IO pins (and cost).

I am not rolling in money, so have generally ended up building my own driver boards.


I have ended up using synchronous wye motors some (such as HDD spindle motors, or a converted car alternator), which do a few nifty things:
they can either be run fast (like DC motors), at a controlled speed and number of turns (like a stepper), or fast and for a controlled number of turns (say, you can quickly ramp the motor up to full speed, then ramp down and brake to get the motor to the desired position).

likewise, there is no need for an external encoder (back-EMF is used).
typically 4 IO wires are needed, basically 3 PWM signals (for the phases), and a pin to feed back commutation pulses (from some logic which "listens" to the EMF).

however, the boards for this tend to be a little bulky.

but, I have also seen computer fans, where you have a small motor which basically just spins a fan, and a data wire is used both to listen to the fan, and also to indicate to it what the desired speed is. the controller is basically built into the fan (the coils are typically mounted directly to the controller).


so, the basic idea here is:
what if there were something like a computer fan, just with a somewhat more powerful motor (say, 50 or 100 watt);
ideally at a sane cost (say, $25 per motor, for this size, more for bigger or less for smaller);
and with a more capable control protocol (and dynamic load-sensitive performance tuning);
also preferably not significantly larger than a raw motor.

something similar has been done already with larger industrial motors (they mount a VFD directly onto the motor), and control them over Ethernet or similar.

so, possible idea for the this could be to stick an MCU (say an ATmega or similar) and driver electronics onto the motor (probably behind the coil and rotors), probably with the H-bridge transistors and similar encased in a ceramic package and heat-sink or similar.

likely, the MCU could use a high-level control protocol (vaguely more like that of a VFD) as opposed to PWM signals. I am half-imagining something similar to Ethernet, except done with RS-232 fed through a balun (RX and TX would use a shared wire, and the device could detect packet collisions by noting if its sent message comes back mangled).

possibly a single twisted pair could be used, with the motors connected together via a hub (likely using punch-down connectors or spring-loaded vampire-connectors or similar). when powered on, the motors could try to establish communication parameters with the hub or host controller (such as identifying the transmission speed, by default could assume 57600 or 115200).

the reason for using a twisted pair and a balun (for differential signaling) is to try to reduce the effects of noise on the wires (motors are very noisy), and RS-232 because MCUs tend to support it built-in.


each motor could have a MAC address or similar (unique per motor), but would dynamically configure a smaller (say, 5/12-bit) address to identify itself with (vaguely similar to ARP and DHCP), which would be used for primary communication (bus may be slow, so it is preferable to use small messages).

commands sent to the motor would be things like movement commands or setting parameters, and the motors could give status feedback (responses to commands, or indicating when a motor has reached its target, ...).

possibly, it could also be applied to things like solenoid coils, steppers, ...


most messages would be host-to-motor or motor-to-host, so we could save a few bytes by using a compact message format, say:
000a-aaaa 0sss-ssss [tag, data, ...] (host-to-motor, 5-bit addr)
010a-aaaa 0sss-ssss [tag, data, ...] (motor-to-host, 5-bit addr)
100/110 reserved
0010-aaaa aaaa-aaaa 0sss-ssss [tag, data, ...] (host-to-motor, 13-bit)
0110-aaaa aaaa-aaaa 0sss-ssss [tag, data, ...] (motor-to-host, 13-bit)
1010-aaaa aaaa-aaaa 0000-bbbb bbbb-bbbb 0sss-ssss [tag, data, ...] (motor-to-motor)
111t-tttt 0sss-ssss [MACa [MACb] ...] (intended mostly for motor configuration).

probably a simplistic TLV format would be used for message data.


if built by hand, I don't think it would really be practical for particularly small motors (due to limits of how small I can build things with perfboard and through-hole construction), but if made commercially, possibly specialized PCBs with surface-mount parts could be made for smaller motors (similar to computer fans).


thoughts?...
 
Last edited:

Fish4Fun

So long, and Thanks for all the Fish!
Aug 27, 2013
481
Joined
Aug 27, 2013
Messages
481
BGB,

First, I must confess i have not read your entire post....I read slowly, it is late and I am beat....so just ignore me if I am too far off-mark.....

First....50W or 100W is not really "small".....assuming a 12Vdc nominal supply, you are talking about 5A to 10A....that is a lot of power for "small projects"....Obviously for a BLDC motor the max power is generally considerably higher than the "actual power used".....but this still begs the question, "If you don't need 50W to 100W, then why build in a 50W to 100W motor...when a 5W motor is all that is required?....."....But I do understand the general concept.....BLDC motors have a much higher RPM range than Stepper motors and are variable power motors where steppers are fairly constant power motors....regardless of the power actually required....

I assume you are familiar with servo motors? There are many permutations depending on the mechanical requirements.....In something like robotics where high-torque and relatively low rpm are desirable, geared AC/DC/BLDC motors are a mainstay.....to transform any of these commonly available motors into servos you simply "close the loop". This can be achieved with encoders, scales, hall-effect sensors, optical sensors or even mechanical sensors (though there is rarely a good reason to resort to mechanical sensors in this millennium....) and some fairly compact circuitry......

Let's look breifly at how we might DIY a small servo for some robotics apparatus....let's assume one of the very common 3-9Vdc Mabuchi motors that operates reliably between 5000rpm and 15,000rpm geared 100:1 will provide both the requisite torque and output rpm (50rpm to 150rpm output)..... if we add a simple optical sensor to the motor's main shaft (small disk with say 4 slots in it) and we route the output of the optical sensor back to a Micro-Controller or even a simple "up/down" counter, then we will know the output shaft position within +/- 0.9 degrees....if you need higher resolution increase the number of slots or add a second optical sensor......and now we have a DIY servo with roughly the same precision as a stepper motor....instead of "sending steps", we simply "count steps" until we reach the desired position.

For small BLDC motors, achieving self-commutation is fairly trivial if you don't mind adding an external shaft sensor....again this is not really very difficult to DIY with Hall-Effect or optical sensors...it does require a bit of "fiddling" to properly align the sensors to optimize commutation, but once the "fiddling" is done for any particular motor, it should be easy enough to replicate...so the key here would be to pick a few popular, high-volume BLDC motors that represent the power ranges of general interest.....the same sensors used to trigger commutation can be used to "close the loop" for position sensing...two bird one stone as it were....I should point out here that one of the requirements is keeping the supply voltage << ~30V to keep the circuit truly simple (great application for complimentary N-Channel // P-Channel half-bridges......)

Again, sorry if I am a bit off-the-mark....tired on this end...

Fish
 

BGB

Nov 30, 2014
154
Joined
Nov 30, 2014
Messages
154
BGB,

First, I must confess i have not read your entire post....I read slowly, it is late and I am beat....so just ignore me if I am too far off-mark.....

First....50W or 100W is not really "small".....assuming a 12Vdc nominal supply, you are talking about 5A to 10A....that is a lot of power for "small projects"....Obviously for a BLDC motor the max power is generally considerably higher than the "actual power used".....but this still begs the question, "If you don't need 50W to 100W, then why build in a 50W to 100W motor...when a 5W motor is all that is required?....."....But I do understand the general concept.....BLDC motors have a much higher RPM range than Stepper motors and are variable power motors where steppers are fairly constant power motors....regardless of the power actually required....

they are "small" projects in the sense that one is dealing with loads typically around 20lbs to 40lbs, as opposed to "large" loads of say, 200lbs to 1/2 ton.

if you are moving 40lbs around, and need it to move reasonably quickly, you really will need those 100 watts.

typically, you would be running off a "reasonable" power-source (such as lead-acid batteries).


a 5W motor would likely be weak to the point of being virtually unusable for much beyond small toys.


the contrast would be against "large" kilowatt class motors (which would typically be driven, say, using 208 or 440 volts 3-phase or similar and/or controlled with an external VFD unit or similar). these ones are typically rather expensive.


and, there are intermediate motors, say, from 200W to several kW, but still running off of DC (still "low voltage" in the "less than 200 volts" sense...).

for example, I have a few 400W motors which can be run on 18 volts, and are about the size of 16oz food cans (65mm diameter IIRC).

had also considered getting a more expensive 1.6kW 24 volt motor (80mm diameter).

these would be used for "slightly larger" loads...


I assume you are familiar with servo motors? There are many permutations depending on the mechanical requirements.....In something like robotics where high-torque and relatively low rpm are desirable, geared AC/DC/BLDC motors are a mainstay.....to transform any of these commonly available motors into servos you simply "close the loop". This can be achieved with encoders, scales, hall-effect sensors, optical sensors or even mechanical sensors (though there is rarely a good reason to resort to mechanical sensors in this millennium....) and some fairly compact circuitry......

finding affordable servos much beyond very small units isn't really as easy, as the cost of these goes up a lot faster than the "roll your own" route using a more generic motor (and custom-made gearbox).

likewise, a person might, say, rather than use an explicit encoder, paint white/black bands on a flywheel or gear or similar, and use an LED / photo-transistor pair or similar to detect the alternating bands.

with BLDC motors, you don't really need sensors or encoders, as the same basic functions can be done using back-EMF and electronic sensing.


Let's look breifly at how we might DIY a small servo for some robotics apparatus....let's assume one of the very common 3-9Vdc Mabuchi motors that operates reliably between 5000rpm and 15,000rpm geared 100:1 will provide both the requisite torque and output rpm (50rpm to 150rpm output)..... if we add a simple optical sensor to the motor's main shaft (small disk with say 4 slots in it) and we route the output of the optical sensor back to a Micro-Controller or even a simple "up/down" counter, then we will know the output shaft position within +/- 0.9 degrees....if you need higher resolution increase the number of slots or add a second optical sensor......and now we have a DIY servo with roughly the same precision as a stepper motor....instead of "sending steps", we simply "count steps" until we reach the desired position.

For small BLDC motors, achieving self-commutation is fairly trivial if you don't mind adding an external shaft sensor....again this is not really very difficult to DIY with Hall-Effect or optical sensors...it does require a bit of "fiddling" to properly align the sensors to optimize commutation, but once the "fiddling" is done for any particular motor, it should be easy enough to replicate...so the key here would be to pick a few popular, high-volume BLDC motors that represent the power ranges of general interest.....the same sensors used to trigger commutation can be used to "close the loop" for position sensing...two bird one stone as it were....I should point out here that one of the requirements is keeping the supply voltage << ~30V to keep the circuit truly simple (great application for complimentary N-Channel // P-Channel half-bridges......)

Again, sorry if I am a bit off-the-mark....tired on this end...

Fish

I suspect we have differing definitions of "small".

I have a "small" robot that weighs 20lbs, and is powered off a lead-acid UPS battery.

and it uses "small" 25.8mm x 57mm motors similar to those found in cordless drills.

it would be nice to be able to have integrated control electronics with a motor in roughly this form factor and power rating.

as-is, it is seen either in very small/weak motors (such as computer fans), or on larger industrial-style motors.
 

Fish4Fun

So long, and Thanks for all the Fish!
Aug 27, 2013
481
Joined
Aug 27, 2013
Messages
481
Hey BGB! ....Sleep + Caffeine have vastly improved my mental faculties....Let's see if I can get on your page :)

I concede I was thinking of "toy" robotics, not 10kg+ "monsters", but perhaps I am just looking at the wrong side of the page rather than the wrong chapter (to extend the metaphor).....

My assumptions are as follows:
1) Nominal Battery Voltage is 12V to 48V
2) You want to use existing "hobby" class BLDC motors rather than off-the-shelf DC motors or attempting to DIY a motor from scratch.

Most of the "problems" you might encounter with coordinated control of multiple BLDC motors are neatly handled with drivers designed for "quad-copters". Before spending a great deal of effort developing a multi-motor coordination system I think it would be a really good idea to look at these.....They are not optimized for positional accuracy, but this MAY be easy enough to modify....

Assuming the quad-copter drivers prove unsatisfactory.....AND:

3) You are willing to concede that each "new BLDC motor" may require modifications to implement.

Creating an "external" shaft position sensing module MIGHT remove the need for a dedicated micro-controller and could vastly simplify commutation. If I were developing such a circuit I would likely start with a micro-controller for "early testing" with the intention of exploring a completely analog solution once the mechanical challenges were satisfied and "proof-of-concept" was complete....As mentioned in my previous post, using complementary P-Channel // N-Channel power switches would vastly simplify driver design for supply voltages in the 12V to 24V range (while considerably higher Voltage P-Channel switches exist, the advantages to using them in this type of design diminish fairly rapidly as the supply voltage increases....and at some point it simply becomes easier//more effective to use N-Channel devices and a "High-Side-Driver"....but for now I am assuming a nominal supply voltage of <30V)....

As a point-of-interest, you might have a look-see at this: https://www.electronicspoint.com/threads/sensorless-bldc-motor-driven-synchronously-hrmmm.272597/ , an on-going project I am playing with....I am not certain this really meets your "simple" requirements from the perspective of minimal parts count because it still requires a dedicated driver circuit and micro-controller, but it would seem to solve the problem of driving a BLDC motor "as simply as a conventional DC motor"...you would still need to "close the loop" with some type of shaft sensor to provide positional information.....one advantage of going this route is absolute speed control...no "dwelling around the mark"....It is also inherently "variable power" rather than "variable speed" or "constant power". Assuming the primary control module of your robot "knows" when more power is required, it would be very simple to increase the power to the BLDC while maintaining constant RPM....In-Fact, the nature of the synchronous-drive model would allow current or voltage feedback to regulate current consumption at any given speed.....I won't go into the details of how this might be achieved,suffice it to say it would be a relatively simple firmware feature to incorporate.

I am interested in developing or helping develop a relatively simple, low cost solution for turning mass-market hobby BLDCs into servos AND alternate approaches to driving these BLDC motors in general. If you would like to coordinate efforts I would love to flesh out common areas of interest wrt these hobby class BLDC motors and perhaps divide some of the tasks. I have a fairly robust compliment of tools including two fully functional DIY CNC routers (one medium format with a 37in x 26in x 7in work envelope and one optimized for PCBs with a 9in x 12 in x 2in work envelope), a 2-Channel and a 4-Channel DSO...bench supplies, soldering stations...etc, etc.... a fairly large inventory of electronic components....am competent in AVR ASM programming, VB application development, electronic design and PCB prototyping....Certainly not an "expert" at any of the a fore mentioned skills, but I generally seem to muddle my way through. If you are interested PM me with your contact info and we will explore it.

Finally....this thread (or a new one for any actual development) should likely be in the Electronics Projects Forum so others might contribute or at least find it to read....

Fish
 

Minder

Apr 24, 2015
3,478
Joined
Apr 24, 2015
Messages
3,478
Also it depends on whether you want position control (closed loop) or velocity/sensorless control (open loop).
The typical RC outrunner BLDC uses PWM sensorless control as does the industrial ECM HVAC motor.
Closed loop and position control requires a PID loop controller of some kind.
M.
 

BGB

Nov 30, 2014
154
Joined
Nov 30, 2014
Messages
154
Hey BGB! ....Sleep + Caffeine have vastly improved my mental faculties....Let's see if I can get on your page :)

I concede I was thinking of "toy" robotics, not 10kg+ "monsters", but perhaps I am just looking at the wrong side of the page rather than the wrong chapter (to extend the metaphor).....

yeah. I had remembered once being in an RC / hobby store, then wondering what some of the parts they were selling were rated for. most were well-below what I had an immediate use for.

like, a lot of things like wheels that can only handle 5 lbs, 7.2v 4.8Ah ("large" battery packs), ...

NiMH could be nice, but is very expensive for larger packs, so lead-acid remains as a cheaper option.


My assumptions are as follows:
1) Nominal Battery Voltage is 12V to 48V
2) You want to use existing "hobby" class BLDC motors rather than off-the-shelf DC motors or attempting to DIY a motor from scratch.

a lot of what I have been using thus far have been power-tool motors.
also have some "light-duty industrial" motors.

power-tool motors are generally 12v 100W motors (typically run at 18v in power tools).

"light duty industrial" motors tend to be around 200W to 2kW (and a wide range of operating voltages).


as well as a few experimental motors improvised from "junk" (salvaged split-phase motors and automotive alternators). however, a problem on this front (for being able to re-wind them for more desirable properties) is the cost of the magnet wire. as-is, their properties are well outside of desirable.

power sources are, typically:
12v, single lead-acid battery;
24v, two lead-acid batteries;
18v can be created via regulation.
36v, three lead-acid batteries (not currently used);
48v, four lead-acid batteries (not currently used).

so, pretty much all my stuff thus far has been 12 to 24v.


Most of the "problems" you might encounter with coordinated control of multiple BLDC motors are neatly handled with drivers designed for "quad-copters". Before spending a great deal of effort developing a multi-motor coordination system I think it would be a really good idea to look at these.....They are not optimized for positional accuracy, but this MAY be easy enough to modify....

Assuming the quad-copter drivers prove unsatisfactory.....AND:

errm... a lot of these types of drivers tend to be fairly limited in terms of their range of behaviors AFAIK.

also, most of the off the small off-the-shelf drivers will smoke if you try to use them to drive a larger motor.


typically, I have used custom-built driver boards made from transistors (typically BJT power transistors for lower-power drivers, and MOSFETs for higher-power drivers).

the main drawback of building boards mostly has to do with wiring and space, where if one controls several motors from a given board, they need a good space to locate the board, as well as longer lengths of comparably more expensive wire (since the driver is often a larger distance from the motor).


the basic idea for an on-motor driver is basically to mount a block of TO-220 MOSFETs or similar mounted directly to the motors (with a shared heat-sink), with the H-bridges built as appropriate for the operating range of the motor they are mounted to.

if they could be built commercially, it wouldn't add much more to maybe throw in an $0.50 MCU or similar and a serial interface.

this could be potentially more space-compact, and also (if done affordably) save money due to using less heavy-gauge wire.


however, some similar class motors do already exist, but they are not cheap (so more generic motors and external/custom-built boards remains the cheaper option for now).


3) You are willing to concede that each "new BLDC motor" may require modifications to implement.

Creating an "external" shaft position sensing module MIGHT remove the need for a dedicated micro-controller and could vastly simplify commutation. If I were developing such a circuit I would likely start with a micro-controller for "early testing" with the intention of exploring a completely analog solution once the mechanical challenges were satisfied and "proof-of-concept" was complete....As mentioned in my previous post, using complementary P-Channel // N-Channel power switches would vastly simplify driver design for supply voltages in the 12V to 24V range (while considerably higher Voltage P-Channel switches exist, the advantages to using them in this type of design diminish fairly rapidly as the supply voltage increases....and at some point it simply becomes easier//more effective to use N-Channel devices and a "High-Side-Driver"....but for now I am assuming a nominal supply voltage of <30V)....

a per-motor micro-controller could actually cost less than the MOSFETs. if using a DIP-based ATmega or Cortex-M0, the motor + MOSFETs + ... would tend to cost a lot more (especially with bigger motors), to basically eat the cost of the ATmega. (say, if you have a $100 motor, and need $20 in MOSFETs, the $3 MCU is negligible).

if one can use QFP MCUs, then much cheaper options exist.

space is also less of an issue with a physically larger motor.


the challenge is with smaller motors, the cost of the motor and driver-transistors goes down enough to make the cost of the MCU more relevant, though still not likely a deal-breaker (more so if cheaper QFP MCUs are used).

likewise, with a smaller motor, the physical space may be small enough to make things a little more of an issue.

say, one may need to devise a reasonably compact 3-phase driver module that sticks on the back-end of 35.8mm BLDC motors, and has a reasonably capable drive-protocol, and can be made for a reasonable per-unit cost (harder).

you could possibly skip the MCU, and control the motors directly by driving the H-bridges, but the drawback then is that one needs per-motor connections from the main controller, and can no longer use a star network.

so, sticking an MCU into each motor could work out cheaper overall.

also, RS-232 is fairly common/convenient, but a little fudging may be useful to allow for a star network and to reduce sensitivity to EMI.


I suspect construction would likely involve a metal ring (both a housing and heat-sink) with notches where the power transistors would be mounted, likely epoxied in place, with wiring behind these to connect between the transistors, power input, motor inputs, and control board;
control board would basically be a small MCU hanging out in the back, with external signal connections, and wired into the power-transistors;
possibly, some of the remaining central area could be used for an electrolytic capacitor and TVS diode.


As a point-of-interest, you might have a look-see at this: https://www.electronicspoint.com/threads/sensorless-bldc-motor-driven-synchronously-hrmmm.272597/ , an on-going project I am playing with....I am not certain this really meets your "simple" requirements from the perspective of minimal parts count because it still requires a dedicated driver circuit and micro-controller, but it would seem to solve the problem of driving a BLDC motor "as simply as a conventional DC motor"...you would still need to "close the loop" with some type of shaft sensor to provide positional information.....one advantage of going this route is absolute speed control...no "dwelling around the mark"....It is also inherently "variable power" rather than "variable speed" or "constant power". Assuming the primary control module of your robot "knows" when more power is required, it would be very simple to increase the power to the BLDC while maintaining constant RPM....In-Fact, the nature of the synchronous-drive model would allow current or voltage feedback to regulate current consumption at any given speed.....I won't go into the details of how this might be achieved,suffice it to say it would be a relatively simple firmware feature to incorporate.

I suspect there is a disconnect in terms of what is being talked about.

I never said that there was an issue with the complexity of driving BLDC motors. rather it has a lot more to do with physical space, and wiring issues, and hopefully reducing cost (though, if made, this would require being able to cheaply produce the units).


I am interested in developing or helping develop a relatively simple, low cost solution for turning mass-market hobby BLDCs into servos AND alternate approaches to driving these BLDC motors in general. If you would like to coordinate efforts I would love to flesh out common areas of interest wrt these hobby class BLDC motors and perhaps divide some of the tasks. I have a fairly robust compliment of tools including two fully functional DIY CNC routers (one medium format with a 37in x 26in x 7in work envelope and one optimized for PCBs with a 9in x 12 in x 2in work envelope), a 2-Channel and a 4-Channel DSO...bench supplies, soldering stations...etc, etc.... a fairly large inventory of electronic components....am competent in AVR ASM programming, VB application development, electronic design and PCB prototyping....Certainly not an "expert" at any of the a fore mentioned skills, but I generally seem to muddle my way through. If you are interested PM me with your contact info and we will explore it.

ok.

I am working on building a CNC milling machine, and mostly do C programming (and to a lesser extent, C++, and some C# and Java). I also have some ASM experience (mostly x86 and x86-64, and some ARM).

I mostly have experience with ARM based controllers.

I would assume probably the main "brains" of a robot would be an more powerful x86 or ARM based controller, just it would use a bus to communicate with the motors, rather than needing to use several GPIO pins for each motor.


Finally....this thread (or a new one for any actual development) should likely be in the Electronics Projects Forum so others might contribute or at least find it to read....

Fish

dunno...

this is more as a hypothetical for now.
 

Minder

Apr 24, 2015
3,478
Joined
Apr 24, 2015
Messages
3,478
I am working on building a CNC milling machine, and mostly do C programming (and to a lesser extent, C++, and some C# and Java). I also have some ASM experience (mostly x86 and x86-64, and some ARM).
.

If wanting something a little more than the likes of Mach4 can offer, you want to look at Kflop for an advanced C customizable system, there is also a Linux based CNC site.

To build a complete system from scratch is a herculean project,
M.
 

BGB

Nov 30, 2014
154
Joined
Nov 30, 2014
Messages
154
Also it depends on whether you want position control (closed loop) or velocity/sensorless control (open loop).
The typical RC outrunner BLDC uses PWM sensorless control as does the industrial ECM HVAC motor.
Closed loop and position control requires a PID loop controller of some kind.
M.

yeah.

you can either use things without feedback, but with BLDC motors this leads to a problem that it either runs at full speed, or it doesn't really work at all (in contrast, using an induction motor it will just run slower if under load, but you have no real idea how far an induction motor has turned absent some form of encoder feedback, as it is sensitive to the load).

if the BLDC motor is able to not lose steps, it is possible though to basically treat it like a stepper and assume it has kept the correct position. however, to do this with loads which have a significant inertia, the motor needs to be oversized a bit.

there is back-EMF, which requires a little more work in the electronics, but then the motor can deal a little better with being loaded, and can better detect if it failed to turn or is being driven externally.

motors with hall-effect sensors can also be used, but tend to cost a lot more.

an LED + phototransistor + paint is another option, but has its own issues (such as poor response times from the photo-transistor, and needing a good place for the sensor).

encoders that stick on the motor shaft may also be an option.


one issue though is that, regardless of the above, there isn't any really "good" way I know of to detect initial motor position or know if the motor has moved while the device was unpowered. typical partial solutions involve something like a potentiometer, or a more complex positional encoder.

for many devices though, it is possible to use some limit switches, and on power-up, move the motors until the limit switches trigger, and set this as a zero point. then motion is only tracked while the device is powered.
 

BGB

Nov 30, 2014
154
Joined
Nov 30, 2014
Messages
154
If wanting something a little more than the likes of Mach4 can offer, you want to look at Kflop for an advanced C customizable system, there is also a Linux based CNC site.

To build a complete system from scratch is a herculean project,
M.

I have already thrown together a basic G code interpreter, and have the code for running the stepper motors and similar already written (it is basically the same basic code which is used in my other projects).

G code is actually a fairly simple language. ugly yes, difficult to process, not really.


thus far, physically making the thing has been putting up a lot more of a fight (mostly as it is made out of a lot more wood and steel, vs a lot of my robot projects which were more built mostly out of cardboard/wood/plastic/... and a lot of duct-tape and hot glue).
 

Minder

Apr 24, 2015
3,478
Joined
Apr 24, 2015
Messages
3,478
motors with hall-effect sensors can also be used, but tend to cost a lot more.

.

Hall effect style sensors only generate the commutation point, they are no good for CNC positioning, In CNC use, a BLDC motor is commutated back to the drive , the PID loop requires something with a high resolution such as a incremental quadrature encoder either back to the drive, if it is an intelligent drive, capable of PID loop or a separate motion controller, generally the PID loop is closed in the current mode, rather than voltage/velocity mode, using a transconductance type drive.
M..
 

BGB

Nov 30, 2014
154
Joined
Nov 30, 2014
Messages
154
Hall effect style sensors only generate the commutation point, they are no good for CNC positioning, In CNC use, a BLDC motor is commutated back to the drive , the PID loop requires something with a high resolution such as a incremental quadrature encoder either back to the drive, if it is an intelligent drive, capable of PID loop or a separate motion controller, generally the PID loop is closed in the current mode, rather than voltage/velocity mode, using a transconductance type drive.
M..

errm, but you would not normally use BLDC motors for precise XYZ positioning absent some pretty significant gear reduction (say, 4000:1), and generally BLDC motors aren't very good about accurate microstepping, so the hall-effect sensor would likely be about as accurate as one can reasonably expect from a BLDC.

more generally, BLDC motors would be for things like wheel drive-motors or articulation motors or tool spindles or similar, where a range of movement speeds may matter more than having a high level of accuracy.


more likely, a stepper motor would be used for XYZ, probably itself with a 16:1 or 24:1 reduction.

FWIW: my CNC project uses steppers for XYZ. and, though it would seem like this much reduction would make the steppers dead-slow, they actually get sort-of ok speeds for the use-case (in initial tests). (though, yes, a top speed measured in inches-per-minute isn't exactly rapid travel...).

even, as-is, I am not sure if they will have enough torque to move heavier loads (say, if a big chunk of steel were put on the table), so may possibly consider a larger reduction if needed (would involve redesigning the gearbox).
 

Minder

Apr 24, 2015
3,478
Joined
Apr 24, 2015
Messages
3,478
errm, but you would not normally use BLDC motors for precise XYZ positioning absent some pretty significant gear reduction (say, 4000:1), and generally BLDC motors aren't very good about accurate microstepping, so the hall-effect sensor would likely be about as accurate as one can reasonably expect from a BLDC.

more generally, BLDC motors would be for things like wheel drive-motors or articulation motors or tool spindles or similar, where a range of movement speeds may matter more than having a high level of accuracy.

).

As someone who has been in the CNC and servo field for many years I would have to refute that, I typically use Galil motion controllers in conjunction with BLDC servo motors and drives .
Galil cards handle a feedback frequency of up to 12Mhz and a encoder resolution that is well above anything but extremely microscopic proportions.
I was told once by a salesman that BLDC exhibits gogging at low rpm so requires a gear reduction for CNC work.
I have disproved this many times over, it will exhibit cogging without a proper PID loop controller such as Galil.
The Galil controller will offer resolution and accuracy well above the open loop velocity mode, which is fairly crude.
The motion card will offer constant correction up to 12mhz at the least input increment of the encoder.
M..
 

BGB

Nov 30, 2014
154
Joined
Nov 30, 2014
Messages
154
As someone who has been in the CNC and servo field for many years I would have to refute that, I typically use Galil motion controllers in conjunction with BLDC servo motors and drives .
Galil cards handle a feedback frequency of up to 12Mhz and a encoder resolution that is well above anything but extremely microscopic proportions.
I was told once by a salesman that BLDC exhibits gogging at low rpm so requires a gear reduction for CNC work.
I have disproved this many times over, it will exhibit cogging without a proper PID loop controller such as Galil.
The Galil controller will offer resolution and accuracy well above the open loop velocity mode, which is fairly crude.
The motion card will offer constant correction up to 12mhz at the least input increment of the encoder.
M..

dunno.

at first I had considered using some BLDC motors out of old HDD's, but ended up getting some steppers instead, partly due to various reasons.

the smoothest movement (and highest speeds) I got was when using sine-waves to drive them, but they didn't really move all that smoothly from one position to another. they were also fairly low torque.

with square-waves, they liked to jump between steps and vibrate considerably, and don't free-spin effectively without a load.

I have more recently experimented with sqrt(sin) waves, which seem to have more of the smoothness of sine waves, but with a slightly higher torque.

I was basically driving them like they were steppers in this case.

they could have worked, but would likely have needed a fair bit of gear reduction.


the steppers are a lot more accurate, and have a decent amount of torque, but are pretty slow.

my code for driving steppers uses one of square-waves, sine-waves, and reverse-sawtooth waves.

with steppers:
square-wave seems to have most torque, but also the most vibration and is slowest.
sine wave has low vibration, but also lower torque;
reverse sawtooth seems to have good toque and lower vibration than square-waves (and also the motors pull less current), while seemingly also allowing higher RPMs.

for low-RPM operation, the steppers are driven with square-waves at the "hold" duty cycle (different duty cycles are used for spinning the motor and holding a position, but at low speeds a lower duty cycle is needed to prevent the motor from pulling excessive current).


I have not yet tried reverse-sawtooth on BLDCs or sqrt(sin) on steppers.

side-note: generally, the code updates the motor PDM on a 25 kHz tick, which means a peak frequency of 12.5kHz, however the exact frequency produced by the PDM code will depend some on duty-cycle (unlike PWM). the motor-driver code tends to work by continually varying the duty-cycle.

( the controller I am using doesn't really do PWM in hardware, so it is done in software via toggling pins... ).


I am not really sure how people professionally drive these motors though, so this is mostly just personal experience.
 

Minder

Apr 24, 2015
3,478
Joined
Apr 24, 2015
Messages
3,478
The drives I use are A-M-C, Copley Controls, Aerotech, they all use PWM output.
A fairly high res motor has 8 poles, with 4 electrical revolutions/mechanical rev, so basically fairly coarse when used open loop.
When used with a dedicated servo drive they are capable of much higher resolution than a stepper motor.
If you go to the CNCzone site you will find a wealth of info on DIY CNC and uses for BLDC motors as well as stepper and DC brushed.
M.
 

BGB

Nov 30, 2014
154
Joined
Nov 30, 2014
Messages
154
The drives I use are A-M-C, Copley Controls, Aerotech, they all use PWM output.
A fairly high res motor has 8 poles, with 4 electrical revolutions/mechanical rev, so basically fairly coarse when used open loop.
When used with a dedicated servo drive they are capable of much higher resolution than a stepper motor.
If you go to the CNCzone site you will find a wealth of info on DIY CNC and uses for BLDC motors as well as stepper and DC brushed.
M.

for my projects, a lot have used Raspberry Pi's, as they are pretty good in-general, and reasonably affordable, nevermind needing to do PWM/PDM in software (nor them not supporting analog IO).

a lot of things could probably be also done on Cortex-M4 or ARM9 chips, which could be a cheaper option if making a lot of devices (and making custom PCBs).

but, the RPi A+ and B+ boards aren't *that* unreasonable (on the cost front).

generally, they had been directly driving the H-bridges.


FWIW, included a drawn picture of a waveform shape which seems to get reasonably good performance out of steppers.

I have little idea how well this wave-shape would work with BLDC or induction motors. (nor can I find much evidence of anyone else using such a waveform shape).


but, yeah, a holdup ATM (with the CNC machine) was me turning out here not to have any 1/2" steel rod, which had been assumed in the design, and likely needing to substitute this with 1-3/16 steel pipe, kind of making a mess of things...

but, it is still progress, had been delayed several months on cutting wood due to weather (several months of persistent rain and flooding, so couldn't get wood cut).

currently building the thing outside / on my porch, no idea where it will be put after it is built (not a lot of free space around here...).
 

Attachments

  • sawdrive1_1.png
    sawdrive1_1.png
    6.8 KB · Views: 129
Last edited:

Fish4Fun

So long, and Thanks for all the Fish!
Aug 27, 2013
481
Joined
Aug 27, 2013
Messages
481
Hey BGB!

I thought I would let you and Minder hash out servos for a bit.....he certainly has worked with them a lot more than I have.... (all I know is a bit of theory.....and that I want to play with them, LOL) but at the end of the day if one wants to use a BLDC for precision movement one needs to control the BLDC in a closed loop....In the conversion of a hobby-class BLDC motor to something close to an industrial servo there are several considerations......including a BLDC Driver and Some form of Feedback (be it simple encoder or glass scales).....I am suggesting that to "economize" for DIY the signaling used for commutation could also be used to "close the loop" if there were a sufficient amount of gear reduction between the BLDC and the linear actuator (belt, screw etc) then positional accuracy could be equal or greater to that of a stepper with a fairly significant increase in performance and decrease in power consumption with a reduction in actual driver complexity....

My suggestion that driving the BLDC synchronously is possible was to point-out that driven in this mode the BLDC would be very similar to existing DC Servos except that rpm would be constant under load; the Machine controller would still control speed and direction of the motor....advanced servo features like "locked rotor" and smooth low RPM movement increase the complexity of the BLDC driver, but do not fundamentally alter the requirements of closed loop operation. Anyway, if you are building your first CNC machine, you should likely stick with off-the-shelf steppers and reliable drivers....there is a LOT more information readily available on them; much more intuitive for a first build and they are considerably cheaper....though, a word of advice about stepper drivers....I would strongly encourage you to byte the bullet and order Gecko Stepper drivers rather than some China-Cheap knock-off....in my experience the performance difference far exceeds the cost difference.....Also pay careful attention to the inductance of the steppers you select....it might seem like the most important specification is the "Oz-In" rating, this is simply NOT the case....if you purchase high-inductance motors you will need very expensive drivers to get decent performance out of them....

@Minder....
If wanting something a little more than the likes of Mach4 can offer, you want to look at Kflop for an advanced C customizable system

Yes, I have two of the KFLOPs, one for each of my routers....would never even consider going back to Mach3/4......I don't understand why the KFLOP is not more popular...it really is virtually the same price as Mach3/4 and it has sooooo much more to offer.....

Good Luck!
 

BGB

Nov 30, 2014
154
Joined
Nov 30, 2014
Messages
154
Hey BGB!

I thought I would let you and Minder hash out servos for a bit.....he certainly has worked with them a lot more than I have.... (all I know is a bit of theory.....and that I want to play with them, LOL) but at the end of the day if one wants to use a BLDC for precision movement one needs to control the BLDC in a closed loop....In the conversion of a hobby-class BLDC motor to something close to an industrial servo there are several considerations......including a BLDC Driver and Some form of Feedback (be it simple encoder or glass scales).....I am suggesting that to "economize" for DIY the signaling used for commutation could also be used to "close the loop" if there were a sufficient amount of gear reduction between the BLDC and the linear actuator (belt, screw etc) then positional accuracy could be equal or greater to that of a stepper with a fairly significant increase in performance and decrease in power consumption with a reduction in actual driver complexity....

in tests where I did use feedback, it was from a back-EMF sensor (a voltage divider and some transistors) which would watch one of the phases, and turn on a signal whenever the voltage went low enough to turn on a PNP (approx 2.5v). during part of the phase, this would be watched, and used to update the commutation timing.

as noted, most of my small 3-phase motors have been re-purposed/svavenged HDD spindle motors, and my other 3-phase motors have generally been a fair bit larger.

generally, I had run them open-loop style though (treating them more like high-speed steppers).


most have the property though that, if no power is applied, they will "snap" to one position or another, and don't seem to move at a uniform speed if given 3-phase sine-waves (though, they do move a bit smoother than with most other wave shapes).

in a bigger motor, there may be a difference in that one may need to also send a signal to control the field coil (coils are used in place of magnets).

there are also "squirrel cage" induction motors, which give smooth movement, but the magic that makes them work makes them not so good for open-loop positioning (however, if driven open-loop, you can apply a load and they slow-down on their own).

most have been made from salvaged junk, as I have nowhere near the piles of money needed to buy large 3-phase motors.


between BLDC motors and bipolar steppers, if used open-loop, the main difference seems to be:
BLDC motors go fast, but don't have as much torque;
steppers have a much lower top speed, but a fair bit of torque.


my bought motors have generally been PMDC motors and steppers.

an issue has partly been that BLDC motors cost more than similarly powerful PMDC motors or steppers (for small motors, *). granted, yes, they are more versatile.

the painted-wheel strategy has been used some to provide feedback for PMDC motors.


*: for larger motors, things change around some, so it is mostly series vs shunt wound motors, vs induction motors, with a few AC synchronous motors (a 3-phase AC synchronous motor basically being a higher-voltage BLDC motor, albeit typically with a DC field coil in place of the magnets).


My suggestion that driving the BLDC synchronously is possible was to point-out that driven in this mode the BLDC would be very similar to existing DC Servos except that rpm would be constant under load; the Machine controller would still control speed and direction of the motor....advanced servo features like "locked rotor" and smooth low RPM movement increase the complexity of the BLDC driver, but do not fundamentally alter the requirements of closed loop operation. Anyway, if you are building your first CNC machine, you should likely stick with off-the-shelf steppers and reliable drivers....there is a LOT more information readily available on them; much more intuitive for a first build and they are considerably cheaper....though, a word of advice about stepper drivers....I would strongly encourage you to byte the bullet and order Gecko Stepper drivers rather than some China-Cheap knock-off....in my experience the performance difference far exceeds the cost difference.....Also pay careful attention to the inductance of the steppers you select....it might seem like the most important specification is the "Oz-In" rating, this is simply NOT the case....if you purchase high-inductance motors you will need very expensive drivers to get decent performance out of them....

I had previously tried driving a steppers with an L298N, but it fried.

the steppers were also pretty close to the maximum rated current of the L298N, but in tests (due to not having all the code perfectly worked out), they kept going outside the rated range.

most other stepper-driver modules were too expensive (the steppers were already expensive, don't need drivers which rival the cost of the steppers).


so I have since been driving them in-software using transistor H-bridges, built mostly from TIP122/TIP127 transistors, generally running at 12v.

the current they pull seems to depend a lot on how fast I try to run them, requiring adjusting the properties depending on RPM range.


the motors I am using I have are 57 oz-in with 5mH induction and rated for 1.3A (and are NEMA-17). they were about $15 each.

I had considered some larger, IIRC, 250 oz-in NEMA-23 motors rated at 2.8A. but they were more expensive (they were $25 each).


getting speed out of the ones I have involved some fiddling with wave-shape, which has some influence on the achievable speed and torque.

at 12v, they peak at about 5 amps per phase (10A total), but this can be brought down to the rated value by running them at a constant 25% duty cycle if running at low speeds (then they run 1.3A per phase, or 2.6A overall).

for the wave-form given before, the motor would be briefly at 100% duty, then quickly drop down to 50% duty before the next phase kicks in.

I have got it up to drill-like RPMs this way, whereas a simple square-wave peaks out a bit sooner (and the motor vibrates/buzzes a bit more in the process).

with sine-waves, they could go pretty fast, but had significantly less torque.

they seem more reliable if kept at a lower 400 or 500 RPM though (vs trying to push them to around 750 or 800 RPM).


hopefully the ones I have have enough torque for the project, will need to assemble it and see how well they do (if not enough torque, may tweak the grear ratio more)


@Minder....

Yes, I have two of the KFLOPs, one for each of my routers....would never even consider going back to Mach3/4......I don't understand why the KFLOP is not more popular...it really is virtually the same price as Mach3/4 and it has sooooo much more to offer.....

Good Luck!

not familiar with these...

for running the motors, I have typically built bridge circuits out of transistors (MOSFETs or BJTs).
 

Fish4Fun

So long, and Thanks for all the Fish!
Aug 27, 2013
481
Joined
Aug 27, 2013
Messages
481
Hey BGB!

Hrmmm, I think we are still on different pages.... IF your goal is to drive NEMA17 motors inexpensively then DIY drivers are NOT the right way to go...have a look-see @ these:

http://www.ebay.com/itm/StepStick-A...982?pt=LH_DefaultDomain_0&hash=item3383fcade6

http://www.ebay.com/itm/Geeetech-St...566?pt=LH_DefaultDomain_0&hash=item4ad81535b6

The second link being a "pin-compatible upgrade" over the popular A4998....I have a fair number of both, the DRV8825 is definitely a better chip than the A4998, but both are much better than anything you could DIY for the same $$. Using the DRV8825 @ 24V I can get ~2400rpm from most NEMA17's I have played with....@ 12V about the best I can do is ~1600rpm.....Using a Gecko driver I can typically get >3000rpm, but I don't know that I would ever spend the $$ for a Gecko to drive Nema17's.....

All modern, Commercially available stepper drivers are "constant current" drivers.....Because the change in current in the coil is by definition limited by the inductance of the stepper coils (L = di/dt), at any given RPM a much higher voltage is required to drive a stepper than its "nominal Voltage"......The drive voltage for a stepper is typically determined by the following formula:

Code:
32 * (Inductance ^1/2) = Optimal Drive Voltage

Example:

32 * (5mH ^1/2) = 71.55V

32 * (2mH ^ 1/2) = 45.25V

32 * (0.8mH ^ 1/2) = 28.62V

I have never seen a "proof" of this formula, but it is widely accepted industry wide as a "good compromise or starting place" between stepper performance/driver complexity/cost/efficiency.....Millions of examples of systems that function very well with both higher and lower voltages than suggested by the formula....the primary mitigating factor is higher-rpm Torque requirements.....(side note: many DIY 3D printers use timing belts for linear motion....these require relatively low RPM so typical belt driven 3D printers function just fine with almost any NEMA17 operated @ 12Vdc....but when lead screws are used the loss of torque at high RPM can become a real issue...causing "missed steps", "Locked Steppers" etc, etc .....Just FYI).

Most "Stepper Drivers" are a mixture of analog and digital circuits that take two (or three) inputs from the controller...."Step" and "Direction" (The third input that many have is an "Enable" input). Typical Stepper Drivers operate in "Micro-Steps"....some (like the Gecko Drivers) are "fixed" (and this is a real misnomer) while others (like both the A4998 and DRV8825) are "user Selectable"....I won't go into the theory of uStepping (there is plenty of information available...) but suffice it to say that there are advantages to it. The Gecko Drivers are fairly unique in that they have built-in logic that "varies" the uStepping based on the input step rate.....again, w/o going into the "how", the reason this is advantageous is that at low RPM the "smoothest" operation might occur @ say 64 uSteps per Step but at higher RPM the motor might perform much better at 8 uSteps/Step and at even higher RPM it might perform best in half or full step mode.....but a "standard controller" can't "switch uStep rates" on the fly.....The way the Gecko works from the controller's perspective: it always requires 10uSteps per Step.....internally it uses logic to determine which "step mode" it should be in...as the time between step pulses decreases, it "combines steps"...as the time between steps increases, it "expands steps" into multiple uSteps......Of course the position of the rotor always represents the number of steps "it should have moved @ 10 uSteps per Step".....

A servo based driver is almost the inverse of a stepper based system....instead of translating each Step Pulse into some portion of an electro-mechanical step, it attempts to "match the 'step' pulses with encoder pulses" some servo drivers might take an input similar to a stepper, but more commonly the controller takes on the active role of determining position based on real-time information from the encoder..... translates this to a simple analog +/- 10V to a servo driver that in turn translates this into RPM/Direction....Since the controller might have any number of different servos AND it typically has to coordinate motion between multiple Axis, it has to have A Priori knowledge about each servo....typically acquired in some type of PID tuning/learning operation....or in some initialization file etc....While it is possible to "dumb down" a stepper based system to simply accept some "timed steps" to produce a reasonable facsimile of a tool path, a typical servo based system requires a highly complex signal processing unit (ie controller) that you simply can not "dumb down"......

Building a DIY servo and driver is fairly straight forward....But controlling it requires a highly sophisticated and fairly specialized type of closed loop controller.....The a fore mentioned K-Flop is exactly such a controller....it combines an FPGA and a DSP that allows mixed signal control of both steppers and servos in a user-defined combination of Open or Closed Loop....It also comes with an open-source PC application interface that I prefer to the more common Mach3/4.....But, from what I am reading in your posts, I don't think you are quite there yet, though I will tell you I wouldn't generally consider using anything else for the machines I build/built (with the exception being a 3D printer where I am going to at least start with the ever-popular Reprap firmware for the Arduino based controller.....too much work has gone into making this the "easy" route for me to ignore it, lol) Anyway, if you are building a NEMA-17 based system I would strongly urge you to stick with steppers.....use readily available (and CHEAP!) 3D printer drivers like the A4998 or DRV8825 and perhaps even think about using one of the Arduino controllers if you are on a limited budget.....might take a bit of fiddling to get it to do exactly what you want, but that is true of any controller.....I wouldn't feel comfortable connecting an Arduino to my Medium Format Router....The gantry weighs in @ ~150lbs and the drive system will throw it around at 1500ipm if the controller "lets loose".....I am not saying an Arduino Controller can't be functionally equivalent to a K-Flop....but I have a LOT of experience AND confidence in the K-Flop....a 3kW spindle spun up to 24krpm even moving at a modest 600ipm can do more damage in a second than I care to fix, so the $320 price of the K-Flop is a small price to me for the confidence I get with it, LOL. For a first-build NEMA-17 based machine I think you would be very happy "borrowing" from the 3D printer revolution....

Good Luck!

Fish
 
Last edited:

Minder

Apr 24, 2015
3,478
Joined
Apr 24, 2015
Messages
3,478
[QUOTE="BGB, post: 1653567, member: 37978"
between BLDC motors and bipolar steppers, if used open-loop, the main difference seems to be:
BLDC motors go fast, but don't have as much torque;
steppers have a much lower top speed, but a fair bit of torque.

*: for larger motors, things change around some, so it is mostly series vs shunt wound motors, vs induction motors, with a few AC synchronous motors (a 3-phase AC synchronous motor basically being a higher-voltage BLDC motor, albeit typically with a DC field coil in place of the magnets).

.[/QUOTE]

BLDC have a higher RPM range and a much flatter torque curve, with maximum torque at zero rpm for both, with steppers the Torque drops off rapidly and steps have to be taken to attempt a flatter curve such as PWM - constant current.
I have never come across a series motor for anything resembling servo application, they operate essentially in a run away condition.
RPM limited by load.
Steppers are generally higher torque than BLDC or brushed motor but only for the equivalent frame size.
Both BLDC and DC motors require a PID loop to operate as a servo.
M.
 

Fish4Fun

So long, and Thanks for all the Fish!
Aug 27, 2013
481
Joined
Aug 27, 2013
Messages
481
Hey Minder!

BLDC have a higher RPM range and a much flatter torque curve, with maximum torque at zero rpm for both, with steppers the Torque drops off rapidly and steps have to be taken to attempt a flatter curve such as PWM - constant current.

I have to say that my experience with BLDC motors (not servos) contradicts this: with maximum torque at zero rpm for both ....in my experience with the hobby type BLDC motors there is virtually no torque in the lower RPM range, though I think in theory you may be correct....this type of BLDC motor is designed for low voltage and high current.....it is entirely possible these motors could have "constant torque" even at low RPM if the current were high enough, but a current high enough to provide constant torque would melt the windings....(50A to 200A....welding currents).....CNC spindles are my other experience with BLDC motors, and here too there is virtually no torque in the lower RPM range using a "standard" variable frequency drive...typical RPM range in the Spindles I have is directly linked to the output frequency of the VFD with the low end of "useful torque" being in the 30hz to 50hz range.....I should note that both types of motors (BLDC CNC spindles and Hobby-type BLDC motors) are optimized for relatively high rpm (6,000 to 30,000 RPM) .... it is fairly intuitive to me that optimization for this speed range would preclude "constant torque" at low RPM....at least at practical currents...

HOWEVER, your statement that maximum torque is @ zero rpm I believe might be true even with the motors mentioned above.....once "locked" in a particular position it is virtually impossible to "re-start" them w/o giving them an interval of zero input....

I must say, while I am not the brightest bulb in the chandelier, I did have a little "flash" when reading your reply....it is now obvious to me that motors designed for use in servos likely have many more poles than the BLDC CNC spindles//hobby-type motors I have experience with thus decreasing the RPM at any given input frequency and extending the "useful torque" fairly linearly down to zero rpm without excessive current....it would also explain why my high rpm router spindles are a fraction of the size/mass of similar power spindles designed for milling machines // lathes where the rpm range is ~1/10th that of router spindles....

In short, this would seem to affirm my suggestion that if one wanted to use a hobby-type BLDC motor for a DIY CNC servo that gear reduction would be requisite to get reasonable positional accuracy......In my experience with steppers, control of the drive motor needs to be accurate to ~ 10% of the machine's target absolute accuracy....for instance, if the design calls for the machine to have an absolute accuracy of +/-0.001in then the drive motor has to be able to be controlled in rotational increments that correspond to 0.0001in.....If using a timing belt & timing gear with a pitch of 0.2in per tooth and there are 15 teeth on the gear then the axis will move 3 inches per gear revolution....to get reliable absolute +/-0.001 inch accuracy (this, of course, is assuming no error is introduced by non-linearity of the belt or gear) then the drive motor needs to be controlled within +/- 1/30,000 of a revolution....in a standard 1.8 degree stepper with 10 uSteps per Full step this would imply a "native resolution" of 1/2,000 so an additional gear reduction of 15:1 would be requisite.....If we had a ball screw with a 0.200in pitch and the same native stepper resolution of 2000 steps per revolution then we would need no gearing....with a 0.625in pitch we would need ~3.125:1 gearing.....etc....My casual observation of DIY stepper builds is that many people design the absolute accuracy to correspond directly to the uStep resolution...this is can be great for high feed rates and lightening fast rapids but in my experience the absolute accuracy suffers considerably.......I have not attempted "closing the loop" yet, but I suspect that this would allow reducing the "stepper overhead" to ~50% of absolute accuracy and suggest the optimum encoder resolution should be 25% or less of the absolute accuracy....so, for the belt example above, the stepper would need +/- 1/6000 of a revolution implying a 3:1 gear reduction and the encoder would need at least 2500 pulses per inch or 4000 pulses per motor revolution (obviously a 1000 line encoder in quadrature mode, not a 4000 line encoder)....For any given motor RPM the inherent absolute accuracy AND linear feed rate is increased...in the case of a stepper, the torque is also increased for any given feed rate by the reduction in RPM....

.....Sorry, a lot of this is me "thinking out loud"...and as much seeking affirmation as asserting statements of fact....like I said, "a little flash" came to my generally dimly lit brain, and I THINK I am seeing some concepts I had been wrestling with in a new light.....I am still "tweaking" a Medium Format Router (aka MFR) build, and have been planning to "close the loop" once I am confident in the basic build.....I had a general notion that closing the loop would improve absolute accuracy (to the limits of the belts/gears, rails and frame), but I hadn't worked out exactly what the relationship between the step resolution and the encoder resolution should be.....but I think I now have a better grasp on it.....I am trying very hard to achieve +/-0.001in absolute accuracy, currently I am ~+/-0.005in mostly due to inconsistent backlash....some of this backlash is, no doubt, to be attributed to the 5mm pitch belt/gears....some to the backlash in the 15:1 planetary gear drive and some to the inherent inaccuracy of uStepping....but I am now more confident than ever that "closing the loop" will get me much close to my +/- 0.001in goal....I have some 600 line quadrature encoders...but to meet the a fore mentioned resolution requirements (4000 pulses per inch) I would need 1 revolution per 0.600in....roughly a 3/16in pitch diameter (0.1875/2400 = 4074 pulses/inch) or I would need to "gear up" the encoder to achieve 4000+ ppi with a more reasonable pitch diameter, in either case I run the risk of introducing encoder inaccuracies/inconsistencies....looks like the answer is a higher resolution encoder if I truly need 1 pulse per 0.00025in to achieve 0.001in absolute accuracy.....if I loosened the 600 line encoder specifications (the ones I have on hand) to 1 pulse per ~0.00053" then a common 16T GT2 2mm Pitch Timing Gear/Belt would yield 1.25984in/rev --> 1.25984/2400 = 1905 pulses per inch or 0.000529"/Pulse.....which in theory is considerably better than my current absolute accuracy.....guess I need to give it a try and see how the theory translates into measured results....

I would love your experience/thoughts on this.....my MFR build has been an on going project and learning experience in many areas.....my Desk Top Router achieves very repeatable +/- 0.002in absolute accuracy with lead-screws and simple open loop steppers @ 24,000 uStep/Inch...all of the inaccuracy in it comes from the lead-screws/nuts and the vagaries of an MDF machine with round rails.....Attempting to achieve accuracy improvements while scaling a 9in x 11in x 2.5in work envelope up to 37in x 29in x 7in has been a collection of lessons in humility.....(The designs of the machines are obviously quite different....the MFR is built from aluminum extrusions...uses precision ground linear railing...planetary gear reduced timing belt drives for the X-Y, a ground ball screw for the Z....moving Gantry Vs moving table...etc, etc...By "scaling" I simply mean designing/building a bigger CNC router...)

Thank You!

BGB.....

Sorry for the sideline/hijack....while my question(s) to Minder are related to your OP, they are certainly not a direct response to your OP, if it looks like this is going to go much further I will open a new thread....and ask a moderator/admin to remove the offending post(s) if you like...

Fish
 
Top