当前位置:首页 >> 电力/水利 >>

哈工大自控元件课设:一级倒立摆


Harbin Institute of Technology

课程设计说明书

课程名称: 设计题目: 院 班 级:

自控元件课程设计 一级旋转倒立摆系统

系: 控制科学与工程-自动化

设 计 者: 指导教师: 设计时间: 赵辉 伊国兴 2015 年 5-6 月


哈尔滨工业大学

一级旋转倒立摆系统
摘要:对于倒立摆系统的研究长期以来被认为是控制理论及其应用领域里引起 人们极大兴趣的问题。倒立摆系统是一个典型的快速、多变量、非线性、不稳定 系统。 研究倒立摆控制能有效地反应控制中的许多问题。倒立摆研究具有重要的 理论价值和应用价值。 理论上, 它是检验各种新的控制理论和方法的有效实验装 置。应用上,倒立摆广泛应用于控制理论研究、航空航天控制、机器人、杂技顶 杆表演等领域, 在自动化领域中具有重要的价值。本文主要介绍了我们小组研制 的一级旋转式倒立摆系统,它是一个典型的机电一体化系统,采用内置 STM-32 运动控制器和直流电机进行实时运动控制。 关键词:倒立摆;;STM32;增量码盘;直流有刷电机

一、引言................................................................................................................................... 1 二、作品简介........................................................................................................................... 3 三、一级旋转式倒立摆设计概述: ....................................................................................... 4 1.1 系统总体结构 .......................................................................................................... 4 1.2 机械结构.................................................................................................................. 4 1.3 硬件部分.................................................................................................................. 5 1.4 模型建立.................................................................................................................. 5 1.5 模型仿真.................................................................................................................. 8 四、各元件选型及选择理由 ................................................................................................. 16 主控板选型..................................................................................................................... 16 电机选型......................................................................................................................... 18 测量元件选型................................................................................................................. 19 五、成本预算......................................................................................................................... 21 六、设计小结......................................................................................................................... 22 七、应用前景......................................................................................................................... 22 八、参考资料......................................................................................................................... 22 九、 (附)单片机 PWM 控制部分程序 ........................................................................... 23

一、引言
倒立摆控制系统是一个复杂的、不稳定的、非线性系统,是进行控制理论教 学及开展各种控制实验的理想实验平台。许多抽象的控制概念如系统稳定性、可 控性、系统收敛速度和系统抗干扰能力等,都可以通过倒立摆直观的表现出来。 倒立摆是机器人技术、控制理论、计算机控制等多个领域、多种技术的有机 结合,其被控系统本身又是一个绝对不稳定、高阶次、多变量、强耦合的非线性 系统,可以作为一个典型的控制对象对其进行研究。最初研究开始于二十世纪 50 年代,麻省理工学院(MIT)的控制论专家根据火箭发射助推器原理设计出一 级倒立摆实验设备。近年来,新的控制方法不断出现,人们试图通过倒立摆这样 一个典型的控制对象, 检验新的控制方法是否有较强的处理多变量、非线性和绝 对不稳定系统的能力, 从而从中找出最优秀的控制方法。倒立摆系统作为控制理 论研究中的一种比较理想的实验手段,为自动控制理论的教学、实验和科研构建 一个良好的实验平台, 以用来检验某种控制理论或方法的典型方案,促进了控制 系统新理论、新思想的发展。由于控制理论的广泛应用,由此系统研究产生的方 法和技术将在半导体及精密仪器加工、机器人控制技术、人工智能、导弹拦截控 制系统、航空对接控制技术、火箭发射中的垂直度控制、卫星飞行中的姿态控制 和一般工业应用等方面具有广阔的利用开发前景。 平面倒立摆可以比较真实的模 拟火箭的飞行控制和步行机器人的稳定控制等方面的研究。 对倒立摆系统的研究能有效的反映控制中的许多典型问题:如非线性问题、 鲁棒性问题、镇定问题、随动问题以及跟踪问题等。通过对倒立摆的控制,用来 检验新的控制方法是否有较强的处理非线性和不稳定性问题的能力。同时,其控 制方法在军工、航天、机器人和一般工业过程领域中都有着广泛的用途,如机器 人行走过程中的平衡控制、火箭发射中的垂直度控制和卫星飞行中的姿态控制 等。 倒立摆系统具有模块性好和品种多样化的优点, 其基本模块既可是一维直线 运动平台或旋转运动平台, 也可以是两维运动平台。通过增加角度传感器和一节 倒立摆杆,可构成直线单节倒立摆、旋转单节倒立摆或两维单节倒立摆;通过增 加两节倒立摆杆和相应的传感器,则可构成两节直线倒立摆和两节旋转倒立摆。 倒立摆的控制技巧和杂技运动员倒立平衡表演技巧有异曲同工之处, 极富趣 味性, 学习自动控制课程的学生通过使用它来验证所学的控制理论和算法,加深 对所学课程的理解。 由于倒立摆系统机械结构简单、 易于设计和制造, 成本廉价,
1

