简易旋转倒立摆及控制装置

合集下载

全国电子设计大赛报告

全国电子设计大赛报告

全国电子设计大赛报告 Hessen was revised in January 20212013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【本科组】摘要:通过对该测控系统结构和特点的分析,结合现代控制技术设计理念实现了以微控制器MC9S12XS128系列单片机为核心的旋转倒立摆控制系统。

通过采集的角度值与平衡位置进行比较,使用PD算法,从而达到控制电机的目的。

其工作过程为:角位移传感器WDS35D通过对摆杆摆动过程中的信号采集然后经过A/D采样后反馈给主控制器。

控制器根据角度传感器反馈信号进行PID数据处理,从而对电机的转动做出调整,进行可靠的闭环控制,使用按键调节P、D 的值,同时由显示模块显示当前的P、D值。

关键字:倒立摆、直流电机、MC9S12XS128单片机、角位移传感器WDS35D、PD算法目录一、设计任务与要求1 设计任务设计并制作一套简易旋转倒立摆及控制装置。

旋转倒立摆的结构如图1所示。

电动机A固定在支架B上,通过转轴F驱动旋转臂C旋转。

摆杆E通过转轴D固定在旋转臂C的一端,当旋转臂C在电动机A驱动下作往复旋转运动时,带动摆杆E在垂直于旋转臂C的平面作自由旋转。

如下图所示2 设计要求基本要求:①摆杆从处于自然下垂状态开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过﹣60°~+60°;②从摆杆处于下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动;③在摆杆处于自然下垂状态下,外力拉起摆杆至接近165°位置,外力撤出同时,启动控制旋转臂使摆杆保持倒立状态时间不少于5s;期间旋转臂的转动不大于90°。

发挥部分:①从摆杆处于自然下垂状态开始,控制旋转臂作往复旋转运动,尽快使摆杆摆起倒立,保持倒立时间不少于10s;②在摆杆保持倒立状态下,施加干扰后摆杆能继续保持倒立或2s内回复倒立状态;③在摆杆保持倒立状态的前提下,旋转臂作圆周运动,并尽快使单方向转过角度达到或超过360°。

电赛论文模板

电赛论文模板

2015年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【本科组】2013年9月6日目录1系统方案 (2)1.1电机及驱动方案的论证与选择 (2)1.2传感器采集模块的论证与选择 (2)1.3 控制系统的论证与选择 (2)2系统理论分析与计算 (3)2.1 XXXX的分析 (3)2.1.1 XXX (3)2.1.2 XXX (3)2.1.3 XXX (3)2.2 XXXX的计算 (3)2.2.1 XXX (3)2.2.2 XXX (3)2.2.3 XXX (3)2.3 XXXX的计算 (3)2.3.1 XXX (3)2.3.2 XXX (3)2.3.3 XXX (3)3电路与程序设计 (3)3.1电路的设计 (3)3.1.1系统总体框图 (3)3.1.2 XXXX子系统框图与电路原理图 (4)3.1.3 XXXX子系统框图与电路原理图 (4)3.1.4电源 (4)3.2程序的设计 (4)3.2.1程序功能描述与设计思路 (4)3.2.2程序流程图 (5)4测试方案与测试结果 (5)4.1测试方案 (5)4.2 测试条件与仪器 (5)4.3 测试结果及分析 (6)4.3.1测试结果(数据) (6)4.3.2测试分析与结论 (6)附录1:电路原理图 (7)附录2:源程序 (8)简易旋转倒立摆及控制装置(C题)【本科组】1系统方案本系统主要由电机及驱动模块、传感器采集模块、控制器模块、电源模块组成,下面分别论证这几个模块的选择。

1.1电机及驱动方案的论证与选择方案一:42BY系列混合式步进电机+LN298驱动方案此方案在最先想到以及调试的方案,用步进电机的有点就是正反转切换迅速,无堵转现象,转矩大,负载能力强。

但是42BY系列混合式步进电机响应一拍最小周期为2ms,此时处于电机为最大转速,执行周期长,也就造成系统控制周期长,但是本系统要求调节周期短(我们最终方案采用的是2ms),能够在极短时间内实现一个调节过程,故此方案不能达到预期的效果。

大连交通大学2013年校级及以上大学生科技创新竞赛获奖情况汇总表

大连交通大学2013年校级及以上大学生科技创新竞赛获奖情况汇总表

