SinCos encoder support in IONI Pro

The new IONI firmware version has been released! It adds long awaited SinCos encoder support to the drive.

See the video below as comparison of SinCos and incremental encoder. The main advantages of SinCos are: silent (no dither), more stiffness and more precision. The only drawbacks are the availability and price of such encoders.

The other added features include application specific functionality for torque mode. This includes rotation limit (added safety) and torque setpoint scaling by analog input. These may be useful especially for OpenSimWheel project builders.

SinCos encoder support

Last days we have been working on supporting SinCos encoders. SinCos encoder is exactly like standard incremental encoder, except it has sinusoidal analog outputs instead of digital quadrature waveforms.

SinCos encoder signals vs digital incremental encoder signals

SinCos encoder signals vs digital incremental encoder signals

The beauty of this is that the analog waveform can provide infinite position resolution when the phase angle of signals are calculated. The latest prototype firmware of IONI Pro now supports SinCos interpolation which increases the resolution that we would get from digital counting by the factor of 16, 64 or 256 times. I.e. a 1000 pulse (or cycle) per revolution analog encoder with 256X interpolation yields resolution equal to 256 000 quadrature pulses per revolution (PPR) or 1 024 000 counts/per revolution (actual position resolution of motor).

SinCos encoder interpolation: the first graph shows position counter in digital mode, the middle shows interpolated angle from sine and cosine signals and the last image shows the combination of these two.

SinCos encoder interpolation: the first graph shows position counter in digital mode, the middle shows interpolated angle from sine and cosine signals and the last image shows the combination of these two to form the high resolution position count.

Very high resolution helps especially to make motion smoother, quieter and stiffer. The initial tests show amazing smooth performance of the motor in velocity and position modes. There was no dithering or groaning noise from the motor and at same time the motor position holding stiffness was jaw dropping. It felt like the motor was physically jammed as the eye, hand or ear can’t notice any movement.

IONI now measures motor resistance and inductance

IONI drive firmware release 1.1.0 brings a new useful feature that automatically measures motor characteristic resistance and inductance and completely takes the guesswork out of torque controller tuning.

Now it takes single click to auto-set resistance and inductance

It takes single click to auto-set resistance and inductance

The equation that defines inductor

The definition of inductance

Using automatic measure is the new recommended approach to set MR and ML parameters accurately even when motor data sheet would provide these values. This is because many data sheets unfortunately provide inaccurate values. Some manufacturers have apparently characterized motor inductance at high frequency range (hundreds of kHz) which typically gives a value more than 50% off from the real inductance.

Having accurate values also opens doors for sophisticated stepping motor control features such as advanced vibration damping which rely on accurate motor characteristics. This is a subject for another update!

Maximizing the bandwidth of Torque Control

The latest achievement in IONI servo drive development was the maximization of torque control bandwidth. IONI actuates motor by a 20 kHz pulse width modulated (PWM) power output which essentially means switching the supply voltage between 0V and supply voltage (HV+) very fast causing the desired current to flow in the motor coils. Drive samples coil currents once at every PWM cycle and also re-calculates the PWM duty cycles on every cycle.

Last couple of we have spent perfecting the torque controller speed without sacrificing the dynamic range or smoothness. Bandwidth of controller is dictated by two factors: update rate and delay. Update rate was already at maximum (every cycle) but previously the delay was one full PWM cycle (50 µs). By optimizing code enough, drive is able to complete torque control calculations within half PWM cycle (<25 µs) which shortens the delay by 25 µs.

High bandwidth torque control timing diagram. Torque controller has the highest bandwidth when update rate is at maximum and delay at minimum.

High bandwidth torque control timing diagram demonstrating half PWM cycle delay and full PWM frequency update rate. Torque controller has the highest bandwidth when the update rate is at the maximum and delay at the minimum.

Ok, 25 µs doesn’t sound much. But it actually is more notable than it first seems. This change yields 30-50% boost in torque control bandwidth which can be seen sharper change of torque without causing any overshoot. This allows us to set position and velocity control gains higher without losing stability. In the end, the result is more stable and more stiff servo motor.

Torque controller step response with one PWM cycle torque control delay (top) and half PWM cycle delay ( bot). Notice the overshoot caused by the additional delay.

Torque controller step response with one PWM cycle torque control delay (top) and half PWM cycle delay (bot) without changing torque controller gains. Notice the overshoot caused by the additional delay. The overshoot can be cured by lowering torque control gains, but that also reduces bandwidth.

Never seen servo motor so stiff :)

8x it is – and effective output voltage boosted too

Thanks for votes & opinions! I agree that we should go for 8x connector and now it’s done.


