2013年全国大学生电子设计竞赛文档(倒立摆) - 图文

更新时间:2023-10-12 13:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

本文介绍了以AVR mega328P单片机为控制核心,通过编码器得到系统变量,应用PID控制算法,步进电机调速对环形倒立摆进行控制,实现了倒立摆在一定的角度范围内动态倒立以及圆周运动。同时可以通过键盘设定运行模式并且读出系统当前状态,具有较好人机界面。经测试,本系统完成了题目所要求的各项基本指标,并达到了全部的发挥部分要求。

关键词:AVR mega328P 环形倒立摆 PID

Abstract

This paper introduces the AVR mega328P microcontroller core, obtained by the encoder system variables, the application of PID control algorithm, the stepper motor speed on the annular inverted pendulum control, to achieve the inverted pendulum in a certain range of angles and circular motion dynamic inverted . You can also set the operating mode via the keyboard and read the current state of the system and has good man-machine interface. After testing, the system completed all the required questions basic indicators, and reached all play a part requirements.

Keywords: AVR mega328P annular inverted pendulum PID

目 录

第一章 系统方案论证与选择 ............................................................................. 1

1.1系统结构 ....................................................................................................................... 1 1.2方案比较与选择 ........................................................................................................... 1

1.2.1芯片控制模块 ..................................................................................................... 1 1.2.2电机选择 ............................................................................................................. 2 1.2.3电动机驱动调速模块 ......................................................................................... 2 1.2.4编码器选择 ......................................................................................................... 3 1.2.5显示方案选择 ..................................................................................................... 3

第二章 理论分析与计算 ..................................................................................... 4

2.1 电动机选型 .................................................................................................................. 4 2.2摆杆状态检测 ............................................................................................................... 5 2.3驱动与控制算法 ........................................................................................................... 7

2.3.1驱动 ..................................................................................................................... 7 2.3.2控制算法 ............................................................................................................. 8

第三章 机械与电路及程序设计 ......................................................................... 9

3.1机械设计 ....................................................................................................................... 9

3.1.1 旋转臂杆与摆杆 ................................................................................................ 9 3.2电路设计 ....................................................................................................................... 9

3.2.1电源电路设计 ..................................................................................................... 9 3.2.2电机驱动电路设计 ........................................................................................... 10 3.2.3键盘显示电路设计 ........................................................................................... 10 3.3程序结构设计 ............................................................................................................. 12

第四章 测试结果与分析 ................................................................................... 15 第五章 参考文献 ............................................................................................... 17 附录 A 主要元器件明细表 ............................................................................ 18 附录 B 电路原理图 ........................................................................................ 19 附录 C 电路PCB图及实物图 ...................................................................... 20 附录 D 系统设计程序代码 ............................................................................ 23

第一章 系统方案论证与选择

1.1系统结构

整个系统分为系统模块、编码器模块、电机驱动模块、电机模块、电源模块、键

盘模块、显示模块。各模块的系统框图如图1.1所示。

编码器模块 电机模块 键盘模块 控制模块电机驱动模块 电源模块 图 1.1 系统框图

显示模块 1.2方案比较与选择 1.2.1芯片控制模块

方案一:采用传统的51系列单片机。

传统的51单片机为8位机,价格便宜,控制简单,但是运算速度慢,片内资源少,存储容量小,难以存储大体积的程序和实现快速精准的反应控制。并且受时钟限制,计时精度不高,外围电路也增加了系统的不可靠性。 方案二: 采用AVR mega328P单片机

1

AVR mega328P单片机,具有功能强大、效率高的指令系统,以及高性能模拟技术及丰富的外围模块。方便高效的开发环境使操作更加简便,低功耗是其它类单片机难以比拟的,集成度较高,编程相对简单。

综上,选择了性能跟好的AVR mega328P单片机。

1.2.2电机选择

方案一:普通直流伺服电机

普通直流伺服电机有价格低使用简单等优点,但其扭矩较小,可控性差,此系统要求控制精度高速度快,直流电机则不能满足要求。 方案二:减速电机

减速电机克服了普通直流电机扭矩小的缺点,而且价格较低,但其可控性不太好,难以精确控制,不易倒立。 方案三:步进电机

步进电机具有转角精确可控的优点,速度和转角都能控制,适用于精确控制系统。只是价格稍高。

为保证稳定可靠,选用方案三。

1.2.3电动机驱动调速模块

方案一 采用芯片L298驱动电机,

用单片机控制L298的输入使之工作在占空比可调的开关状态,精确调整电动机转速。 电子开关的速度很快, 稳定性也极强。 但驱动电流小,无法驱动更大功率的电机,限制了其应用范围。 方案二:采用自搭接的H桥电路

