当前位置: 首页 > article >正文

5、计算电机速度【51单片机控制步进电机-TB6600系列】

摘要:本节介绍用定时器定时的方式,精准控制脉冲时间,从而控制步进电机速度。

一、计算过程
电机每一步的角速度等于走这一步所花费的时间,走一步角度等于步距角,走一步的时间等于一个脉冲的时间:
在这里插入图片描述
TB6600及其他驱动器大多具有细分功能,考虑细分X之后,一个脉冲转动的角度为step/X,带入①式:
在这里插入图片描述
电机速度通常使用单位为转速RPM(转/分),角速度(°/S)与转速之间的转换关系:
![在这里插入图片描述](https://img-blog.csdnimg.cn/42847a694ba6443daacfa06a4c70775a.png
至此得到了步进电机一个脉冲的时间t,采用51单片机16位溢出定时器的模式去定时,可以得到:
在这里插入图片描述
至此得到了转速n与定时初值C的函数关系

二、举例计算
步进电机使用二相四线电机,步距角为1.8°,驱动器细分值设定为2,单片机晶振频率为12000000,设定转速为100RPM,带入⑥可得:
在这里插入图片描述
定时器0初值高8位TH0= C/256=0XFA
定时器0初值低8位TL0= C%256=0X24

三、程序代码

void main()
{	
//定时器0初始化
	TMOD=0X01;//设置定时器0为16位溢出模式
	TH0=0XFA;//装定时寄存器初值,对应速度值100RPM
	TL0=0X24;
	TR0=1;//开定时器0计数
	ET0=1;//开定时器0中断
	EA=1;//开总中断
	
	while(1)
	{

	}
}

//定时器0中断程序
void time0_int() interrupt 1
{
	TH0=0XFA;//重装定时寄存器初值
	TL0=0X24;
	
	//低电平切换到高电平,产生一个脉冲
	PUL=1;
	_nop_();_nop_();nop_();nop_();
	PUL=0;
}

四、总结
此种方式利用定时器精确定时能力,从而控制电机转速,是后续电机加减速运动的理论基础

五、附件
完整代码工程文件请见微信小程序:
在这里插入图片描述


http://www.kler.cn/a/104303.html

相关文章:

  • Open3D(C++) 最小二乘拟合平面(直接求解法)
  • 可观察性支柱:探索日志、指标和跟踪
  • MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)
  • python爬虫-某政府网站反爬小记——请求参数base64加密
  • ES6初步了解生成器
  • PostPreSql 数据库的一些用法
  • Shell笔记
  • Echarts的legend的特殊图例展示
  • 说一说ajax的请求过程?
  • 【tg】4:NetworkManager :p2p、ice、消息收发
  • React中如何提高组件的渲染效率
  • JavaScript对象与原型
  • 从JVM方面解释java传递问题
  • [Hive] lateral view explode
  • Go基础——基础语法
  • 【单例模式】饿汉式,懒汉式?JAVA如何实现单例?线程安全吗?
  • SpringCloud复习:(3)LoadBalancerInterceptor
  • Python UI自动化 —— pytest常用运行参数解析、pytest执行顺序解析
  • 【C++基础入门】42.C++中同名覆盖引发的问题
  • .NET、VUE利用RSA加密完成登录并且发放JWT令牌设置权限访问