Script 15-10-2019

Dependencies:   Servoaansturing mbed QEI HIDScope biquadFilter MODSERIAL FastPWM

Committer:
Rosalie
Date:
Mon Oct 07 08:51:06 2019 +0000
Revision:
3:6ee0b20c23b0
Parent:
2:aee655d11b6d
Child:
4:6742476fadcf
motoren aansturen met potmeters en richting wijzigen met buttons

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RobertoO 0:67c50348f842 1 #include "mbed.h"
Rosalie 3:6ee0b20c23b0 2 #include "HIDScope.h"
Rosalie 3:6ee0b20c23b0 3 #include "QEI.h"
RobertoO 1:b862262a9d14 4 #include "MODSERIAL.h"
Rosalie 3:6ee0b20c23b0 5 #include "BiQuad.h"
Rosalie 3:6ee0b20c23b0 6 #include "FastPWM.h"
WiesjeRoskamp 2:aee655d11b6d 7 #include <math.h>
RobertoO 0:67c50348f842 8
Rosalie 3:6ee0b20c23b0 9 //definieer objecten
WiesjeRoskamp 2:aee655d11b6d 10 Serial pc(USBTX, USBRX);
Rosalie 3:6ee0b20c23b0 11
Rosalie 3:6ee0b20c23b0 12 Ticker myControllerTicker1;
Rosalie 3:6ee0b20c23b0 13 Ticker myControllerTicker2;
Rosalie 3:6ee0b20c23b0 14
Rosalie 3:6ee0b20c23b0 15 AnalogIn potMeter1(A0);
Rosalie 3:6ee0b20c23b0 16 AnalogIn potMeter2(A1);
Rosalie 3:6ee0b20c23b0 17
Rosalie 3:6ee0b20c23b0 18 PwmOut motor1(D5);
Rosalie 3:6ee0b20c23b0 19 PwmOut motor2(D6);
Rosalie 3:6ee0b20c23b0 20
Rosalie 3:6ee0b20c23b0 21 DigitalOut motor1_dir(D4);
Rosalie 3:6ee0b20c23b0 22 DigitalOut motor2_dir(D7);
Rosalie 3:6ee0b20c23b0 23
WiesjeRoskamp 2:aee655d11b6d 24 InterruptIn button1(D2);
Rosalie 3:6ee0b20c23b0 25 InterruptIn button2(D1);
WiesjeRoskamp 2:aee655d11b6d 26
Rosalie 3:6ee0b20c23b0 27 //richting wisselen van motor 1
Rosalie 3:6ee0b20c23b0 28 void direction1(void)
Rosalie 3:6ee0b20c23b0 29 {
Rosalie 3:6ee0b20c23b0 30 motor1_dir=!motor1_dir;
Rosalie 3:6ee0b20c23b0 31 }
Rosalie 3:6ee0b20c23b0 32
Rosalie 3:6ee0b20c23b0 33 //richting wisselen van motor 2
Rosalie 3:6ee0b20c23b0 34 void direction2(void)
Rosalie 3:6ee0b20c23b0 35 {
Rosalie 3:6ee0b20c23b0 36 motor2_dir=!motor2_dir;
Rosalie 3:6ee0b20c23b0 37 }
Rosalie 3:6ee0b20c23b0 38
Rosalie 3:6ee0b20c23b0 39
Rosalie 3:6ee0b20c23b0 40 //snelheid motor 1 aansturen
Rosalie 3:6ee0b20c23b0 41 void motor1Controller( )
WiesjeRoskamp 2:aee655d11b6d 42 {
Rosalie 3:6ee0b20c23b0 43 // Determine reference (desired) fan speed
Rosalie 3:6ee0b20c23b0 44 double y1_des = potMeter1.read();
Rosalie 3:6ee0b20c23b0 45 // Controller (calculate motor torque/pwm)
Rosalie 3:6ee0b20c23b0 46 if( y1_des > 1 ) y1_des = 1; // y1_des must be <= 1
Rosalie 3:6ee0b20c23b0 47 if( y1_des < 0 ) y1_des = 0; // y1_des must be >= 0
Rosalie 3:6ee0b20c23b0 48 double power1 = pow(y1_des, 2.0); // Inverse relation between input and output
Rosalie 3:6ee0b20c23b0 49 // Send to motor
Rosalie 3:6ee0b20c23b0 50 motor1.write( power1 );
Rosalie 3:6ee0b20c23b0 51 pc.printf("power1: %.2f\t",power1);
Rosalie 3:6ee0b20c23b0 52 }
Rosalie 3:6ee0b20c23b0 53
Rosalie 3:6ee0b20c23b0 54 //snelheid motor 2 aansturen
Rosalie 3:6ee0b20c23b0 55 void motor2Controller( )
Rosalie 3:6ee0b20c23b0 56 {
Rosalie 3:6ee0b20c23b0 57 // Determine reference (desired) fan speed
Rosalie 3:6ee0b20c23b0 58 double y2_des = potMeter2.read();
Rosalie 3:6ee0b20c23b0 59 // Controller (calculate motor torque/pwm)
Rosalie 3:6ee0b20c23b0 60 if( y2_des > 1 ) y2_des = 1; // y2_des must be <= 1
Rosalie 3:6ee0b20c23b0 61 if( y2_des < 0 ) y2_des = 0; // y2_des must be >= 0
Rosalie 3:6ee0b20c23b0 62 double power2 = pow(y2_des, 2.0); // Inverse relation between input and output
Rosalie 3:6ee0b20c23b0 63 // Send to motor
Rosalie 3:6ee0b20c23b0 64 motor2.write( power2 );
Rosalie 3:6ee0b20c23b0 65 pc.printf("power2: %.2f\n\r",power2);
Rosalie 3:6ee0b20c23b0 66 }
Rosalie 3:6ee0b20c23b0 67
Rosalie 3:6ee0b20c23b0 68
Rosalie 3:6ee0b20c23b0 69 int main()
Rosalie 3:6ee0b20c23b0 70 {
Rosalie 3:6ee0b20c23b0 71 myControllerTicker1.attach(motor1Controller, 0.1 ); // Every 1/10 second
Rosalie 3:6ee0b20c23b0 72 myControllerTicker2.attach(motor2Controller, 0.1 ); // Every 1/10 second
Rosalie 3:6ee0b20c23b0 73
Rosalie 3:6ee0b20c23b0 74 button1.mode(PullUp);
Rosalie 3:6ee0b20c23b0 75 button1.rise(direction1);
Rosalie 3:6ee0b20c23b0 76 button2.mode(PullUp);
Rosalie 3:6ee0b20c23b0 77 button2.rise(direction2);
Rosalie 3:6ee0b20c23b0 78
Rosalie 3:6ee0b20c23b0 79
Rosalie 3:6ee0b20c23b0 80 while( true ) { /* do nothing */ }
Rosalie 3:6ee0b20c23b0 81 return 0;
WiesjeRoskamp 2:aee655d11b6d 82 }
WiesjeRoskamp 2:aee655d11b6d 83
WiesjeRoskamp 2:aee655d11b6d 84
WiesjeRoskamp 2:aee655d11b6d 85
RobertoO 0:67c50348f842 86