Dustin Berendsen
/
First_Motorcontrol
first succes
Revision 0:63306fecdb08, committed 2017-10-03
- Comitter:
- DBerendsen
- Date:
- Tue Oct 03 18:13:07 2017 +0000
- Commit message:
- first succesful;
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 63306fecdb08 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Oct 03 18:13:07 2017 +0000 @@ -0,0 +1,75 @@ +#include "mbed.h" + +DigitalOut motor1DirectionPin(D4); +PwmOut motor1MagnitudePin(D5); +DigitalIn button1(D8); +AnalogIn potMeterIn(A3); +Ticker tick; + + + +float GetReferenceVelocity() +{ + // Returns reference velocity in rad/s. + // Positive value means clockwise rotation. + const float maxVelocity=8.4; // in rad/s of course! + + float referenceVelocity; // in rad/s + if (button1) + { //Clockwise rotation + referenceVelocity = potMeterIn * maxVelocity; + } + else + { + // Counterclockwise rotation + referenceVelocity = -1*potMeterIn * maxVelocity; + } + return referenceVelocity; +} + +void Setmotor1(float motorValue) +{ + // Given -1<=motorValue<=1, this sets the PWM and direction + // bits for motor 1. Positive value makes motor rotating + // clockwise. motorValues outside range are truncated to + // within range + if (motorValue >=0) { + motor1DirectionPin=1; + } + else { + motor1DirectionPin=0; + } + if (fabs(motorValue)>1) { + motor1MagnitudePin = 1; + } + else { + motor1MagnitudePin = fabs(motorValue); + } + +} + +float FeedForwardControl(float referenceVelocity) +{ + // very simple linear feed-forward control + const float MotorGain=8.4; // unit: (rad/s) / PWM + float motorValue = referenceVelocity / MotorGain; + return motorValue; +} +void MeasureAndControl(void) +{ + // This function measures the potmeter position, extracts a + // reference velocity from it, and controls the motor with + // a simple FeedForward controller. Call this from a Ticker. + float referenceVelocity = GetReferenceVelocity(); + float motorValue = FeedForwardControl(referenceVelocity); + Setmotor1(motorValue); +} + +int main() +{ + + tick.attach(MeasureAndControl, 0.5f); + + + +} \ No newline at end of file
diff -r 000000000000 -r 63306fecdb08 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Oct 03 18:13:07 2017 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/mbed_official/code/mbed/builds/235179ab3f27 \ No newline at end of file