附件:大连交通大学2013年校级以上大学生科技创新竞赛获奖情况汇总表竞赛成绩指导教师参赛学生作品名称第十三届“挑战杯”全国大学生课外学术科技作品竞赛三等奖陈少华、曾洁沈巍、张武警、唐琳、乔梅昌商用厨房油烟净化与余热利用系统第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛特等奖陈少华、曾洁沈巍、张武警、唐琳、乔梅昌商用厨房油烟净化与余热利用系统一等奖吕斌、费继友于建方、杨龙飞、项阳、赵荣彪、皮姣姣、倪成业、栾诗宇、曲晓伟矿井轨道定点阻拦器一等奖葛宰林赵俊奇、庞德辰、李昱思、马开浪、谢嘉茹、李思达、武琦、张希良直线式永磁海浪发电装置二等奖葛宰林、李永华文怀宇、刘启超、王瑞东、张海、潘野、徐庆昊、何强、李基鹏分级冷却抑制轴承高温锻件网状碳化物生成工艺设备二等奖吕斌、刘晓雪李冰、樊晓伟、夏常玖、贾长风、王灵荷、何倩茜、林帅新型钢丝绳弯曲疲劳试验机二等奖陈少华、曾洁高星宇、查格其、吴运幸、侯一鸣、付安磷酸铁锂电池检测与管理系统二等奖吕斌、雷蕾姜新禹、张震宇、钟宏远、孙崇文、关杰元、姜彤、王子安、国雷基于NRF无线通信的云端智能节电系统设计二等奖司伟王迪、窦志刚、马祖国、李珊、朱建辉、齐昌鑫废弃玻璃粉低温烧结制备玻璃陶瓷二等奖张锐、王武生刘子麟、杨鹏飞、尹建、王梦莹、周乐安大连地铁特殊部位防水做法及技术研究二等奖陈少华、曾洁吕锦、张琪、汪康康、陈硕面向老年人的新型智能控制药箱二等奖吕斌、张迎辉杨帆、柳松杨、姜彦辰、王腾、陈宁小型饮用水软化水处理装备三等奖吕斌、张生芳冯波、侯志如、张新朋、杨毅、张平、杨文娇、季蒙模块化教学机器人三等奖左忠义汪磊、孙键、孙海燕、邰淳亮、傅军豪公交车辆行程时间预测方法与应用研究三等奖李永华王瀚、王显亮、王洋、郑重、陈石杰、周庆、周成旭、王志强“小菜一碟”全自动智能烹饪机三等奖陈少华、曾洁徐克、齐迪、尹琨、张扬、李哲、伍国凌基于基站无线中继模式的区域专网车辆追踪监控系统三等奖陈少华、曾洁韩敬康、李岳枫、杜恒良、康君妍宿舍火灾监视与疏散一体化消防系统第九届全国周培源大学生力学竞赛(辽宁赛区)二等奖张雪珊王卿三等奖张雪珊王录录第五届全国大学生数学竞赛预赛(辽宁赛区)一等奖戴晓鸣、王丽媛何克胜、庞艳涛二等奖皇甫明、李宁、林美艳、孙日明、张玉丽、顾颖、梁波朱治文、刘江伟、贺彬、王豪豪、党海舟、张健、梁腾飞三等奖徐志敏、孙晓英、李秀梅、王丽敏、张月、王岩、徐天博、汪颖、汪军、高静华、张书莲刁锋、姚丹阳、刘丰、周益、潘梦然、汪财雄、陈桐、孟飞、胡江祺、梁赛、金仕亚第五届辽宁省大学生数学竞赛一等奖戴晓鸣、王丽媛、皇甫明、李宁、林美艳、孙日明、张玉丽、顾颖、梁波、徐志敏、孙晓英、李秀梅、王丽敏、张月、王岩、徐天博、汪颖、汪军、高静华、张书莲何克胜、庞艳涛、朱治文、刘江伟、贺彬、王豪豪、党海舟、张健、梁腾飞、刁锋、姚丹阳、刘丰、周益、潘梦然、汪财雄、陈桐、孟飞、胡江祺、梁赛、金仕亚二等奖于慧徐峰三等奖王海燕、李佳宁、张振宇臧振君、马杰、夏飞大连市第二十二届大学生数学竞赛一等奖戴晓鸣、高静华、顾颖、皇甫明、金丽、李佳宁、李宁、李秀梅、梁波、林美艳、刘勇、孙日明、孙晓英、汪军、汪颖、王海燕、王丽敏、王丽媛、王岩、徐天博、徐志敏、于慧、张书莲、张玉丽、张月、张振宇、周大勇庞艳涛、姚丹阳、梁腾飞、董杰、朱治文、金仕亚、刘丰、胡江祺、汪财雄、王坚、贺彬、繤丹东、张向东、马杰、徐峰、将万博、靳叔凯、梁赛、张健、刁锋、管振强、孟飞、党海舟、周益、王树春、杨燚、孟迪二等奖白凤兰、毕卫星、蔡敏、戴晓鸣、丁立佳、高静华、顾颖、郭大为、皇甫明、金丽、李佳宁李宁、李秀梅、李焱淼、李雁南、梁波、林美艳、刘勇、宋爱民、孙日明、孙晓英、万维明、汪军、汪颖、王国灿、王海燕、王丽敏、王丽媛、王晓元、王岩、徐天博、徐志敏、于慧、张继红、张书莲、张玉丽、张月、张振宇司安然、田成志、李文海、李朋、王德名、李强、孙伟莎、马睿泽、卢军、李修雷、兰锋、邓义仁、隆宏斌、李亮、王鑫、张如一、王佳辉、胡珂、陈桐、孙江南、周威、殷佳鹏、尹太国、毛竞争、王玉龙、李芝华、李文浩、吴启龙、胡浩、张翔博、陈志伟、吕小明、刘宁春、孟陈祥、叶安东、张聪、蒋凯雄、侯振兴、孙渤、胡江奎、何江涛、汤泽惠、孙学涛、顾自豪、周密、冯文敏、蒋敏、邵乾宇、张啸男、夏中羽、李嘉曦、汪朝辉、柳驰航、臧晓雅、霍梦梦、孙向阳、赵政、郝靖伟、刘雨涵、王文龙、孙艳阳、张雅霖、宁旭阳、刘晓林。

简易旋转倒立摆设计论文

简易旋转倒立摆设计论文

简易旋转倒立摆设计论文摘要:该系统有一个非常重要的性质——它是非线性不稳定的。

