找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3097|回复: 7
收起左侧

单片机如何同时调用两个子程序,输出两个脉冲控制两个步进电机驱动器

[复制链接]
ID:882819 发表于 2022-4-1 13:31 | 显示全部楼层 |阅读模式
本人小白,想写个程序,51单片机输出脉冲跟方向,来同时控制2个两相四线步进电机驱动器,输出两个脉冲使得两个电机同时运行,脉宽跟占空比都不变,只是输出脉冲个数不一样。51单片机是单线程的,程序一步一步执行,不存在同时调用两个子程序,但网上有说用定时器中断分时段控制,但驱动器脉冲输入端频率在10KHz(100us)左右能使电机运行,分时段控制时有冲突吗?该怎么构思程序结构,还有定时器1已经用于串口通讯了。
51hei截图_20220401132839.png
51hei截图_20220401132855.png
51hei截图_20220401132906.png
回复

使用道具 举报

ID:123289 发表于 2022-4-1 15:08 | 显示全部楼层
概念:单片机任何时刻只能执行一条指令,即不可以同时做两件事!
所以:单片机同时调用两个子程序,是错误的观念!
回复

使用道具 举报

ID:161164 发表于 2022-4-1 17:03 | 显示全部楼层
定时器0模式2(8位自动重装)
设置50us中断
中断函数内
if(X_Axis_Pulse>0)
{
P00 = !P00;
if(P00 == 0)
{
X_Axis_Pulse--;
}
}

main函数控制X_Axis_Pulse的数值来输出脉冲
回复

使用道具 举报

ID:844772 发表于 2022-4-1 17:31 | 显示全部楼层
你刚接触,给的脉冲不要太高,不要太窄,频率1k就可以了,太高了光响不转了。另外,交替的给两个电机灌脉冲,看起来就是同时运行的。
回复

使用道具 举报

ID:121859 发表于 2022-4-1 17:57 | 显示全部楼层
不会吧,那个步进电机能工作在10K频率之下?一般也就1到2K的样子。
回复

使用道具 举报

ID:264021 发表于 2022-4-1 18:42 | 显示全部楼层
单片机不能同时做两件事,只能一件一件来做
回复

使用道具 举报

ID:882819 发表于 2022-4-2 11:27 | 显示全部楼层
lkc8210 发表于 2022-4-1 17:03
定时器0模式2(8位自动重装)
设置50us中断
中断函数内

谢谢您,刚才测试了下  解决了 原来是思路出问题了
回复

使用道具 举报

ID:882819 发表于 2022-4-2 13:34 | 显示全部楼层
zhxiufan 发表于 2022-4-1 17:57
不会吧,那个步进电机能工作在10K频率之下?一般也就1到2K的样子。

是的,刚才测试了下,占空比20%,1K运行慢点更平稳些,10K运行快但有点异响,长时间运行 1K的比较好些
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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