第七节(1)、T型加减速转动【51单片机-TB6600驱动器-步进电机教程】

news2024/12/29 9:18:59

摘要:本节介绍步进电机T型加减速的控制方法,分2个小节,本小节主要内容为该控制方法的推导与计算,第二节对T型加减速进行了简化计算

一.加速阶段计算
1.1 计算时间与步数关系
在这里插入图片描述
根据位移公式可得:
a n g l e 0 = n ∗ s t e p … … ① angle_{0} =n*step……① angle0=nstep……

a n g l e 0 = 1 2 a 0 t n 2 … … ② angle_{0} =\frac{1}{2} a_{0}t_{n}^{2} ……② angle0=21a0tn2……

由①②得:

t n = 2 ∗ n ∗ s t e p a 0 … … ③ t_{n}=\sqrt{\frac{2*n*step}{a_{0} } } ……③ tn=a02nstep ……

t_n:时间(s)
n:步数
step:步距角(°)
a_0:加速度(°/s^2)
angle_0:加速角度(°)

计算t1
t 1 = 2 ∗ s t e p a 0 … … ④ t_{1}=\sqrt{\frac{2*step}{a_{0} } } ……④ t1=a02step ……

由③④得:
t n = t 1 n … … ⑤ t_{n}=t_{1}\sqrt{n } ……⑤ tn=t1n ……

1.2 计算时间与步数关系
在这里插入图片描述

由⑤得:
Δ t n + 1 = t n + 1 − t n = t 1 ( n + 1 − n ) … … ⑥ \Delta t_{n+1}=t_{n+1}-t_{n}=t_{1}(\sqrt{n+1} -\sqrt{n} )……⑥ Δtn+1=tn+1tn=t1(n+1 n )……
Δ t n = t n − t n − 1 = t 1 ( n − n − 1 ) … … ⑦ \Delta t_{n}=t_{n}-t_{n-1}=t_{1}(\sqrt{n} -\sqrt{n-1} )……⑦ Δtn=tntn1=t1(n n1 )……

⑥/⑦得:

Δ t n + 1 Δ t n = n + 1 − n n − n − 1 \frac{\Delta t_{n+1}}{\Delta t_{n}} =\frac{\sqrt{n+1}-\sqrt{n}}{\sqrt{n}-\sqrt{n-1}} ΔtnΔtn+1=n n1 n+1 n

Δ t n + 1 Δ t n = 1 + 1 n − 1 1 − 1 − 1 n … … ⑧ \frac{\Delta t_{n+1}}{\Delta t_{n}} =\frac{\sqrt{1+\frac{1}{n} }-1}{1-\sqrt{1-\frac{1}{n} }} ……⑧ ΔtnΔtn+1=11n1 1+n1 1……

将Sqrt(1±x)麦克劳林展开:
f ( x ) = 1 ± x = f ( 0 ) ± f ′ ( 0 ) + f " ( 0 ) 2 + 0 ( x 2 ) f(x)=\sqrt{1±x} =f(0)±f'(0)+\frac{f"(0)}{2} +0(x^{2} ) f(x)=1±x =f(0)±f(0)+2f"(0)+0(x2)
= 1 ± 1 2 x − 1 8 x 2 + 0 ( x 2 ) =1±\frac{1}{2}x -\frac{1}{8}x^{2} +0(x^{2} ) =1±21x81x2+0(x2)
令 x = 1 n 令x=\frac{1}{n} x=n1
1 ± 1 n = 1 ± 1 2 n − 1 8 n 2 + 0 ( 1 n 2 ) … … ⑨ \sqrt{1\pm \frac{1}{n} } =1\pm\frac{1}{2n} -\frac{1}{8n^{2} } +0(\frac{1}{n^{2} } )……⑨ 1±n1 =1±2n18n21+0(n21)……

