8-3、T型加减速单片机程序【51单片机控制步进电机-TB6600系列】

摘要:根据前两节内容,已完成所有计算工作,本节内容介绍具体单片机程序流程及代码

一、程序流程图
根据前两节文章内容可知,T型加减速的关键内容是运动类型的判断以及定时器初值的计算,在输出运动参数后即可判断出运动类型,再根据运动类型在主循环程序中计算定时器初值,在定时器中断中判断各运动阶段是否完成,最终实现T型加减速过程,程序流程图如下所示
在这里插入图片描述
二、误差分析
在动态计算的过程中,由于51单片机没有硬件乘、除法器,下述定时器初值的递推计算耗时最多,为尽量提升性能,将此步计算放入了主循环中,以节省定时器中断计算量
在这里插入图片描述
在12Mhz,12T模式下,STC89C52RC单片机实测控制最高转速约为200RPM,最大的瓶颈在于51单片机的主频速度实太慢,此处可以勾选STC单片机特有的6T双倍速模式,电机的转速上限会有明显的提升
在这里插入图片描述

三、关键程序代码

void cal_init()//预计算
{K1=sqrt(a*X);tn=4056000/K1;//计算t1cn=65536-tn;  //计算c1 TH0=cn/256;//装定时寄存器初值TL0=cn%256;angle_step=angle*X/18; //计算总步数K2=10*w*w/a;K3=10*X*w*w/(36*a);
}void cal_cn()//计算cn
{if(ready_flag){ready_flag=0;if(flag==2){tn=tn-2*tn/(4*n+1);}else if(flag==4){tn=tn+2*tn/(4*n-1);}cn=65536-tn;}
}void cal_motion()//计算运动模式
{if(angle_step==1) flag=1;       //转一步else                            //转多步{if(angle>K2)                  //有匀速过程{motion_flag=1;angle2_step=K3;angle3_step=angle_step-2*K3;angle4_step=K3;}else                          //无匀速过程{motion_flag=0;angle2_step=angle_step/2;angle4_step=angle_step-angle2_step;}}
}void main()
{device_init();TR0=1;//开步进电机while(1){cal_cn();}
}void time0_int() interrupt 1
{TH0=cn/256;//装定时寄存器初值TL0=cn%256;PUL=1;_nop_();_nop_();nop_();nop_();PUL=0;//上升沿产生脉冲switch (flag){case 1:                  //转1步TR0=0; break;case 2:			           //加速阶段n++;if(n==angle2_step)    //加速结束{if(motion_flag)    //有匀速{flag=3;          n=0;}else               //无匀速{flag=4;          n=angle4_step;}}break;case 3:                //匀速阶段n++;if(n==angle3_step){flag=4;n=angle4_step;}break;case 4:               //减速阶段n--;if(n==0){TR0=0;        //关步进电机}break;default:break;}ready_flag=1;
}

四、总结
上述代码实现了步进电机采用T型加减速的方式转动5圈,输入参数有驱动器细分值,转动角度,加速度、最大角速度。其中转动角度的单位是0.1°,例如输入100,实际代表转动10°。此种控制方式相对于S曲线加减速灵活性更高,可以实现加减速大小的实时调节,灵活性较好,同时可以大幅节省data资源

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/182506.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应用系统集成-Spring Integration

应用系统集成-Spring Integration 图1 EIP 消息系统模式全景图。 Spring Integration 是系统集成的一个实现框架,提供了对EIP核心概念:Endpoint、Message、Channel、Router、Translator的抽象及相关框架实现,使得基于Spring Integration进行…

策略模式在数据接收和发送场景的应用

