Modified phase table in stepper.cpp to enable stepping a bipolar motor using a twin H-bridge driver.

Fork of stepper by Kenji Arai

Corrected single-stepping, now walking up or down just one phase table. Compile-time options for driving bipolar motor in any of single-phase, two-phase, or half-stepping. Coils remain engaged at end of specifed movement command - de-energize coils by issuing a motor.move(0) while already stopped.

Revision:
5:f2bbcd06019e
Parent:
4:5b596b405573
Child:
6:ee6c96064559
diff -r 5b596b405573 -r f2bbcd06019e stepper.cpp
--- a/stepper.cpp	Sun Dec 21 11:11:56 2014 +0000
+++ b/stepper.cpp	Mon Dec 22 21:15:55 2014 +0000
@@ -47,6 +47,7 @@
  * Firing sequence for uni-polar (5+ wires) stepper (4x open-collector drivers required). 
  */
 #ifdef UNIPOLAR_STEPPER_2PH
+//motor wiring                   A+ B+ A- B-
 const uint8_t pase_cw[4][4]  = {{1, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 1}, {1, 0, 0, 1}};
 #endif
 
@@ -61,9 +62,11 @@
     if (steps < 0){
         inf.direction = D_CCW;
         steps = -steps;
-    } else {
-        inf.direction = D_CW;
-    }   
+    }
+    // test for +ve, don't flip direction for stop command steps==0
+    if (steps > 0){
+       inf.direction = D_CW;
+    }
     inf.total_step = steps;
     setup_mtr_drv_dt(&inf, &cntl);
 }
@@ -259,7 +262,7 @@
                 break;
             }
         } else {    // 1st entry
-            cntl.motor_step+=inf.direction;
+//needed??? cntl.motor_step+=inf.direction;
             cntl.pls_width = pls_width[cntl.change_cnt];
             cntl.ongoing = 1;
         }