步进电机运动八大算法

     引导一种模块化(Module)设计思想,将传统步进电机的控制器(controller)、驱动器(Driver)、运动算法(Arithmetic)三合一。

对比国内外步进电机驱动原理和已有工作,结合各种硬件特性,改进或实现了可实际移植并用于步进电机控制八大算法。本产品为步进电机实际控制算法实现源代码,包括市面上常用的梯形加减速算法、SPTA算法、PWM专用通道算法、特征拟合算法、任意形状的s形加减速七段法、s形logistics函数法、DMA算法、从定时器法。可用于实际项目和相关研究之用。


1、T梯形加减速算法

梯形算法的速度轮廓是梯形,故而得名,对梯形求导数可以得到矩形,因此本算法直接从勾勒加速度曲线入手,进行数值积分得出速度轮廓,进而转换为对应的定时器预设值,从而控制电机的速度变化,达到想要的效果。

2、SPTA算法


SPTA算法根据用户输入的加速度和速度以及总脉冲数,自动计算加减速过程所需的定时器装载值,也不需要额外的RAM来存储表格,算法效率高、灵活方便,特别适合移植到一些资源紧俏的单片机,比如51单片机等。

3、PWM专用通道加减速算法

一般来说,采用单片机控制步进电机的方法是在定时器的中断处理函数中,对于特定的IO口进行操作来产生脉冲,这种方法的好处是灵活,可以方便的移植到各种类型的单片机,只要求该单片机具有定时器和多余的GPIO,几乎所有的单片机都能满足要求。


但是随着单片机功能的不断增强,CPU负担逐渐增多,这种方式自身缺点也逐渐显现,那就是占用了较多的计算资源。替代的办法就是采用定时器专用的PWM通道来产生所需的硬件脉冲,这样在不经常启动停止的工况下,不再需要CPU的干预,大大提高了效率。

4、特征拟合算法


该算法充分利用所选的步进电机特性曲线来选择加减速轮廓,具有非常大化电机能力的优点,而且算法占用的空间少,对于特定的步进电机具有带载能力非常大化的优点,在小负载测试中发现,使用梯形加减速算法可以在3s内完成无丢步的运动,换为该算法,可以实现2.2s无丢步加减速。

5、任意形状的S形加减速

此为S形七段法。如果从加速度轮廓上看,梯形加减速的加速度是矩形的,而且在速度切换点,加速度从正一下子变为负,会有明显的响声,因此,有必要开发更为平滑的算法。那就是S形加减速。针对S形加减速,具体做法有很多,比较简单的做法是采用sigmoid函数,一切有S形状的函数都可以拿来做基础S函数,比如log函数的变形,sin函数。不过,这些函数在S曲线的计算公式上虽然简单了,但是由于可调参数太少,导致了无法根据现实情况随意更改S曲线形尸缺少灵活性。为此,本店在理论推导的基础上推出任意形状的S形曲线算法。首先规划运动的加速度,然后积分得到速度轮廓,进而转换为步进电机的频率轮廓。

6、S形加减速logistic函数法


S曲线常见的方法是七段法,在很多论文中都有涉及,该方法的灵活性好,可以指定任意一段加速度以及斜率。但该方法也有缺点,即在于过于灵活导致参数众多,本方法采用的logistic函数法,参数少,易于掌控。

7、DMA算法


DMA算法采用新的处理方式,只有在需要改变步进脉冲频率的时候再进入中断,这样可以提高CPU的效率,让CPU专注于执行计算密集型的工作,给任务多、计算复杂的应用提供了一种更好的解决方案。

8、从定时器法(SLAVER TIMER)

SLAVER算法是一种提升总线利用率的方法,使用两个定时器,一个输出PWM,一个工作在计数器模尸把PWM输出的同时,让计数器对其进行计数,从而释放了总线,提升了工程整体效率。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

被骗进一个很隐蔽的外包公司,入职一个月才发现,已经有了社保记录,简历污了,以后面试有影响吗?...

职场的套路防不胜防,一不留神就会掉坑,一位网友就被“骗”进了外包公司,他说公司非常隐蔽,入职一个月才发现是外包,但已经有了社保记录,简历污了,不知道对以后面试有影响吗?楼主说&a…

【含源码】用python做游戏有多简单好玩

有很多同学问我还有其他什么小游戏吗,游戏是怎么做的,难不难。我就用两篇文章来介绍一下,如何使用Python做游戏。 兔子与灌 俄罗斯方块 休闲五子棋 走迷宫 推箱子 消消乐 超多小游戏玩转不停↓ 更多小游戏可以评论区讨论哦,喜欢…

保姆级使用PyTorch训练与评估自己的Replknet网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址:https://github.com/Fafa-DL/Awesome-Backbones 操作教程:https://www.bilibili.co…

【C++】模板进阶

模板进阶 文章目录模板进阶1、非类型模板参数2、模板的特化2.1.概念2.2.函数模板特化2.3.类模板特化2.3.1.全特化2.3.2.偏特化2.4.类模板特化示例3、模板总结1、非类型模板参数 模板参数分类类型形参与非类型形参。类型模板参数:出现在模板参数列表中,跟…