In the other news, drive PWM modulation depth was adjusted to match hardware capabilities. It’s bumped from 88% (same as VSD-E and Argon) to a new record level of 97%. Modulation depth means the maximum duty cycle swing that power stage can produce. This means another 10% increase to effective output voltage vs drive supply voltage. With the “PWM magic trick” the total change now is +27.8%. So the 55 V supply now equivalent to 70 V in the original firmware scale.

IONI with PCI-Express 8x connector. We call it GD-Express :)

IONI with PCI-Express 8x connector. We call it GD-Express :)

I wish happy new year 2015 to all our fellow followers!

3-phase magic trick

Latest innovation made to IONI firmware allows generating 16% higher output voltage for 3 phase AC motors which in practice means 16% greater maximum possible speed of motor. This is achieved by by altering the duty cycle generation of power stage so that it’s being utilized better for this kind of waveforms.

By looking the typical 3-phase motor voltage waveforms below, one can notice the peaks of sine waves occur one-at-a-time which means there is some headroom in the opposing polarity waves.

Standard 3 phase sinusoidal waveforms. Range from 1 to -1 means it uses full output voltage span available in drive (i.e. 0V to 50V).

Standard 3 phase sinusoidal waveforms. Range from 1 to -1 means it uses full output voltage span available in drive (i.e. 0V to 55V)

We can utilize these empty gaps by shifting all three waves up and down so that empty gaps become filled.

Same signals with summed third harmonic (cyan) to all phase values. This reduces peak amplitude of all signals by 16% without affecting to any phase-to-phase waveform shape or amplitude.

Same signals with summed third harmonic (cyan) to all phase values. This reduces peak amplitude of all signals by 16% without affecting to any phase-to-phase waveform shape or amplitude. In other words, motor sees no difference between this and the original.

After this step, we can multiply them by 1.16 without exceeding the maximum range of +/-1. This method has been tested and it works flawlessly. Same smoothness but just a bit higher speed range is available from the drive. The trick effectively does same as increasing drive supply voltage from 55 V to 64 V without actually increasing it.

This, and as many as possible, new features of IONI will be ported back to ARGON as soon as the IONI is out.

Adaptive current limit

We have been experimenting with adaptive current limit on IONI prototypes. This means there isn’t fixed specifications saying how much current drive outputs continuously and peak but there is just one specification: maximum. Drive will allow maximum output if it runs cool enough and will start throttling down current if temperature rises beyond certain level. This means, if you cool it well, you will get lots of power.

So far it seems to be working very nicely! See the video below.

As we were now able to push prototypes to their limits without worrying to break the only units, it turned out that we have been underestimating them! Without cooling it seems to output approx 9-10 Amps and with cooling 15 Amps (actually it could go higher but the lab power supply ran out of juice). What do you think about this?

VSD-E got a new firmware

During the past year we have shipped VSD-E drives with same higher current limits than the former VSD-XE model as we were confident that it would not cause any reliability issues. And it has not, as expected, no issues have been reported!

Comparison of the VSD-E and VSD-XE output current limits

Comparison of the VSD-E and VSD-XE output current limits. With the new firmware, VSD-E gets the same ratings as VSD-XE.

Today we made a new firmware version V210 publicly available for VSD-E-160 drive that increases VSD-E’s output current limits to match VSD-XE ratings. We hope this helps people driving large motors with VSD-E.

Fanuc serial pulse coder support for Argon servo drive

As Fanuc servo motors are quite common target for drive retrofitting, it was tempting idea to make native support for their serial communication based encoder on Argon drive.

The protocol seems quite straightforward based on the details people have found out. So without much wasting time, I purchased a Fanuc motor and hooked it on the drive. Argon encoder port has total of three programmable RS422 inputs and two RS485 inputs/outputs which would make it possible to communicate with almost any kind of serial encoder.

Fanuc servo motor with serial pulse code connected to Argon drive

Fanuc “red cap” servo motor with serial pulse code connected to Argon drive

Fanuc encoder outputs data in form of asynchronous serial communication that is transmitted and received by UART. During testing, it occurred to me that encoder outputs very unusual 76 bit word with single start and stop bit. Standard UART support 5 to 8 bit words so the internal UART of drive’s microcontroller will not help here. Implementing a custom 76 bit 1024 kbps serial receiver with bare software would be so tricky that plan of supporting Fanuc protocol is unfortunately looking quite improbable at the moment.

The working solutions for using a Fanuc motor are:

Most of serial encoder protocols (SSI, BiSS, etc) use SPI style transmission which is way easier to implement on software. Plan of supporting those is in the future plans, we just need some hardware and time to begin with.