unit test for brushless motors using a potentiometer and a castle creations esc with 0.5 center duty cycle
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 | } |