MA780 intermittently returning invalid angle

We are using MA780 in one of our products, along with DC servo for position control. Mode of operation - 8bits for turns, 8 bits for angle. Position read interval - 2ms. Magnet is attached to the shaft.
It was found that MA780 sometimes returns incorrect angle portion of data, while turns are always correct. The outlier always has either 0x00 (when moving CW) or 0xFF (if moving CVW) value. And it is always only 1 bad sample. Sample(s) before and after it are correct.
The below graph shows encoder reading, while motor shaft is moving in one direction, without any control (open loop) or external forces:


Outlier is highlighted with green circle, at 60ms from motion start.
Here is the SPI bus trace events around that issue:

Good sample 0x4459, then outlier 0x4400, then again good sample 0x45A6.
And the next 3 graphs show bus waveform for those 3 samples:

The issue is intermittent, and happens after acquiring 2000-5000 samples.
For control algorithm, this step looks like an external force pushing shaft in opposite direction, ending up in applying an opposite current and unnecessary oscillations (wasting of power and extra position settle time).

Hello Kkoziy,

We’re having a look at this issue and we will get back to you once we find its root cause.

In the meantime, can you please provide the following info?

  • SPI frequency
  • Rotation speed
  • Does the sensor alternate between active and idle mode? If yes, what is the idle time?

Best Regards,

Carmine

1 Like
  1. SPI frequency: 4 MHz (we tried 8 MHz, and were still getting the above issue).
  2. Max rotation speed is 13kRPM.
    Brushed DC motor, with encoder magnet located on motor’s shaft. No-load motor speed is 27kRPM, thus encoder filter was set to MPS_BW_1240_HZ. However, under load motor never runs above 13kRPM. We observed the above problem under various speeds equal or below 13kRPM.
  3. Alternate between active/idle (ASC mode) is NOT used.
    Sensor connection: ASC is grounded, EN is pull down (100kOhm) and is controlled by the MCU.
    Initialization: ASCR is 1, other 0x11 reg bits are 0.
    At the beginning of motion control phase, EN pin is set to High, and we are waiting for DV to indicate angle data in buffer being populated. After that, turns+angle data is read at 2ms sampling rate. Because EN stays High during the entire motion control phase, encoder is in Active mode. At the end of motion control phase, EN is set to Low (ASRC is 1, ASC reg is 0) and encoder is in Idle state.

Thanks,
Kostic K.