不稳定系统的控制问题是目前大多数控制系统需要克服的难点,有必要在实验室中研究,但是由于绝大多数的不稳定控制系统都存在着危险性,因此成了实验室研究的主要障碍。

而倒立摆系统却能很好地解决这一矛盾,它简单、安全并且具备了一个非稳定系统所具有的重要的动态特性,因此,本系统对控制系统的设计而言可以说是一个比较理想的研究模型。

倒立摆控制系统是一个复杂的、不稳定的非线性系统,是进行控制理论研究和实验的理想平台。

目前,亚洲、日本、韩国、俄罗斯、美国等多个国家都在进行这个领域的研究。

对于倒立摆控制的研究有着非常重大的现实意义,机器人的站立与行走类似双倒立摆系统,而机器人的行走控制至今仍未很好地解决。

对倒立摆系统的研究能有效地反应控制中的许多问题:如非线性问题、鲁棒性问题[1]、镇定问题及跟踪问题等。

通过对倒立摆的控制,可用来检测新的控制方法是否有较强的处理非线性和不稳定性问题的能力。

同时,其控制方法在军工、航天和一般工业过程领域中都有着广泛的用途,如火箭发射中的垂直度控制和卫星飞行过程中十分重要的姿态控制等。

倒立摆的种类很多,有悬挂式倒立摆、平行倒立摆、环形倒立摆、平面倒立摆等;根据级数也可以将其分为一级、二级、三级乃至多级。

本文主要就旋转平面的一级倒立摆系统进行研究,采用MC9S12XS128微控制器通过速度闭环和DIP算法控制使该倒立摆系统完成包括往复摆动直至完成圆周运动、保持倒立、倒立状态下的圆周运动以及抗干扰测试等一系列动作,主题思想是对摆杆的姿态进行实时的、精确的调整。

1 系统方案设计1.1 系统设计总方案本倒立摆系统主要由三大部分组成:电机驱动电路、倒立摆装置和微控制器。

倒立摆的工作原理为:通过数字电位计得到反馈电压,经转化得到摆杆的实际角度,微分后得到其速度,连杆的位置和速度可以通过电机编码器(200p/r)转换得到,MCU(微控制器)根据上述四个输入使用增量式PID算法,预调节PWM波脉宽以及驱动端口信号,来分别调节电机转速和转向,实现倒立摆的稳定控制。

简易旋转倒立摆及控制装置

简易旋转倒立摆及控制装置

简易旋转倒立摆及控制装置设计报告及总结摘要倒立摆系统机理的研究不仅具有重要的理论价值,而且具有重要的现实意义,是控制类中经久不衰的经典题型。

本题中,简易旋转倒立摆,在C8051F040单片机的基础上,使用ZGB42FM直流减速电机,BTN7971B电机驱动,可变电阻(角度传感器),机械摆杆等模块。

通过编写、烧入程序,调控硬件协调工作,使摆杆首先实现一定角度的转动,再完成圆周运动,以及保持竖直向上的倒立状态。

用以满足题目的基本要求,进而深一步探究倒立摆在保持运动姿态方面的发展与应用。

关键字:单片机,倒立摆,摆杆,可变电阻。

引言:本题整体上只由一个电机A 提供动力,电机直接控制旋转臂C 做往复旋转运动,而通过转轴D 连接在旋臂C 上的摆杆E 是非常灵活的。

旋臂C 转动一定角度时,摆杆E 由于向心力会使摆杆E 继续向上旋转,以达到E 杆转动一个角度的效果。

相似,当C 的转动速度比较快,停下后,E 下端处的速度和向心力都比较大,能够使E 杆完成圆周运动。

为了使摆杆能够倒立,就要求摆杆转动到上半圆周面时,要通过单片机控制电机A 不断的调整使旋转臂C 转动多个角度,尽量的使摆杆E 与竖直面的角度变小,并能够受力平衡,这样就可以保持一段时间的倒立状态。

为达到角度的调整,就要测量出E 杆与竖直面间的角度差,经过单片机的控制,使电机A 做出相应的旋转动作,减小这个角度差。

1、方案设计与讨论: 1.1结构框图1.2方案论证: 1.21控制器模块本题,单片机只要接收来自传感器的信号,向电机驱动输入信号处理后计算出的高低电平即可。

方案一:用ATMEL 公司生产的AT89S52单片机,低功耗,高性能CMOS 8位处理器,使用广泛,算法较为简单,但是在执行复杂动作时,处理速度不够高。

方案二:用宏晶公司生产的STC89C52RC 单片机,STC 的单片机性能与ATMEL 的单片机相似,但是价格相对便宜。

缺点是易受潮湿影响,在调用子程序是频繁出错。

福建农林大学学生参加省级以上各类竞赛奖励汇总表-福建农林大学教务处