因此在欧美发达国家的高等院校,它已成为常见的控制教学设备。 虽然倒立摆的形式和结构各异,但所有的倒立摆都具有以下的特性: 1) 非 线 性 倒立摆是一个典型的非线性复杂系统,实际中可以通过线性化得到系统的近 似模型,线性化处理后再进行控制。也可以利用非线性控制理论对其进行控制。 倒立摆的非线性控制正成为一个研究的热点。 2) 不确定性 主要是模型误差以及机械传动间隙,各种阻力等,实际控制中一般通过减少 各种误差来降低不确定性, 如通过施加预紧力减少皮带或齿轮的传动误差,利用 滚珠轴承减少摩擦阻力等不确定因素。 3) 耦合性 倒立摆的各级摆杆之间,以及和运动模块之间都有很强的耦合关系,在倒立 摆的控制中一般都在平衡点附近进行解耦计算,忽略一些次要的耦合量。 4) 开环不稳定性 倒立摆的平衡状态只有两个,即在垂直向上的状态和垂直向下的状态,其中 垂直向上为绝对不稳定的平衡点,垂直向下为稳定的平衡点。 5) 约束限制 由于机构的限制,如运动模块行程限制,电机力矩限制等。为了制造方便和 降低成本, 倒立摆的结构尺寸和电机功率都尽量要求最小,行程限制对倒立摆的 摆起影响尤为突出,容易出现小车的撞边现象。 正是由于由于倒立摆系统的上述特性, 许多现代控制理论的研究人员一直 将它视为研究对象,并不断从中发掘出新的控制理论和控制方法。因此,倒立摆 系统也是进行控制理论研究的理想平台。 直线运动型倒立摆外形美观、紧凑、可靠性好。除了为每个子系列提供模块 化的实现方案外, 其控制系统的软件平台采用开放式结构,使学生建立不同的模 型,验证不同的控制算法,供不同层次的学生进行实验和研究。 由于采用了运动控制器和伺服电机进行实时运动控制,以及齿型带传动, 固高公司的倒立摆系统还是一个典型的机电一体化教学实验平台, 可以用来进行 各种电机拖动、 定位和速度跟踪控制实验,让学生理解和掌握机电一体化产品的 部件特征和系统集成方法。

2

二、作品简介
我们小组研制的一级旋转式倒立摆系统,是一个典型的机电一体化系统,采 用内置 STM-32 运动控制器和直流电机进行实时运动控制。一级旋转式倒立摆, 及其功能扩展后为典型的调节系统,应用了自动控制元件,自动控制原理,计算 机控制, 现代控制理论等多个控制课程所学内容,是第一次尝试从理论推导建模 到实物制作、器件选材到计算机仿真的完整的控制系统设计过程。 倒立摆及其功能扩展的位置伺服系统作为一种自动控制教学实验设备, 能够 全面地满足自动控制教学的要求。许多抽象的控制概念如系统稳定性、可控性、 系统收敛速度和系统抗干扰能力等,都可以通过实验装置直观的表现出来。 由于倒立摆系统的高阶次、不稳定、多变量、非线性和强耦合等特性,许多 控制理论的研究人员一直将它作为研究对象, 并不断从中发掘出新的控制理论和 控制方法,相关的成果在航天科技和机器人学方面获得了广泛的应用。因此,倒 立摆设备也是进行控制理论研究的理想平台。 一级旋转式倒立摆系统可以方便地构成一个位置控制系统的被控对象, 并配 置由增量式码盘组成的测量元件,构成位置控制系统进行经典控制理论(调节原 理)的模型,在计算机上实现系统的稳定性、时域特性、频域特性分析和品质校 正的实验。 此外, 配置计算机控制系统和控制系统计算机辅助设计等课程的相关 软件,用于控制系统设计类课程的实验。 综上所述, 一级旋转式倒立摆系统对于控制系的学生来说是一个非常好的科 创小作品。产品使用 STM-32 芯片来控制直流调速电机,有利于系统的小型化, 控制更加快速,抗干扰性强,控制品质有很大提高,利用增量式光电码盘来测量 转角,使用 PID 调节进行整定,构成了完整且方便调试的闭环系统。

3

三、一级旋转式倒立摆设计概述:

1.1

系统总体结构

见实物图

1.2

机械结构

我们的一级倒立摆由以下几部分组成:

底盘:木质,用于承载整个倒立摆。

4

竖直支架和水平支架: 采用硬质铝合金机械加工而成。 同时为了节省材料和减少 加工难度,将理论建模中的圆盘改为直杆,二者在此模型中是等效的。 摆杆:即倒立摆,硬质铝合金材料。 两个转动轴:本倒立摆共有两个自由度的旋转轴, 其中一个为水平支架在水平方 向的旋转,为直流电机驱动。另一个为摆杆在竖直方向上的旋转,无驱动,靠系 统自稳来平衡.

1.3

硬件部分

测量元件:增量式光电码盘,型号:欧姆龙编码器 E6B2-CWZ6C 执行元件:直流调速电机 主控板:STM-32f103 单片机 基本控制思路如下:通过 STM-32 单片机调节 PWM 占空比,从而改变直流电 机电流,而直流电机电流正比于电机输出力矩 T,电机输出力矩 T 作用到水平支 架上,通过相互作用力又作用到摆杆上力矩 P,通过力矩 P 与角度关系换算成摆 杆的摆动角度θ 。而以上一系列过程最后整定为一个系数 K 体现在模型中。

1.4

模型建立

5

M——转盘质量 m——摆杆质量 l——摆杆轴心到质心的距离 I——摆杆惯量 T——加在转盘上的力矩 x——转盘转角

