Kinematica robot M9 Gr 13. Geeft de x en y waarden op hidscope weer in 2 scopes. De waarden zijn berekend met het aantal pulses van de encoders van beide motoren.

Dependencies:   HIDScope QEI mbed

main.cpp

Committer:
Thornlady
Date:
2015-10-23
Revision:
2:7993edc4dba6
Parent:
1:3af988298ce8

File content as of revision 2:7993edc4dba6:

# include "mbed.h"
# include "QEI.h"
# include "HIDScope.h"

// Encoder definieren
QEI Encoder1(D12,D13,NC,32); // Je gebruikt hierbij X2 encoding
QEI Encoder2(D14,D15,NC,32); // Je gebruikt hierbij x2 encoding

// Aantal pulses/deg
const double P = 4200/360;  //pulses/degree
const double L1 = 220.4;    //lengte arm 1
const double L2 = 130;      //lengte arm 2
const double R = 2.166;     //ratio van de tandwielen op de arm


double C1;      //aantal pulses motor 1
double C2;      //aantal pulses motor 2
double Q1;      //hoek motor 1
double Q2;      //hoek motor 2
double X;       
double Y;

// HIDScope definieren
HIDScope scope (2);
Ticker Kinematicatimer;

// Code voor de X- en Y-waarden
void Kinematica ()
{
    C1 = Encoder1.getPulses();  //Aantal pulsen gemeten motor 1
    C2 = Encoder2.getPulses();  //Aantal pulsen gemeten motor 2
    Q1 = C1/P;  // Hoek van motor 1
    Q2 = R*C2/P;  // Hoek van motor 2, met ratio van de tandwielen bovenop
    X = cos (Q1) * L1 + cos (Q1+Q2) * L2; //X waarde van einde arm 2    
    Y = sin (Q1) * L1 + sin (Q1+Q2) * L2; //Y waarde van einde arm 2   


    scope.set (0, X);
    scope.set (1, Y);
    scope.send ();
}

int main ()
{
    Kinematicatimer.attach_us(Kinematica, 1e4);
    while(true) {}
}