福建农林大学学生参加省级以上各类竞赛奖励汇总表-福建农林大学教务处
余聪、吴加容、林哲元
全国大学生电子设计竞赛
赵晨
讲师
525
21
张翠云
机电工程学院
讲师
手写绘图板
省二等奖
525
吴碧致、黄蕾、陈福恩
全国大学生电子设计竞赛
林寿英
副教授
975
22
吴锤红
机电工程学院
教授
简易旋转倒立摆及控制装置
省三等奖
650
徐学燊、方斌、郑滨滨
全国大学生电子设计竞赛
赵晨
讲师
350
23
陈学永
机电工程学院
35
刘必雄
计算机与信息学院
讲师
参加现场程序设计
省三等奖
1000
陈志灵
第四届“蓝桥杯”全国软件专业人才设计与创业大赛(福建赛区)
36
刘必雄
计算机与信息学院
讲师
参加现场程序设计
省三等奖
1000
陈龙辉
第四届“蓝桥杯”全国软件专业人才设计与创业大赛(福建赛区)
37
刘必雄
计算机与信息学院
讲师
参加现场程序设计
省二等奖
教授
简易旋转倒立摆及控制装置
全国二等奖
6500
徐凯、汪晓东、林烟泽
全国大学生电子设计竞赛
卢玉宇
高级实验师
3500
19
吴锤红
机电工程学院
教授
简易旋转倒立摆及控制装置
全国二等奖
6500
苏剑辉、蔡国顺、周云飞
全国大学生电子设计竞赛
赵晨
讲师
3500
20
吴锤红
机电工程学院
教授
简易旋转倒立摆及控制装置
省二等奖

全国大学生电子设计大赛论文

全国大学生电子设计大赛论文

2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【1101003组】2013年9月7日简易旋转倒立摆及控制装置(C题)摘要本系统采用自制的简易旋转倒立摆及控制装置,以16 位单片机(STC89C51)作为旋转倒立摆的检测和控制核心,以额定电压12V的步进电机驱动,通过加速度传感器(ADXL345)转变的角度传感器测定摆杆角度变化来定位摆杆的位置。

系统采用角度传感器(ADXL345)探测在摆杆保持倒立状态的前提下,旋转臂作圆周运动前进;同时通过编码器及PID控制算法实现了步进电机的转速和转向进行调节,以准确找到平衡点位置。

控制器的设计是倒立摆系统的核心内容,主要用到典型的控制器设计理论有PID控制、根轨迹以及频率响应法、状态空间法、最优控制理论等。

本系统可在较短时间内完成摆杆从自然下垂状态,驱动电机带动旋转臂作往复旋转使摆杆摆动,寻找平衡点等任务。

关键词:角度传感器;旋转倒立摆;模糊控制;最优控制理论;目录1系统方案......................................................................................... 错误!未定义书签。

1.1电机方案的论证与选择 (1)1.2 控制系统方案的论证与选择 (2)1.3 角度测量方案的论证与选择 (2)2系统理论分析与计算 (2)2.1 角度检测模块的分析 (2)2.2 控制方法的理论 (3)2.3 设计思想理论分析 (4)2.4 理论计算 (4)3电路与程序设计 (6)3.1电路的设计 (6)3.1.1系统总体框图 (6)3.1.2 电机驱动模块设计 (7)3.1.3 角度传感器模块 (7)3.1.4电源模块 (7)3.2程序的设计 (7)3.2.1程序功能描述与设计思路 (7)3.2.2程序流程图 (8)4测试方案与测试结果 (8)4.1硬件测试 (8)4.2 测试条件与仪器 (9)4.3 测试结果 (9)4.3.1不同脉冲时间间隔对应速度测试 (9)4.3.2摆杆达到指定高度往复运动的时间测试 (10)4.3.3摆杆达到指定度数的测试 (10)4.3.4摆杆选择和配重平衡测试 (10)4.3.5摆杆完成圆周运动测试 (11)4.3.6基本功能(3)测试 (11)4.3.7测试分析与结论 (12)5结束语 (12)6参考文献 (12)附录1:电路原理图 (13)附录2:电机驱动原理图 (14)附录3:稳压模块原理图 (15)附录4:主程序 (16)附录5:角度传感器子程序 (18)简易旋转倒立摆及控制装置(C 题)【本科组】1系统方案本系统主要由系统模块、角度检测模块、电机驱动模块、电源模块组成。

2013电赛报告

2013电赛报告

2013年全国大学生电子设计竞赛设计报告题目名称:简易旋转倒立摆及控制装置【本科组C题】参赛队号:201302092013年9月7日2013年“瑞萨杯”全国大学生电子设计竞赛摘要:本系统以STC12C5A60S2单片机最小系统为核心,辅以角度传感器、姿态传感器、开关控制电路、LCD1602显示、电机驱动电路等组成。

该设计利用PWM 调制来控制旋转臂转速的变化,通过角度传感器和姿态传感器检测摆杆角度偏转信号,并将检测到的数值A/D转换后送入调速系统,经LCD1602显示屏进行显示。

也可通过拨码开关控制旋转臂的转速,从而改变摆杆的状态。

该系统实现了通过操作拨码开关控制旋转臂转速的大小,使摆杆状态按要求变化。

关键词:单片机最小系统角位移传感器 A/D转换2013年“瑞萨杯”全国大学生电子设计竞赛目录1.作品简介 (1)2.系统方案论证和比较 (1)2.1系统方案整体实验框图 (1)2.2方案论证与比较 (1)2.1.1输入模块选择 (1)2.1.2调制方式的选择 (2)2.1.3角度传感器的选择 (2)2.1.4显示系统的选择 (2)2.3理论分析与参数计算 (2)2.3.1控制电路 (2)2.3.2角度测量原理与控制算法 (3)3.电路与程序设计 (3)3.1硬件设计 (3)3.1.1角度传感器的设计 (3)3.2软件设计 (3)3.1.1软件主程序流程图 (3)3.1.2程序算法理论分析 (4)4.系统调试与结果分析 (5)4.1系统调试的方法与仪器 (5)4.2系统电路的调试 (5)4.2.1电机的性能测试 (5)4.2.2角度传感器的性能测试 (5)4.3注意事项及解决方案 (6)4.4调试结果分析与总结 (6)5.实验结果的分析与总结 (6)6.参考文献 (6)附录一:部分电路原理图 (1)附录二:程序源代码 (4)1.作品简介本次设计作品以单片机最小系统和角度传感器、姿态传感器为制作核心,同时运用A/D模数转换,PWM调制旋转臂转速、LED声光显示,拨码开关控制等,从摆杆方向上的角位移传感器接收到摆杆角度偏转的信号,经A/D模数转换后,LED显示器进行声光显示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【本科组】2013年9月7日摘要本题要求设计一个简易旋转倒立摆及控制系统,其中角度传感器、步进电机和单片机890C521是系统核心部件。

