前言:

好久之前就想分享出来,现在有点晚了,不过还是想简单的分享一下,在学校里一次做创新项目的机会,让我认识了步进电机,当时老师让我们用PLC发出脉冲的方式让步进电机动起来,可是我刚拿到步进电机时以为会像小马达一样,给正负直流电源就会跑,但是当我看到步进电机有四根颜色不同的线的时候,我就犯难了:“哎~,它怎么有四根线,什么鬼?难道要给两个正极,两个负极电源才会转吗?”于是我就开始了······

 哈哈,后来通过实验发现步进电机并没有转,显然没有我理解的那么简单!天真!!!

 

要用PLC发射脉冲才行,后来玩起了arduino,就想着能不能用这个小家伙来控制步进电机的转动呢?因为一个工业PLC太贵啦!反正都是脉冲驱动!


目的:

1、简单认识arduino如何产生脉冲
2、如何用arduino发射脉冲控制步进电机

一、简单认识arduino如何产生脉冲

脉冲信号:简单说其实就是一个高电平一个低电平组成的

1个脉冲信号:就是一个高电平一个低电

补充知识点:1个脉冲信号的时间(这里的时间,可以是你自己定,可以是1微妙,2毫秒,2秒......都无所谓这个根据需求来,但是条件是高低的持续时间一定要一样),就是1个周期!

用arduino程序表现出来就是这样的:

void loop()//主程序
{
  digitalWrite(引脚,HIGH);//高电平
  delay(1000);//高电平持续时间1000毫秒=1秒
  digitalWrite(引脚,LOW);//低电平
  delay(1000);//低电平持续时间1000毫秒=1秒
}

那么上面的程序的脉冲就是下面这样的!然后脉冲信号就会不断延续下去了!

这下就明白啦,arduino是如何产生脉冲的了吧!

当你知道该如何利用arduino来发射脉冲,那么你就已经可以掌握很多步进电机的控制方法了!(举一反三嘛!)


 二、如何用arduino发射脉冲控制步进电机

 arduino可以发出脉冲信号了,但是步进电机可不是那么简单的控制就结束了!!!

要想控制步进电机,没有步进电机驱动器是不行的!

下面就是我在用的TB6600升级版驱动器:

这里面涉及到细分、和电流选择的问题!

首先来看一下这个细分的部分,细分是指将一个步进电机的每个步进角度进一步细分为更小的角度。这可以通过驱动器发送更多的电脉冲来实现。大白话就是细分越多,精度越高!

我这里就直接选择的是1细分,200脉冲转1圈的设定了!

然后就是这个电流的选择了!根据42步进电机的电流1.5A

我这里选择了额定电流为:1.5A,峰值为:1.7A的设定了

 

细分是S1、S2、S3这三个按钮;电流是S4、S5、S6这三个按钮

根据上面的细分设定和电流设定,所以我的开关拨动就是这样的!


接线部分:

PUL:脉冲

DIR:方向

ENA:使能(按需求可接可不接,我没接)

驱动器共有共阳共阴两种接线方法

 我用的就是共阴极接法!

好了,脉冲也明白了,拨码也拨好了,线也接好了,那就开始编程吧!

void setup() //子程序
{
 pinMode(4,OUTPUT);//设置引脚4为方向引脚
 pinMode(7,OUTPUT);//设置引脚7为发射脉冲引脚
}

void loop() //主程序
{
  /*设定转动方向(这个看你的接线了,
    我的是按照电机提示的线的颜色接
    的,所以HIGH是逆时针,LOW是顺时针)*/
  digitalWrite(4, HIGH);
   
  //发送脉冲信号
  /*这里我用了一个for循环来让这个脉冲
   重复执行200遍就是200个脉冲转一圈*/
  for (int i = 0; i <= 200; i++) 
  {
    digitalWrite(7, HIGH);
    delayMicroseconds(300); //设置高电平脉冲持续时间300微妙(us)
    digitalWrite(7, LOW);
    delayMicroseconds(300); //设置低电平脉冲间隔时间为300微妙(us)
  }
  delay(1000);//停顿1秒,再继续上面的操作,如果你需要让它连续转动,就不需要这1秒了,删了就好
}

程序当中有一个函数:delayMicroseconds()

/*这个函数用来设置时间单位为:微秒(us)*/

赶快去试试吧!

我在调试的时候遇到了下面的问题(如果你也遇到了,希望对你有所帮助吧):

问题:电机有响声,但是不转,有点像发电报的声音

解决办法:高低电平的持续时间各加多一点,如果加的过多步进电机会转的很慢,这一点要注意,但是高低电平的时间要保持一致!细分越少,你的时间就要越大!(实在不行,你还要检查一下你的拨码是否拨对了!)

想要TB6600升级版驱动器的说明书的朋友可以扫下面这个二维码!

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