Control of motors

Dependencies:   MODSERIAL QEI mbed

main.cpp

Committer:
rubenlucas
Date:
2018-10-01
Revision:
6:5b4bd05ca1d6
Parent:
5:f3cca442e347

File content as of revision 6:5b4bd05ca1d6:

#include "mbed.h"
#include "QEI.h"
#include "MODSERIAL.h"
#include "math.h"


MODSERIAL pc(USBTX,USBRX);
Ticker TickerReadPots;
Ticker TickerGetCounts;
QEI Encoder1(D10,D11,NC,32);
QEI Encoder2(D12,D13,NC,32);
Timer TimerCounts;

DigitalOut DirectionPin1(D4);
DigitalOut DirectionPin2(D7);
PwmOut PwmPin1(D5);
PwmOut PwmPin2(D6);
AnalogIn potmeter1(A0);
AnalogIn potmeter2(A1);


volatile float Duty1;
volatile float Duty2;
volatile float MotorSignal1;
volatile float MotorSignal2;
volatile int counts1;
volatile int counts2;

// function for reading potentiometers and set to dutycycle
void ReadPots(void)
{
    Duty1 = potmeter1.read(); // read value potentiometer 1 
    Duty2 = potmeter2.read(); // read value potentiometer 2
 
    MotorSignal1 = 2*Duty1 - 1; //scaling potmeter to motor control signal [0 - 1] --> [(-1) - 1]
    MotorSignal2 = 1 - 2*Duty2; 
    counts1 = Encoder1.getPulses();
    counts2 = Encoder2.getPulses();
}




int main()
{
    pc.baud(115200);
    pc.printf("Hello World!\r\n");
    PwmPin1.period_us(60); // 16.66667 kHz (default period is too slow!)
    TickerReadPots.attach(&ReadPots,0.1); // every 100 milli seconds.
    TimerCounts.start();
    while (true) 
    {
    // motor 1
    DirectionPin1 = MotorSignal1 > 0.0f; //either true or false, CW or CCW
    PwmPin1 = fabs(MotorSignal1); //pwm duty cycle can only be positive, floating point absolute value
    
    // motor 2
    DirectionPin2 = MotorSignal2 > 0.0f; 
    PwmPin2 = fabs(MotorSignal2); 
    
    float Time = TimerCounts.read();
       
        if (Time > 1.0)
        {
            pc.printf("number of counts per second: motor 1 = %i and motor 2 = %i\n\r",counts1,counts2);
            TimerCounts.reset();
            Encoder1.reset();
            Encoder2.reset();
        }
    
    wait(0.01);  //Do while loop a hundred times per second.
    }
}