unit test for brushless motors using a potentiometer and a castle creations esc with 0.5 center duty cycle

Dependencies:   ESC Servo mbed

Fork of brushlessmotor by jetfishteam

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?

UserRevisionLine numberNew 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 }