将⑨带入⑧:
△ t n + 1 △ t n = 1 + 1 2 n − 1 8 n 2 + 0 ( 1 n 2 ) − 1 1 − ( 1 − 1 2 n − 1 8 n 2 + 0 ( 1 n 2 ) ) \frac{\bigtriangleup t_{n+1} }{\bigtriangleup t_{n} } =\frac{1+\frac{1}{2n} -\frac{1}{8n^{2} } +0(\frac{1}{n^{2} } )-1}{1-(1-\frac{1}{2n} -\frac{1}{8n^{2} } +0(\frac{1}{n^{2} } ))} tntn+1=1(12n18n21+0(n21))1+2n18n21+0(n21)1
△ t n + 1 △ t n ≈ 4 n − 1 4 n + 1 … … ⑩ \frac{\bigtriangleup t_{n+1} }{\bigtriangleup t_{n} } ≈\frac{4n-1}{4n+1} ……⑩ tntn+14n+14n1……

1.3误差分析
△ t n + 1 △ t n 与 4 n − 1 4 n + 1 之间存在误差 \frac{\bigtriangleup t_{n+1} }{\bigtriangleup t_{n} } 与\frac{4n-1}{4n+1} 之间存在误差 tntn+14n+14n1之间存在误差
为消除该误差,在计算过程中需乘上一个误差系数K
取 K = 0.676 取K=0.676 K=0.676

1.4计算定时器初值
Δ t 1 = 2 ∗ s t e p a 0 \Delta t_{1} =\sqrt{\frac{2*step}{a_{0} } } Δt1=a02step

校正后:
Δ t 1 = K 2 ∗ s t e p a 0 \Delta t_{1} =K\sqrt{\frac{2*step}{a_{0} } } Δt1=Ka02step

定时时间递推关系:
Δ t n + 1 = 4 n − 1 4 n + 1 Δ t n \Delta t_{n+1} =\frac{4n-1}{4n+1} \Delta t_{n} Δtn+1=4n+14n1Δtn

定时器采用16位溢出模式:
C n = 65536 − Δ t n ∗ X t a l 12 C_{n} =65536-\Delta t_{n} *\frac{Xtal}{12} Cn=65536Δtn12Xtal

Xtal:晶振频率
Cn:定时器初值

二. 加速+减速过程计算
在这里插入图片描述根据基本运动定理:

  • w m a x = a 0 ∗ t n 0 … … ⑪ w_{max} =a_{0} *t_{n0} ……⑪ wmax=a0tn0……
  • w m a x = a 2 ∗ t n 2 … … ⑫ w_{max}=a_{2} *t_{n2} ……⑫ wmax=a2tn2……
  • a n g l e 0 = 1 2 a 0 ∗ t n 0 2 … … ⑬ angle_{0}=\frac{1}{2} a_{0} *t_{n0}^{2} ……⑬ angle0=21a0tn02……
  • a n g l e 2 = 1 2 a 2 ∗ t n 2 2 … … ⑭ angle_{2}=\frac{1}{2} a_{2} *t_{n2}^{2} ……⑭ angle2=21a2tn22……
  • a n g l e = a n g l e 0 + a n g l e 2 … … ⑮ angle=angle_{0}+angle_{2}……⑮ angle=angle0+angle2……

由⑪~⑮得:
a n g l e 0 = a n g l e a 2 a 0 + a 2 … … ⑯ angle_{0}=angle\frac{a_{2}}{a_{0}+a_{2}}……⑯ angle0=anglea0+a2a2……

w_max:角速度(°/s)
a0:加速度(°/s^2)
tn0:加速时间(s)
angle0:加速角度(°)
a2:减速度(°/s^2)
tn2:减速时间(s)
angle2:减速角度(°)
angle:总角度(°)

三. 判断匀速阶段是否存在
3.1 假设存在匀速阶段,运动图像如下
在这里插入图片描述
3.2 假设不存在匀速阶段,运动图像如下
在这里插入图片描述
如下四个变量由用户设定:(配套程序角速度单位均换算为RPM)
angle:转动角度(°)
a0:加速度(°/s^2)
a0:减速度(°/s^2)
w:角速度上限(°/s)

3.3判断angle_max与angle0的大小,即可判断出是否存在匀速阶段
angle_max:不存在匀速阶段情况下,加速角度(°)
angle0:存在匀速阶段情况下,加速角度(°)

