4 directional EMG control of the XY table. Made during my bachelor end assignment.

Dependencies:   C12832_lcd HIDScope mbed-dsp mbed

Committer:
jessekaiser
Date:
Fri Jun 05 13:37:58 2015 +0000
Revision:
47:150924ff4b2c
Parent:
46:7a7cb589579a
Child:
48:05adf4978828
Working Test Setup for 2 motors!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jessekaiser 0:3acdd563582f 1 #include "mbed.h"
jessekaiser 10:7f94cd65c910 2 #include "C12832_lcd.h"
jessekaiser 0:3acdd563582f 3
jessekaiser 47:150924ff4b2c 4 #define P_GAIN 0.998
jessekaiser 31:372ff8d49430 5
jessekaiser 47:150924ff4b2c 6 DigitalOut Dir1(p21);
jessekaiser 47:150924ff4b2c 7 PwmOut Step1(p22);
jessekaiser 47:150924ff4b2c 8 DigitalOut Dir2(p23);
jessekaiser 47:150924ff4b2c 9 PwmOut Step2(p24);
jessekaiser 47:150924ff4b2c 10 DigitalOut Enable2(p25);
jessekaiser 47:150924ff4b2c 11 DigitalOut Enable1(p26);
jessekaiser 0:3acdd563582f 12 DigitalOut MS1(p27);
jessekaiser 0:3acdd563582f 13 DigitalOut MS2(p28);
jessekaiser 0:3acdd563582f 14 DigitalOut MS3(p29);
jessekaiser 10:7f94cd65c910 15 AnalogIn Pot1(p19);
jessekaiser 31:372ff8d49430 16 AnalogIn Pot2(p20);
jessekaiser 30:0a8f849e0292 17 C12832_LCD lcd;
jessekaiser 0:3acdd563582f 18
jessekaiser 47:150924ff4b2c 19 BusIn Joystick(p12,p13,p14,p15,p16);
jessekaiser 47:150924ff4b2c 20 DigitalIn Up(p15);
jessekaiser 47:150924ff4b2c 21 DigitalIn Down(p12);
jessekaiser 41:a666a531d52e 22 int main()
jessekaiser 41:a666a531d52e 23 {
jessekaiser 47:150924ff4b2c 24 Enable1 = 1;
jessekaiser 47:150924ff4b2c 25 Enable2 = 1;
jessekaiser 47:150924ff4b2c 26 float setpoint = 1500; //Frequentie
jessekaiser 47:150924ff4b2c 27 float step_freq1 = 1;
jessekaiser 47:150924ff4b2c 28 float step_freq2 = 1;
jessekaiser 44:d5aa53e4778c 29 MS1 = 1;
jessekaiser 45:f5d74c7f8fbf 30 MS2 = 0;
jessekaiser 44:d5aa53e4778c 31 MS3 = 0;
jessekaiser 47:150924ff4b2c 32 //Step.period(1./step_freq); // 1 kHz, vanaf 2,5 kHz doet de motor het niet meer.
jessekaiser 47:150924ff4b2c 33 Step1.write(0.5); // Duty cycle van 50%
jessekaiser 47:150924ff4b2c 34 Step2.write(0.5);
jessekaiser 47:150924ff4b2c 35 // Dir = Pot1; // Dir 1 is naar boven, Dir 0 naar onder.
jessekaiser 47:150924ff4b2c 36 Enable1 = 0;
jessekaiser 47:150924ff4b2c 37 Enable2 = 0;
jessekaiser 44:d5aa53e4778c 38 while (1) {
jessekaiser 47:150924ff4b2c 39 Dir1 = 0; //0 Naar links (grote motor)
jessekaiser 47:150924ff4b2c 40 float new_step_freq1;
jessekaiser 47:150924ff4b2c 41 new_step_freq1 = ((1-P_GAIN)*setpoint) + (P_GAIN*step_freq1);
jessekaiser 47:150924ff4b2c 42 step_freq1 = new_step_freq1;
jessekaiser 47:150924ff4b2c 43 Step1.period(1.0/step_freq1);
jessekaiser 23:4d050e85e863 44
jessekaiser 47:150924ff4b2c 45 Dir2 = 0; //0 Naar onder (kleine motor)
jessekaiser 47:150924ff4b2c 46 float new_step_freq2;
jessekaiser 47:150924ff4b2c 47 new_step_freq2 = ((1-P_GAIN)*setpoint) + (P_GAIN*step_freq2);
jessekaiser 47:150924ff4b2c 48 step_freq2 = new_step_freq2;
jessekaiser 47:150924ff4b2c 49 Step2.period(1.0/step_freq2);
jessekaiser 47:150924ff4b2c 50
jessekaiser 47:150924ff4b2c 51 lcd.printf("freq : %.0f, %.0f \n", step_freq1, step_freq2);
jessekaiser 47:150924ff4b2c 52 wait(0.01); //Hier nog ticker inbouwen
jessekaiser 47:150924ff4b2c 53
jessekaiser 0:3acdd563582f 54 }
jessekaiser 47:150924ff4b2c 55 }