? ——摆杆与竖直向上方向的夹角
b——转盘半径 N、P 为摆杆与转盘间在水平和竖直方向的相互作用力 转盘水平方向受力分析: 1 ? ? Mb 2 T ? P ?b ? ? x 2 摆杆水平方向受力分析:
P?M d2 (xb ? L sin ? ) dt 2

?? cos? ? mL? ? 2 sin ? ? ? mL? P ? Mb? x

6

1 ?? cos? ? m Lb? ? 2 sin ? ? ? ? ? m Lb? ? Mb 2 T ? m b2 ? x x 2 1 ?? cos? ? m Lb? ? 2 sin ? ? ? m Lb? ? ( Mb 2 ? m b2 ) x 2

摆杆垂直方向受力分析:
N ? mg ? m d2 ( L ? L cos? ) dt 2

?? sin ? ? mL? ? 2 cos? N ? mg ? mL?
力矩平衡方程:
?? P ? L cos? ? N ? L sin ? ? I?

?? cos? ? mL? ? 2 sin ? ? ? mL? P ? mb? x ?? cos? ? mL? ? 2 cos? N ? mg ? mL?
2 ?? cos2 ? ? ?? mL m bLcos?? x ? 2 2 2 2 ? ? mL ? mL ? 2 ?? sin 2 ? ? ? m gLsin ? ? m L ? sin ? cos? sin ? cos?

2 ?? ? mbLcos?? ?? ? ? mgLsin ? ? I? ? mL ? x 2 ?? ? mgLsin ? ? ?mbLcos?? ? (mL ? I )? x

( 设 ? <<1,则

d? 2 ) ? 0 , cos? ? 1 , sin ? ? ? dt

? 1 ?? ? T ? ? m Lb? ( x ? Mb 2 ? m b2 ) ? ? 2 2 ? ?? ? m gL? ? ? m bL ? ? x ?(m L ? I )?

对上式进行拉氏变换得:
? (m L2 ? I )? ( s ) ? m gL? ( s ) ? ?m bLX( s ) s 2 ? ? 1 ( Mb 2 ? m b2 ) X ( s ) s 2 ? m Lb? ( s ) s 2 ? T ( s ) ? ? 2
2 2 ? mL ?I ? mL ?I m gL ? g ? X ( s ) ? ?? ? ? ( s ) ? ? ?( s ) ? ? 2 2? ? m bL m bLs ? ? m bL bs ?

?( s) 1 m bLs2 ? ? g X ( s) I ? m L2 ( I ? m L2)s 2 ? m gL ? 2 m bL bs

7

1 ( Mb 2 ? mb 2 ) X ( s) s 2 ? mLb ?( s) s 2 ? T ( s) 2
2 ?I ? mL 1 g ? ( Mb2 ? m b2 ) ? ? 2 ??( s) s 2 ? m Lb?( s) s 2 ? T ( s) 2 ? m bL bs ?

G( s) ?

?( s ) 1 ? 2 T ( s) ?I ? mL 1 g ? ( Mb2 ? m b2 ) ? ? 2 ? s 2 ? m Lbs2 2 ? m bL bs ?

上式即为最终推倒的被控对象的传递函数。

1.5

模型仿真

整个系统控制框图:

将如下数据代入模型中:
M=1;

b=0.5; m=0.1;
8

I=2; l=0.2; g=9.8;
1 , 此传递函数输入为 s ? 0 .1 电机输出的力矩 T,输出为摆杆的角度θ 。我们发现此传递函数有一个不稳定极 点,但经过 PID 校正后并不影响系统最终收敛稳定。

最终计算的出被控对象即摆杆的传递函数近似为 G ?

2

我们使用 MATLAB2009A 版本的 SIMULINK 模块对此进行计算机仿真。 仿真过程如下:

未加任何校正的仿真图

9

从图中可以看到未加任何校正时,在脉冲干扰下,系统将持续震荡。

10

加 PID 校正但未进行参数整定:

系统依然震荡,即摆杆仍在震动,未成功倒立。

进行比例调节,将 Kp 调至 200:

11

可以看到调整效果很明显,等幅震荡变为减幅震荡,最终归于稳定,即摆杆可以 可以实现自倒立。 再次进行 PID 参数调节进一步优化性能,将 Ki 增大为 5,。

12

可以看到改进效果并不是很明显。 最后进行 Kd 的参数调节,将 Kd 增至 50,。

13

发现调整时间并不是很好,再将 Kd 适当调小,调为 20.

14

此时调整时间几乎和脉冲峰值同时收敛,在外力干扰下,摆杆自稳速度快而且自 稳性能好,几乎无震荡。 所以理论上,最终 PID 参数整定为 Kp=200,Ki=5,Kd=20。 另外,其实 Ki 的作用并不大,将 Ki 环节去掉

15

会发现其实效果几乎差不多,即对于此倒立摆系统,PD 调节和 PID 调节效果差 不多。 但鉴于 PID 调节的通用性,我们在实际给 STM-32 单片机编程时,程序中依然采 用 PID 调节进行整定。

四、各元件选型及选择理由
主控板选型
STM-32f103 该系列单片机优点如下: STM32F1 系列属于中低端的 32 位 ARM 微控制器,该系列芯片是意法半导体 (ST)公司出品,其内核是 Cortex-M3。 该系列芯片按片内 Flash 的大小可分为三大类:小容量(16K 和 32K)、中 容量(64K 和 128K)、大容量(256K、384K 和 512K)。 芯片集成定时器,CAN,ADC,SPI,I2C,USB,UART,等多种功能。
内核:

--ARM 32 位的 Cortex-M3 --最高 72MHz 工作频率,在存储器的 0 等待周期访问时可达 1.25DMips/MHZ (DhrystONe2.1) --单周期乘法和硬件除法
存储器:

--从 32K 到 512K 字节的闪存程序存储器 (STM32F103XXXX 中的第二个 X 表示 FLASH 容量,其中: “4”=16K, “6”=32K, “8”=64K,B=128K,C=256K,D=384K, E=512K) --最大 64K 字节的 SRAM
电源管理:

16

--2.0-3.6V 供电和 I/O 引脚 --上电/断电复位(POR/PDR)、可编程电压监测器(PVD) --4-16MHZ 晶振振荡器 --内嵌经出厂调教的 8MHz 的 RC 振荡器 --内嵌带校准的 40KHz 的 RC 振荡器 --产生 CPU 时钟的 PLL --带校准的 32KHz 的 RC 振荡器
低功耗:

--睡眠、停机和待机模式 --Vbat 为 RTC 和后备寄存器供电
模数转换器:

--2 个 12 位模数转换器,1us 转换时间(多达 16 个输入通道) --转换范围:0 至 3.6V --双采样和保持功能 --温度传感器
DMA:

--2 个 DMA 控制器,共 12 个 DMA 通道:DMA1 有 7 个通道,DMA2 有 5 个通道 --支持的外设:定时器、ADC、SPI、USB、IIC 和 UART --多达 112 个快速 I/O 端口(仅 Z 系列有超过 100 个引脚) --26/37/51/80/112 个 I/O 口,所有 I/O 口一块映像到 16 个外部中断;几乎 所有的端口均可容忍 5V 信号
调试模式:

--串行单线调试(SWD)和 JTAG 接口 --多达 8 个定时器 --3 个 16 位定时器,每个定时器有多达 4 个用于输入捕获/输出比较/PWM 或 脉冲计数的通道和增量编码器输入: --1 个 16 位带死区控制和紧急刹车,用于电机控制的 PWM 高级控制定时器 --2 个看门狗定时器(独立的和窗口型的) --系统时间定时器:24 位自减型计数器 --多达 9 个通信接口: 2 个 I2C 接口(支持 SMBus/PMBus) 3 个 USART 接口(支持 ISO7816 接口,LIN,IrDA 接口和调制解调控制) 2 个 SPI 接口(18M 位/秒) CAN 接口(2.0B 主动) USB 2.0 全速接口
计算单元:

CRC 计算单元,96 位的新批唯一代码
封装:

ECOPACK 封装
应用:

STM32F103R8T6 是 ST 旗下的一款常用的增强型系列微控制器,适用于: 电力电子系统方面的应用

17

电机驱动;应用控制;医疗;手持设备;PC 游戏外设;GPS 平台;编程控制 器(PLC);变频器;扫描仪;打印机;警报系统;视频对讲;暖气;通风空调 系统等。

电机选型
直流有刷电机 SK3530 该电机具体参数如下:

18

测量元件选型
E6B2-CWZ6C 500P/R 欧姆龙旋转编码器

该测量元件具体参数:

19

额定值/性 能 项目型号 E6B2-CWZ6C DC5V—5%~ 电源电压 24V+15% 脉冲 (p-p)5%以下 消耗电 流 *1 70mA 以下 E6B2-CWZ5B DC12V—10%~ 24V+15% 脉冲 (p-p)5%以下 80mA 以下 E6B2-CWZ3E DC5V—5%~ 12V+10% 脉冲 (p-p)5%以下 E6B2-CWZ1X DC5V± 5% 脉冲 (p-p)5%以下 E6B2-CWZ5G DC12V—10%~ 24V+15% 脉冲 (p-p)5%以下 80mA 以下 10、20、30、40、 10、20、30、40、 10、20、30、40、 50、60、 100、 10、20、30、40、10、20、30、40、 50、60、 100、 50、60、 100、 200、300、 50、 60、100、 200、 50、 60、100、 200、 200、300、 200、300、 360、 400、500、 300、360、 400、300、360、 400、 360、 400、500、 360、 400、500、 600、 500、600、 500、600、 分辨率(脉 600、 600、 1,000、 1,024、 1,000、 1,024、 1,000、 1,024、 冲/旋转) 1,000、 1,024、 1,000、 1,024、 1,200、 1,200、 1,200、 1,200、 1,200、 1,500、 1,800、 1,500、 1,800、 1,500、 1,800、 1,500、 1,800、 1,500、 1,800、 2,000、2048、 2,000、2048、 2,000、2048、 2,000、2048、 2,000、2048、 3000、 3600 (特 3000、3600 3000、3600 殊脉冲和型号可 3000、3600 3000、3600 订做) 外径/轴 输出位相 差 输出上 Ф40/Ф6 A 相、B 相的位相差 90± 45℃(1/4± 1/8T) 1μs 以下 控制输 0.1μs 以下 导线 长: 2m IO= -20mA、

130mA 以下

升 下降时 出电压:5V 负载 间 电阻 1kΩ 导线

1μs 以下 (导线长:2m 同步电流: 10mA)

20

长:2m

IS=20mA