由⑯得:
a n g l e m a x = a n g l e a 2 a 0 + a 2 angle_{max}=angle\frac{a_{2}}{a_{0}+a_{2}} anglemax=anglea0+a2a2
由位移定理得:
a n g l e 0 = w 2 2 a 0 angle_{0}=\frac{w^{2} }{2a_{0}} angle0=2a0w2

如果angle_max>angle0,则存在匀速阶段

  • 加速角度 a n g l e 0 = w 2 2 a 0 加速角度angle_{0}=\frac{w^{2} }{2a_{0}} 加速角度angle0=2a0w2
  • 加速角度 a n g l e 2 = w 2 2 a 2 加速角度angle_{2}=\frac{w^{2} }{2a_{2}} 加速角度angle2=2a2w2
  • 匀速角度 a n g l e 1 = a n g l e − a n g l e 0 − a n g l e 2 匀速角度angle_{1}=angle-angle_{0}-angle_{2} 匀速角度angle1=angleangle0angle2
    将转动角度换算为电机步数:
  • 加速步数 a n g l e 0 s t e p = w 2 2 a 0 ∗ 5 X 9 = 5 X w 2 18 a 0 = K 3 a 0 加速步数angle_{0step}=\frac{w^{2} }{2a_{0}}*\frac{5X }{9}=\frac{5Xw^{2} }{18a_{0}}=\frac{K_{3} }{a_{0}} 加速步数angle0step=2a0w295X=18a05Xw2=a0K3
  • 减速步数 a n g l e 2 s t e p = w 2 2 a 2 ∗ 5 X 9 = 5 X w 2 18 a 2 = K 3 a 2 减速步数angle_{2step}=\frac{w^{2} }{2a_{2}}*\frac{5X }{9}=\frac{5Xw^{2} }{18a_{2}}=\frac{K_{3} }{a_{2}} 减速步数angle2step=2a2w295X=18a25Xw2=a2K3
  • 匀速步数 a n g l e 1 s t e p = a n g l e s t e p − a n g l e 0 s t e p − a n g l e 2 s t e p 匀速步数angle_{1step}=angle_{step}-angle_{0step}-angle_{2step} 匀速步数angle1step=anglestepangle0stepangle2step
  • 其中 K 3 = 5 X w 2 18 其中K_{3}=\frac{5Xw^{2} }{18} 其中K3=185Xw2

angle_max≤angle0,则不存在匀速阶段

  • 加速角度 a n g l e 0 = a n g l e m a x = a n g l e a 2 a 0 + a 2 加速角度angle_{0}=angle_{max}=angle\frac{a_{2}}{a_{0}+a_{2}} 加速角度angle0=anglemax=anglea0+a2a2
  • 减速角度 a n g l e 2 = a n g l e − a n g l e 0 减速角度angle_{2}=angle-angle_{0} 减速角度angle2=angleangle0
    将转动角度换算为电机步数:
  • 加速步数 a n g l e 0 s t e p = a n g l e s t e p a 2 a 0 + a 2 加速步数angle_{0step}=angle_{step}\frac{a_{2} }{a_{0}+a_{2}} 加速步数angle0step=anglestepa0+a2a2
  • 减速步数 a n g l e 2 s t e p = a n g l e s t e p − a n g l e 0 s t e p 减速步数angle_{2step}=angle_{step}-angle_{0step} 减速步数angle2step=anglestepangle0step
  • 其中 a n g l e s t e p = 5 X a n g l e 9 其中angle_{step}=\frac{5Xangle }{9} 其中anglestep=95Xangle

四、程序流程如下
在这里插入图片描述
五、测试
烧录hex文件后,单片机上电,步进电机经历T型加减速过程,总共转动360°
请添加图片描述

六、功能扩展
扩展1:(实测视频见文末百度网盘)
① 增加4个按键,控制电机启动、转角、加速度、减速度、速度上限
② 增加数码管,显示信息
在这里插入图片描述

