arduino控制42步进电机——先动起来
好久之前就想分享出来,现在有点晚了,不过还是想简单的分享一下,在学校里一次做创新项目的机会,让我认识了步进电机,当时老师让我们用PLC发出脉冲的方式让步进电机动起来,可是我刚拿到步进电机时以为会像小马达一样,给正负直流电源就会跑,但是当我看到步进电机有四根颜色不同的线的时候,我就犯难了:“哎~,它怎么有四根线,什么鬼?难道要给两个正极,两个负极电源才会转吗?”于是我就开始了······哈哈,后来通
前言:
好久之前就想分享出来,现在有点晚了,不过还是想简单的分享一下,在学校里一次做创新项目的机会,让我认识了步进电机,当时老师让我们用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升级版驱动器的说明书的朋友可以扫下面这个二维码!
更多推荐
所有评论(0)