| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 嵌入式 -> stm32f103c8t6+编码电机利用PID算法组成的绝对匀速小车 -> 正文阅读 |
|
|
[嵌入式]stm32f103c8t6+编码电机利用PID算法组成的绝对匀速小车 |
|
我的风格就是先上代码! main.c:
TIM2计数:
一,硬件 还是我们常用的stm32f103c8t6(贫困大学生专属)。常见编码电机一个(AB相)当然也可以用编码器,一样的原理。L298N电机驱动,用于控制编码电机。还有一系列电源模块,这里我就不再详细介绍,因为我主要讲解的是PID这个算法和软件方面 二,软件 ? ? ? ? 对于软件方面我在代码段有详细的注释讲解,在这里我给大家粗略的讲解一下,首先TIM4设置成编码器模式用于记录编码器在规定时间内(我设置的5ms)输出的脉冲个数(实际上是上升和下降沿个数),然后根据编码器的参数和电机的转速比和车轮周长算出在这个时间段内小车走过的路程。TIM2设置的是计数器模式,并开启了溢出中断,溢出时间为5ms,意思就是每五毫秒中断一次读取脉冲个数。然后把实际速度和目标速度比较,带入增量式PID算法中,把PID算法计算出来的值反馈给控制电机的pwm波的占空比,由此形成闭环控制。具体的操作我在代码段有详细讲解。 ? ? ? ? 接下来我给大家讲一下我对PID算法我自己的理解和调参技巧,PID按照字面意思来讲就是比例积分微分。对于比例来说,它是实时的目标值和实际值的差,我们来举个例子,一辆车目标速度是5m/s,当前实际速度是0m/s,此时差值是5m/s,应该加速,当加速到2.5m/s,差值是2.5m/s,还是应该加速,不过反馈给输出的比例就比差值为5m/s时小了一半,接下来讲一下P调参技巧。对于P的调参首先要把I和D归零,然后确定数量级,遵循从小到大的原则,当P较小时会出现以下这种情况:
大家就会很好奇,实际为什么永远到不了目标,这是因为阻力的作用,我们知道电机轮子在运转时会受到空气阻力的影响,当P较小时,在一个微妙的时刻反馈给输出的值恰好等于空气阻力抵消的值?,就会产生一个微妙的平衡,并一直保持这种平衡。这时,我们需要在同一个数量级的条件下适当的调大P的值,调大到实际值前期稍微超调,后期略小于实际值,这是很理想的状态,如下图:
? ? ? ? ?这时我们固定P不动,调I,调I也是遵循从小到大的原则,且通常和P保持着相同的数量级,最后到实际前期略超调于目标,后期在目标处轻微振荡,如图:
这时我们固定PI不动,调D,也是从小到大且保持相同的数量级,到这个状态即可:
? ? ? ? 最后我对PID这个算法的理解就是,P让实际趋近于目标,I让这个趋近来的更快更剧烈,D则起到一个阻尼效应,让整个过程变得更加的丝滑,振荡情况更加的小。 ? ? ? ? 对于PID算法有两种形式,增量式和位置式,这次给大家讲解的是位置式,增量式就是拿当前位置式的值减去上一次位置式的值然后累加起来反馈到输出,增量式相对而言会更加的复杂,不过大家搞清楚位置式之后,等以后要应用到增量式的时候会理解的很快,网上查查相关资料很快就可以理解。(我的小车用的增量式,大家可以结合起来看看) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Vincent njw,想让学习变得简单! |
|
|
| 嵌入式 最新文章 |
| 基于高精度单片机开发红外测温仪方案 |
| 89C51单片机与DAC0832 |
| 基于51单片机宠物自动投料喂食器控制系统仿 |
| 《痞子衡嵌入式半月刊》 第 68 期 |
| 多思计组实验实验七 简单模型机实验 |
| CSC7720 |
| 启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
| STM32初探 |
| STM32 总结 |
| 【STM32】CubeMX例程四---定时器中断(附工 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/2 13:26:24- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |