简易旋转倒立摆及控制系统实现方案_旋转倒立摆与pid控制

简易旋转倒立摆及控制系统实现方案_旋转倒立摆与pid控制+2017年成都信息工程大学第六届“电协杯”电子设计竞赛简易旋转倒立摆及控制装置(I题)设计报告参赛队编号:XG-66-本-YZ2017年11月30日摘要本系统要求设计并制作一个简易旋转倒立摆及控制装置,其中角度传感器WDD35D4电位计、直流电机和单片机STM32F103RCT6最小系统是本系统的核心部分。利用电位计进行数据采集,在控制摆杆E旋转角度,旋轴D摆动速

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

完整文档和源码:https://github.com/Kevincoooool/inverted-pendulum
+
2017年成都信息工程大学
第六届“电协杯”电子设计竞赛

简易旋转倒立摆及控制装置(I题)
设计报告

参赛队编号: XG-66-本-YZ

2017年11月30日

摘 要

   本系统要求设计并制作一个简易旋转倒立摆及控制装置,其中角度传感器WDD35D4电位计、直流电机和单片机STM32F103RCT6最小系统是本系统的核心部分。利用电位计进行数据采集,在控制摆杆E旋转角度,旋轴D摆动速度是通过测试得到PID系数Kp,Ki,Kd,能够实现倒立摆系统的要求。将传感器的电位信号通过A/D转换送给单片机,并通过OLED液晶屏显示读到的A/D值,PID输出,另加入按键实现人机交互功能,最后实验表明,该系统达到题目所需要求。

关键词:倒立摆,数字电位器,单片机,PID闭环控制

目录
一、系统方案 1
1.1、系统控制方案的论证与选择 1
1.2、角度传感器的论证与选择 1
1.3、电机的论证与选择 2
1.4、电机驱动方案的论证与选择 2
二、系统理论分析与计算 2
2.1、系统可行性的分析 2
2.1.1、控制方案的分析 2
2.1.2、角度传感器的分析 3
2.2、摆杆角度的有关计算 3
2.2.1、电位器信号与摆角的换算 3
2.2.2、角度输出与PWM的换算 3
三、电路与程序设计 3
3.1、电路的设计 3
3.1.1系统总体框图 3
3.1.2单片机STM32最小系统电路原理图 5
3.1.3电机驱动子系统电路原理图 5
3.1.4稳压电源子系统电路原理图 6
3.1.5电源 6
3.2、程序的设计 6
3.2.1程序功能描述与设计思路 6
3.2.2程序流程图 6
四、测试方案与测试结果 8
1、测试方案 8
2、测试条件与仪器 8
3、测试结果及分析 8
(1)测试结果(数据) 8
(2)测试分析与结论 8
五、结论与心得 9
六、参考文献 9
附录1:电路原理图 10
附录2:源程序 12

简易旋转倒立摆及控制装置(I题)
【大三组】
一、系统方案
本系统主要由电源模块、电机驱动模块、系统控制模块、角度传感器模块、显示模块组成,下面分别论证这几个模块的选择。
1.1、系统控制方案的论证与选择
方案一:采用传统的51系列单片机
传统的51单片机为8位机,价格便宜,控制简单,但是运算速度慢,片内资源少,存储容量小,难以存储大体积的程序和实现快速精准的反应控制。并且受时钟限制,计时精度不高,外围电路也增加了系统的不可靠性。

方案二:
采用大规模可编程逻辑器件。FPGA内部具有独立的I/O接口和逻辑单元,使用灵活,适用性强,且相对单片机来说,还有速度快,外围电路少,集成度高的特点,因此特别适用于复杂逻辑电路设计。但是FPGA的成本偏高,算术运算能力不强,而且由于本设计对输出处理的速度要求不高,所以FPGA高速处理的优势得不到充分体现。

方案三:采用STM32F103系列单片机
我们采用STM32F103RCT6,该款单片机资源丰富16位的单片机使PWM信号的脉冲宽度实现微秒级的变化,从而提高电机的转角精度单片机完成控制算法,再将计算结果转化为 PWM信号输出到电机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可以更稳定。

