Hi all
For my aircraft sim cockpit I have made a number of gauges using the X27-168 type stepper motors, and am using them in conjunction with EasyDriver boards and latterly A4988 driver boards. They are driven by Nanos or a Mega, depending on the application, and they for the most part work well. They also have the advantage that they are relatively cheap, and easily available.
I switched from the EasyDriver boards for a number of reasons, which are they they run very hot, they have a largish form factor with an awkward pin layout, and lastly, they are super sensitive to any connection issues. I have a number of burnt out units, as if any of the stepper motor connections are not 100% they blow instantly.
The A4988 boards are smaller and are easier to incorporate onto PCBs, and due to a heatsink they run pretty cool, plus (as I have inadvertently discovered) are pretty robust, even to the point of not blowing when I got the polarity of the supply voltage wrong one time.
So there is a mix of these boards on the gauges I made, but both setups feature two characteristics that I would like to address.
The first is the requirement to have a 12v supply, which means every gauge has to have extra wiring and when there are 30 of them it adds up. There are enough wires need for the rest of the rig, so to be able to eradicate them would be desirable. The steppers are virtually zero torque as they only have to move a tiny plastic pointer, so power requirements are really minimal. 12v is total overkill.
However the number one reason to change them is the poor movement characteristics the gauges display. The gauge pointers are jittery, the movement is not smooth, and it is accompanied by a surprisingly audible chattering sound, which is of course multiplied by the number of gauges.
A brief explanation or how the game interacts with the gauges might help understanding here. Essentially the output from the PC to the controller is an integer between 0 and 65335, and the sketch in the Arduino maps that output 0 to 100% of the maxsteps value defined in the sketch. The stepper motor itself has an internal limiting pin that means max rotation is 315 degrees.
Clearly, if maxsteps is set at 630, the theoretical step angle should be 0.5 degrees, which doesn't sound too bad. However in practice it seems grainy in action unless making large movements, and even then appears to wobble and twitch near the ends of the motion. When moving slowly even though half a degree is pretty small, you really notice the individual steps.
I tried microstepping, but tests showed that it doesn't really microstep as you would think. As an example, 1/16th microstepping should in theory make the stepper move one step for every approx 10.21 units of output by the game when maxsteps is set at 6400. In practice, it will step, then step approx 10 units later, then only step again once another approx 150 units later, then another 10 steps and so on repeating. So while in theory there should be about 16 steps for every 163 units, in practice you only get two, irregularly spaced, the same as 1/2 stepping.
This means that Microstepping does not actually deliver smoother motion, and actually subjectively the 1/4 and 1/8th microstepping actually seemed to make the movement worse. In both those cases you also got the two steps, then a gap, two steps repeating pattern, effectively meaning they are the same as 1/2 stepping.
As for 1/2 stepping, you do actually get the correct halfstepping but the movement actually seemed to worsen. Note that in each case I played with maxaccel and maxspeed to optimise the values.
For reference the A4988 output pins are connected to the X27-168 steppers like this
1B - stepper pin 2
1A - stepper pin 1
2A - stepper pin 4
2B - stepper pin 3
So for some reason the microstepping is not functioning as I expected. I did a whole battery of tests to try and get the best settings to minimise the issues, but ultimately microstepping was no help, at least with the combination of parts I used.
I have seen on another site where someone used AX1201728SG type stepper driver for these stepper motors, and anecdotally the site mentions that they are more suited to them due to the way they work. Not details were given why this would be. They also have two other potential advantages, namely that they do not require an external power source, as the Arduino output is more than enough for these virtually zero torque motors, plus each one can drive four steppers independently, so simplifying connections and wiring further.
I obtained some AX1201728SG chips from ebay a while back, along with some adapter boards to solder them to. They took a good while to arrive in the current situation, but finally this week they got here. Over the last few days I have mounted a couple of the chips and tried them, but have utterly failed to get them working for even the simplest of tests. It may be that I have overheated the chips soldering them to the adapters, but I used my finger to hold the chip down while soldering the pads and the chip never got hot enough for me to let go. It's also possible that they are duff chips.
So before I go to the hassle and expense of getting new ones to try, I want to just try and find out if and why these units would make for smoother movement of the X27 steppers, and also if someone can explain why the A4988 stepper microstepping does not seem to work the way I imagined it would
Any feedback welcome
Les