Expansion SW library to control a bipolar stepper motor using X-NUCLEO-IHM05A1 expansion board based on L6208.

Dependencies:   ST_INTERFACES

Dependents:   HelloWorld_IHM05A1 TAU_ROTATING_PLATFORM_IHM05A1 Amaldi_13_Exercise_IHM05A1 Amaldi_13_Exercise_IHM05A1motore ... more

Fork of X-NUCLEO-IHM05A1 by ST Expansion SW Team

Motor Control Library

Library to handle the X-NUCLEO-IHM05A1 Motor Control Expansion Board based on the L6208 component.

It features the:

  • Read and write of device parameters
  • Configuration of GPIOs and IRQs (for enabling, direction, current decay and microstepping)
  • Control of position, speed, acceleration and deceleration
  • Command locking until the device completes movement
  • Handling of overcurrent and thermal alarms (flag interrupt handling)

The API allows to easily:

  • perform various positioning, moves and stops
  • get/set or monitor the motor positions
  • set home position and mark another position
  • get/set minimum and maximum speed
  • get current speed
  • get/set acceleration and deceleration
  • get/set the step mode (up to 1/16)

Board configuration

/media/uploads/nucleosam/mbed-x-nucleo-ihm05a1.png

Platform compatibility

Compatible platforms have been tested with the configurations provided by the HelloWorld_IHM05A1 example.

Revision:
6:c73faac7197f
Parent:
5:f0856e278c08
--- a/Components/L6208/L6208.h	Mon May 08 15:42:20 2017 +0000
+++ b/Components/L6208/L6208.h	Fri Jul 28 13:06:36 2017 +0000
@@ -508,8 +508,14 @@
      */
     virtual unsigned int check_status_hw(void)
     {
-        if (!flag_and_enable.read()) return 0x01;
-        else return 0x00;
+        if (!flag_and_enable.read())
+        {
+            return 0x01;
+        }
+        else
+        {
+            return 0x00;
+        }
     }
     
     /**
@@ -1060,7 +1066,10 @@
         {
             vrefB_pwm.period_us(pwmPeriod);
         }
-        else return false;
+        else
+        {
+            return false;
+        }
         return true;
     }
     
@@ -1081,7 +1090,10 @@
         {
             vrefB_pwm.period_us(0);
         }
-        else return false;
+        else
+        {
+            return false;
+        }
         return true;
     }