The question I have pertains to microstepping. I started playing with stepper motors after my son got into robotics at school. For a great learning experience my son and I decided that we would design and build a small CNC completely from scratch. Electronics, hardware everything. This site fell right in place with us for a lot of the mechanical ideas and the DIY agenda in progress. For us electronics came first. To begin we designed and put together a microstep stepper controller using a PIC micro, dual H-bridge drivers with chopper current feedback control. Step/Dir inputs so it can be used with TurboCNC. We did not use any of the availble integrated circuits that most hobbiest drivers use, such as the LMD18245 or the L297/L298 combo. Our H-bridge circuitry is scaleable to whatever our current and voltage requirements are and we learn from building it. Right now we are using IRF2804 NMOS FETS in the bridge as I have lots of them and they are very robust. They have excellent surge capability as they are meant for automotive applications and low RDS on. They can handle 168 A @ 40volts. Kind of overkill when all I need is 2 A at 30 volts but oh well.
Anyways now the problem. The only stepper we have obtained so far is an old? Minebea 28BB-H129-51, 4.1 volt 2 ohm 7.5 degree per step stepper. I say old because I cannot find any information on it at all. Its microstepping performance is rather strange. Using a 32 step pure sine wave phase drive waveform the microsteps are not equidistant at all. We find that the microsteps move dramatically at the begginning and then nothing towards the end. ie step 1 moves almost 20%, step 31 almost nothing. To determine if our microstepping circuitry and firmware was working properly we devised a test using a dual variable voltage current limited power supply and a laser pointer. One power supply drove winding A and the other winding B The laser pointer was glued perpindicular to the shaft of the motor. Since we are trying to see extremely small changes in rotation the laser pointer was used to shine on a wall 15m away. Any rotation of the motor would easily be seen as a movement of the point on the wall. At 15m we would see a 0.5m movement of the light as the motor was moved from step 0 to step 31. We applied voltages to the windings in a pure sinewave fashion and found that the motor moved very inconsistantly. With a sinewave drive waveform Step 0 will have winding A full on and winding B off. Step 1 will have winding A at 99% and winding B at 5% and so on. We found that with even the smallest of voltages in winding B the motor would jump from no rotation to 20% rotation. It seems that we are breaking some kind of holding flux. As the step number was incremented we found that the motor was almost completely rotated when step 14 was reached. This means winding A is at 77% and winding B is at 63%. Incrementing the step from 15 to 31 meant no further movement in the motor. At Step 32 Winding A is off and winding B is full on. At Step 33 when winding B drops to 99% and winding A starts to rise again to 4% the motor would again make its big jump in movement.
There are other methods to drive the windings in something other than a pure sinewave. To keep the holding torque higher the current in winding A is held full on from steps 0 to 15 while the current in winding B is incremented in a sinewave format. From step 16 to 31 the current in winding B is held full on while the current in winding A is reduced in a sinewave format. Using this modified drive waveform the motor responded exactly the same.
So my questions are
Are all steppers really meant to be microsteppable?
Has anyone really checked to see if their microstepping controller is really giving equidistant microsteps? Do they really care?
Can we expect all steppers to behave like this even though the therory says they should not?
I notice that some drive controllers apply harmonics to the drive waveform or have the ability to change the phase voltage relationship between winding A and winding B to possibly take care of some the problems we are seeing. Is this true?
I know this may be a deep discussion but it would nice if anyone had any information with respect to our situation.
In the meantime I guess I have to find another stepper motor to test with.
We want to get involved with the opensource project and provide the details of the stepper controller if anyone is interested but first we want to prove that it works well.
BTW the controller will also beable to control a Servo motor as the circuitry to drive a servo motor is the same as a stepper motor with a quadrature position feedback input. We have already used our controller to control the speed of a DC motor with an analog speed ouput. Stolen from a very old harddisk, anyone remember an RK05?
Cheers
Greg