Script 15-10-2019

Dependencies:   Servoaansturing mbed QEI HIDScope biquadFilter MODSERIAL FastPWM

Committer:
WiesjeRoskamp
Date:
Mon Oct 07 07:39:29 2019 +0000
Revision:
2:aee655d11b6d
Parent:
1:b862262a9d14
Child:
3:6ee0b20c23b0
Script_0 (PES-college 5)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RobertoO 0:67c50348f842 1 #include "mbed.h"
RobertoO 0:67c50348f842 2 //#include "HIDScope.h"
RobertoO 0:67c50348f842 3 //#include "QEI.h"
RobertoO 1:b862262a9d14 4 #include "MODSERIAL.h"
RobertoO 0:67c50348f842 5 //#include "BiQuad.h"
RobertoO 1:b862262a9d14 6 //#include "FastPWM.h"
WiesjeRoskamp 2:aee655d11b6d 7 #include <math.h>
RobertoO 0:67c50348f842 8
WiesjeRoskamp 2:aee655d11b6d 9 Serial pc(USBTX, USBRX);
WiesjeRoskamp 2:aee655d11b6d 10 Ticker myControllerTicker;
WiesjeRoskamp 2:aee655d11b6d 11 AnalogIn potMeter(A0);
WiesjeRoskamp 2:aee655d11b6d 12 PwmOut fan(D5); // kan ook D6 zijn
WiesjeRoskamp 2:aee655d11b6d 13 DigitalOut fan_dir(D4);
WiesjeRoskamp 2:aee655d11b6d 14 InterruptIn button1(D2);
WiesjeRoskamp 2:aee655d11b6d 15
WiesjeRoskamp 2:aee655d11b6d 16 void direction(void)
WiesjeRoskamp 2:aee655d11b6d 17 {
WiesjeRoskamp 2:aee655d11b6d 18 fan_dir=!fan_dir;
WiesjeRoskamp 2:aee655d11b6d 19
WiesjeRoskamp 2:aee655d11b6d 20 pc.printf("hello");
WiesjeRoskamp 2:aee655d11b6d 21 }
WiesjeRoskamp 2:aee655d11b6d 22
WiesjeRoskamp 2:aee655d11b6d 23
WiesjeRoskamp 2:aee655d11b6d 24
RobertoO 0:67c50348f842 25
WiesjeRoskamp 2:aee655d11b6d 26 // Feed forward fan speed controller
WiesjeRoskamp 2:aee655d11b6d 27 // Suppose an AnalogIn ’potMeter’ and PWMOut ’fan’
WiesjeRoskamp 2:aee655d11b6d 28 void fanController( )
WiesjeRoskamp 2:aee655d11b6d 29 {
WiesjeRoskamp 2:aee655d11b6d 30 // Determine reference (desired) fan speed
WiesjeRoskamp 2:aee655d11b6d 31 double y_des = potMeter.read();
WiesjeRoskamp 2:aee655d11b6d 32 // Controller (calculate motor torque/pwm)
WiesjeRoskamp 2:aee655d11b6d 33 if( y_des > 1 ) y_des = 1; // y_des must be <= 1
WiesjeRoskamp 2:aee655d11b6d 34 if( y_des < 0 ) y_des = 0; // y_des must be >= 0
WiesjeRoskamp 2:aee655d11b6d 35 double u = pow(y_des, 2.0); // Inverse relation between input and output
WiesjeRoskamp 2:aee655d11b6d 36 // Send to motor
WiesjeRoskamp 2:aee655d11b6d 37 fan.write( u );
WiesjeRoskamp 2:aee655d11b6d 38 pc.printf("u: %.2f\n\r",u);
WiesjeRoskamp 2:aee655d11b6d 39 }
WiesjeRoskamp 2:aee655d11b6d 40
WiesjeRoskamp 2:aee655d11b6d 41
RobertoO 0:67c50348f842 42
RobertoO 0:67c50348f842 43 int main()
RobertoO 0:67c50348f842 44 {
WiesjeRoskamp 2:aee655d11b6d 45 myControllerTicker.attach( fanController, 0.1 ); // Every second
WiesjeRoskamp 2:aee655d11b6d 46
WiesjeRoskamp 2:aee655d11b6d 47 button1.mode(PullUp);
WiesjeRoskamp 2:aee655d11b6d 48 button1.rise(direction);
WiesjeRoskamp 2:aee655d11b6d 49
WiesjeRoskamp 2:aee655d11b6d 50 while( true ) { /* do nothing */ }
WiesjeRoskamp 2:aee655d11b6d 51 return 0;
RobertoO 0:67c50348f842 52 }
WiesjeRoskamp 2:aee655d11b6d 53
WiesjeRoskamp 2:aee655d11b6d 54
WiesjeRoskamp 2:aee655d11b6d 55
WiesjeRoskamp 2:aee655d11b6d 56