Stepper motor control class library

Dependents:   StepperMotor_HelloWorld

Components pages

Components pages are available for bipolar and unipolar motor libraries

A bipolar stepper motor driving pulse generator

A unipolar stepper motor driving pulse generator

Revision:
1:dc6cf8f8bcb7
Parent:
0:4beb37ae37ce
Child:
2:f14b5e7276b0
--- a/StepperMotor.cpp	Thu Nov 25 11:11:51 2010 +0000
+++ b/StepperMotor.cpp	Fri Nov 26 15:32:25 2010 +0000
@@ -1,3 +1,15 @@
+/** Stepper Motor control library
+ *  
+ *  @class   StepperMotor
+ *  @author  Tedd OKANO
+ *  @version 0.51(27-Nov-2010)
+ *  
+ *  Copyright: 2010 Tedd OKANO, Tsukimidai Communications Syndicate - Crawl Design
+ *  The library that controls stepper motor via motor driver chip: TA7774
+ *  The TA7774 is a driver for a bipolar stepper motor. 
+ *  With this library, mbed will generate 2 phase pulses to operate the motor. 
+ */
+ 
 #include "mbed.h"
 #include "StepperMotor.h"
 
@@ -25,8 +37,8 @@
     t.attach( this, &StepperMotor::motor_maintain, 1.0 / (float)pps );
 }
 
-int StepperMotor::set_pps( int v ) {
-    int     p;
+float StepperMotor::set_pps( float v ) {
+    float   p;
 
     p   = pps;
     pps = v;
@@ -35,14 +47,14 @@
     return ( p );
 }
 
-void StepperMotor::set_max_pps( int v ) {
+void StepperMotor::set_max_pps( float v ) {
     max_pps     = v;
 }
 
 int StepperMotor::find_home_position( PositionDetectPorarity edge ) {
     RotMode     prev_rot;
     SyncMode    prev_sync;
-    int         prev_pps;
+    float       prev_pps;
     int         prev_det_pin;
     int         direction;
 
@@ -131,8 +143,9 @@
 }
 
 void StepperMotor::set_target_pos( int p ) {
-    target_pos  = (p + max_pos) % max_pos;
-
+    p           = p % max_pos;
+    target_pos  = (p < 0) ? (p + max_pos) : p;
+     
     if (sync_mode == SYNCHRONOUS)
         while ( distance() )
             wait( 0 );