How high dynamic range torque control works?

Motor coil current sensing is one of the most critical component in a well behaving motor drive. This is true because current readout data is being used as feedback signal for closed loop torque controller as motor torque is directly proportional to coil currents. The importance of good torque control can be understood by knowing the fact that the the final step in drive’s signal path is always a torque controller. This means, any error in current sensing will eventually reflect to motor shaft, no matter which control mode is being used.

Today’s big achievement was the implementation of adaptive current sensing for high dynamic range torque control (HDRT) for ION drive. The captures below reveal the inner workings of this technology.

Illustration of measured current signals from ION. Each phase current is measured twice: with high sensitivity and low sensitivity. The high sensitivity signal has higher current precision but is limited to about +/-3.5A range. The low sensitivity signal has range of +/-23A but comes with less precision. The drive combines these two signals into one by making it both accurate and high dynamic range.

Illustration of measured current signals from ION. Each phase current is measured in two channels: with high sensitivity and low sensitivity. The high sensitivity signal has higher precision but is limited to about +/-3.5A range. The low sensitivity signal has range of +/-23A but comes with less precision. The drive combines these two signals into one by making it both precise and high dynamic range.

Zoomed image of the combined high dynamic range current sense signal. The switch between high and low sensitivity happens at 2.5A. As seen from the image, the curve above 2.5A is little bit more rough than below 2.5A.

Zoomed image of the combined current sense signal. The switch between high and low sensitivity happens at 2.5A. As seen from the image, the curve above 2.5A is bit more rough than below 2.5A.

One major motivator behind HDRT is to expand the range of motors that can be driven with single drive without exhibiting any of the typical drawbacks that come when a small motor is being driven with a large drive (motor hiss, jitter, torque ripple, position hunting). It also gives maximum precision for those who want the best performance in torque control mode.

Both ION and ARGON utilize low noise 12 bit analog-to-digital converters (ADC) and discrete Op-Amps for acquiring the sensor signals yielding the effective current sense precision of 14 to 15 bits. Most of the drives I’ve examined use a single sensing range and a 10 bit ADC. That is a significant enough difference to be seen, heard and felt by anyone :)

What’s taking so long (ION)?

Lately in Finland there has been plenty of rainy days good for programming and certainly lots of progress has been made! Regardless of that, there’s not much to demonstrate yet. This is beacause major code refractoring is being done when writing the firmware to ION drive. Lots of original C languace code is being ported to C++11.

Re-structuring of code is made such way that finally it should be much simpler to run multiple servo drive instances within one CPU. This means we could one day see a model that drives two or more motors on a single board. It’s not same as VSD-E’s DualDC mode with reduced capabilities – the new implementation should allow running multiple drive instances without any feature limitations.

ION development progress

ION development has been very active in the last 2 weeks. Last achievements are the implementation of ADC readouts and power stage control. Both were discovered to have some schematics & layout errors, but that’s why people make prototypes.

Ion development rig as it exists today

Ion development rig as it exists today. Tiny jump wires on ION board have appeared.

After fixing the issues by PCB trace cuts and jump wires, the drive seems fully healthy. ADC readout of phase currents seems to perform well with extremely low noise and power stage seems to exceed the initial capability calculations. At the moment power stage temperature is 63 degrees Celsius while it outputs 8 A continuous current to the stepper. Some air flow is present from the fan behind the motor.

Servo drive internal construction

For those who are interested to see how servo drive internals are constructed, see the new Wiki article: Signal path of servo motor drive. The diagrams presented in the article are useful when designing systems where servo drives are part of the system.

Signal path from setpoint source (user interface) to internal setpoint (fed to actual servo control)

Signal path from setpoint source (user interface) to internal setpoint (fed to actual servo control)

Drive block diagram that applies to all GD drives starting from VSD-E

Drive block diagram that applies to all GD drives starting from VSD-E

The diagrams are also useful when designing custom code to Argon open source I/O side firmware. The I/O side microcontroller acts as provider of User setpoint as well as position and velocity feedbacks referred in the images. Rest of the illustrated logic lies inside the GraniteCore.

Argon got resolver support!

After a while of silence, I’m pleased to announce the completion of Argon resolver feedback device support. This means the release of Argon resolver adapter device and a new Argon firmware version 1.3.0 that adds support for it.

Argon resolver adapter fits nicely inside a standard D-sub hood

Argon resolver adapter fits nicely inside a standard D-sub hood