起动转矩 惯性力矩 轴允许力 允许最高 旋转数 保护回路 环境温度 范围 环境湿度 范围 绝缘电阻 耐电压 振动(耐 久) 冲击(耐 久) 保护构造 连接方式

10mN·m 以下 1× 10-6kg·m2 以下(600 脉冲/旋转以下:3× 10-7kg·m2 以下) 30N 20N 6,000r/min 负载短路保护、电源逆接线保护 ——

动作时: -10~+70℃、保存时:-25~+85℃(不结冰)

动作时、保存时:各 35~85%RH(不结露) 20MΩ 以上(DC500V 兆欧表) 充电部整体与外壳间 AC500V 50/60Hz 1min 充电部整体与外壳间 10~500Hz 复振幅 2mm 或 150m/s2 X、Y、Z 各方向 1 扫描 11min 3 扫 描 1,000m/s2 X、Y、Z 各方向 3 次 IEC 规格 IP50 IEC 规格 IP64 (JEM 规格 IP64f 防滴·防油)* 4 ABS

材质

铝 SUS420J2

质量(包装 状态) 附件

约 100g 使用说明书 注:*1. 屏蔽线的外芯(屏蔽)不能与内部以及外壳连接。 *2.A 相、B 相、Z 相都为同一回路。 *3. 通常 GND 要接到 OV,或者接地上。 产品规格仅供参考,详细信息请于业务员联系。

五、成本预算
主控板:60 元 电机:40 元 码盘:100 元 材料: 硬质铝合金及加工在本校机电学院竞技机器人队实验室完成,估算成本为
21

30 元左右。 合计:230 元

六、设计小结
倒立摆是一个相对简单的模型,它在器件选择,理论建模等方面涉及的知 识很全面而且相对简单,操作起来比较容易,因此我们选择它作为我们的课题。 但是在实际操作过程中还是遇到了很多问题。比如在理论建模过程中,我们运用 了基本的物理学知识如牛顿运动定律来推导倒立摆的运动学方程和动力学方程, 但是在继续推导被控对象的传递函数时我们发现困难很多, 因为以前学习时都是 直接给出的传递函数。 最终我们通过一系列近似处理, 推导出了最终的传递函数, 并且经过一番向学长的虚心请教,使用 MATLAB 最终仿真出了理想的结果。然而 这只是理论推导,在电机选型,测量元件选型,电机驱动等方面,每一个方面我 们都遇到了问题, 只好向善于动手的电气学院的同学请教,最终终于搭建起了一 个完整的倒立摆。 虽然过程比较曲折,不过最终做出了完整的倒立摆系统,也很有成就感,毕 竟是我们第一次从无到有设计并搭建控制系统, 我们很珍惜这个宝贵的第一次的 经验和教训。

七、应用前景
由于倒立摆的深远的研究意义,从 20 世纪 50 年代倒立摆的最初研究至今, 倒立摆的控制方法已经广泛应用在军工、航天、机器人控制领域和一般工业过程 中。 现在, 已经有无数课题正在应用或需要进一步的研究并应用倒立摆的实时控 制方法才能解决其控制领域的相关问题,如: (1)通信卫星在预先计算好的轨道和确定的位置上运行的同时,要保持其 稳定的姿态,使卫星天线一直指向地球,使它的太阳能电池板一直指向太阳。 (2)侦察卫星摄像机的轻微抖动会对摄像的图像质量产生很大的影响,为 了提高摄像的质量,必须能自动的保持伺服云台的稳定,消除振动。 (3)在火箭等飞行器的飞行过程中,为了保持其正确的姿势,要不断进行 实时控制。 尤其是多级火箭由于近似多级倒立摆系统,所以飞行姿态的控制研究 也可以很好借鉴多级倒立摆系统的控制方法,并在此之上进行研究。 (4)机器人的站立与行走也非常类似于双倒立摆系统。尽管机器人问世至 今已有三十多年的历史, 但机器人的关键技术——机器人的直立行走控制至今仍 未能很好解决,仍需进一步研究。 近年来,倒立摆系统不仅在高科技领域中得到广泛应用,人们还应用了倒立 摆这样一个严格的控制对象, 检验新的控制方法的正确性、可行性以及是否有较 强的处理多变量、非线性、强耦合和绝对不稳定系统的能力。

八、参考资料
[1]孟巧荣,廉自生.倒立摆控制系统的控制与仿真[J],机械工程与自动化,2004:2,7-9. 22

[2]齐峰,万少松.对倒立摆控制系统设计的仿真与比较[J],空军大学学报,2007,8(2): 30-32. [3]程俊,王永,黄南晨,等.旋转式倒立摆计算机控制系统[J],电机与控制学报,2001,5 (4):277-280. [4]孙颖娥.旋转式倒立摆系统的设计与算法研究[D],合肥:中国科学技术大学.2004. [5]徐国锋,刘春生.非线性倒立摆起摆和稳定控制研究[J],计算机仿真,2002,3(11): 331-335. [6]丛爽,张冬军,魏衡华.单级倒立摆三种控制策略对比研究[J],系统工程与电子技术, 2001,23(11):47-49. [7]王良顺,尹平林.基于倒立摆的一种控制器的设计与仿真[J],计算机技术与自动化, 2006,25(1):30-31. [8]瞿亮,基于 MATLAB 的控制系统计算机仿真[M],清华大学出版社,2006 年. [9]薛定宇.控制系统计算机辅助设计——MATLAB 语言及应用[M],北京:清华大学出版社, 1997 年. [10]徐春梅,杨平等.PID 控制在倒立摆实时控制系统中的应用[J],微计算机信息,2006,22 (7-1):83-85.

