Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of brushlessmotor by
MainController.cpp@3:605f216167f6, 2016-02-26 (annotated)
- Committer:
- rkk
- Date:
- Fri Feb 26 14:35:02 2016 +0000
- Revision:
- 3:605f216167f6
- Parent:
- 2:040b8c8f4f92
brushless test program
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
demaille | 0:187bb46ed128 | 1 | #include "MainController.h" |
demaille | 0:187bb46ed128 | 2 | |
demaille | 0:187bb46ed128 | 3 | MainController::MainController() |
rkk | 3:605f216167f6 | 4 | :esc1(p25), |
rkk | 3:605f216167f6 | 5 | myled(LED1), |
rkk | 3:605f216167f6 | 6 | mypotentiometer(p20) |
demaille | 0:187bb46ed128 | 7 | { |
demaille | 0:187bb46ed128 | 8 | wait_ms(50); |
demaille | 0:187bb46ed128 | 9 | amp = 0.0; |
demaille | 2:040b8c8f4f92 | 10 | frqMin = 0.8; //hardcoded |
demaille | 0:187bb46ed128 | 11 | frqMax = 1.8; //hardcoded |
rkk | 3:605f216167f6 | 12 | dutyCycle = 0.5; |
rkk | 3:605f216167f6 | 13 | esc1 = dutyCycle; |
demaille | 0:187bb46ed128 | 14 | esc1(); |
demaille | 0:187bb46ed128 | 15 | wait_ms(3000); //to arm brushless motor |
demaille | 0:187bb46ed128 | 16 | |
demaille | 0:187bb46ed128 | 17 | } |
demaille | 0:187bb46ed128 | 18 | |
demaille | 0:187bb46ed128 | 19 | void MainController::control() |
demaille | 0:187bb46ed128 | 20 | { |
rkk | 3:605f216167f6 | 21 | amp = mypotentiometer.read(); |
rkk | 3:605f216167f6 | 22 | myled = amp; |
rkk | 3:605f216167f6 | 23 | |
demaille | 0:187bb46ed128 | 24 | curTime = timer1.read(); |
rkk | 3:605f216167f6 | 25 | |
demaille | 0:187bb46ed128 | 26 | //set brushless motor speed |
rkk | 3:605f216167f6 | 27 | dutyCycle = 0.5 + (amp/2); |
rkk | 3:605f216167f6 | 28 | esc1.setThrottle(dutyCycle); |
rkk | 3:605f216167f6 | 29 | esc1.pulse(); |
demaille | 0:187bb46ed128 | 30 | } |
demaille | 0:187bb46ed128 | 31 | |
demaille | 0:187bb46ed128 | 32 | //float MainController::calculateAdj() |
demaille | 0:187bb46ed128 | 33 | //{ |
demaille | 0:187bb46ed128 | 34 | // return (ch4.dutycyclescaledup()); |
demaille | 0:187bb46ed128 | 35 | //} |
demaille | 0:187bb46ed128 | 36 | |
demaille | 0:187bb46ed128 | 37 | void MainController::start() |
demaille | 0:187bb46ed128 | 38 | { |
demaille | 0:187bb46ed128 | 39 | timer1.start(); |
demaille | 0:187bb46ed128 | 40 | |
demaille | 0:187bb46ed128 | 41 | ticker1.attach(this, &MainController::control,0.001); |
demaille | 0:187bb46ed128 | 42 | } |
demaille | 0:187bb46ed128 | 43 | |
demaille | 0:187bb46ed128 | 44 | void MainController::stop() |
demaille | 0:187bb46ed128 | 45 | { |
demaille | 0:187bb46ed128 | 46 | timer1.stop(); |
demaille | 0:187bb46ed128 | 47 | ticker1.detach(); |
rkk | 3:605f216167f6 | 48 | dutyCycle = 0.5; |
rkk | 3:605f216167f6 | 49 | esc1 = dutyCycle; |
demaille | 0:187bb46ed128 | 50 | esc1(); |
demaille | 0:187bb46ed128 | 51 | } |
demaille | 0:187bb46ed128 | 52 | |
demaille | 0:187bb46ed128 | 53 | float MainController::getDutyCycle() |
demaille | 0:187bb46ed128 | 54 | { |
demaille | 0:187bb46ed128 | 55 | return dutyCycle; |
demaille | 0:187bb46ed128 | 56 | } |
demaille | 0:187bb46ed128 | 57 | |
demaille | 0:187bb46ed128 | 58 | float MainController::getAmplitude() |
demaille | 0:187bb46ed128 | 59 | { |
demaille | 0:187bb46ed128 | 60 | return amp; |
demaille | 0:187bb46ed128 | 61 | } |
demaille | 0:187bb46ed128 | 62 | |
demaille | 0:187bb46ed128 | 63 | //signum function |
demaille | 0:187bb46ed128 | 64 | float MainController::signum(float input) //gives back the sign |
demaille | 0:187bb46ed128 | 65 | { |
demaille | 0:187bb46ed128 | 66 | if (input>0.0) |
demaille | 0:187bb46ed128 | 67 | return 1.0; |
demaille | 0:187bb46ed128 | 68 | else if (input<0.0) |
demaille | 0:187bb46ed128 | 69 | return (-1.0); |
demaille | 0:187bb46ed128 | 70 | else |
demaille | 0:187bb46ed128 | 71 | return 0.0; |
demaille | 0:187bb46ed128 | 72 | } |
demaille | 0:187bb46ed128 | 73 | |
demaille | 0:187bb46ed128 | 74 | //saturate function |
demaille | 0:187bb46ed128 | 75 | float MainController::saturate(float input) //saturates a value at 1.0 or -1.0 |
demaille | 0:187bb46ed128 | 76 | { |
demaille | 0:187bb46ed128 | 77 | if (input > 1.0) |
demaille | 0:187bb46ed128 | 78 | return (1.0); |
demaille | 0:187bb46ed128 | 79 | else if (input < -1.0) |
demaille | 0:187bb46ed128 | 80 | return (-1.0); |
demaille | 0:187bb46ed128 | 81 | else |
demaille | 0:187bb46ed128 | 82 | return input; |
demaille | 0:187bb46ed128 | 83 | } |