Adapters are in stock and orderable through web shop at cost of 8.90 eur/pcs. I hope to hear some experiences once first users adopt the new devices!

Argon motor output current rating increased

As are now wiser than during Argon release and we have data about drive reliability, we are confident to start pushing current limits up little by little. To the date, not even one Argon has failed due to overload. We know many users who are pushing them at their power limits and couple of them have even special versions that allows significantly higher currents than the original 10 A continuous / 15 A peak ratings.

The Argon firmware version 1.2.1 has been released to increase current limits to 11 A continuous and 16 A peak. The latest version also addresses issues regarding mechanical brake timing and Hall sensor support. Find full list of changes and download link at Wiki.

Resolver support progress

A resolver (stator and rotor part) and an adapter card plugged to Argon

A resolver (stator and rotor part) and an adapter card plugged to Argon

Resolver feedback device will get an official support in the next Argon firmware release. Connecting a resolver to the drive requires few passive components between the feedback device port and actual resolver. These are easily fitted inside the D-sub connector hood and pre-made PCB’s for that will be available for low cost.

Quite hefty connectors on the motor under test

A bit oversized plugs on the motor under test?

The main concern using analog feedback device (in which category resolver belongs) is the sensitivity to electromagnetic interference. The following images illustrate the importance of proper cable shielding when using resolver. The upper image without cable shielding/screening shows significant amount of position sensor noise which would cause motor hissing and hunting while standing still. The lower image shows nearly ideal stability. In both cases motor is standing still in torque mode, so all we see here is not real movement but just the sensor noise.

Resolver position counter noise when motor or resolver cable shield is present but not connected to drive. Noise amplitude is about 10 counts out of 8192 per revolution.

Resolver position counter noise when motor or resolver cable shield is present but not connected to drive. Noise amplitude is over 10 counts out of 8192 per revolution.

The noise when motor or resolver cable shield is connected at drive end. Noise amplitude has reduced to about 1 to 2 counts out of 8192 per revolution.

The noise when motor or resolver cable shield is connected at drive end. Noise amplitude has reduced to about 1 to 2 counts out of 8192 per revolution.

Random fact of the day: I typically use the most horrible imaginable wiring when developing & testing drives. This serves two purposes: saves time and reveals potential problems early. If it works reliably with bad wiring, then it damn sure will work with a proper wiring.

Argon firmware source code released!

The source code of Argon servo drive’s STM32F205 ARM Cortex M3 microcontroller has been released under GPL v2 license! What this means to the user is that now he/she can alter servo drive behavior and functionality.

For example, one can implement a pre-programmed motion sequences that are triggered by simple digital input state change (such as push-button interface) or add support for a custom feedback device. It’s also possible to implement highly advanced adaptive control where motor gains are varied depending on external variables.

Block diagram of Argon drive. The I/O side firmware runs on the ARM CPU which connects to all I/O, feedback device and SimpleMotion ports and acts as host/controller for GraniteCore motor control core.

Block diagram of Argon drive. The I/O side firmware runs on the ARM CPU which connects to all I/O, feedback device and SimpleMotion ports and acts as host/controller for GraniteCore motor control core through isolated communication link.

The source code is downloadable from Granite Devices GitHub page. Users are free to share and commit their changes so eventually everyone could enjoy them out of the box.

Argon firmware 1.2.0 yields better servo stiffness

Argon firmware package 1.2.0 has been released today featuring a breakthrough in servo bandwidth. This has been achieved by significantly reducing the motor feedback sensor propagation delay from read-out to control algorithm. In practice, this allows tuning higher gain values to the motor and achieve higher servo stiffness. This is especially useful in low inertia systems where machine inertia has low stabilizing effect.

ARGON circuity

ARGON circuity

For full list of changes and download, visit the Wiki page.

Resolver/synchro feedback support in the next FW

I have been testing a resolver feedback couple of days now for Argon and it seems promising already! It’s working very well in the prototype code and it provides position resolution of 8192 counts per revolution.

As resolver is analog sensor, it’s sensitive to noise sources such as unshielded motor leads but this doesn’t seem to be huge problem. Motor will make some hissing sound but otherwise it “feels” just like encoder. However unlike incremental encoders, resolver is absolute position sensor (meaning that the instantly drive knows absolute motor angle, not just the amount turned from the beginning of measure). The benefit of this is elimination of the need of Hall sensors and/or phasing during drive power-on initialization.