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.
Dependencies: HIDScope MODSERIAL QEI biquadFilter mbed
Diff: main.cpp
- Revision:
- 2:94b5e00288a5
- Parent:
- 1:ace33633653b
- Child:
- 3:8caef4872b0c
--- a/main.cpp Fri Oct 14 14:35:09 2016 +0000
+++ b/main.cpp Fri Oct 14 14:37:25 2016 +0000
@@ -18,7 +18,7 @@
//set settings
Serial pc(USBTX,USBRX);
-Ticker MeasurePTicker; //, BiQuadTicker, FeedbackTickere;// sampleT, TimeTracker;
+Ticker MeasurePTicker;
HIDScope scope(2);
//set datatypes
@@ -45,93 +45,9 @@
BiQuad bq2(1.0000, -1.5704, 1.2756, -0.4844, 0.0762);
//set go-Ticker settings
-volatile bool MeasurePTicker_go=false; //PTicker_go=false, MotorControllerTicker_go=false;// TimeTracker_go=false, sampleT_go=false;
+volatile bool MeasurePTicker_go=false;
void MeasureP_act(){MeasurePTicker_go=true;}; // Activates go-flags
-//void P_act(){PTicker_go=true;};
-//void MotorController_act(){MotorControllerTicker_go=true;};
-//void TimeTracker_act(){TimeTracker_go=true;};
-//void sampleT_act(){sampleT_go=true;};
-
-/*
-float GetReferenceVelocity()
-{
- // Returns reference velocity in rad/s.
- // Positive value means clockwise rotation.
- const float maxVelocity = 8.4; // in rad/s of course!
- if (button1 == 0){
- led1=1;
- led2=0;
- // Counterclockwise rotation
- referenceVelocity = potMeterIn * maxVelocity;
- }
- else {
- led1=0;
- led2=1;
- // Clockwise rotation
- referenceVelocity = -1*potMeterIn * maxVelocity;
- }
- return referenceVelocity;
-}
-
-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 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);
-}
-
-void MeasureAndControl()
-{
- // 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);
-}
-
-void TimeTrackerF(){
- wait(1);
- float Potmeter = potMeterIn.read();
- pc.printf("Reference velocity: %f rad/s \r\n", referenceVelocity);
- pc.printf("Potmeter: %f rad/s \r\n", Potmeter);
- //pc.printf("Counts: %i rad/s \r\n", counts);
- //pc.printf("Derivative Counts: %i rad/s \r\n", DerivativeCounts);
-}
-
-void sample()
-{
- int countsPrev = 0;
- QEI Encoder(D12, D13, NC, 32);
- counts = Encoder.getPulses(); // gives position
- //scope.set(0,counts);
- DerivativeCounts = (counts-countsPrev)/0.001;
- //scope.set(1,DerivativeCounts);
- countsPrev = counts;
- //scope.send();
- pc.printf("Counts: %i rad/s \r\n", counts);
- pc.printf("Derivative Counts: %d rad/s \r\n", DerivativeCounts);
-}
-
-void BiQuadFilter(){ //this function creates a BiQuad filter for the DerivativeCounts
- //double in=DerivativeCounts();
- bqcDerivativeCounts=bqc.step(DerivativeCounts);
- //return(bqcDerivativeCounts);
- }
- */
void MeasureP(){
double ref_position = Potmeter1; //reference position from potmeter
int counts = Encoder.getPulses(); // gives position
@@ -161,15 +77,11 @@
//Initialize
led1=0;
led2=0;
- //float Potmeter = potMeterIn.read();
+ //float Potmeter1 = potMeter1.read();
+ //float Potmeter2 = potMeter2.read();
MeasurePTicker.attach(&MeasureP_act, 0.01f);
- //P.attach(&P_act, 0.01f);
- //MotorController.attach(&MotorController_act, 0.01f);
pc.baud(115200);
QEI Encoder(D12, D13, NC, 32); // turns on encoder
- //sampleT.attach(&sampleT_act, 0.1f);
- //pc.printf("Reference velocity: %f rad/s \r\n", referenceVelocity);
- //pc.printf("Potmeter: %f rad/s \r\n", Potmeter);
while(1)
{
@@ -177,36 +89,5 @@
MeasurePTicker_go=false;
MeasureP();
}
- // Encoder part
- /*
- counts = Encoder.getPulses(); // gives position
- DerivativeCounts = ((double) counts-countsPrev)/0.01;
-
- scope.set(0,counts);
- scope.set(1,DerivativeCounts);
- //scope.set(1,bqcDerivativeCounts);
- scope.send();
- countsPrev = counts;
- //pc.printf("Counts: %i rad/s \r\n", counts);
- //pc.printf("Derivative Counts: %f rad/s \r\n", DerivativeCounts);
-
- }
-
- if (PTicker_go){
- PTicker_go=false;
- P();
- }
-
- if (MotorControllerTicker_go){
- MotorControllerTicker_go=false;
- MotorController();
- if (TimeTracker_go){
- TimeTracker_go=false;
- TimeTrackerF();
- }
- if (sampleT_go){
- sampleT_go=false;
- sample();
- }*/
}
}
\ No newline at end of file