天南地北客
发表于: 2018-7-19 22:54:09 | 显示全部楼层

在本篇文章中,我们将介绍如何使用MSP430 LaunchPad开发板连接一个步进电机。 MSP-EXP430G2是德州仪器(TI)提供的开发工具,又名LaunchPad,用于学习和练习如何使用他们提供的微控制器。该开发板属于MSP430产品线,我们可以使用它对所有MSP430系列微控制器进行编程。如果您是MSP430的新手,请查看MSP430 LaunchPad的入门教程。


所需的材料

●    MSP430 LaunchPad开发板

●    35BYJ46或28-BYJ48步进电机

●    ULN2003驱动芯片

●    连接导线

●    面包板


步进电机

步进电机是一种无刷直流电机,可将电脉冲转换为不同的机械运动。步进电机的轴以不连续的步骤旋转。我们可以根据需要获得精确的步数和速度。

35BYJ46-Stepper-Motor.jpg


我们将使用市场上价格便宜的35BYJ46双极步进电机。它有6根电线,但也有5根电线的。步进电机有2个线圈。每个都有3根电线从中出来。在3根导线中,1根中心抽头,剩下2根导线直接与线圈连接。总共有4根信号线和2根中心抽头,用5-12V电源连接。


如果总共有5根电线从电机出来,则4根电线是信号线,1根电线中心抽到两个线圈。和下图一样。

Stepper-motor-wires.png


要检查哪根导线是中心抽头或者哪根是信号线,您必须检查从电机出来的导线的电阻。因此,与中心抽头的电阻相比,连接同一根线圈的那些导线具有高电阻值。


在上图中,如果我们检查了蓝线和黄线的电阻值,它们之间的电阻大于黄线和红线或蓝线和红线之间的值。所以,红色线是中心抽头。


ULN2003步进电机驱动芯片

大多数步进电机只能在驱动模块的帮助下运行。这是因为控制器模块(在我们的情况下是MSP430)无法从其I / O引脚提供足够的电流以使电机运行。因此我们将使用像ULN2003模块这样的外部模块作为步进电机驱动。有许多类型的驱动模块,其中驱动模块的选择根据所用电机的类型而改变。所有驱动器模块的主要原理是为电动机提供足够的电流以使其运行。


在这个项目中,我们将使用ULN2003电机驱动器IC。 IC的引脚图如下:

ULN2003-Stepper-Motor-Driver-IC-Pinout.png


我们使用4个输入端口和4个输出端口。


电路原理图

Circuit-diagram-for-Interfacing-Stepper-Motor-with-MSP430G2.png


在上图中,步进电机的红线没有与IC的PIN5连接,该线必须连接到5V。步进电机的颜色代码可能与电路图中给出的颜色不同。因此,在检查正确的信号线后再连接导线。


我们将使用Energia IDE开发环境编写代码。它与Arduino IDE相同,易于使用。用于驱动步进器的示例代码也可以在Arduino IDE的示例菜单中找到。


代码和说明

在我们开始对MSP430进行编程之前,让我们了解一下程序内部的工作流程。我们将使用4步序列方法,因此将有四个步骤来执行一次完整的旋转。将A、B、C和D看作四个线圈。

步骤序号
通电的引脚
通电的线圈
第1步
6和7
A和B
第2步
7和8
B和C
第3步
8和9
C和D
第4步
9和6
D和A

在本篇文章中中,我们将编写MSP430步进电机代码。完整的程序可以在本文末尾处给出,下面将解释几段重要的代码。


步进电机每转的步数为32;因此我们在代码行中写入以下内容:

  1. const int STEPS = 32;
复制代码

接下来,您必须创建一个实例,在该实例中我们指定了连接步进电机的引脚。

  1. Stepper myStepper (STEPS, 6, 7, 8, 9);
复制代码

由于我们使用的是Stepper库,我们可以使用以下代码行设置电机的速度。对于35BYJ46步进电机,速度范围在0到200之间。

  1. Mystepper.setSpeed(200);
复制代码

现在,为了使电机向前移动一步,我们可以使用以下行。

  1. myStepper.step(STEPS);
复制代码

由于我们有32步和64作为齿轮比,我们需要移动2048(32 * 64 = 2048),以完成一次完整的旋转。现在,上传以下代码,然后根据您的需要更改前进的步数。

Interfacing-Stepper-Motor-with-MSP430G2.jpg


代码

本篇文章使用的完整代码如下:

  1. #include <Stepper.h>
  2. const int STEPS = 32;  // change this to fit the number of steps per revolution
  3. // for your motor
  4. // initialize the stepper library on pins 6 through 9 or you can use any pins on MSP430:
  5. Stepper myStepper(STEPS, 6,7,8,9);            
  6. void setup() {
  7.                                // set the speed at 200rpm or as you want:
  8.   myStepper.setSpeed(200);
  9. }
  10. void loop() {
  11.   myStepper.step(STEPS);
  12. }
复制代码
跳转到指定楼层
wakerjiang
发表于: 2020-5-28 18:09:29 | 显示全部楼层

//按键控制stepper schetch
#include <AccelStepper.h>
// Define step constant
#define FULLSTEP 8
// Creates an instance
// Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence
AccelStepper stepper(FULLSTEP, 8, 10, 9, 11);
const int buttonPin = 2;  
void setup() {
  stepper.setMaxSpeed(1000.0);
  stepper.setAcceleration(50.0);
  stepper.setSpeed(200);

pinMode(buttonPin, INPUT);
}

void loop() {
       int reading = digitalRead(buttonPin);  
      buttonState = reading;
      if (buttonState == HIGH)
      {
         stepper.runToNewPosition(0);
         delay(1000);
         stepper.runToNewPosition(500);
         delay(3000);
         stepper.runToNewPosition(100);
         delay(2000);
         stepper.runToNewPosition(0);
       }
  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 26 | 回复: 45



手机版|

GMT+8, 2024-4-20 18:47 , Processed in 0.141617 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表