九、(附)单片机 PWM 控制部分程序
程序: #include "timer.h" //通用定时器中断初始化 //这里时钟选择为 APB1 的 2 倍,而 APB1 为 36M //arr:自动重装值。 //psc:时钟预分频数 //这里使用的是定时器 3 void Timerx_Init(u16 arr,u16 psc) { RCC->APB1ENR|=1<<1;//TIM3 时钟使能 TIM3->ARR=arr; //设定计数器自动重装值//刚好 1ms TIM3->PSC=psc; //预分频器 7200,得到 10Khz 的计数时钟 //这两个东东要同时设置才可以使用中断 TIM3->DIER|=1<<0; //允许更新中断 TIM3->DIER|=1<<6; //允许触发中断 TIM3->CR1|=0x01; //使能定时器 3 MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//抢占 1,子优先级 3,组 2 } 23

void PWM1_1_Init(u16 arr1,u16 psc1) { //此部分需手动修改 IO 口设置 RCC->APB1ENR|=1<<1; //TIM3 时钟使能 GPIOA->CRL&=0XF0FFFFFF;//PA6 输出 GPIOA->CRL|=0X0B000000;//复用功能输出 GPIOA->ODR|=1<<6;//PA6 上拉 TIM3->ARR=arr1;//设定计数器自动重装值 TIM3->PSC=psc1;//预分频器不分频 TIM3->CCMR1|=7<<4; //CH1 PWM2 模式 TIM3->CCMR1|=1<<3; //CH1 预装载使能 TIM3->CCER|=1<<0; //OC1 输出使能 TIM3->CR1=0x8000; //ARPE 使能 TIM3->CR1|=0x01; //使能定时器 3 } void PWM1_2_Init(u16 arr2,u16 psc2) { //此部分需手动修改 IO 口设置 RCC->APB1ENR|=1<<1; //TIM3 时钟使能 GPIOA->CRL&=0X0FFFFFFF;//PA7 输出 GPIOA->CRL|=0XB0000000;//复用功能输出 GPIOA->ODR|=1<<7;//PA7 上拉 TIM3->ARR=arr2;//设定计数器自动重装值 TIM3->PSC=psc2;//预分频器不分频 TIM3->CCMR1|=7<<12; //CH2 PWM2 模式 TIM3->CCMR1|=1<<11; //CH2 预装载使能 TIM3->CCER|=1<<4; //OC2 输出使能 TIM3->CR1=0x8000; //ARPE 使能 TIM3->CR1|=0x01; //使能定时器 3 } void PWM1_3_Init(u16 arr3,u16 psc3) { //此部分需手动修改 IO 口设置 RCC->APB1ENR|=1<<1; //TIM3 时钟使能 GPIOB->CRL&=0XFFFFFFF0;//PB0 输出 GPIOB->CRL|=0X0000000B;//复用功能输出 GPIOB->ODR|=1<<0;//PB0 上拉 TIM3->ARR=arr3;//设定计数器自动重装值 TIM3->PSC=psc3;//预分频器不分频 TIM3->CCMR2|=7<<4; //CH3 PWM2 模式 TIM3->CCMR2|=1<<3; //CH3 预装载使能 TIM3->CCER|=1<<8; //OC3 输出使能 TIM3->CR1=0x8000; //ARPE 使能 TIM3->CR1|=0x01; //使能定时器 3 } void PWM1_4_Init(u16 arr4,u16 psc4) { //此部分需手动修改 IO 口设置 RCC->APB1ENR|=1<<1; //TIM3 时钟使能 GPIOB->CRL&=0XFFFFFF0F;//PB1 输出 GPIOB->CRL|=0X000000B0;//复用功能输出 GPIOB->ODR|=1<<1;//PB1 上拉 TIM3->ARR=arr4;//设定计数器自动重装值 24

TIM3->PSC=psc4;//预分频器不分频 TIM3->CCMR2|=7<<12; //CH4 PWM2 模式 TIM3->CCMR2|=1<<11; //CH4 预装载使能 TIM3->CCER|=1<<12; //OC4 输出使能 TIM3->CR1=0x8000; //ARPE 使能 TIM3->CR1|=0x01; //使能定时器 3 } void PWM2_1_Init(u16 arr5,u16 psc5) { //此部分需手动修改 IO 口设置 RCC->APB1ENR|=1<<2; //TIM4 时钟使能 GPIOB->CRL&=0XF0FFFFFF;//PB6 输出 GPIOB->CRL|=0X0B000000;//复用功能输出 GPIOB->ODR|=1<<6;//PB6 上拉 TIM4->ARR=arr5;//设定计数器自动重装值 TIM4->PSC=psc5;//预分频器不分频 TIM4->CCMR1|=7<<4; //CH1 PWM2 模式 TIM4->CCMR1|=1<<3; //CH1 预装载使能 TIM4->CCER|=1<<0; //OC1 输出使能 TIM4->CR1=0x8000; //ARPE 使能 TIM4->CR1|=0x01; //使能定时器 4 } void PWM2_2_Init(u16 arr6,u16 psc6) { //此部分需手动修改 IO 口设置 RCC->APB1ENR|=1<<2; //TIM4 时钟使能 GPIOB->CRL&=0X0FFFFFFF;//PB7 输出 GPIOB->CRL|=0XB0000000;//复用功能输出 GPIOB->ODR|=1<<7;//PB7 上拉 TIM4->ARR=arr6;//设定计数器自动重装值 TIM4->PSC=psc6;//预分频器不分频 TIM4->CCMR1|=7<<12; //CH2 PWM2 模式 TIM4->CCMR1|=1<<11; //CH2 预装载使能 TIM4->CCER|=1<<4; //OC2 输出使能 TIM4->CR1=0x8000; //ARPE 使能 TIM4->CR1|=0x01; //使能定时器 4 } 延时程序 #include <stm32f10x_lib.h> #include "delay.h" static u8 fac_us=0;//us 延时倍乘数 static u16 fac_ms=0;//ms 延时倍乘数 //初始化延迟函数 //SYSTICK 的时钟固定为 HCLK 时钟的 1/8 //SYSCLK:系统时钟 void delay_init(u8 SYSCLK) { SysTick->CTRL&=0xfffffffb;//bit2 清空,选择外部时钟 HCLK/8 fac_us=SYSCLK/8; fac_ms=(u16)fac_us*1000; } //延时 nms //SysTick->LOAD 为 24 位寄存器,所以,最大延时为: 25

//nms<=0xffffff*8*1000/SYSCLK //对 72M 条件下,nms<=1864 void delay_ms(u16 nms) { u32 temp; SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD 为 24bit) SysTick->VAL =0x00; //清空计数器 SysTick->CTRL=0x01 ; //开始倒数 do { temp=SysTick->CTRL; } while(temp&0x01&&!(temp&(1<<16)));//等待时间到达 SysTick->CTRL=0x00; //关闭计数器 SysTick->VAL =0X00; //清空计数器 } //延时 nus //nus 为要延时的 us 数. void delay_us(u32 nus) { u32 temp; SysTick->LOAD=nus*fac_us; //时间加载 SysTick->VAL=0x00; //清空计数器 SysTick->CTRL=0x01 ; //开始倒数 do { temp=SysTick->CTRL; } while(temp&0x01&&!(temp&(1<<16)));//等待时间到达 SysTick->CTRL=0x00; //关闭计数器 SysTick->VAL =0X00; //清空计数器 } 主程序 #include <stm32f10x_lib.h> #include "sys.h" #include "delay.h" #include "timer.h" #include "huoer.h" int main(void) { u8 flag; //DA 转换过来的调速标志 Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 PWM1_1_Init(900,0); //不分频。PWM 频率=72000/900=8Khz PWM1_2_Init(900,0); PWM1_3_Init(900,0); PWM1_4_Init(900,0); PWM2_1_Init(900,0); PWM2_2_Init(900,0); while(1) { switch(flag) { case 0: PWM1_VAL=900; PWM2_VAL=900; 26

case 1:

case 2:

case 3:

case 4:

case 5:

PWM3_VAL=900; PWM4_VAL=900; PWM5_VAL=900; PWM6_VAL=900; break; if((huoer1==1)&&(huoer3==0)) PWM1_VAL=300; else PWM1_VAL=900; if((huoer1==0)&&(huoer2==1)) PWM2_VAL=300; else PWM2_VAL=900; if((huoer2==0)&&(huoer3==1)) PWM3_VAL=300; else PWM3_VAL=900; if((huoer1==0)&&(huoer3==1)) PWM4_VAL=300; else PWM4_VAL=900; if((huoer1==1)&&(huoer2==0)) PWM5_VAL=300; else PWM5_VAL=900; if((huoer2==1)&&(huoer3==0)) PWM6_VAL=300; else PWM6_VAL=900; break; if((huoer1==1)&&(huoer3==0)) PWM1_VAL=350; else PWM1_VAL=900; if((huoer1==0)&&(huoer2==1)) PWM2_VAL=350; else PWM2_VAL=900; if((huoer2==0)&&(huoer3==1)) PWM3_VAL=350; else PWM3_VAL=900; if((huoer1==0)&&(huoer3==1)) PWM4_VAL=350; else PWM4_VAL=900; if((huoer1==1)&&(huoer2==0)) PWM5_VAL=350; else PWM5_VAL=900; if((huoer2==1)&&(huoer3==0)) PWM6_VAL=350; else PWM6_VAL=900; break; if((huoer1==1)&&(huoer3==0)) PWM1_VAL=400; else PWM1_VAL=900; if((huoer1==0)&&(huoer2==1)) PWM2_VAL=400; else PWM2_VAL=900; if((huoer2==0)&&(huoer3==1)) PWM3_VAL=400; else PWM3_VAL=900; if((huoer1==0)&&(huoer3==1)) PWM4_VAL=400; else PWM4_VAL=900; if((huoer1==1)&&(huoer2==0)) PWM5_VAL=400; else PWM5_VAL=900; if((huoer2==1)&&(huoer3==0)) PWM6_VAL=400; else PWM6_VAL=900; break; if((huoer1==1)&&(huoer3==0)) PWM1_VAL=450; else PWM1_VAL=900; if((huoer1==0)&&(huoer2==1)) PWM2_VAL=450; else PWM2_VAL=900; if((huoer2==0)&&(huoer3==1)) PWM3_VAL=450; else PWM3_VAL=900; if((huoer1==0)&&(huoer3==1)) PWM4_VAL=450; else PWM4_VAL=900; if((huoer1==1)&&(huoer2==0)) PWM5_VAL=450; else PWM5_VAL=900; if((huoer2==1)&&(huoer3==0)) PWM6_VAL=450; else PWM6_VAL=900; break; if((huoer1==1)&&(huoer3==0)) PWM1_VAL=500; 27

else PWM1_VAL=900; if((huoer1==0)&&(huoer2==1)) PWM2_VAL=500; else PWM2_VAL=900; if((huoer2==0)&&(huoer3==1)) PWM3_VAL=500; else PWM3_VAL=900; if((huoer1==0)&&(huoer3==1)) PWM4_VAL=500; else PWM4_VAL=900; if((huoer1==1)&&(huoer2==0)) PWM5_VAL=500; else PWM5_VAL=900; if((huoer2==1)&&(huoer3==0)) PWM6_VAL=500; else PWM6_VAL=900; break; case 6: if((huoer1==1)&&(huoer3==0)) PWM1_VAL=550; else PWM1_VAL=900; if((huoer1==0)&&(huoer2==1)) PWM2_VAL=550; else PWM2_VAL=900; if((huoer2==0)&&(huoer3==1)) PWM3_VAL=550; else PWM3_VAL=900; if((huoer1==0)&&(huoer3==1)) PWM4_VAL=550; else PWM4_VAL=900; if((huoer1==1)&&(huoer2==0)) PWM5_VAL=550; else PWM5_VAL=900; if((huoer2==1)&&(huoer3==0)) PWM6_VAL=550; else PWM6_VAL=900; break; case 7: if((huoer1==1)&&(huoer3==0)) PWM1_VAL=600; else PWM1_VAL=900; if((huoer1==0)&&(huoer2==1)) PWM2_VAL=600; else PWM2_VAL=900; if((huoer2==0)&&(huoer3==1)) PWM3_VAL=600; else PWM3_VAL=900; if((huoer1==0)&&(huoer3==1)) PWM4_VAL=600; else PWM4_VAL=900; if((huoer1==1)&&(huoer2==0)) PWM5_VAL=600; else PWM5_VAL=900; if((huoer2==1)&&(huoer3==0)) PWM6_VAL=600; else PWM6_VAL=900; break; } } }

