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: X_NUCLEO_COMMON ST_INTERFACES
Diff: main.cpp
- Revision:
- 18:591a007effc2
- Parent:
- 15:698fe51556c0
- Child:
- 22:e81ccf73bc5d
--- a/main.cpp Fri Mar 11 16:03:13 2016 +0000
+++ b/main.cpp Thu Apr 07 16:56:27 2016 +0000
@@ -55,8 +55,8 @@
#define MPR_1 4
/* Number of steps. */
-#define STEPS_1 100000
-#define STEPS_2 200000
+#define STEPS_1 (400 * 128) /* 1 revolution given a 400 steps motor configured at 1/128 microstep mode. */
+#define STEPS_2 (STEPS_1 * 2)
/* Delay in milliseconds. */
#define DELAY_1 1000
@@ -74,58 +74,58 @@
{
/* First Motor. */
{
- 9.0, /* Motor supply voltage in V. */
- 400, /* Min number of steps per revolution for the motor. */
- 1.7, /* Max motor phase voltage in A. */
- 3.06, /* Max motor phase voltage in V. */
- 300.0, /* Motor initial speed [step/s]. */
- 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
- 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
- 992.0, /* Motor maximum speed [step/s]. */
- 0.0, /* Motor minimum speed [step/s]. */
- 602.7, /* Motor full-step speed threshold [step/s]. */
- 3.06, /* Holding kval [V]. */
- 3.06, /* Constant speed kval [V]. */
- 3.06, /* Acceleration starting kval [V]. */
- 3.06, /* Deceleration starting kval [V]. */
- 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
- 392.1569e-6, /* Start slope [s/step]. */
- 643.1372e-6, /* Acceleration final slope [s/step]. */
- 643.1372e-6, /* Deceleration final slope [s/step]. */
- 0, /* Thermal compensation factor (range [0, 15]). */
- 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
- 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
- MICROSTEP_1_128, /* Step mode selection. */
- 0xFF, /* Alarm conditions enable. */
- 0x2E88 /* Ic configuration. */
+ 9.0, /* Motor supply voltage in V. */
+ 400, /* Min number of steps per revolution for the motor. */
+ 1.7, /* Max motor phase voltage in A. */
+ 3.06, /* Max motor phase voltage in V. */
+ 300.0, /* Motor initial speed [step/s]. */
+ 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
+ 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
+ 992.0, /* Motor maximum speed [step/s]. */
+ 0.0, /* Motor minimum speed [step/s]. */
+ 602.7, /* Motor full-step speed threshold [step/s]. */
+ 3.06, /* Holding kval [V]. */
+ 3.06, /* Constant speed kval [V]. */
+ 3.06, /* Acceleration starting kval [V]. */
+ 3.06, /* Deceleration starting kval [V]. */
+ 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
+ 392.1569e-6, /* Start slope [s/step]. */
+ 643.1372e-6, /* Acceleration final slope [s/step]. */
+ 643.1372e-6, /* Deceleration final slope [s/step]. */
+ 0, /* Thermal compensation factor (range [0, 15]). */
+ 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
+ 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
+ StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
+ 0xFF, /* Alarm conditions enable. */
+ 0x2E88 /* Ic configuration. */
},
/* Second Motor. */
{
- 9.0, /* Motor supply voltage in V. */
- 400, /* Min number of steps per revolution for the motor. */
- 1.7, /* Max motor phase voltage in A. */
- 3.06, /* Max motor phase voltage in V. */
- 300.0, /* Motor initial speed [step/s]. */
- 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
- 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
- 992.0, /* Motor maximum speed [step/s]. */
- 0.0, /* Motor minimum speed [step/s]. */
- 602.7, /* Motor full-step speed threshold [step/s]. */
- 3.06, /* Holding kval [V]. */
- 3.06, /* Constant speed kval [V]. */
- 3.06, /* Acceleration starting kval [V]. */
- 3.06, /* Deceleration starting kval [V]. */
- 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
- 392.1569e-6, /* Start slope [s/step]. */
- 643.1372e-6, /* Acceleration final slope [s/step]. */
- 643.1372e-6, /* Deceleration final slope [s/step]. */
- 0, /* Thermal compensation factor (range [0, 15]). */
- 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
- 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
- MICROSTEP_1_128, /* Step mode selection. */
- 0xFF, /* Alarm conditions enable. */
- 0x2E88 /* Ic configuration. */
+ 9.0, /* Motor supply voltage in V. */
+ 400, /* Min number of steps per revolution for the motor. */
+ 1.7, /* Max motor phase voltage in A. */
+ 3.06, /* Max motor phase voltage in V. */
+ 300.0, /* Motor initial speed [step/s]. */
+ 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
+ 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
+ 992.0, /* Motor maximum speed [step/s]. */
+ 0.0, /* Motor minimum speed [step/s]. */
+ 602.7, /* Motor full-step speed threshold [step/s]. */
+ 3.06, /* Holding kval [V]. */
+ 3.06, /* Constant speed kval [V]. */
+ 3.06, /* Acceleration starting kval [V]. */
+ 3.06, /* Deceleration starting kval [V]. */
+ 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
+ 392.1569e-6, /* Start slope [s/step]. */
+ 643.1372e-6, /* Acceleration final slope [s/step]. */
+ 643.1372e-6, /* Deceleration final slope [s/step]. */
+ 0, /* Thermal compensation factor (range [0, 15]). */
+ 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
+ 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
+ StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
+ 0xFF, /* Alarm conditions enable. */
+ 0x2E88 /* Ic configuration. */
}
};
@@ -162,7 +162,7 @@
/* Getting the current position. */
int position = motors[0]->GetPosition();
-
+
/* Printing to the console. */
printf("--> Getting the current position: %d\r\n", position);
@@ -254,6 +254,59 @@
printf("--> Getting the current position: %d\r\n", position);
/* Waiting. */
+ wait_ms(DELAY_1);
+
+ /* Printing to the console. */
+ printf("--> Halving the microsteps.\r\n");
+
+ /* Halving the microsteps. */
+ init[0].step_sel = (init[0].step_sel > 0 ? init[0].step_sel - 1 : init[0].step_sel);
+ if (!motors[0]->SetStepMode((StepperMotor::step_mode_t) init[0].step_sel))
+ printf(" Step Mode not allowed.\r\n");
+
+ /* Waiting. */
+ wait_ms(DELAY_1);
+
+ /* Printing to the console. */
+ printf("--> Setting home position.\r\n");
+
+ /* Setting the home position. */
+ motors[0]->SetHome();
+
+ /* Waiting. */
+ wait_ms(DELAY_1);
+
+ /* Getting the current position. */
+ position = motors[0]->GetPosition();
+
+ /* Printing to the console. */
+ printf("--> Getting the current position: %d\r\n", position);
+
+ /* Waiting. */
+ wait_ms(DELAY_1);
+
+ /* Printing to the console. */
+ printf("--> Moving forward %d steps.\r\n", STEPS_1);
+
+ /* Moving. */
+ motors[0]->Move(StepperMotor::FWD, STEPS_1);
+
+ /* Waiting while active. */
+ motors[0]->WaitWhileActive();
+
+ /* Getting the current position. */
+ position = motors[0]->GetPosition();
+
+ /* Printing to the console. */
+ printf("--> Getting the current position: %d\r\n", position);
+
+ /* Printing to the console. */
+ printf("--> Marking the current position.\r\n");
+
+ /* Marking the current position. */
+ motors[0]->SetMark();
+
+ /* Waiting. */
wait_ms(DELAY_2);
@@ -286,7 +339,7 @@
printf(" Speed: M1 %d, M2 %d.\r\n", results[0], results[1]);
/* Printing to the console. */
- printf("--> Doublig the speed while running.\r\n");
+ printf("--> Doublig the speed while running again for %d seconds.\r\n", DELAY_3 / 1000);
/* Preparing each motor to perform a run at a specified speed. */
for (int m = 0; m < L6470DAISYCHAINSIZE; m++)