Script 15-10-2019
Dependencies: Servoaansturing mbed QEI HIDScope biquadFilter MODSERIAL FastPWM
main.cpp@2:aee655d11b6d, 2019-10-07 (annotated)
- 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?
User | Revision | Line number | New 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 |