电机驱动:

28

功率驱动电路 29

附:小组分工
刘炳:软件建模仿真,软件设计,PMW 程序编写,机械结构设计 赵文一:理论计算推导,建立数学模型,各元件选型 实物系统组装和调试,报告编写,PPT 制作由小组共同完成。

30


相关文章:
哈工大自控元件课设:一级倒立摆
哈工大自控元件课设:一级倒立摆_电力/水利_工程科技_专业资料。Harbin Institute of Technology 课程设计说明书 课程名称: 设计题目: 院班级: 自控元件课程设计 一...
控制系统课程设计__哈工大_倒立摆
直线一级倒立摆控制器设计 系: 航天学院自动化专业 级: 号: 09.08.31 ——...通过这次课设, 我学会了很多求极点配置参数的办法。 最终求得到的参数为:K =...
直线一级倒立摆控制器设计(哈工大2013)
13页 1下载券 直线一级倒立摆控制器设... 22页 2下载券 自动化_基于直线一...(包括古典部分和现代部分)是电气工程系学生的一门必修专业基础 课,课程中的一些...
哈工大控制系统设计大作业——直线一级倒立摆控制器设计
Harbin Institute of Technology 课程设计说明书(论文) 课程名称: 院班学 控制系统设计课程设计 设计题目:直线一级倒立摆控制器设计 系:航天学院控制科学与工程系 ...
哈工大一阶倒立摆
哈工大一阶倒立摆_机械/仪表_工程科技_专业资料。哈尔滨...1 姓专 名: 业:自动化 院(系) :班号: 任务...(2-15) 其中 2.3 一阶倒立摆的状态空间模型:设...
一级倒立摆课程设计要求
一、课程设计的内容与题目 (1) 直线一级倒立摆系统建模、仿真与实物控制 (2) 旋转一级倒立摆系统建模、仿真与实物控制二、课程设计的要求 题目 1:直线一级倒立摆...
控制系统设计课程设计_一阶倒立摆控制器设计
控制系统设计课程设计_一阶倒立摆控制器设计_工学_高等教育_教育专区。哈工大...(系) :航天学院控制科学与工程系 专业:自动化班号:1104104 班 任务起至日期:...
哈工大自控课设
哈工大自控课设_电子/电路_工程科技_专业资料。哈尔滨工业大学 自动控制原理课程...哈工大自控原理课设报告... 暂无评价 21页 1下载券 哈工大自控元件课设:一...
倒立摆的自动控制原理课程设计
全校通识课课程考核 科教姓专 目: 师: 名: 业: 倒立摆自动控制原理课程设计 学 号: 2010 2010 级 自动化 5 班 2013 年 3 月至 2013 年 5 月 上课...
倒立摆课设
倒立摆课设_电子/电路_工程科技_专业资料。一级倒立摆课设报告综合课程设计倒立摆系统 院(系、部) :姓学年专名: 信息工程学院 马妍(鲁莹 沈玉欣) 号: 120690...
更多相关标签: