51单片机控制42步进电机——程序的实现(中断PWM/延迟函数)取最近时间编制了51单片机控制步进电机的程序,包括硬件连接记录了包含代码的过程。 硬件部分项目硬件列表51学习板$1600TB6600驱动器$12通道42步进电机$124V直流电源$1通道42步进电机由于购买时间长,还可以使用。 [42步进电机相关参数! [ ] [ 3359 img-blog.csdn img.cn/20210204093434898.png? x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text _ a hr0 CHM6ly9ibg9nlmnzzg4u bmv0L3 L3 L1 aaagk
此次试验采用共阳极的连接法,VCC连接了51板上的5V电源引脚。
实际硬件和布线
程序的一部分实现使用了用keil软件编写的c语言程序。 虽然是用两种想法写的,但都可以实现。 贴在了下面。
第一,使用由延迟函数实现的脉冲。
#include reg51.h
#define uint unsigned int
voiddelayms(uint;
sbit ENA=P1^0;
sbit DIR=P1^1;
sbit PWM=P1^2;
void main () )
{
ENA=0;
DIR=0;
PWM=0;
while(1)。
{
PWM=~PWM;
dlayms(1;
}
}
voidDelayms(uintXMS ) )。
{
uint i,j;
for(I=XMS; i0; I)
for(j=110; j0; j;
}
二是用51单片机的T1定时器实现的脉冲。
#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;
}
时间120 )。
{
PWM=0;
}
else
{
PWM=1;
}
}
}
voidti1(void ) interrupt 3
{
TH1=0xfd;
TL1=0x06;
时间R1;
}
备注:关键试验前必须检查tb6600拨盘开关,保证输出电流与步进电机电流一致。 脉冲一直都是。 步进电机的转速建议设定在100转/min~600转/min。