RoadTest: MPS MA732 MagAlpha Angle Sensor Kit with Servo Motor - Industrial Sensing
Author: DaveTheWalker
Creation date:
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: AS5600
What were the biggest problems encountered?: The Arduino software packages contained faults in two of the files, which needed correcting, and which required understanding of the way that Arduino library files normally work. Also, the way the sensor was attached to the motor precluded me from actually using the motor in a real application.
Detailed Review:
I was excited to road-test this kit, as the Angle Sensor could potentially be very helpful in some projects I have planned. When the kit arrived, it looked and felt substantial, and contained lots of interesting-looking gadgets.
The documentation was a little sparse, so it took a while to figure out which bits I needed, and which would be surplus to my requirements for this test. I decided to start with the software installation, as recommended on the Road-Test web-page.
The MACOM MagAlpha software was installed first, without issue.
The EVKT-MACOM board had to be connected to the MagAlpha sensor board, using the included cables, before it could be connected to the PC software.
The software suggested to me that I needed to upgrade the firmware on the development board, but the instructions were straightforward and I was soon able to flash the software required.
Once completed, the MACOM software immediately showed the orientation of the motor shaft, relative to the sensor. By moving the shaft with my fingers (which was a little fiddly, thanks to the 3D-printed enclosure holding the sensor board in place), I could see the reported angle change, and the graph showed the historical values on the right.
Next step was to download the Arduino code examples and libraries. This was contained within a file called MSM.zip, but did not compile immediately. The errors led me to investigate the source files, and I discovered that in MSM.h, there is a call to "#include "Base.h"", which was not available. It turned out that this file was not required after all, so I commented out that line but still saw compiler errors. The second error was that there was a missing "#" in MSM.cpp, which was easily solved. This extra messing around was a little disappointing, but did not cause serious issues once I figured out the root cause. Testers less experienced in Arduino code may struggle to get started. I, myself, was helped out by another tester in pinning down the fixes.
With the Arduino code running, it was time to connect the motor (via RS485) and the sensor board (via SPI) to the included Arduino Mega 2560. This involved some consultation of datasheets and soldering of connectors, and also required the use of a Bench Power Supply to power the motor. The documentation around these steps could have been much clearer, but I had it working fairly soon.
Everything was now in place to begin the testing proper.
I started with a free-running rotation at 300rpm, and logged the sensor values via the Serial Terminal of the Arduino IDE. Plotting the values on a graph gave me this:
The shape was promising, but I'm not entirely sure what causes the slight wobbles in the slope of the values. It could be down to the motor itself rotating unevenly, or a slight mismatch in the mounting angles of the magnet and the sensor board, or is perhaps an aliasing issue caused by under-sampling. Either way, the output appears to be monotonic and repeatable, so any errors in a particular system could be zeroed out with a lookup table, for example.
My next test involved "flip-flopping", or oscillating the motor back and forth between two points, one degree apart, and recording the sensor values:
You can see by the scale on the left hand side that, although the values are not 100% repeatable, the absolute error is quite small. In all honesty, I suspect that the majority of the error in this test was down to a lack of repeatability in the Servo motor, which itself relies on a separate (and different) built-in angle sensor, but it was interesting to me to see the scale of the "wobble".
The next test was much faster - at 750rpm, and covered a much wider angle (405 degrees - more than one complete rotation) before reversing. In fact, this test was designed to replicate a use-case I have for a personal project. The repeatability looks excellent on this scale, and the speed of sensor data is probably sufficient to control the motor based on the recorded values.
Finally, I ran this as a soak-test over 40,000 cycles, to see if there was any noticeable drift, and to gather some statistics on variation. The results were as follows:
Mean of Angle A | 276.247 degrees |
Range of Angle A | 0.33 degrees |
Variance of Angle A | 0.00506 |
Drift of Angle A | -0.33 degrees |
Mean of Angle B | 320.780 degrees |
Range of Angle B | 0.237 degrees |
Variance of Angle B | 0.00176 |
Drift of Angle B | -0.237 degrees |
These figures are well within acceptable limits for my application. In fact, as the rotations will be converted into linear motion in my project, it is possible to calculate that a drift of 0.33 degrees is equivalent to a linear error of 0.074mm, which is as close to zero as makes no difference to me, across a travel of around 90mm.
Overall, I really enjoyed using the kit, and it has given me lots of ideas on how to use it in the future. The major disadvantage of this particular evaluation kit is that the sensor is mounted to the motor in a way that prevents me from actually connecting the motor to anything! The 3D-printed "cage" interferes with the shaft such that nothing else can be fixed to it, and i can't test it out in-situ. However, I do think that my tests prove that this sensor is very capable, and I notice that other versions exist that mount to the side of the shaft, which might be more suitable for me.
This was my first E14 road-test, but I hope to do more in the future.
If anybody has any specific questions, I'd be happy to answer them in the comments.