Wanted: hacker

hacker_debugliveCurious to learn what’s inside in the top-tier servo drives? Want to put your ideas in motion? Are you a natural born microcontroller hacker suited for the job?

In other words, we’re now hiring the best of the best hacker available to take a major role in servo drive firmware development. If your socks started spinning already, don’t miss this once-in-a-lifetime chance and drop Granite Devices your CV now!

Perfecting BLDC performance

Something cool is under development relating to BLDC (brushless DC) motors. BLDC is similar technology to sinusoidal AC motors but with trapezoidal voltage waveform. This makes BLDC little bit smaller and usually cheaper than AC motor.

BLDC torque simulation with FEMM

While I’m typing this, in running a FEM simulation of outrunner BLDC motor to optimize the electrical commutation phase angle for such motor. Iterative simulation takes some 20 hours to compute.

Finding optimum commutation angle makes it possible to implement MTPA (maximum torque per amp) drive algorithm for such engines. Such efficiency boost might be very beneficial especially in battery powered applications such as multicopters, but of course it also will benefit  squeezing more out of the existing motors. More about that later!

Motor torque cogging & uniformity compensation

Development today focused on improving torque smoothness of motors. Some motors, especially cheaper ones and stepping motors, suffer from cogging torque:

Cogging torque of electrical motors is the torque due to the interaction between the permanent magnets of the rotor and the stator slots of a Permanent Magnet (PM) machine. It is also known as detent or ‘no-current’ torque. This torque is position dependent and its periodicity per revolution depends on the number of magnetic poles and the number of teeth on the stator.”

This can be compensated by modulating motor current to counter the motor cogging. The firmware under development adds options to adjust compensation current by few new parameters.

Perfecting motor with cogging and uniformity compensations

Perfecting motor with cogging and uniformity compensations

In addition to cogging torque, the new feature allows compensating also nonuniformity of torque production. I.e. if motor torque setpoint is kept constant and motor is being turned, it may produce variable amount of torque due to same reasons than cogging. Nonuniformity compensation will modulate the torque setpoint by a selected sine or cosine function and amplitude.

The new feature beta will become available for IONI Pro in the soon upcoming FW release. We hope that this will bring cost of any motor control system down as cheaper motor could achieve nearly same smoothness as expensive ones.

Granity for Linux

Granity configuration software has been successfully compiled on LinuxCNC distribution and works without any issues (except the default screen resolution being quite low :). The plan is to include pre-compiled Granity for Linux in the future releases.

Granity running on LinuxCNC distribution

Granity running on LinuxCNC 2.6 distribution

In other news, Granity 1.8 is coming soon with Argon support. Same time the Argon firmware version 2.0 will be introduced.

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!

80/20 law

The Pareto’s principle has been shown true once again. It says that 80% of work comes from 20% of remaining things. The last two weeks have been so busy finishing & perfecting IONI that I had barely time to eat properly or check emails. Luckily 2 weeks ago we were not at 80% but 99% so that 2 weeks was enough to fill the missing 1%. This reminded me why I don’t like to promise any fixed dates but rather say “when it’s ready”.

Today finally the firmware and testing rig has been finalized and frozen. First set of devices are now tested and the shippings begin on Friday. Next up: the user guide :)

Granity gets better

While we develop IONI, we are also developing Granity setup software. Yesterday’s little innovation was to add visual aids for displaying the reason why drive is not in active state.

Granity status page now visualizes the reason why drive is idling

No more guesswork! Status page now tells the reason why drive is idling.

Mach4 support on the works

We have started development of Mach4 motion control plugin that supports SimpleMotion V2 bus. This means that ARGON and IONI drives can be controlled by Mach4 without any extra hardware. It just needs the SMV2 USB adapter and drives. The plan is also to allow control of few I/O signals through that plugin.

The plugin will be fully open source and available on GitHub if Artsoft sample plugin code license allows that (will be determined later).

SimpleMoiton V2 protocol looks like this on a low level

SimpleMoiton V2 protocol looks like this on a low level

Granite Devices will be on Christmas holiday for the next week. I wish merry Christmas to everyone following this blog! :)