Example for a Magnevation Board used previously on a OOPICII

Fork of Motordriver by Christopher Hasler

Revision:
6:81b393c33b77
Parent:
4:5fb1296c0d60
--- a/motordriver.h	Thu Nov 25 13:34:15 2010 +0000
+++ b/motordriver.h	Mon Feb 11 21:44:17 2013 +0000
@@ -1,11 +1,11 @@
 /*motor driver libary modified from the following libary,
-*  
+*
 * mbed simple H-bridge motor controller
 * Copyright (c) 2007-2010, sford
-* 
-* by Christopher Hasler.
-* 
-* from sford's libary,
+*
+*by Derek Calland modified for a Magnevation PWM Driver Board based on LMD18200T H-Bridge Driver IC's
+*
+*from SFord's libary, and some comments program structure from Christopher Haslers
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
@@ -25,67 +25,63 @@
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
- 
+
 #ifndef MBED_MOTOR_H
 #define MBED_MOTOR_H
- 
+
 #include "mbed.h"
- 
-/** Interface to control a standard DC motor 
+
+/** Interface to control a standard DC motor
 * with an H-bridge using a PwmOut and 2 DigitalOuts
-*/
-class Motor {
-    public:
- 
-/** Create a motor control interface    
-*
-* @param pwm A PwmOut pin, driving the H-bridge enable line to control the speed
-* @param fwd A DigitalOut, set high when the motor should go forward
-* @param rev A DigitalOut, set high when the motor should go backwards
-* @param set if the motor driver is able to do braking 0 false 1 true.
-*/
-        Motor(PinName pwm, PinName fwd, PinName rev, int brakeable);
-  
-/** Set the speed of the motor 
-* 
-* @param speed The speed of the motor as a normalised value between -1.0 and 1.0.
-* @return the applied speed to the motor after checking to ensure motor doesn't switch from forward to reverse without stopping.
-*/
-        float speed(float speed);
-        
-/** Set the the motor to coast
-* 
-* @param void 
-* @return motor coasts until another instruction is recived.
-*/        
-  
-        void coast(void);
-
-/** Set the motor to dynamicaly brake
-* 
-* @param float 0 - 1.0 provides some control over how hard the motor brakes. 
-* @return duty applied to motor driver. -1 is error, motor driver can't brake.
+* Specifically for the Magnevation Board - refer to comments
 */
 
-        float stop(float duty);
-/** return the current state of the motor
-*
-* @param void
-* @return state of motor, -1 to 1 is speed, -2 is braking, 2 is coasting. -3 is error. 
-*/
-        float state(void);
-        
-    protected:
-        PwmOut _pwm;
-        DigitalOut _fwd;
-        DigitalOut _rev;
-        int Brakeable; // cna the motor driver break
-        int sign; //prevents throwing the motor from full foward to full reverse and stuff melting.
- 
+class Motor   ///Class Declaration
+{
+public:
+
+    /** Create a motor control interface
+    *
+    * @param pwm, A PwmOut pin driving the H-bridge enable line to control the speed
+    * @param fwdrev, A DigitalOut pin note Forward and Reverse is relative to how you connect the motor(s)
+    * and Refer to Figure 4 pages 6 & 7 in Instrument LMD18200 data sheet.
+    * @param brake, A DigitalOut pin the Magnevation driver board is able to perform a brake i.e. 0 false brake ON, 1 true brake OFF.
+    */
+    Motor(PinName pwm, PinName fwdrev, PinName brake, bool direction, bool stop); /** Create Motor instance */
+    
+    /** Set the speed of the motor
+    *
+    * @param speed The speed of the motor as a normalised value between 0.0 and 1.0.
+    * @param fwdrev Magnevation board sets direction on a pin so does not need -1.0 to 0.0.
+    * @param stop The Magnevation Board has a brake facility and incorporates the Current Limiting features of the LMD18200.
+    * @return the applied speed to the motor after checking to ensure motor doesn't switch from forward to reverse without stopping.
+    */
+    float speed(float speed, bool fwdrev, bool stop);
+
+    /** Set the the motor to coast
+    *
+    * In a practical world you would not neccessarily leave anything 'coasting' and acting as a dc generator
+    * always better to have a drive under control at all times so I haven't included this
+    * from the origanal class constructor for the Magnevation Board.
+    */
+
+    /** Set the motor to dynamicaly brake
+    *
+    * The Magnevation Board has a brake facility and incorporates the Current Limiting features
+    * of the LMD18200.
+    */
+
+    float stop(float speed, bool stop);
+    /** return the current state of the motor
+    */
+
+protected:
+    PwmOut _pwm;
+    DigitalOut _fwdrev;
+    DigitalOut _brake;
+    bool _direction;
+    bool _stop;
+
 };
 
-
-
-
-
 #endif