七、总结
上述内容对T型加减速的过程进行了推导与计算,可以实现常规的T型加减速运动。但是其中有两个缺陷:

  1. 起始速度从0开始,在步进电机实际使用过程中,起始速度没有必要从零开始,如果速度不从0开始,上述递推过程是不成立的
  2. ∆t(n+1)=(4n-1)/(4n+1)∆tn递推公式对51单片机而言,计算量很大,12MHz晶振频率下,计算一次需要约0.8ms,导致脉冲频率上限很低,在驱动器细分为2的情况下,步进电机速度上限约为200RPM,如采用更大细分,速度上限会进一步降低

对此两个问题点,对T型加减速进行了优化,请见下一节内容

八、附件
Hex测试程序+测试视频请见百度网盘
链接: https://pan.baidu.com/s/1j70qb8vVxGnXTfHf4T4qhg
提取码: fnre

Keil源码请见某宝,搜索:【皮皮黄步进电机】

↓↓↓点击下方【目录】,查看本系列全部文章

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python123_Python程序语言设计基础_Python基本图形绘制

turtle八边形绘制 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬ 描述 使用tur…

刘铁猛p3 C# 控制台程序引用System.Windows.Forms报错,无法引用程序集 解决方法

学习刘铁猛老师c#入门详解第三集 引用System.Windows.Forms时报错了 错误图例 为什么控制台应用添加项目引用里面为什么找不到任何项目,同时从com里面加的引用会出现警告? 其实是创建控制台程序的时候出错了 解决方法 重新创建控制台程序 选控制台应…

Linux下,用ufw实现端口关闭、流量控制(二)

本文是 网安小白的端口关闭实践 的续篇。 海量报文,一手掌握,你值得拥有,让我们开始吧~ ufw 与 iptables的关系 理论介绍: ufw(Uncomplicated Firewall)是一个基于iptables的前端工具&#xf…

Leetcode 每日一题 290.单词规律

目录 一、问题分析 二、解题思路 三、代码实现 四、复杂度分析 五、总结 在编程的世界里,我们常常会遇到各种有趣的字符串匹配问题。今天要探讨的就是这样一个问题:给定一种规律 pattern 和一个字符串 s,判断 s 是否遵循与 pattern 相同…

Java项目实战II基于微信小程序的旅游社交平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着移动互联网的迅猛发展,旅游已经成为人…

Mybatis-Plus的主要API

一、实体类操作相关API BaseMapper<T>接口 功能&#xff1a;这是 MyBatis - Plus 为每个实体类对应的 Mapper 接口提供的基础接口。它提供了一系列基本的 CRUD&#xff08;增删改查&#xff09;操作方法。例如insert(T entity)方法用于插入一条记录&#xff0c;d…

第一个 JSP 程序

一个简单的 JSP 程序&#xff1a; 使用 IDEA 开发工具新建一个 maven 项目&#xff0c;具体操作如图所示&#xff1a; 配置 Tomcat 服务器 项目结构如下图所示&#xff1a; 3. 修改 index.jsp 页面的代码&#xff1a; <% page language"java" contentType&q…

使用android studio写一个Android的远程通信软件(APP),有通讯的发送和接收消息界面

以下是使用 Android Studio 基于 Java 语言编写一个简单的 Android APP 实现远程通信&#xff08;这里以 TCP 通信为例&#xff09;的代码示例&#xff0c;包含基本的通信界面以及发送和接收消息功能。 1. 创建项目 打开 Android Studio&#xff0c;新建一个 Empty Activity …

记录下nginx接口代理配置问题

其中api和api1是前面定义的upstream&#xff0c;ip相同只是端口不同。 一开始/api1/直接 像api一样 proxy_pass http://api1这样是不行的&#xff0c;因为会代理到 后端的 /api1/...接口&#xff0c;而后端实际接口地址是 /api/..... 所以必须像上面写法才能将外网的 /api…

【项目】基于PaddleOCR的文字检测识别项目

【项目】基于PaddleOCR的文字检测识别项目 简介安装与使用&#xff08;1&#xff09;Paddle环境安装&#xff08;2&#xff09;模型预测&#xff08;文本检测文本识别&#xff09;&#xff08;3&#xff09;文本检测识别模型训练&#xff08;4&#xff09;本地模型训练与预测&a…

