找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3979|回复: 12
收起左侧

单片机+TB6600+两相四线步进电机迷惑

[复制链接]
ID:626079 发表于 2020-1-16 08:42 | 显示全部楼层 |阅读模式
请大神指点哦,为什么42步进电机的转速与计算的不一样啊?采用共阳接法。换了TB6600,低速转动时不卡顿了,但是转速不是期望的。
我拨的是16细分,按说3200个脉冲一转。4MS一个脉冲,则转一圈的时间大约应为:4*3200=12800MS =12.8秒。 但我在测试的时候, 看了时间,转一圈大约花了30几秒…………确定TB6600是16细分的了(32细分更慢)
程序如下,最简单的没有加别的任何功能:
#include<reg52.h>
//电机控制引脚
sbit CLK  = P1^0;          //PUL-
sbit ENA  = P1^1;           //ENA-
sbit DIR  = P1^2;          //DIR-

unsigned int SPEED=4000;                                                   //脉冲频率初始4ms
void Init_time()                                 //初始化定时器
{
        TMOD |= 0x01;
        TH0=(65536-SPEED)/256;                  //给time0装初值
        TL0=(65536-SPEED)%256;
        IE = 0x82;
        TR0=1;                                         //打开中断
        EA=1;
}
void Enter_Timer0() interrupt 1                                //进入定时器中断
{
        TH0=(65536-SPEED)/256;
        TL0=(65536-SPEED)%256;
        CLK=~CLK;                                          //4ms发送脉冲
}

void main()

{
        ENA=1;                   //ENA-接的控制口,但一样的,如果ENA=0,步进电机卡起
        CLK=0;
        DIR=1;                   //DIR-接的控制口。初始化电机        低电平有效,测试,DIR=1,是反转, DIR=0正转。
        Init_time();   //初始化定时器           
        while(1)
        {
               
        }        
}







TB6600.JPG
回复

使用道具 举报

ID:609989 发表于 2020-1-16 09:09 | 显示全部楼层
sbit CLK  = P1^0;          //PUL- 脉冲
sbit ENA  = P1^1;           //ENA-使能
sbit DIR  = P1^2;          //DIR- 方向
1.你的步进电机是脉冲和方向控制的。你的电机动作说明使能信号OK;
2.你控制步进电机,你首先需要确定输出方向,而不是先确定输出脉冲;
3.你上来就3200的脉冲,你的电机能加起来速?最好做成梯形的加减速。
4.建议你先调成200脉冲,延时做长一点,看看能正常转不,如果你的步进电机一上电就接收高频率输出,也会不卡顿,那样慢悠悠转的。
5.如果你使用的输出频率较高,建议使用STC 1T的单片机,有100KHZ的高速脉冲输出功能。
回复

使用道具 举报

ID:94031 发表于 2020-1-16 09:18 | 显示全部楼层
直接东西都有了直接测一下数据都有了,用不着去算,算错说明概念理解有错。
回复

使用道具 举报

ID:285069 发表于 2020-1-16 10:30 | 显示全部楼层
步進馬達接法可能有誤?
TB6600的升級版;如所附照片的驅動器,是接兩相四線的步進馬達.
樓主所說的"采用共阳接法"是不正確的.
可否秀出馬達及單片機的原理圖,方便討論市接法是否正確.
回复

使用道具 举报

ID:258566 发表于 2020-1-16 14:19 | 显示全部楼层
从代码看出(4000==4ms),好像是晶振12M,输出4ms高4ms低,周期8ms,
从实际运行看,晶振可能是11.05,那么结果基本是对的.
回复

使用道具 举报

ID:626079 发表于 2020-1-16 14:38 | 显示全部楼层
接线如图, DIR+, PUL+, ENA+ 连在一起接的开发板的+5V输出。

DIR-, PUL-, ENA-分别接STC89C52的IO端口。
TB6600接线.jpg
回复

使用道具 举报

ID:626079 发表于 2020-1-16 14:55 | 显示全部楼层
xuyaqi 发表于 2020-1-16 09:18
直接东西都有了直接测一下数据都有了,用不着去算,算错说明概念理解有错。

嗯, 新手就是没搞懂问题出在哪点了……
回复

使用道具 举报

ID:626079 发表于 2020-1-16 15:02 | 显示全部楼层
baiyun1234 发表于 2020-1-16 09:09
sbit CLK  = P1^0;          //PUL- 脉冲
sbit ENA  = P1^1;           //ENA-使能
sbit DIR  = P1^2;    ...

谢谢帮助了。
2.程序这儿定义是要改为这样么:
void main()

{
        ENA=1;                   //ENA-接的控制口,但一样的,如果ENA=0,步进电机卡起
        DIR=1;                   //DIR-接的控制口。初始化电机        低电平有效,测试,DIR=1,是反转, DIR=0正转。
        CLK=0;
        Init_time();   //初始化定时器           
        while(1)
        {
               
        }        
}
3.这个3200是说的电机转一圈需要3200个脉冲得, 4ms输出一个脉冲感觉这个频率不高哦。
4.调成200个脉冲一圈, 步进角度是1.8度,就是不细分。4ms一个脉冲, 200个脉冲就是800ms, 0.8秒就要转一圈,这个我回去试试看看。不知道我的理解是不是有错的地方哈。
回复

使用道具 举报

ID:626079 发表于 2020-1-16 15:12 | 显示全部楼层
4MS一个脉冲的话,频率是不是250HZ? 这该是比较慢的了哦……理论上12.8秒/圈, 我买的两相四线的步机最转速是1000转/秒的哦。关键是它转一圈居然要超过30秒得,这不科学,思来想去,没找到问题在哪儿, 看了步进电机最好从低速到高速再稳定,这个速度该是低速了………………。
回复

使用道具 举报

ID:626079 发表于 2020-1-16 16:49 | 显示全部楼层
cccc888 发表于 2020-1-16 14:19
从代码看出(4000==4ms),好像是晶振12M,输出4ms高4ms低,周期8ms,
从实际运行看,晶振可能是11.05,那么结果基 ...

谢谢谢谢CCCC888的帮助解惑,应该是你说的这样的了。 高4ms, 低4ms, 就是8ms了。........
我没有考虑到,感谢大神。
回复

使用道具 举报

ID:1005267 发表于 2022-2-15 18:20 | 显示全部楼层
我也遇到这个问题也没解决,但发现将speed直接用200也好还是2000也好,转速和圈数就对了,请哪位高手指点
回复

使用道具 举报

ID:399179 发表于 2022-4-14 06:55 来自手机 | 显示全部楼层
两个脉冲是一步,时间上差不多的
回复

使用道具 举报

ID:822053 发表于 2023-7-31 17:33 | 显示全部楼层
山顶任风吹 发表于 2022-2-15 18:20
我也遇到这个问题也没解决,但发现将speed直接用200也好还是2000也好,转速和圈数就对了,请哪位高手指点

speed(速度)、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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