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:   Teensy_Mot_QEI_Ser_20180111 Axis Axis_20181108 Axis_version2

Fork of MotCon by Joseph Bradshaw

Overloaded class that takes a pwm motor control pin and one or two direction pins for driving DC motors with a variety of motor control IC's. Tested examples include the LM298, TD340, MC33926, A3949.

MotCon.cpp

Committer:
jebradshaw
Date:
2016-05-19
Revision:
1:69e79f1db999
Parent:
0:3ba12980833b
Child:
2:23cd902e1774
Child:
5:3e07f69d8abd

File content as of revision 1:69e79f1db999:

#include "MotCon.h"

//Constructor
MotCon::MotCon(PinName pwm, PinName dir) : _pwm(pwm), _dir(dir) {
    _pwm.period_us(50);
    _pwm = 0.0;
    _dir = 0;
}

// dc is signed duty cycle (+/-1.0)
void MotCon::mot_control(float dc){        
    if(dc>1.0)
        dc=1.0;
    if(dc<-1.0)
        dc=-1.0;
        
    if(dc > 0.001){
        _dir = 0;
        _pwm = dc;
    }
    else if(dc < -0.001){
        _dir = 1;
        _pwm = abs(dc);
    }
    else{
        _dir = 0;
        _pwm = 0.0;
    }      
}

// dc is signed duty cycle (+/-1.0)
void MotCon::mot_control(float dc, int invert){        
    if(dc>1.0)
        dc=1.0;
    if(dc<-1.0)
        dc=-1.0;
        
    if(invert==0){
        if(dc > 0.001){
            _dir = 0;
            _pwm = dc;
        }
        else if(dc < -0.001){
            _dir = 1;
            _pwm = abs(dc);
        }
        else{
            _dir = 0;
            _pwm = 0.0;
        }
    }
    else{
        if(dc > 0.001){
            _dir = 1;
            _pwm = dc;
        }
        else if(dc < -0.001){
            _dir = 0;
            _pwm = abs(dc);
        }
        else{
            _dir = 0;
            _pwm = 0.0;
        }
    }
}