mock.js介绍

mock.js http://mockjs.com/ 1、mock的介绍 *** 生成随机数据&#xff0c;拦截 Ajax 请求。** 通过随机数据&#xff0c;模拟各种场景&#xff1b;不需要修改既有代码&#xff0c;就可以拦截 Ajax 请求&#xff0c;返回模拟的响应数据&#xff1b;支持生成随机的文本、数字…

重磅升级:OpenAI o1模型上手实测,从芯片架构分析到象棋残局判断的全能表现

引言 昨日&#xff0c;在圣诞节系列发布会的第一天&#xff0c;OpenAI终于给我们带来了令人振奋的更新&#xff0c;这些更新有望塑造AI互动的未来。备受期待的OpenAI o1正式版的推出&#xff0c;标志着ChatGPT体验的重大进化&#xff0c;宣告了AI驱动应用新时代的开始。o1现已可…

DataSophon集成CMAK KafkaManager

本次集成基于DDP1.2.1 集成CMAK-3.0.0.6 设计的json和tar包我放网盘了. 通过网盘分享的文件&#xff1a;DDP集成CMAK 链接: https://pan.baidu.com/s/1BR70Ajj9FxvjBlsOX4Ivhw?pwdcpmc 提取码: cpmc CMAK github上提供了zip压缩包.将压缩包解压之后 在根目录下加入启动脚本…

【vivado】时序报告--best时序和worst时序

利用vivado进行开发时&#xff0c;生成best时序报告和worst时序报告。 best时序报告 slow选择min_max&#xff0c;fast选择none。 worst时序报告 fast选择min_max&#xff0c;slow选择none。

EasyMedia播放rtsprtmp视频流(flvhls)

学习链接 MisterZhang/EasyMedia - gitee地址 EasyMedia转码rtsp视频流flv格式&#xff0c;hls格式&#xff0c;H5页面播放flv流视频 EasyMedia播放rtsp视频流&#xff08;vue2、vue3皆可用&#xff09; EasyMedia转码rtsp视频流flv格式&#xff0c;hls格式&#xff0c;H5页…

Linux C/C++编程中的多线程编程基本概念

【图书推荐】《Linux C与C一线开发实践&#xff08;第2版&#xff09;》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com…

FPGA工作原理、架构及底层资源

FPGA工作原理、架构及底层资源 文章目录 FPGA工作原理、架构及底层资源前言一、FPGA工作原理二、FPGA架构及底层资源 1.FPGA架构2.FPGA底层资源 2.1可编程输入/输出单元简称&#xff08;IOB&#xff09;2.2可配置逻辑块2.3丰富的布线资源2.4数字时钟管理模块(DCM)2.5嵌入式块 …

C语言程序设计P5-3【应用函数进行程序设计 | 第三节】——知识要点:函数的嵌套调用和递归调用

知识要点&#xff1a;函数的嵌套调用和递归调用 视频 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 本任务要求用递归法求 n!。 我们知道n!n(n-1)(n-2)……1n(n-1)!递归公式为&#xff1a; 1.上面公式分解为n!n(n-1)!&#xff0c;即将求n!的问题变为…

word实践:正文/标题/表图等的共用模板样式设置

说在前面 最近使用word新建文件很多&#xff0c;发现要给大毛病&#xff0c;每次新建一个word文件&#xff0c;标题/正文的字体、大小和间距都要重新设置一遍&#xff0c;而且每次设置这些样式都忘记了参数&#xff0c;今天记录一下&#xff0c;以便后续方便查看使用。现在就以…

【工具变量】上市公司企业劳动密集度数据(2008-2023年)

一、测算方式&#xff1a; 参考《数量经济技术经济研究》陈勇兵&#xff08;2023&#xff09;老师的做法&#xff0c;使用员工数量与销售收入的比值作为劳动密集度的度量标准* o/ b% C( e* U我们做的比他完善&#xff0c;分为四类大家可以做核心变量或者稳健性检验Labor1&…