g
Dependencies: MODSERIAL mbed Encoder
Diff: begintotaalscript.cpp
- Revision:
- 3:a3e4580af271
- Parent:
- 2:103de31c8803
- Child:
- 4:c79922420b70
diff -r 103de31c8803 -r a3e4580af271 begintotaalscript.cpp --- a/begintotaalscript.cpp Mon Nov 04 21:51:21 2013 +0000 +++ b/begintotaalscript.cpp Tue Nov 05 08:42:42 2013 +0000 @@ -49,12 +49,12 @@ //Variabelen EMG/motoren double yy,z,zabs,w,y1,z1,zabs1,w1,y2,z2,zabs2,w2,e1,e2,e3,f1,f2,g1,g2,g3,h1,h2,byy,bz,bzabs,bw,by1,bz1,bzabs1,bw1,by2,bz2,bzabs2,bw2,be1,be2,be3,bf1,bf2,bg1,bg2,bg3,bh1,bh2; double MaxsnelheidV,MaxsnelheidD,GrenswaardeD,GrenswaardeV,MaxwaardeD,MaxwaardeV,BereikD,BereikV,SnelheidV,SnelheidD,xbegin,ybegin,qbegin,x,y,q,deltas,deltaq,deltax,deltay; - + // Variabelen benoemen voor regelaar motor. double theta, theta_pen, up_theta, kp_theta, kd_theta, dtheta, ei_theta, ui_theta, ki_theta, ed_theta, u_theta, ud_theta, theta_pwm,pi; double r, r_pen, up_r, kp_r, kd_r, dr, ei_r, ui_r, ki_r, ed_r, u_r, ud_r, r_pwm, dri, dri_1, utot_r, inputsinus; double motor1_maxu, motor2_maxu; - + pi=3.14159265359; @@ -105,13 +105,13 @@ //Constanten voor tekening: EMGdeel xbegin= 0; //beginpositie ybegin=0; //beginpositie - qbegin=315; //beginhoek (in graden) vanaf de y-as, rechtsom gedraaid is positief - MaxsnelheidV=15; //in cm/s - MaxsnelheidD=15; //in graden/s + qbegin=5.50; //beginhoek (in rad) vanaf de y-as, rechtsom gedraaid is positief + MaxsnelheidV=150.0; //in mm/s + MaxsnelheidD=0.26; //in rad/s //constanten regelaar kp_r = 0.006; ki_r = 0.005; - + Ticker looptimer; looptimer.attach(setlooptimerflag,Ts); @@ -180,7 +180,7 @@ x=0; y=0; - dri=0; + dri_1=0; calibratie_motor = true; @@ -339,7 +339,7 @@ // EMG BereikD = MaxwaardeD-GrenswaardeD; //Bereik van grafiek EMG (Voltage t.o.v. tijd) BereikV = MaxwaardeV-GrenswaardeV; //Bereik van grafiek EMG (Voltage t.o.v. tijd) - + SnelheidV = (MaxsnelheidV/BereikV)*(w-GrenswaardeV); // Snelheid van pen (in cm/sec), lineair verband met het Bereik SnelheidD = (MaxsnelheidD/BereikD)*(bw-GrenswaardeD); //Draaisnelheid pen (in graden/sec), lineair verband met het Bereik @@ -369,11 +369,11 @@ x = xbegin+deltax; // nieuwe postie pen, x-coördinaat y = ybegin+deltay; // nieuwe positie pen, y-coöridnaat - if (x>29.7) { //grenzen A4 - x=29.7; + if (x>297) { //grenzen A4 + x=297; } - if (y>21.0) { - y=21.0; + if (y>210) { + y=210; } if (x<0) { //grenzen A4 @@ -387,7 +387,7 @@ ybegin=y; // y zal ybgin worden in de volgende loop oftewel:(y(n) will be y(n-1) on next loop) qbegin=q; // q zal qbegin worden in de volgende loop oftewel:(q(n) will be q(n-1) on next loop) - pc.printf("%f,%f,%f,%f\n",SnelheidV,SnelheidD,x,y); + pc.printf("bV=%f, bD=%f, sV=%f, sD=%f, x=%f, y=%f, hoek=%f\n",BereikV,BereikD,SnelheidV,SnelheidD,x,y,(d*57.3)); // motoren @@ -458,7 +458,7 @@ motor2dir.write(0); // print naar pc - pc.printf("t=%.3f dt=%.3f tpwm=%.3f | r=%.3f dr=%.3f rpwm=%.3f inputsin=%0.3f\n", theta, dtheta, theta_pwm, r, dr, r_pwm, inputsinus); + //pc.printf("t=%.3f dt=%.3f tpwm=%.3f | r=%.3f dr=%.3f rpwm=%.3f inputsin=%0.3f\n", theta, dtheta, theta_pwm, r, dr, r_pwm, inputsinus); //schrijf PWM naar motor pwm_motor1.write(abs(theta_pwm)); @@ -467,6 +467,7 @@ // terug naar state 1 knop if (knop3 == false ) { // terug naar state 1 state=1; + wait(0.05); while(knop3 == false) {}