Simple DC motor control commands for driving DC motor conroller with PWM and up to 2 direction signals (complementary). Takes float value from -1.0 to 1.0.

Dependents:   mbed_ES410_simpleSpeedMeasurement mbed_ES20X_V21_Tester

This MotCon motor driver class can be used with a variety of motor driver integrated circuits for driving PM DC motors. The MotCon class is overloaded to accommodate either one or two direction pins and a PwmOut pin for speed control/motor enable .

include the mbed library with this snippet

#include "MotCon.h"     //uses the MotCon.h library for controlling the motor ports

//PC serial connection
Serial pc(USBTX, USBRX);    //tx, rx via USB connection
DigitalOut led(LED1);
MotCon m1(p25, p27);        //uses p25 for PWM and p27 for direction
MotCon m2(p26, p29, p30);   //uses p26 for pwm and p29 and 30 for direction (complimentary)

//------------ Main ------------------------------
int main() {    
    pc.baud(921600);//fast baud rate for USB PC connection
    while(1) {
        //iterate through 2*pi cycles in .01 increments
        for(float cycle=0;cycle<3.14159*2.0;cycle+=.01){
            float m1_dc = .85*sin(cycle);            
            m1.mot_control(m1_dc);
            
            float m2_dc = .85*cos(cycle);
            m2.mot_control(m2_dc);
                        
            pc.printf("cycle=%.3f  m1_dc = %.2f  m1_dc = %.2f\r\n", cycle, m1_dc, m2_dc);
            wait(.01);      //determines period
            led = !led;     //toggle LED1 to indicate activity
        }
    }
}
Revision:
9:98c700c7dc30
Parent:
8:67f2711fdeed
--- a/MotCon.h	Mon Oct 31 17:54:50 2016 +0000
+++ b/MotCon.h	Tue Nov 01 14:06:30 2016 +0000
@@ -57,17 +57,29 @@
     void write(float dc);
     void write(float dc, int invert);
     
+    /** Set the break mode for control interfaces with two direction pins
+     *
+     * @param mode A boolean value representing the break mode,
+     * true or false.
+     * If true, the dynamically breaked mode state is issued (non-free wheeling)
+     * This is effectively the same as tying both leads together on the DC motor
+     * so it's own counter EMF helps prevent the motor from turning
+    */
     void setMode(bool mode);
+    
     bool getMode(void);
     float read();
     bool mc_mode;    
     
         /**  Shorthand for the write and read functions */
-    MotCon& operator= (float duty_cycle);
-    operator float();    
+    MotCon& operator= (float value);
+    MotCon& operator= (MotCon& rhs);
+    operator float();
+    
+    float duty_cycle;
+        
 private:
     bool _dir2;
-    float duty_cycle;
     
 protected:
     PwmOut _pwm_pin;