#具体操作
写好倒立摆程序的关键是确定pid算法的程序和参数值。我根据网上查找的资料写了用stm32F407控制倒立摆的pid程序,现在我将程序分享给大家。

我的程序主要是根据位置式离散pid公式pwm=Kpe(k)+Ki∑e(k)+Kd[e(k-1)-e(k-1)]来写,其中e(k)代表本次偏差,e(k-1)代表上一次的偏差,∑e(k)代表e(k)以及之前的偏差的累积和;pwm代表输出给电机的pwm波的占空比,Kp、Ki、Kd是需要调试的参数,P用于提高响应速度、I用于减小静差、D用于抑制震荡。

倒立摆我选择的是平衡小车之家的产品,用电位器判断倾角,用编码器判断转动的位置,所以是两级pid控制。因为参数比较多,我省略了积分项,于是公式就简化为pwm=Kp*e(k)+Kd[e(k-1)-e(k-1)]。这样做减少了调试的工作量,经过实际测试也能很好地让倒立摆保持平衡。
在控制倒立摆时,一般先通过电位器调整倒立摆的倾角。pid程序如下:
根据pid公式同样可类推得到编码器的pid控制程序。程序如下:
当然,在使用编码器的时候要配置32单片机定时器的编码器模式,配置程序如下:


配置完成后就可以写总的两级pid程序,我是用定时器中断函数来实现的。在写的时候要注意中断内程序的执行时间不能超出定时器中断的循环时长,否则响应会出问题。中断程序如下:

最后是调整pid参数的阶段。我的调试方法是加按键来快速修改参数,这样不需要多次编译程序,节省时间。具体操作是在中断函数中加了通过按键改变参数的程序,并将修改的参数打印在电脑屏幕上,程序如下:

这些操作就是我在写代码时候大致的心路历程了,希望能帮助到大家。

倒立摆stm32F407控制程序相关推荐

  1. 倒立摆C语言双闭环控制程序,基于双闭环PID控制的一阶倒立摆控制系统的设计(最终版)...

    <基于双闭环PID控制的一阶倒立摆控制系统的设计.doc>由会员分享,可在线阅读全文,更多相关<基于双闭环PID控制的一阶倒立摆控制系统的设计(最终版)>请在www.woc88 ...

  2. MFC的固高环形倒立摆GRIP2002实验平台

    固高环形倒立摆GRIP2002是基于GT-400-SV-PCI运动控制卡的一个二级环形倒立摆(摆杆和连杆两根杆的摆),固高公司提供了一个DOS环境下的Demo和MATLAB 7.0的simulink的 ...

  3. SimMechanics/Second Generation倒立摆模型建立及初步仿真学习

    笔者最近捣鼓Simulink,发现MATLAB的仿真模块真的十分强大,以前只是在命令窗口敲点代码,直到不小心敲入simulink,就一发不可收拾.话说simulink的模块化建模确实方便,只要拖拽框框 ...

  4. 基于惯性轮倒立摆原理的自行车

    背景 自平衡车有很多种,其中一种是利用惯性轮倒立摆原理,早在2003年,日本的村田顽童就已经问世,它采用的就是惯性轮倒立摆原理.后来其他研究组织和个人纷纷效仿,制作出了五花八门的基于惯性轮倒立摆原理的 ...

  5. matlab反馈模型,—倒立摆状态反馈系统的建模及matlab仿真.docx

    倒立摆状态反馈系统的建模及matlab仿真 课题名称:倒立摆状态反馈系统的建模及matlab仿真 学生姓名: 谢凯 学 号:2011330380229 班 级:电气工程及其自动化2班 指导老师:高金凤 ...

  6. 倒立摆的数学模型,matlab程序,simulink,c语言控制,一级倒立摆的控制设计

    本论文主要研究内容 倒立摆装置被公认为自动控制理论中的典型试验设备,也是控制理论教学和科研中不可多得的典型物理模型.本论文的研究旨在完成这样一系列工作: 介绍倒立摆系统控制的研究发展过程和现状:研究单 ...

  7. 直线一级倒立摆控制(自起摆和稳态控制)

    1.控制设计对象结构示意图 图1  倒立摆模型示意图 图2 摆杆向左起摆过程示意图(左)及摆杆相对小车的受力分析图(右) 2.控制对象特征参数 M 小车质量 1.096 Kg              ...

  8. Matlab直线一级倒立摆控制方法研究

    1 研究背景 倒立摆是一个开环不稳定的强非线性系统,其控制策略与杂技运动员顶杆平衡表演的技巧有异曲同工之处,目的在于使得摆杆处于临界稳定状态,是进行控制理论研究的典型实验平台.20世纪50年代,麻省理 ...

  9. pid算法通俗解释,平衡车,倒立摆,适合不理解PID算法的人来看!

                        先插句广告,本人QQ522414928,不熟悉PID算法的可以一起交流学习,随时在线 http://liuxinyu520zhuanshu.qzone.qq.c ...

最新文章

  1. EDM营销中HTML邮件设计方法和技巧
  2. JS跨域访问(ajax跨域)
  3. mysql连接代替子查询_MySQL优化之使用连接(join)代替子查询
  4. 春联c语言,千古绝对过年春节对联80幅
  5. oracle sql within,Oracle SQL Model Clause
  6. 怎样使用Google chrome播放 .swf 文件
  7. cad汉仪长仿宋体_hzcf.shx字体
  8. 三阶魔方还原步骤图_魔方小站三阶魔方盲拧视频教程 (蒙眼拧魔方教程|还原公式图解|3D动画)...
  9. 12天,这本《重学Java设计模式》PDF书籍下载量9k,新增粉丝1400人,Github上全球推荐榜!
  10. java实现 洛谷 P1427 小鱼的数字游戏
  11. 前端实习工作找不到,怎么增长实战经验
  12. Transformer Fusion for Indoor RGB-D Semantic Segmentation非官方自己实现的代码
  13. 如何做到大容量硬盘对拷
  14. 计算机excel实发工资高中低,EXCEL表格中计算实发工资的公式
  15. 15、wxapp - 小程序登录以及全局参数 - 微擎小程序模块应用开发
  16. golang 的 strings 包的 Trim 的用法介绍
  17. excel导入mysql并批量查询_Excel导入MySql数据库批量操作
  18. (三)JNI常用示例
  19. img图片下面有间隙的6种解决方案
  20. “好评返现”违法,有商家被罚,双11剁手党们坐不住了

热门文章

  1. 发展规划可视化 电网_智能电网调度优化及可视化设计
  2. 工业机器人码垛教学实施_工业机器人课程丨看似简单的工业机器人码垛,你会操作吗?...
  3. 计算机vb考试能插u盘么,08年计算机二级VisualBasic辅导:用VB打开任意盘(硬盘/U盘/光盘)的文件...
  4. 红米k40显示屏蔽相册方法分享
  5. Android学习之路4——音乐播放器后台播放
  6. appium + python 常用的xpath定位
  7. matlab dock什么意思,Mac电脑Dock是什么意思,Dock怎么用?
  8. 将两个span标签并列
  9. js高级函数之(函数)柯里化方法
  10. csu:1919: 不醉不归