在本篇文章中,我们介绍了策略模式,并在数据接收和发送场景中使用了策略模式。 背景 在最近项目中,需要与外部系统进行数据交互,刚开始交互的系统较为单一,刚开始设计方案时打算使用了if else 进行判断: if(…

【Redis】SSM整合Redis注解式缓存的使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Redis》。🎯🎯 &#x1f4…

机器学习中的关键组件

机器学习中的关键组件 数据 每个数据集由一个个样本组成,大多时候,它们遵循独立同分布。样本有时也叫作数据点或数据实例,通常每个样本由一组称为特征或协变量的属性组成。机器学习会根据这些属性进行预测,预测得到的称为标签或…

Intel oneAPI笔记(2)--jupyter官方文档(oneAPI_Intro)学习笔记

前言 本文是对jupyterlab中oneAPI_Essentials/01_oneAPI_Intro文档的学习记录,包含对SYCL、DPC extends SYCL、oneAPI Programming models等介绍和SYCL代码的初步演示等内容 oneAPI编程模型综述 oneAPI编程模型提供了一个全面而统一的开发人员工具组合&#xff0…

在Linux系统下部署Llama2(MetaAI)大模型教程

Llama2是Meta最新开源的语言大模型,训练数据集2万亿token,上下文长度是由Llama的2048扩展到4096,可以理解和生成更长的文本,包括7B、13B和70B三个模型,在各种基准集的测试上表现突出,最重要的是&#xff0c…

OSPF 高级特性3

目录 一、OSPF安全特性 二、加快收敛 三、缺省路由 四、路由控制 五、显示OSPF的错误统计信息 附录E(了解) 六、OSPF防环 七、OSPF选路原则 八、OSPF综合实验 一、OSPF安全特性 1、OSPF报文验证: 区域验证模式:在区域下配…

el-tree中展示项换行展示

文章目录 效果如下所示:没有换行展示的效果修改样式换行之后的展示效果 想要了解el-tree使用的详情往下看代码和数据如下所示Vue代码中可能使用到的数据如下Vue的代码如下:没有换行展示的效果换行之后的展示效果样式调试 效果如下所示: 没有…

论文阅读—— CEASC(cvpr2023)

arxiv:https://arxiv.org/abs/2303.14488 github:https://github.com/Cuogeihong/CEASC 为了进一步减轻SC中的信息损失,使训练过程更加稳定,我们在训练过程中除了稀疏卷积之外,还保持了正常的密集卷积,生成…

JAVA虚拟机-第3章 垃圾收集器与内存分配策略

概述 第2章了解了运行时数据区,这一章探讨垃圾收集器与内存分配策略 程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。因此这几个区域的内存分配和回收都具…

【3D图像分割】基于Pytorch的VNet 3D 图像分割5(改写数据流篇)

在这篇文章:【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割2(基础数据流篇) 的最后,我们提到了: 在采用vent模型进行3d数据的分割训练任务中,输入大小是16*96*96,这个的裁剪是放到Dataset类…

开放式耳机能保护听力吗?开放式耳机有哪些优缺点?

先说答案,开放式耳机是可以保护听力的! 想要了解开放式耳机是否能保护听力,就要先知道什么是开放式耳机,开放式耳机是一种无需入耳,并且使用时不会堵塞耳道,也不会隔绝外界声音的蓝牙耳机。 一、开放式耳…

【服务器使用】vscode winscp进行服务器容器连接(含修改初始密码)

1:获取docker的登陆信息 例如节点(host)、端口(port)、密码(passwd)等信息,这个自己找组内的前辈获取即可 2:配置config文件 找到vscode里面ssh处的config文件 人工找…

spring面试题笔记

SpringBoot 有几种读取配置文件的方式 1.value 必须是bean里才能生效,,final或static无法生效 2ConfigurationProperties注解 ConfigurationProperties是springboot提供读取配置文件的一个注解 注意: 前缀定义了哪些外部属性将绑定到类的字…

C++模板编程与泛型编程之函数模板

文章目录 函数模板(第一部分)定义函数模板使用函数模板样例 两阶段翻译 Two-Phase Translation模板的编译和链接问题 多模板参数引入额外模板参数作为返回值类型让编译器自己找出返回值类型将返回值声明为两个模板参数的公共类型样例 默认模板参数样例 重载函数模板模板函数特化…

智能工厂架构

引:https://www.bilibili.com/video/BV1Vs4y167Kx/?spm_id_from=333.788&vd_source=297c866c71fa77b161812ad631ea2c25 智能工厂框架 智能工厂五层系统框架 MES 数据共享 <

Kafka(二)消息系统设计

文章目录 前言整体设计时序图时序图解释 最后 前言 当多个系统之间通过Kafka来解耦时&#xff0c;在系统设计初期&#xff0c;基本的要求都是相似的&#xff0c;只不过是消费消息时的业务逻辑可能不同。 本文以业务系统和邮件系统解耦作为示例。业务系统需要发送邮件时&#…

SQL左连接实战案例

要求&#xff1a;用表df1和表df2的数据&#xff0c;得到df3 一、创建表 CREATE TABLE df1 (姓名 varchar(255) DEFAULT NULL,年龄 int DEFAULT NULL,部门 varchar(255) DEFAULT NULL,id int DEFAULT NULL );CREATE TABLE df2 (部门 varchar(255) DEFAULT NULL,年龄 int DEFAU…

API接口测试工具的功能及重要性

在现代软件开发中&#xff0c;API(Application Programming Interface)接口的测试至关重要。API接口是不同软件组件之间的桥梁&#xff0c;通过它们实现数据传输和功能交互。API接口测试工具是一类专门用于验证和测试这些接口的软件工具。本文将探讨API接口测试工具的定义、功能…

【高德地图API】JS高德地图API实现多边形绘画,高德获取多边形提交数据

目录 前言效果实现引入js 在项目中使用效果图引入htmlCSS具体实现JS调用说明添加的时候修改的时候判断是否在范围内 java绘画和判断是否在范围内pom.xml依赖引入import引入实现 前言 高德地图官方API&#xff1a;https://lbs.amap.com/demo/javascript-api/example/overlayers…