技术人的管理学-团队管理

主要内容前言团队管理,如何让猪上树?选人育人用人留人总结前言 本周报名参加了 风 变 科 技推出的管理学MTP培训课,花了点小钱,感觉还是有用的,可惜时间安排都在8点以后,刚好是看孩子的时间,只…

io流概述

public static void main(String[] args) throws IOException {//1.与文件建立联系 File->数据源File src new File("D://AAA/test.txt");//2.创建文件字节输入流->管道//InputStream is new FileInputStream(src);InputStream is new FileInputStream(&quo…

中科亿海微FPGA

国产FPGA中,紫光、安路、高云称得上是三小龙,其他的半斤八两,中科亿海微也算是其中之一。 其产品为亿海神针系列,如下: 可见其最小规模也有9.2KLUT,最大竟有136K之多了,对比其他国产&#xff0…

18、江科大stm32视频学习笔记——USART串口发送串口发送和接收

目录 一、USART串口发送 1、电路图 2、printf函数的移植方法 3、serial.c 4、main.c 5、解决直接写汉字,编译器报错 二 、USART串口发送和接收 1、查询实现 2、中断实现 (1)在Serial.c中添加的代码 (2)主函…

【Spring从入门到实战】第 4 讲:SpringAOP实现以及原理

本文已收录于专栏🌲《Spring从入门到实战》🌲专栏前言 大家好,我是执梗。本专栏将从Spring入门开始讲起,详细讲解各类配置的使用以及原因,到使用SpringBoot进行开发实战,旨在记录学习生活的同时也希望能帮到…

IDEA常用插件列表

一 背景 IDEA常用插件列表,用来提供工作效率。你都安装了吗 IntelliJ IDEA 默认安装并提供了非常多的工具,比如 Maven Integration、Markdown support、SSH Remote Run 等。其中有很多好用,但是不为人知的工具。 二 插件列表 阿里代码规约…

Linux基础命令大全(上)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放&#xff0…

pytorch-在竞赛中去摸索用法,用房价预测比赛了解数据处理流程

实战Kaggle比赛:房价预测 让我们动手实战一个Kaggle比赛:房价预测House Prices - Advanced Regression Techniques | Kaggle。本文将提供未经调优的数据的预处理、模型的设计和超参数的选择。通过动手操作、仔细观察实验现象、认真分析实验结果并不断调…

【算法入门】字符串基础

目录 一.字符串引言1.字符串基础二.洛谷P5734详解1.字符串相关库函数💫(1) strcpy函数 💫💫(2) strcat函数 💫💫(3)strstr函数 💫2.题…

JavaScript的事件传播机制

你在学习和编写JavaScript时可能听说过事件冒泡(event bubbling)。它会发生在多个元素存在嵌套关系,并且这些元素都注册了同一事件(例如click)的监听器时。 但是事件冒泡只是事件机制的一部分。它经常与事件捕获(event capturing)和事件传播…

ChatGPT的N种用法(持续更新中。。。)

目录前言一、语法更正二、文本翻译三、语言转换3-1、Python-->JAVA四、代码解释-1五、代码解释-2六、修复代码错误六、作为百科全书七、信息提取七、好友聊天八、创意生成器8-1、VR和密室结合8-2、再结合AR九、采访问题9-1、采访问题清单9-2、采访问题清单并给出相应答案十、…

2分钟彻底搞懂“高内聚,低耦合”

💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…

一个nginx的小项目,不写代码,实现在局域网内访问其他电脑的网页

准备工作 下载nginx //官网 https://nginx.org/en/download.html //直接下载 https://nginx.org/download/nginx-1.23.3.zip解压 下载一个html项目,或者自己随便写一个 我是直接下载的,然后使用的是第一个01 https://gitee.com/StarPort/HTML_CSSTe…

从SpringBoot生命周期来看服务注册到Eureka/Nacos的时机

文章目录服务注册入口1、Eureka2、Nacos总结服务注册入口 无论是将服务注册到哪种服务注册中心,服务注册的时机都是在AbstractApplicationContext#finishRefresh()方法中;即Spring容器加载完成、Web服务启动之后; 从SpringCloud规范来看&am…

C语言实现学生成绩管理系统思考

学生成绩管理系统思考 作业要求: 目录 思路 基本函数 学习理解大佬的代码: 完成作业: 思路 学生成绩管理系统,首先要初始化系统, 用C语言做学生实验管理系统要求实现对某班学生3门课程(包括语文、数…

Python 基础教程【2】:条件语句和循环语句

本文已收录于专栏🌻《Python 基础》文章目录1、流程控制语句1.1 顺序语句1.2 条件语句1.2.1 if语句注意事项1.2.2 三元运算符1.2.3 自动类型转换1.3 循环语句1.3.1 while 循环1.3.2 for-in 循环1.3.3 for...else 循环1.3.4 break 和 continue 的区别2、实践——猜数…
最新文章