added gy80 dcm
Dependencies: mbed DCM_AHRS_GY80 PID MMA8451Q
Fork of quadCommand by
quadCommand/motor/motor.cpp@57:c29f2dac3903, 2013-07-03 (annotated)
- Committer:
- gabdo
- Date:
- Wed Jul 03 02:40:28 2013 +0000
- Revision:
- 57:c29f2dac3903
- Parent:
- 56:a550127695b2
- Child:
- 59:9dfd9169a5e7
Motor #2 issue
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gabdo | 0:8681037b9a18 | 1 | /****************************** motor.cpp ********************************/ |
gabdo | 0:8681037b9a18 | 2 | /* Version: 1.0 */ |
gabdo | 0:8681037b9a18 | 3 | /* Last Updated: June 1, 2013 */ |
gabdo | 0:8681037b9a18 | 4 | /* */ |
gabdo | 0:8681037b9a18 | 5 | /* The motor class is used for motor control using a PWM ECS. When a */ |
gabdo | 0:8681037b9a18 | 6 | /*a motor object is created you must pass the PWM pin as the only */ |
gabdo | 0:8681037b9a18 | 7 | /*argument. */ |
gabdo | 0:8681037b9a18 | 8 | /*************************************************************************/ |
gabdo | 0:8681037b9a18 | 9 | |
gabdo | 0:8681037b9a18 | 10 | #include "motor.h" |
gabdo | 0:8681037b9a18 | 11 | |
gabdo | 0:8681037b9a18 | 12 | /************************** motor( PinName ) *****************************/ |
gabdo | 0:8681037b9a18 | 13 | /* The motor constructor takes the pin to be used as for PWM and sets it */ |
gabdo | 0:8681037b9a18 | 14 | /*to default safe valuse. */ |
gabdo | 0:8681037b9a18 | 15 | /*************************************************************************/ |
gabdo | 0:8681037b9a18 | 16 | |
gabdo | 56:a550127695b2 | 17 | motor::motor( PinName pin ) |
gabdo | 0:8681037b9a18 | 18 | { |
gabdo | 56:a550127695b2 | 19 | pwmPin = new PwmOut( pin ); |
gabdo | 57:c29f2dac3903 | 20 | pwmPin->period( 0.020 ); // Set the period to 20ms. |
gabdo | 0:8681037b9a18 | 21 | setPulseMin( 0.001150 ); // Set default min pulse. |
gabdo | 0:8681037b9a18 | 22 | setPulseMax( 0.002 ); // Set default max pulse. |
gabdo | 0:8681037b9a18 | 23 | setSpeed( 0 ); // Set motor to stopped. |
gabdo | 0:8681037b9a18 | 24 | } |
gabdo | 0:8681037b9a18 | 25 | |
gabdo | 0:8681037b9a18 | 26 | /************************** setSpeed( int ) ******************************/ |
gabdo | 0:8681037b9a18 | 27 | /* Set speed takes an int value between 0 and 100 and sets the speed of */ |
gabdo | 0:8681037b9a18 | 28 | /*the motor based on passed in percent value of speed. */ |
gabdo | 0:8681037b9a18 | 29 | /*************************************************************************/ |
gabdo | 0:8681037b9a18 | 30 | |
gabdo | 56:a550127695b2 | 31 | void motor::setSpeed( int value ) |
gabdo | 0:8681037b9a18 | 32 | { |
gabdo | 0:8681037b9a18 | 33 | // Is the value to small? |
gabdo | 55:bca9c9e92da6 | 34 | if( value - trim < 0 ) // Yup, just set to 0. |
gabdo | 0:8681037b9a18 | 35 | currentSpeed = 0; |
gabdo | 0:8681037b9a18 | 36 | |
gabdo | 0:8681037b9a18 | 37 | // Is the value to large? |
gabdo | 55:bca9c9e92da6 | 38 | else if( value + trim > 100 ) // Yup, just set to 100. |
gabdo | 0:8681037b9a18 | 39 | currentSpeed = 100; |
gabdo | 0:8681037b9a18 | 40 | |
gabdo | 0:8681037b9a18 | 41 | // Value must be in the correct range. |
gabdo | 0:8681037b9a18 | 42 | else |
gabdo | 55:bca9c9e92da6 | 43 | currentSpeed = value + trim; // Set the new value. |
gabdo | 0:8681037b9a18 | 44 | |
gabdo | 0:8681037b9a18 | 45 | // Calculate the value based on pulseMin, pulseMax and currentSpeed. |
gabdo | 56:a550127695b2 | 46 | pulse = ((pulseMax - pulseMin) / 100 * currentSpeed) + pulseMin; |
gabdo | 56:a550127695b2 | 47 | pwmPin->pulsewidth( pulse ); // Write the pulse to the pin. |
gabdo | 0:8681037b9a18 | 48 | } |
gabdo | 0:8681037b9a18 | 49 | |
gabdo | 0:8681037b9a18 | 50 | /************************** setPulseMin( float ) *************************/ |
gabdo | 0:8681037b9a18 | 51 | /* */ |
gabdo | 0:8681037b9a18 | 52 | /*************************************************************************/ |
gabdo | 0:8681037b9a18 | 53 | |
gabdo | 0:8681037b9a18 | 54 | void motor::setPulseMin( float value ) |
gabdo | 0:8681037b9a18 | 55 | { |
gabdo | 0:8681037b9a18 | 56 | pulseMin = value; |
gabdo | 0:8681037b9a18 | 57 | } |
gabdo | 0:8681037b9a18 | 58 | |
gabdo | 0:8681037b9a18 | 59 | /************************** setPulseMax( float ) *************************/ |
gabdo | 0:8681037b9a18 | 60 | /* */ |
gabdo | 0:8681037b9a18 | 61 | /*************************************************************************/ |
gabdo | 0:8681037b9a18 | 62 | |
gabdo | 0:8681037b9a18 | 63 | void motor::setPulseMax( float value ) |
gabdo | 0:8681037b9a18 | 64 | { |
gabdo | 0:8681037b9a18 | 65 | pulseMax = value; |
gabdo | 0:8681037b9a18 | 66 | } |
gabdo | 0:8681037b9a18 | 67 | |
gabdo | 0:8681037b9a18 | 68 | /*************************** float getPulse( ) ***************************/ |
gabdo | 0:8681037b9a18 | 69 | /* Get the current pulse value. */ |
gabdo | 0:8681037b9a18 | 70 | /*************************************************************************/ |
gabdo | 0:8681037b9a18 | 71 | |
gabdo | 0:8681037b9a18 | 72 | float motor::getPulse( void ) |
gabdo | 0:8681037b9a18 | 73 | { |
gabdo | 0:8681037b9a18 | 74 | return pulse; |
gabdo | 38:9f33129afce2 | 75 | } |
gabdo | 38:9f33129afce2 | 76 | |
gabdo | 38:9f33129afce2 | 77 | /*************************** float getSpeed( ) ***************************/ |
gabdo | 38:9f33129afce2 | 78 | /* */ |
gabdo | 38:9f33129afce2 | 79 | /*************************************************************************/ |
gabdo | 38:9f33129afce2 | 80 | |
gabdo | 56:a550127695b2 | 81 | int motor::getSpeed() |
gabdo | 38:9f33129afce2 | 82 | { |
gabdo | 38:9f33129afce2 | 83 | return currentSpeed; |
gabdo | 0:8681037b9a18 | 84 | } |