系统接收角度传感器反馈的信号,通过PCF8591将接收的信号转换成数字信号,将数值送入单片机中进行计算,可得出摆杆的位置,进而单片机控制步进电机,对摆杆进行控制,达到所要的旋转或者倒立的控制目标。

关键词:简易旋转倒立摆步进电机单片机角度传感器目录1 设计任务及要求 (5)1.1 设计任务 (5)1.2 基本要求 (5)2主控制器件的论证与选择 (6)2.1控制器选用 (6)2.2控制系统方案选择 (6)2.3角度的获取模块论证与选择 (6)2.4步进电机及其驱动模块的选择 (7)2.5 AD/DA的选择 (7)3 系统的硬件设计 (7)3.1总体电路框图 (7)图3-1 系统框图 (8)3.2系统电路与程序设计 (9)3.2.1 STC89C52单片机最小系统 (9)3.2.2 PCF8591模块图如图3-2。

(10)3.3.3 模块芯片TB6560AHQ原理图如图3-3。

(10)3.3.4 供电电源 (11)4系统软件总体设计框图 (13)5 测试方案与测试结果 (13)6 总结 (15)参考文献 (16)附录 (17)简易旋转倒立摆及控制装置(C题)【本科组】1 设计任务及要求1.1 设计任务设计并制作一套简易旋转倒立摆及其控制装置。

旋转倒立摆的结构如图1-1 所示。

电动机 A 固定在支架 B 上,通过转轴 F 驱动旋转臂 C 旋转。

摆杆 E 通过转轴 D 固定在旋转臂 C 的一端,当旋转臂 C 在电动机 A 驱动下作往复旋转运动时,带动摆杆 E 在垂直于旋转臂 C 的平面作自由旋转。

图1-1 旋转倒立摆结构示意图1.2 基本要求(1)摆杆从处于自然下垂状态(摆角 0°)开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过-60°~ +60°;(2)从摆杆处于自然下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动;(3)在摆杆处于自然下垂状态下,外力拉起摆杆至接近 165°位置,外力撤除同时,启动控制旋转臂使摆杆保持倒立状态时间不少于 5s;期间旋转臂的转动角度不大于 90°。

2主控制器件的论证与选择2.1控制器选用方案一: 采用ARM,运行速度快,引脚多,内部资源丰富,具有很高的运算速率,但是价格较高,对于初学者,ARM不易掌握.方案二: 采用STC89C52单片机, 选用STC89C52单片机作为控制核心,它具有8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路,且容易烧录,使用方便。

所以我们选用STC89V52作为主控芯片2.2控制系统方案选择方案一:采用在面包板上搭建简易单片机系统在面包板上搭建单片机系统可以方便的对硬件做随时修改,也易于搭建,但是系统连线较多,不仅相互干扰,使电路杂乱无章,而且系统可靠性低。

方案二:自制单片机印刷电路板自制印刷电路实现较为困难,实现周期长,此外也会花费较多的时间,影响整体设计进程。

方案三:采用单片机最小系统。

单片机最小系统,能明显减少外围电路的设计,降低系统设计的难度,非常适合本系统的设计。

综上所述,我们选择方案三。

2.3角度的获取模块论证与选择方案一:采用加速度传感器加速度传感器采用模拟量输出,需要放大电路及A/D完成角度的测量,测量精度高,但是摆杆上不易安装重物,且不易固定。

方案二:采用增量式光电旋转编码器光电旋转编码器是一种角度(角速度)检测装置,它将输入给轴的角度量,利用光电转换原理转换成相应的电脉冲。

旋转编码器具有体积小,精度高,工作可靠,接口数字化等优点。

但是旋转编码器安装较为不便,增加了系统硬件电路设计的工作量。

方案三:采用电位器作为角度传感器简易旋转倒立摆系统的角度测量也可采用可变电阻器。

精密的可变电阻器具易获得、重复性高、分辨率高、高频响应特性好、易使用等特点。

且电位器传感器结构简单,体积小,价格低廉,受环境因素影响小,性能稳定。

综合以上三种方案微调电位器可以很好地达到我们的要求,角度有效范围载33.3度左右,由于本课题精度不高,考虑带经济性和灵活性,我们选择方案三。

2.4步进电机及其驱动模块的选择方案一:采用直流减速电机,转速较低,反应速度慢,但是驱动模块简单。

方案二:采用型号为57 步进电机,为两相四线步进电机,它的步距角仅为 1.8°,扭矩为0.50N/m,有较高的空载启动频率,在十六细分后能实现0.225°的步距角能够满足本系统的控制要求,驱动电路较复杂,用42/57专用驱动模块TB6560AHQ驱动,能满足要求,而驱动L298N模块功率较小,无法满足要求,易造成失步。