选用大功率达林顿管或场效应管自制H桥电路,电路原理简单,具有高效,低功率等特点,但是性能不够稳定,电路调试复杂。 方案三:采用TB6560电机驱动芯片

TB6560内部集成双全桥MOSFET驱动,耐高压,电流输出大,精度高,内置温度保护芯片,具有过流保护。

TB6560电机驱动芯片更符合本系统需求,所以选择方案三。

2

1.2.4编码器选择

方案一:增量型编码器

增量型编码器存在零点累计误差,抗抖动性差,判断转向困难,断电数据丢失,耗大量单片机资源等缺点。 方案二:绝对式编码器

绝对式编码器分辨率高、抗扰性好、体积小巧、重量轻、抗抖动性好、节省更多处理器资源。此外,绝对式编码器在断电期间也能准确检测旋转角度偏移量。 综合以上两种方案选择,本系统选择Mini1024J绝对式编码器。

1.2.5显示方案选择

方案一:电压和电流的显示可以用数码管,但数码管的只能显示简单的数字,其电路复杂,占用资源较多,显示信息少,不宜显示大量信息。 方案二:采用12864B液晶显示器显示

采用屏幕液晶显示器12864B进行显示,功耗低,分辨率高,抗干扰性能力强,可视面积大。此外12864B与单片机可直接连接,电路设计及连接简单。 综上分析,选择方案二。

3

第三章 机械与电路及程序设计

3.1机械设计

3.1.1 旋转臂杆与摆杆

旋转臂杆选择半径5mm的碳纤维棒,摆杆选择半径3mm,长15cm的碳纤维棒。碳纤维棒具有强度高,寿命长、耐腐蚀,质量轻、低密度等优点,广泛应用航空模型飞机、设备转轴等机械设备。本系统选择碳纤维棒,符合规定要求,且利于摆杆灵活转动。

3.2电路设计

本系统电路包括单片机芯片AVR mega328P最小系统、电源电路、电机驱动电路、键盘显示电路。

3.2.1电源电路设计

LM2596开关电压调节器是降压型电源管理单片机集成电路,能够输出3A的驱动电流,同时具有很好的线性和负载调节特性。固定输出版本有3.3V、5V、12V,可调版本可以输出小于37V的各种电压。

P1口电压输入,通过调节R2的阻值大小,从而控制P2口电压输出的大小。

图 3.1 LM2596稳压电路

9

3.2.2电机驱动电路设计

驱动电路电源采用9 V,电压范围为0~100 V,提高驱动电压可增大电机在高频范围转矩的输出。VMB、VMA为步进电机驱动电源引脚,应接入瓷片去耦电容和电解电容稳压。OUT_AP、OUT_AM、OUT_BP、OUT_BM引脚分别为电机2相输出接口。NFA、NFB分别为电机A、B相最大驱动电流定义引脚, PGNDA、PGNDB、SGND分别为电机A、B相驱动引脚地和逻辑电源地。

图 3.2 TB6560步进电机驱动电路

3.2.3键盘显示电路设计

键盘显示电路通过采样AD1、AD2的电压值大小的不同,从而确定与之相对应按键的触发。

液晶显示模块使用12864B,它为一块128×64点阵的LCD显示模组,该液晶有背光功能,可显示数字、字母,数据更加直观,较为便捷。电路如图3.5所示。ADJ为液晶显示

10

器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。

图 3.3 按键电路

图 3.5 液晶显示电路

11

3.3程序结构设计

(1)当系统上电后,LCD与LED点阵屏分别显示各自的开机界面,与此同时AVR mega328P对按键检测,选择工作状态,设定起摆,圆周运动,手动起摆,快速起摆。通过PID调节实现相应的功能。

设定起摆 圆周运动 PID调节 手动起摆PID调节 快速起摆 PID调节 开始 初始化液晶 调用键盘程序 设定角度 PID调节 是否过设定角度 否 是否圆周运动 否是否倒立 否是否倒立 是 否 是 是否设定圆周 是 是 否 开始计时 圆周运动 PID调节 开始计时 否 是否5s 是否10s 是 否 是否圆周运动 是 是 显示所用时间

图 3.5 程序流程图

12

(2)编码器检测到信号后,调用PID子程序进行计算,PID调节子程序流程图如图4.3所示。

开始 计算ek=setpoint-angle 取ek1 取ek2 计算kp*(ek-ek1) 计算ki*ek 计算kd*(ek-2ek1+ek2) 计算△u 返回

图 3.6 PID流程图

(3)键盘初始化,判断是否有按键按下,无键按下,重新进行键盘扫描;有键按下,判断是哪个键按下,并进行相应的操作。

13

开始 键盘初始化 判断按键按下 否 是调读键盘子程序 调用键盘显示程序 功能模块程序 返回

图 3.7 键盘流程图

14

第四章 测试结果与分析

5.1测试与制作仪器

测试仪器与方法 (1)测试仪器

测试仪器包括秒表、米尺、数字万用表、示波器等。 (2)测试方法

用秒表对产品测试,按照任务书的基本要求对制成的环形倒立摆性能进行测试,秒表用来检测到达倒立所需时间及保持倒立摆的时间,示波器用来测试各电路模块输出信号是否正确。

掌握电机运行速度与软件设定值的关系,与软件算法协调调试,使静态误差最小。

5.2测试结果

表 1 手动倒立模式测试表

测量次数 起始角度(度) 结果

1 150 成功 2 155 成功 3 160 成功 4 165 成功 表 2 快速起摆模式测试表

测量次数 所用时间(秒) 保持时间 施加干扰 1 1.8 2 1.2 3 1.5 4 1.7 10秒以上 继续保持倒立或2秒内恢复 15

5.3测试分析

测试结果分析,系统总体上达到较好性能。倒立摆能够实现动态倒立,且所用时间在要求范围之内。倒立摆运行性能较好,制作成本低,性价比高。倒立摆控制的误差只要来源于步进电机、编码器和倒立摆机械结构。步进电机失步、越步,造成读数偏差。编码器精度不高,机械齿轮运动中摩擦力不均匀。因此,采用更好启动、制动和调速的步进电机、精度更高的编码器,改进硬件结构,以此消除控制误差,是控制精度更高。

16

第五章 参考文献

[1] 康华光主编. 电子技术基础[M]. 华中理工大学电子学教研室.2010 [2] 康华光、陈大钦主编. 电子技术基础数字部份[M]. 高等教育出版社,2010 [3] 朱兆优、陈坚、邓文娟主编. 单片机原理与应用[M]. 电子工业出版社,2008 [4] 郭天祥主编. 51单片机C语言教程[M]. 电子工业出版社,2008

[5] 王宜怀、吴瑾、蒋银珍编著.单片机原理与应用[M]. 电子工业出版社,2005 [6] 苏凯、刘庆国.MCS-51系列单片机系统原理与设计[M].北京:冶金工业出版 [7] 徐建军主编.MCS-51系统单片机应用及接口技术[M].北京:人民邮电出版社,2003 [8] 谢冬菊.环形倒立摆控制系统的设计和仿真[D].四川:西南石油大学精密仪器研究

院,2011:8~11

[9] 辛晓宁 王晓旭. PWM调制的设计与实现 [J]. 电子设计工程2013,2(4):122~124

17

附录 A 主要元器件明细表

序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 品 名 电阻 电阻 电阻 电阻 电解电容 电解电容 MOS管 MOS管 单排串口插针 步进电机 单片机芯片 芯片 芯片 芯片 芯片 液晶显示屏 编码器 型号、规格 50Ω 100Ω 100KΩ 200KΩ 104 100uF irf3205 Irf4905 十六针 42HS6315A4 AVR mega328P LM2596 TB6560 74LS32 8523 12864 Mini1024J 单位 个 个 个 个 个 个 个 个 个 个 片 片 片 片 片 个 个 数量 20 20 20 20 6 1 2 2 3 1 1 1 1 1 1 1 2

18

angle=SSI();

//angle=FIR2(angle);

velocity = (angle - angleLast); error_p = setPoint-angle; error_d = velocity;

error_i = error_i + error_p; angleLast=angle; t = 0;

if(abs(angle-setPoint)>256) {

error_p=0; error_d=0; error_i=0; }

myspeed = - (kp*error_p + kd*error_d + ki*error_i/10); //myspeed=FIR(myspeed);

myspeed=constrain(myspeed,MIN_SPEED,MAX_SPEED); setStepperSpeed(myspeed); }

TIMSK2 |= (1<

void timerIsr() {

if(state==0) {

Timer1.setPeriod(PULSEWIDTH); //digitalWrite(STEPPER_CLK,HIGH); setBit(STEPPER_PORT,STEPPER_CLK); state=1; }

if(state==1) {

Timer1.setPeriod(duration-PULSEWIDTH); //digitalWrite(STEPPER_CLK,LOW); clearBit(STEPPER_PORT,STEPPER_CLK); state=0; } }

24

本文来源:https://www.bwwdw.com/article/8jqf.html

Top