Example for a Magnevation Board used previously on a OOPICII
Fork of Motordriver by
Diff: motordriver.h
- 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