找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

步进电机无法精确以16次转一圈求助

[复制链接]
admin 发表于 2012-9-2 08:25:33 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
正在做一种控制板,单片机用AT89C2051,步进驱动用THB6128,8细分(细分可以调整),驱动电压24V(此电压不能再降低,因为电压范围在24--32V),工作过程是单片机检测突轮上的磁铁,用霍尔件检测,按一下启动键,2051给一个高电平THB6128的EN控制脚,THB6128开始工作,其它控制电路输出电压到直流马达带动突轮,突轮转一周到磁铁处霍尔件就有一个低电平输入单片机,然后单片机就会输出一个脉冲到THB6128,步进电机就以1/16转一次,如此循环转够16次就完成一圈,单片机脉冲输出引脚直接输入THB6128脉冲脚(不要建议我用光偶,因为别人的产品一样全部没用光偶),现在问题是没办法精确的以1/16转一次,有时候角度会大点。有时候小点。完成16次就超出360度范围。。。。。现在写了一个单单转一圈的程序也是一样没法转到原位,同样是超出360度或者不够360度,偶尔也刚好回到原位。。。。。。。实在不行了,请大家抽个时间帮个忙看看。帮出点主意。感激不尽


转一圈程序如下:#include <reg51.h>
sbit m0 = P1^0; //脉冲输出
sbit zt=P3^2; //启动按键
sbit m0_0=P3^7; //步进驱动EN控制端(H工作、L关断输出)
unsigned int i,k;
void M0();
void main()
{
m0_0=0;
while(1)
{
if(zt==0)
{
m0_0=1;
while(zt==0){;;}
k=6400;
while(k)
{
m0=!m0;
k--;
for(i=0;i<25;i++);
}
m0_0=0;
}
}
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 09:31 , Processed in 0.057940 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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