一、设备型号:
1、42HS34步进电机+42XG减速机1:14,电机扭矩为0.28N
2、TB6600S电机驱动器
3、51单片机开发板
4、可移动电源
二、代码运行
#include <reg51.h>
#define uint unsigned int
unsigned char timer1;
sbit DIR=P1^0;
sbit ENA=P1^1;
sbit PWM=P1^2;
void system_Ini()
{
TMOD = 0x00; //13λ
TH1 = 0xfd; //253
TL1 = 0x06; //6
EA = 1;
ET1 = 1;
TR1 = 1;
}
/*********************************************************
2^13=8192
25332=8096
8096+6=8102
8192-8102=90
12(1/11059200)= 1.09us
*********************************************************/
main()
{
system_Ini();
DIR = 0;
ENA = 0;
while(1)
{
if(timer1==40)
{
timer1=0;
}
if(timer1<20)
{
PWM=0;
}
else
{
PWM=1;
}
}
}
void Ti1(void) interrupt 3
{
TH1 = 0xfd;
TL1 = 0x06;
timer1++;
}
使用T1定时器实现。具体可参考51单片机控制42步进电机——程序实现(中断PWM/延时函数)_yukuaidere的博客-CSDN博客
三、电路连接
根据代码,进行连接其中pwm接口为驱动器上的pul接口均为脉冲信号口。该电路中使用的是共阳极,使能端可不接。
电机线的链接为蓝:B-,绿:A-,红:B+,黑:A+。电源接为9-10V即可。
四、注意事项
在使用驱动器时要注意细分与电流的调试与电机必须一致或在小于临界值的范围内,否则电机无法运行。可以根据电机所给型号来确定。
驱动器中s1-s3为细分开关,s4-s6为电机电流开关。
我使用的电机输入电流为1.3A,所以我将驱动器的控制电流选择为1.0A,即开关为s4on,s5off,s6on
/* 42电机步距角为1.8°/脉冲 16细分 360/1.8*16=3200 个脉冲电机转一圈 一个脉冲周期设为1ms 则3.2s转1圈 */
细分相关知识可参考入门到入魂:单片机如何利用TB6600高精度控制步进电机(42/57)_千歌叹尽执夏的博客-CSDN博客此处使用的是八细分。