最终选定的步进电机为57步进电机,驱动电路模块选用TB6560AHQ模块。

2.5 AD/DA的选择方案一:采用ADC0832ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。

其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。

芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度慢且稳定性能较差,而且占用I/O口多。

方案二:采用PCF8591PCF8591具有I2C总线结构的多通道8bits的逐次逼近型ADC和一个内置8bits 单通道ADC,功能多,速度超快,功耗低,单电源供电,串行输入输出,节约I/O口资源,并能在一个处理系统中外接多个PCF8591,能进行更多更强的处理。

综上,从各方面考虑,我们选择方案二。

3 系统的硬件设计3.1总体电路框图为了使系统能够实现各种复杂的控制功能,本设计采用一种功能强大的、高速低功耗性价比高的单片机STC89C52完成对其他部分控制。

本设计采用SV01A103AEA01R00 旋转角度传感器(旋转电位器)对摆杆的倾斜角度进行数据采集,通过PCF8591 D/A转换芯片将数据送入单片机,单片机通过数据分析控制TB6560AHQ驱动电路,进而控制步进电机使步进机旋转达到设定的位置,用数码管显示A/D的数据。

总体框图如图3-1所示。

图3-1 系统框图3.2系统电路与程序设计3.2.1 STC89C52单片机最小系统最小系统包括复位、按键、显示和电源部分,而下载模块用单片机最小系统直接下载,减少了系统的浪费,而且防止连续的拔插单片机。

STC89C52单片机最小系统如图3-4所示。

图3-4 最小系统3.2.2 PCF8591模块图如图3-2。

图3-2 PCF8591模块图3.3.3 模块芯片TB6560AHQ原理图如图3-3。

图3-3 模块芯片TB6560AHQ原理图3.3.4 供电电源由于需要驱动57步进电机,防止失步,其需要的功率较大,我们采用现有的直流稳压电源直接供电,电源模块的示意图如图3-5。

为了达到较好的工作效果,我们选用兆信RXD-302-Ⅱ双路电源供电,具有很好的可靠性和灵活性,电压电流均可调,而且还在带一个5V电压输出端。

图3-5 电源电路4系统软件总体设计框图如图4-1所示。

图4-1 总体程序框图5 测试方案与测试结果测试结果(S)这次设计的要求,所设计的系统要有较高的灵敏度和相应的转矩,这两样是最为重要的,我们所设计的系统,不能很好地满足要求,有待进一步改进6 总结经过四天三夜的辛勤努力,此次基于单片机为控制核心的简易旋转倒立摆的系统设计终于完成。

通过合理的系统构建和软件编程,本系统也未能够完成题目的要求,实现摆杆的旋转及倒立,实际测试表明,所设计系统的稳定性有待改进。

但由于时间紧,任务重,系统还有一些功能未能实现,比如摆杆在受到干扰后,能够及时恢复倒立状态。

若经过改进,相信性能还会有进一步的提升。

本次竞赛极大的锻炼了我们各方面的能力,虽然我们遇到了很多困难和障碍,但总体上成功与挫折交替,困难与希望并存,我们将继续努力争取更大的进步。