所以,综上方案的比较,控制系统选择方案三。
1.2、角度传感器的论证与选择
方案一:使用MPU6050姿态传感器
改模块整合了3轴陀螺仪和3轴加速度,输出六轴旋转矩阵、四元数,通过处理后可得到摆杆的旋转角度及其加速度,但因数据更新慢,无法正确反馈角度,当电机启动,摆杆摆动,切向方向有加速,影响X轴方向的加速度,数据从而无法精确控制摆的角度,而且受外界干扰比较大,所以放弃此方案。
方案二:使用电位器
采用电位器作为角度传感器来测角度,通过摆角不同从而电阻不同,通过AD测出电压值,角度与电压值呈线性关系。该方案线性好,数据更新快,实时反映角度,从而精确摆角。更适合此设计。
综合考虑下,角度传感器使用WDD35数字电位器。
1.3、电机的论证与选择
方案一:采用舵机的缺点是不利于调节速度,扭力小,不利于摆动,所以放弃此
方案。

方案二:采用步进电机的优点是价格便宜,缺点是动态性能很差,扭力小,所以
加速度小,而且有震动,放弃此方案。

方案三:采用减速电机,具有永磁式和反应式的优点,扭力大,加速快,易于杆的摆动,适合设计要求 。
基于上面分析,电机选择方案三。
1.4、电机驱动方案的论证与选择
方案一:LM298N电机驱动控制原理简单,输出波动小,线性好,对邻近电路影响小。缺点功率器件工作在线性区,功率低和散热问题严重,驱动功率小,而本系统电机功率大,而且压降大,容易发热,影响驱动性能。

方案二:TB6612内部集成双全桥MOSFET驱动,轮换效率较高,单路可提供的1A的电流,且驱动功率大,体积小,不易发热,

综上考虑,选择方案二。
二、系统理论分析与计算
2.1、系统可行性的分析
2.1.1、控制方案的分析
简单地开环控制,根据电位计输出信号来换算出PWM驱动电机转动,电机容易驱动转轴D错过摆杆倒立位置,系统保持摆杆倒立不稳定。由于摆杆要倒立,就必须随着转轴D的转动而动,在摆杆倒立时距中心轴线偏角比较大时就需要加速保持倒立采用典型的PID闭环控制方法,闭环控制能够根据反馈信号知道摆杆和垂直位置偏差角度的大小输出相适应的PWM控制电机的速度尽快恢复倒立状态。单级倒立摆控制系统最经典的是PID控制方法,后续又出现LQR,模糊PID等一些控制方法,但是对于单级倒立摆,经典的PID已经足够,对于多级倒立摆,如二级,三级则需要用到较为复杂的数学模型,通过仿真得到比较理想的参数。对于四级倒立摆则需要更为复杂的控制方法,由于条件有限,我们对该系统建立了比较理想的的基本模型,进行估算三个参数值,并进行不断地调试,得到比较适合该系统的参数值。
2.1.2、角度传感器的分析
由于编码器比较贵,而且现有的条件我们不容易安装,所以选择了WDD35 D4电位计,价格比较合适,比较熟悉控制方法,而且该传感器能够360度无限圈旋转,这就满足该旋转单级倒立摆的调试过程及其测试要求,但是该传感器有一个盲区,010K分界线处出现跳转,这一部分我们最初很不幸放在了最上面,似的在测试保持倒立时的PID参数时,电机响应太快摆杆刚有一很小角度,电机对应的PWM值出现跳转,这时电机的速度很大,摆杆来不及保持倒立,转轴D已经旋转较大角度,摆杆摆出绝对值小于165度的范围,电机不再反应,不能保持倒立,但是将盲区移开上面-165°+165°时就可以解决电机响应过快这个问题,电机就可以按照控制的要求作出相应的响应速度。而且该电位计是塑料的比较轻,可以降低机械损失,方便系统的调试工作。
2.2、摆杆角度的有关计算
2.2.1、电位器信号与摆角的换算
电位计两个端子接GND和3.3V,旋转一周360度,而AD采集到的最大值为4095,所以4095/360即为单片机读到的角度最小单位值。
2.2.2、角度输出与PWM的换算
通过摆臂旋转将经A/D转换后的电压值运用PID自动控制理论进行数据处理,可得到一个可作为PWM占空比,一次换算出PWM占空比,赋值给电机,实现控制蒂娜及转速的目的。

