bldc output to Aerotech drives
I'm getting some plans together to upgrade my mill's servos (and spindle). I've acquired several Aerotech ba20-320 drives (and one ba100 with the same inputs) for this purpose. They're standard transconductance type servo amps, they seem pretty bulletproof to control with an analog signal, closing the position loop with encoder feedback to Linuxcnc.
Their manual is here: www.aerotechmotioncontrol.com/ftp/pwpsof...fiers/BA10_20_30.pdf
They have an intriguing third mode (in addition to torque and velocity) called dual phase. This mode permits commutation by the controller attached to the amps. Setting a couple of jumpers lets you input current commands for two of the phases, with the third phase generated by the drive (see the inputs icmda and icmdb). These are +/-10vdc analog inputs. Quoting from the manual:
3.3.3. Dual-phase Command Configuration
This mode is used with brushless motors only. The differential input, pre-amplifier, and self-commutation circuits are bypassed (Figure 3-4). The dual-phase inputs are sinusoidal and 20° out of phase from each other. The third phase is generated by the drive. The advantage to this configuration is that it provides the smoothest possible motion.
My question is, will these work with the bldc module? It *looks* like they will from reading the docs, and I could set up the drive's phase a and phase b inputs with these two analog outputs connected to them:
bldc.N.A-value
bldc.N.B-value
Other than the increased complexity of configuration, the only other consideration from a design standpoint is that it looks to me like I'd need two analog outputs for each drive instead of one.
Is this assessment correct, and should this work?
Also, if I have four axes (including my spindle) running using bldc, can Linuxcnc handle the real time demands ok? I'd be running a Mesa 5i25 with 2x 7i77 boards on it attached to a Pentium PC with decent (under 25000) jitter numbers.
Lastly, if I do this, what is the most trouble free way to handle position feedback? The servos don't currently have encoders, but they do have hall devices (that may require some modification, they're 15 volt at the moment). Would this be easier to set up if I purchased absolute encoders for the servos, or should I just use the hall sensors? Can I use the same encoder input for position input to the PID loop and commutation?
Thanks for any comments/information on this. Funny how after I got my mill working with step/direction control I suddenly had the experience to know it wasn't what I really wanted
Erik
Please Log in or Create an account to join the conversation.
For encoders I would just use incremental encoders
(quadrature encoders) as they are fully supported.
For software commutation (and a torque mode control loop)
you want to make sure you can run the servo thread at say 4KHz
since the velocity portion of the loop is closed by LinuxCNC
(This rules out Intel Atom MBs)
You could start with one 7I77 and test both modes to see if the 2 phase mode is worth the trouble
Please Log in or Create an account to join the conversation.
Maybe I'll pick up encoders with commutation capability too, just in case the existing halls don't work out. Something like the AMT 303LD, or maybe surplus if I run across a good set.
Do you have an example of hardware suitable for running a 4khz servo thread decently? I have a few spare parts available, maybe I can experiment.
Erik
Please Log in or Create an account to join the conversation.
- Todd Zuercher
- Offline
- Platinum Member
- Posts: 5007
- Thank you received: 1441
Please Log in or Create an account to join the conversation.
Lastly, if I do this, what is the most trouble free way to handle position feedback? The servos don't currently have encoders, but they do have hall devices (that may require some modification, they're 15 volt at the moment).
You might be able to work with Hall-sensors alone, it is certainly worth a trial.
I have been considering adding interpolation to the hall-sensor part of the code, so that you can have sinusoidal commutation with hall-sensor feedback. I can see that working nicely with spindles, possibly less so with axes.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
If the drives can close the velocity loop and do the commutation internally, why not use it?
Well, that's the question. I've seen demonstrations of sinusoidal vs. trapezoidal commutation, and depending on the motors and mechanicals involved, it can indeed be worth it to smooth things out. As to whether it provides an advantage in this case, the only way to know is to try it.
I basically got the idea to try this from looking at my "new" servo drives and seeing the capability. All the (used) drives came configured for use with a commutating controller, by the way, so at least one person thought bypassing drive commutation was a good idea.
I don't necessarily think the "right way" to do this is in LinuxCNC, since it's not a hard real-time system, and as you mention there are limitations as to how fast the loop can execute... I'd think the ideal place to put the functionality of the bldc module would be in the fpga code on eg. the Mesa cards, or some other secondary processing system. If LinuxCNC can do it fairly well however, it opens up a lot of possibilities for the use of simpler servo drive hardware. One of the vendors of the lower cost servo and stepper drivers like CNCdrives or Gecko could produce three phase H bridge modules that, when coupled with a properly configured LinuxCNC, could run many of the brushless servos available in the secondary market these days. That would get a lot of hobbyist types away from brushed DC servos or large stepper motors, which would be a good thing, IMHO.
As a quick side note, I heard a "rumor" that Cncdrives is coming out with a sinusoidal brushless drive with step/direction input. Not the interface everyone likes, but definitely cool that they're giving people an inexpensive way to use brushless servos.
I'm going to do some testing with the hardware I have - mostly it's some pentium class motherboards, but I also have an AMD bulldozer based motherboard and chip. I'll see if there's a way to get a 4-5khz servo thread reliably out of any of it.
Erik
Please Log in or Create an account to join the conversation.
If LinuxCNC can do it fairly well however, it opens up a lot of possibilities for the use of simpler servo drive hardware. One of the vendors of the lower cost servo and stepper drivers like CNCdrives or Gecko could produce three phase H bridge modules that, when coupled with a properly configured LinuxCNC, could run many of the brushless servos
Like the Mesa 7i39 or 8i20 you mean?
Please Log in or Create an account to join the conversation.
the Atom MBs are the exception
Please Log in or Create an account to join the conversation.
If LinuxCNC can do it fairly well however, it opens up a lot of possibilities for the use of simpler servo drive hardware. One of the vendors of the lower cost servo and stepper drivers like CNCdrives or Gecko could produce three phase H bridge modules that, when coupled with a properly configured LinuxCNC, could run many of the brushless servos
Like the Mesa 7i39 or 8i20 you mean?
Exactly
Although I consider Mesa's stuff high end (but worth the price). CNCdrives currently sells their 80 volt 20 amp drive for less than the 7i39 alone in single quantities, and to run the 7i39 you need an FPGA card too.
I'm thinking someone could produce a basic H bridge module (with eg. 6 big MOSFETs) capable of interfacing with a high speed parallel port using bitwise output controlled by LinuxCNC and the bldc module, say for use with brushless motors under 20 amps peak and 75-90 volts. Of course, I'm doing some math off the top of my head here, so a parallel port interface may not be fast enough, even if LinuxCNC can do that 4khz update thread on whatever hardware the user has.
I think it would be very cool and a good thing for hobbyist types to have the option to use brushless servos without needing to locate and buy a set of drives matched to whatever servo they can find cheaply. It looks like the BLDC module is flexible enough to drive most of the brushless motors available, and with an H bridge module would provide the flat out cheapest way to get any random surplus brushless motor into operation.
I don't know about you, but when the folks I talk with do CNC projects, it's not a problem to find brushless servos that would work. It IS a problem to find 2 or 3 (depending on axes) drivers to match the brushless servos available for less than the price of brand new high end stepper motors, or at a comparable price to DC brushed servos and drives.
Thinking about it... with an appropriate H bridge setup, could bldc be used to control "outrunner" type DC brushless motors like the Turnigy types? They might make nice spindle motor replacements Examples here: www.hobbyking.com/hobbyking/store/__223_..._Motors-TURNIGY.html
Erik
Please Log in or Create an account to join the conversation.