参考文献[1]刘宝延.步进电机及其驱动控制系统[M].哈尔滨:哈尔滨工业大学出版社,1972.[2]周航慈.单片机应用程序设计技术[M].北京:北京航空航天大学出版社,1991.[3] 郁有文.传感器原理及工程应用[M].西安:西安电子科技大学出版,2008.[4] 宋戈.51单片机应用开发范例大全[M].北京:人民邮电出版社,2010.[5]张毅刚.单片机原理及应用[M].北京:高等教育出版社,2009.[6] 吴建平.传感器原理及应用[M].北京:机械工业出版社,2009.[7] 唐继贤.51单片机工程应用实例[M].北京:北京航空航天大学出版社,2009.附录第一部分$NOMOD51;------------------------------------------------------------------------------; This file is part of the C51 Compiler package; Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.;------------------------------------------------------------------------------; STARTUP.A51: This code is executed after processor reset.;; To translate this file use A51 with the following invocation:;; A51 STARTUP.A51;; To link the modified STARTUP.OBJ file to your application use the following ; BL51 invocation:;; BL51 <your object file list>, STARTUP.OBJ <controls>;;------------------------------------------------------------------------------;; User-defined Power-On Initialization of Memory;; With the following EQU statements the initialization of memory; at processor reset can be defined:;; ; the absolute start-address of IDATA memory is always 0 IDATALEN EQU 80H ; the length of IDATA memory in bytes.;XDATASTART EQU 0H ; the absolute start-address of XDATA memory XDATALEN EQU 0H ; the length of XDATA memory in bytes.;PDATASTART EQU 0H ; the absolute start-address of PDATA memory PDATALEN EQU 0H ; the length of PDATA memory in bytes.;; Notes: The IDATA space overlaps physically the DATA and BIT areas of the ; 8051 CPU. At minimum the memory space occupied from the C51; run-time routines must be set to zero.;------------------------------------------------------------------------------;; Reentrant Stack Initilization;; The following EQU statements define the stack pointer for reentrant; functions and initialized it:;; Stack Space for reentrant functions in the SMALL model.IBPSTACK EQU 0 ; set to 1 if small reentrant is used. IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.;; Stack Space for reentrant functions in the LARGE model.XBPSTACK EQU 0 ; set to 1 if large reentrant is used. XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.;; Stack Space for reentrant functions in the COMPACT model.PBPSTACK EQU 0 ; set to 1 if compact reentrant is used. PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.;;------------------------------------------------------------------------------;; Page Definition for Using the Compact Model with 64 KByte xdata RAM;; The following EQU statements define the xdata page used for pdata; variables. The EQU PPAGE must conform with the PPAGE control used; in the linker invocation.;PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.;PPAGE EQU 0 ; define PPAGE number.;PPAGE_SFR DATA 0A0H ; SFR that supplies uppermost address byte; (most 8051 variants use P2 as uppermost address byte);;------------------------------------------------------------------------------; Standard SFR SymbolsACC DATA 0E0HB DATA 0F0HSP DATA 81HDPL DATA 82HDPH DATA 83HNAME ?C_STARTUP?C_C51STARTUP SEGMENT CODE?STACK SEGMENT IDATARSEG ?STACKDS 1EXTRN CODE (?C_START)PUBLIC ?C_STARTUPCSEG AT 0?C_STARTUP: LJMP STARTUP1RSEG ?C_C51STARTUPSTARTUP1:IF IDATALEN <> 0MOV R0,#IDATALEN - 1CLR AIDATALOOP: MOV @R0,ADJNZ R0,IDATALOOPENDIFIF XDATALEN <> 0MOV DPTR,#XDATASTARTMOV R7,#LOW (XDATALEN)IF (LOW (XDATALEN)) <> 0MOV R6,#(HIGH (XDATALEN)) +1 ELSEMOV R6,#HIGH (XDATALEN)ENDIFCLR AXDATALOOP: MOVX @DPTR,AINC DPTRDJNZ R7,XDATALOOPDJNZ R6,XDATALOOPENDIFIF PPAGEENABLE <> 0MOV PPAGE_SFR,#PPAGEENDIFIF PDATALEN <> 0MOV R0,#LOW (PDATASTART)MOV R7,#LOW (PDATALEN)CLR APDATALOOP: MOVX @R0,AINC R0DJNZ R7,PDATALOOPENDIFIF IBPSTACK <> 0EXTRN DATA (?C_IBP)MOV ?C_IBP,#LOW IBPSTACKTOPENDIFIF XBPSTACK <> 0EXTRN DATA (?C_XBP)MOV ?C_XBP,#HIGH XBPSTACKTOPMOV ?C_XBP+1,#LOW XBPSTACKTOPENDIFIF PBPSTACK <> 0EXTRN DATA (?C_PBP)MOV ?C_PBP,#LOW PBPSTACKTOPENDIFMOV SP,#?STACK-1; This code is required if you use L51_BANK.A51 with Banking Mode 4; EXTRN CODE (?B_SWITCH0); CALL ?B_SWITCH0 ; init bank mechanism to code bank 0LJMP ?C_STARTEND第二部分/*********************************************************************************** 标题: ************* DA-AD试验******************* **/******************************主程序*****************************************************/#include<reg52.h>#include <I2C.H>#define PCF8591 0x90 //PCF8591 地址//else IOsbit LS138A=P2^2;sbit LS138B=P2^3;sbit LS138C=P2^4;sbit first=P2^5; //按键1 模式1选择sbit second=P2^6; //按键2 模式2选择sbit third=P2^7; //按键3 模式3选择sbit fouth=P3^0; //按键4 模式4选择sbit fith=P3^1; //按键5 模式清零选择sbit shi_neng=P1^0; // 使能控制位sbit fang_xiang=P1^1;// 旋转方向控制位sbit mai_chong=P1^2; // 脉冲控制位//此表为 LED 的字模, 共阴数码管 0-9 -unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char AD_CHANNEL;unsigned long xdata LedOut[8];signed int D[32];unsigned int ad=0,ad0=0;unsigned int ms15=0;unsigned char i=0,a=0,b=0,c=0,e=0;unsigned char xiang;signed char n=0;unsigned int xx();void round();void system(){TMOD=0x01;TH0=(65535-2000)/256;TL0=(65535-2000)%256;IE=0x8a;IT0=0;TR0=1;}/******************************************************************* DAC 变换, 转化函数*******************************************************************/bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val) {Start_I2c(); //启动总线SendByte(sla); //发送器件地址if(ack==0)return(0);SendByte(c); //发送控制字节if(ack==0)return(0);SendByte(Val); //发送DAC的数值if(ack==0)return(0);Stop_I2c(); //结束总线return(1);}/******************************************************************* ADC发送字节[命令]数据函数*******************************************************************/bit ISendByte(unsigned char sla,unsigned char c){Start_I2c(); //启动总线SendByte(sla); //发送器件地址if(ack==0)return(0);SendByte(c); //发送数据if(ack==0)return(0);Stop_I2c(); //结束总线return(1);}/******************************************************************* ADC读字节数据函数*******************************************************************/ unsigned char IRcvByte(unsigned char sla){ unsigned char c;Start_I2c(); //启动总线SendByte(sla+1); //发送器件地址if(ack==0)return(0);c=RcvByte(); //读取数据0Ack_I2c(1); //发送非就答位Stop_I2c(); //结束总线return(c);}//******************************************************************/ main(){system();shi_neng=0;first=1;second=1;third=1;fouth=1;fith=1;while(1){/********以下AD-DA处理*************/switch(AD_CHANNEL){case 0: ISendByte(PCF8591,0x41);D[0]=IRcvByte(PCF8591)*2; //ADC0 模数转换1 放大2倍显示 break;case 1: ISendByte(PCF8591,0x42);D[1]=IRcvByte(PCF8591)*2; //ADC1 模数转换2break;case 2: ISendByte(PCF8591,0x43);D[2]=IRcvByte(PCF8591)*2; //ADC2 模数转换3break;case 3: ISendByte(PCF8591,0x40);D[3]=IRcvByte(PCF8591)*2; //ADC3 模数转换4break;case 4: DACconversion(PCF8591,0x40, D[4]/2); //DAC 数模转换break;}// D[4]=400; //数字--->>模拟输出D[4]=D[0]; // 把模拟输入采样的信号通过数模转换输出if(++AD_CHANNEL>4) AD_CHANNEL=0;ad=D[0]*10;xiang=xx();if(first==0)a=1,b=0,c=0,e=0;if(second==0)b=1,a=0,c=0,e=0;if(third==0)c=1,a=0,b=0,e=0;if(fouth==0)e=1,a=0,b=0,c=0;if(fith==0)a=0,b=0,c=0,e=0;if(a==1){if(xiang==0){if(ad<=510&&ad>=4250)n=1;if(ad>=0&&ad<=850)n=-1;}else n=0;}if(b==1){if(xiang==0){if(ad<=ad0)n=-1;if(ad>=ad0)n=1;}elseround();}if(c==1){if(ad>=2440&&ad<=2640)n=1;if(ad>=2720&&ad<=2860)n=-1;}if(e==1){if(ad<=2980&&2380){if(ad>=2380&&ad<=2640)n=1;if(ad>=2720&&ad<=2980)n=-1;}else round();}ad0=ad;/********以下将AD的值送到LED数码管显示*************/LedOut[0]=Disp_Tab[D[0]%10000/1000];LedOut[1]=Disp_Tab[D[0]%1000/100];LedOut[2]=Disp_Tab[D[0]%100/10]|0x80;LedOut[3]=Disp_Tab[D[0]%10];}}unsigned int xx() //摆杆象限检测{unsigned char Q;if(ad>20&&ad<1360){Q=1;}else if(ad>1360&&ad<2380){Q=2;}else if(ad>2380&&ad<2680){Q=3;}else if(ad>2680&&ad<2980){Q=4;}else if(ad>2980&&ad<4040){Q=5;}else if(ad>4040&&ad<5100){Q=6;}else Q=0;return(Q);}void round() //状态检测及相应操作{if(ad>ad0&&xiang==6){n=1;}else if(ad>ad0&&xiang==5){n=1;}else if(ad<ad0&&xiang==4){n=-1;}else if(ad>ad0&&xiang==3){n=1;}else if(ad<ad0&&xiang==2){n=-1;}else if(ad<ad0&&xiang==1){n=-1;}else n=0;}void T0ZD(void) interrupt 1 using 2{TH0=(65535-2000)/256;//250usTL0=(65535-2000)%256;//us50++;ms15++;mai_chong=1;P0 = LedOut[i];switch(i) //使用switch 语句控制138译码器{case 0:LS138A=0; LS138B=0; LS138C=0; break;case 1:LS138A=1; LS138B=0; LS138C=0; break; case 2:LS138A=0; LS138B=1; LS138C=0; break;case 3:LS138A=1; LS138B=1; LS138C=0; break;case 4:LS138A=0; LS138B=0; LS138C=1; break;case 5:LS138A=1; LS138B=0; LS138C=1; break;case 6:LS138A=0; LS138B=1; LS138C=1; break;case 7:LS138A=1; LS138B=1; LS138C=1; break;}if(++i>7) i=0;if(ms15>5){ms15=0;if(n>0) //电机反转程序{fang_xiang=1;mai_chong=0;}if(n<0) //电机正转程序{fang_xiang=0;mai_chong=0;}if(n==0) //电机锁定程序{mai_chong=1;}}}第三部分/*************************此部分为I2C总线的驱动程序,用来读取adda数据*************************************/#include<reg52.h>#include <intrins.h>#include <I2C.H>#define NOP() _nop_() /* 定义空指令 */#define _Nop() _nop_() /*定义空指令*/sbit SCL=P2^1; //I2C 时钟sbit SDA=P2^0; //I2C 数据bit ack; /*应答标志位*//*******************************************************************起动总线函数函数原型: void Start_I2c();功能: 启动I2C总线,即发送I2C起始条件.********************************************************************/void Start_I2c(){SDA=1; /*发送起始条件的数据信号*/_Nop();SCL=1;_Nop(); /*起始条件建立时间大于4.7us,延时*/_Nop();_Nop();_Nop();_Nop();SDA=0; /*发送起始信号*/_Nop(); /* 起始条件锁定时间大于4μs*/_Nop();_Nop();_Nop();_Nop();SCL=0; /*钳住I2C总线,准备发送或接收数据 */_Nop();_Nop();}/*******************************************************************结束总线函数函数原型: void Stop_I2c();功能: 结束I2C总线,即发送I2C结束条件.********************************************************************/ void Stop_I2c(){SDA=0; /*发送结束条件的数据信号*/_Nop(); /*发送结束条件的时钟信号*/SCL=1; /*结束条件建立时间大于4μs*/_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1; /*发送I2C总线结束信号*/_Nop();_Nop();_Nop();_Nop();}/*******************************************************************字节数据发送函数函数原型: void SendByte(UCHAR c);功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使ack=0)发送数据正常,ack=1; ack=0表示被控器无应答或损坏。

相关文档
最新文档