三、电路与程序设计
3.1、电路的设计
3.1.1系统总体框图
系统总体框图如图1所示

图1 系统总体框图
3.1.2单片机STM32最小系统电路原理图

图2 供电5v子系统电路
3.1.3电机驱动子系统电路原理图

图3 电机驱动子系统电路
3.1.4稳压电源子系统电路原理图

图4 稳压电源子系统电路

3.1.5电源
使用12.6V航模电池通过LM2596模块降压到5V供单片机以及其他外设使用。
3.2、程序的设计
3.2.1程序功能描述与设计思路
1、程序功能描述
根据本题题目要求设计简易旋转倒立摆系统程序,题目中未涉及按键及显示等要求,但为对系统操作简易化和功能分离化,能在系统调试中掌握相关数据的变化及时调整部分内容,在设计时加入按键和液晶显示模块,实现对系统实时监控的及时的调节。
本次按键设置仅为对题目中不同要求的功能实现简便切换。
显示部分主要是对旋转杆相对起始位置旋转时角度变化,通过A/D转换模块时时输出摆杆偏转位置,从而参考对相关量的设定,调整。
2、程序设计思路
为增强程序的可读性使程序更清晰明了,在设计程序时结合相关问题,将程序有效地模块化。做到见明知意,有效帮助理解各函数功能。
考虑到程序涉及模拟量数字量的转换,PWM电机驱动,PID自动控制和液晶显示辅助等内容,将程序按照此功能模块系统划分,逐步编写,最后融合与主函数中,从而实现对题目系统的自动化控制。
3.2.2程序流程图
1、主程序流程图

图5 程序流程图
2、功能函数程序流程图

图6 功能函数程序流程图
四、测试方案与测试结果
1、测试方案
模式1为基本要求1:使摆动角度超-60或+60度,通过反复试验,记录摆杆的摆角,控制PWM的占空比与,换向时间,从而测出适合要求1的电机转速与摇臂的转动幅度。

模式2为基本要求2:使摆杆做圆周运动,在要求1的基础上加大PWM占空比和换向时间,从而增大电机转动速度和摆杆的摆角,使摆杆做圆周运动。

模式3为基本要求3:使摆杆从-165°或+165°自动倒立平衡超过5S。我们采用PID算法,反馈量为摆杆角度,输出为电机转速,通过调节PID的参数,达到摆杆倒立平衡

模式4为发挥部分1:使摆杆从垂直状态到倒立平衡10s。在模式3的基础上增加一个上摆的动作,使摆杆刚好摆到垂直位置通过调节PID的参数,达到摆杆倒立平衡。

模式5为发挥部分2:在外界干扰下仍然保持倒立平衡,我们仍采用模式4 的程序代码,敲击摆杆,调节PID参数,使持续保持倒立平衡。

模式6为发挥部分3:在加5克砝码仍然保持倒立平衡我们仍采用模式4 的程序代码,调节PID参数,使持续保持倒立平衡。
2、测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表。
3、测试结果及分析
(1)测试结果(数据)
摆60度测试:在模式选择后摆杆摆动一个来回后,摆角超过正负60度,摆动连续稳定,符合要求。

圆周运动测试:摆杆在两个来回后顺利做圆周运动。

倒立平衡测试:在摆杆165度左右摆杆迅速自动达到倒立平衡。

