专注电子技术学习与研究
当前位置:单片机教程网 >> STM32 >> 浏览文章

使用Rainbow控制步进电机

作者:未知   来源:会员上传   点击数:  更新时间:2014年05月20日   【字体:

手上有一个步进电机和ULN2003电机驱动模块,这是之前做Arduino实验的时候留下的,这几天正好比较空闲,就移植了一个Arduino的Stepper库,这个库是用于控制步进电机的。这次我是将ULN的IN1-IN3接到Rainbow的PA1、PA3、PA5、PA7,硬件情况如下图:



    在软件包的“Projects\Stepper_OneRevolution”文件夹包含了本文的完整工程,可以直接编译、烧写和调试。代码非常简单,贴出来了:
#include "WProgram.h"
#include "Stepper.h"
 
//根据马达调整合适的分辨率
const int stepsPerRevolution = 200;
 
//5线4相步进电机,使用PA1, PA3, PA5, PA7
Stepper myStepper(stepsPerRevolution, PA1, PA3, PA5, PA7);
 
void setup()
{
  //启用默认串口,波特率9600
  Serial.start();
  //设置马达速度为60rpm
  myStepper.setSpeed(60);
}
 
void loop()
{
  // 发送顺时针转动指令
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);
  
   // 发送逆时针转动指令
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500); 
}
 
int main(void)
{
  //初始化开发板
  boardInit();
  setup();
 
  while(1) loop();
}
 
    程序编译无误后,下载到Rainbow中,可以看到步进电机转起来了,和Arduino中运行效果完全一样。只是在这个应用中,我发现步进电机时钟只顺时针转动,不逆时针转,我跟踪了一下程序,逻辑完全正确,同时Arduino中运行起来也是这样的,我对电机这块没有什么研究,但是程序逻辑方面没有问题,初步判断可能是我这个步进电机的问题,身边没有其它型号的步进电机,所以无法最终确定问题所在。
关闭窗口