从垂直位置倒立平衡:经过反复调试无法稳定。
(2)测试分析与结论
根据上述测试数据,电压与摆杆角度关系,由此可以得出以下结论:
1、电压与摆杆摆角基本呈线性关系说明电位计符合系统设计要求。
2、电机在摆杆在-165°~ +165°和垂直线间夹角与电机响应速度呈现相同趋势,及时保持倒立。
3、摆杆不能再电位计盲区,否则不能正常控制,这不是人为因素。
综上所述,本设计达到设计要求。
五、结论与心得
本文分析了基于旋转倒立摆的摆的平衡系统的结构和特点,结合了单片机控
制设计了平板控制系统。主要研究工作有以下几个方面:
1、对测控系统的原理和组成进行了详细的介绍确定了控制系统的总体设计方
案。
2、确定系统的主控模块、检测模块、电源模块、驱动模块的的电路设计。以STM
公司的STM32F103RCT6为核心,进行完成系统所需的各硬件所需的原理图,采用
了WDD35数字电位计对电压进行测量,从而换算成角度,并对传感器的输出进行了非线性校正以及一系列处理,提高了检测系统的可靠性。
3、完成相关的分析算法
4、和各个功能模块的应用程序的设计,实现了摆杆的平衡控制。整个软件采用模块化、结构化设计思想,使程序便于移植。
5、分析了控制系统中可能存在的各种干扰源,在设计控制系统时,采用软件和
硬件抗干扰技术相结合的方法进行了抗干扰设计保证了控制系统的可靠性
六、参考文献
[1] 谭浩强.C语言程序设计[M].北京:清华大学出版社,2012
[2] 模拟电路与数字电路 电子工业出版社 2009
[3].《电机学》 翟庆志//李艳军//刘明丹//吴利斌 中国电力出版社 2011-04
[4].《全国大学生电子设计竞赛系统设计》 黄智伟 北京行洪航天大学出版社 2011-02
[5].《全国大学生电子设计竞赛常用电路模块制作》 黄智伟 北京行洪航天大学出版社 2011-01
[6].《全国大学生电子设计竞赛制作实训》 黄智伟 北京行洪航天大学出版社 2011-01

附录1:电路原理图

图7 电路原理图

附录2:源程序

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171010.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • docker mysql日志查看_MySQL查看版本

    docker mysql日志查看_MySQL查看版本查询DockerMySQL的版本号1.查找到当前正在运行的容器#dockerps2.进入mysql容器(命令中不带小括号)#dockerexec-it(mysql的名字,或id)bash3.登录mysql,输入账号密码登录(命令中不带小括号)#mysql-u(root)-p(abcd)登录成功以后,会显示该mysql的详细信息,其中包含版本号…

  • 软磁盘阵列「建议收藏」

    软磁盘阵列「建议收藏」磁盘阵列是指通过软件或者硬件的技术来将多个磁盘整合成为一个大的磁盘设备,来实现存储和保护数据的功能。硬件实现的成为硬磁盘阵列,软件实现称为软磁盘阵列,硬件通过磁盘阵列卡上的芯片专门处理raid任务,性能最佳。但由于成本太高大多使用软磁盘阵列,就是mdadm软件,以分区或者磁盘为单位来进行设计。Raid-0(等量模式):将文件内容等量分配到各个磁盘中,大大增强读写速度,但只要硬盘有损坏,将会直接…

  • c语言入门教程–-15字符串的输入与输出

    c语言入门教程–-15字符串的输入与输出

  • 京东抢购Python脚本

    京东抢购Python脚本京东购物车抢购商品Python代码1.准备工作2.代码1.准备工作环境要求:Python3.8.1;Firefox浏览器插件安装:1.安装Python相关库(在Windows的cmd里面安装) pipinstallselenium pipinstalldatetime2.安装Firefox浏览器驱动:GeckoDriver提取码:e4tv(确保电脑已经有Firefox),…

  • minicom指令_Minicom 使用初步

    minicom指令_Minicom 使用初步因为现在电脑基本不配备串行接口,所以,usb转串口成为硬件调试时的必然选择。目前知道的,PL2303的驱动是有的,在dev下的名称是ttyUSB#。minicom,tkterm都是linux下应用比较广泛的串口软件,这里简单介绍minicom使用。一,安装debian系,比如ubuntu、mint等:sudoapt-getinstallminicom二,配置首先,查看串口设备是否可用。l…

  • Java遍历map集合的4中方式

    方法一通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。Map<Integer,Integer>map=newHashMap<Integer,Integer>();for(Map.Entry&l…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号