简易旋转倒立摆及控制装置
现代控制一级倒立摆
现代控制一级倒立摆倒立摆实验电子工程学院自动化学号:目录1实验设备简介 (4)1.1倒立摆介绍 (4)1.2直线一级倒立摆 (5)2 倒立摆建模 (6)2.1 直线一阶倒立摆数学模型的推导 (6)2.1.1受力分析 (6)2.1.2微分方程建模 (8)2.1.3状态空间数学模型 (9)2.2 实际系统模型建立 (10)3系统定性、定量分析 (11)3.1系统稳定性与可控性分析 (11)3.1.1稳定性分析 (11)3.1.2能控性分析 (13)4极点配置的设计步骤 (13)4.1极点配置的计算 (13)4.2用MATLAB进行极点配置的计算 (15)4.3极点配置的综合分析 (16)5小结 (17)1实验设备简介1.1倒立摆介绍倒立摆是处于倒置不稳定状态,人为控制使其处于动态平衡的一种摆。
如杂技演员顶杆的物理机制可简化为一级倒立摆系统,是一个复杂,多变量,存在严重非线性,非自制不稳定系统。
常见的倒立摆一般由小车和摆杆两部分组成,其中摆杆可能是一级,二级或多级,在复杂的倒立摆系统中,摆杆的长度和质量均可变化。
1.2直线一级倒立摆根据自控原理实验书上相关资料,直线一级倒立摆在建模时,一般忽略系统中的一些次要因素.例如空气阻力、伺服电机的静摩擦力、系统连接处的松弛程度等,之后可将直线一级倒立摆系统抽象成小车和匀质的杆组成的系统。
倒立摆系统是典型的机电一体化系统其机械部分遵循牛顿的力学定律其电气部分遵守电磁学的基本定理.无论哪种类型的倒立摆系统,都具有3个特性,即:不确定性、耦合性、开环不稳定性. 直线型倒立摆系统,是由沿直线导轨运动的小车以及一端固定于小车上的匀质长杆组成的系统.小车可以通过传动装置由交流伺服电机驱动. 小车导轨一般有固定的行程,因而小车的运动范围是受到限制的。
2 倒立摆建模2.1 直线一阶倒立摆数学模型的推导对于忽略各种摩擦参数和空气阻力之后,直线一即倒立摆抽象为小车和均质杆组成的系统。
全国电子设计大赛题目简易旋转倒立摆及控制装置C题
2013 年全国大学生电子设计竞赛试题参赛注意事项(1)9 月4 日8:00 竞赛正式开始。
本科组参赛队只能在【本科组】题目中任选一题;高职高专组参赛队在【高职高专组】题目中任选一题,也可以选择【本科组】题目。
(2)参赛队认真填写《登记表》内容,填写好的《登记表》交赛场巡视员暂时保存。
(3)参赛者必须是有正式学籍的全日制在校本、专科学生,应出示能够证明参赛者学生身份的有效证件(如学生证)随时备查。
(4)每队严格限制3 人,开赛后不得中途更换队员。
(5)竞赛期间,可使用各种图书资料和网络资源,但不得在学校指定竞赛场地外进行设计制作,不得以任何方式与他人交流,包括教师在内的非参赛队员必须回避,对违纪参赛队取消评审资格。
(6)9 月7 日20:00 竞赛结束,上交设计报告、制作实物及《登记表》,由专人封存。
简易旋转倒立摆及控制装置(C 题)【本科组】一、任务设计并制作一套简易旋转倒立摆及其控制装置。
旋转倒立摆的结构如图1 所示。
电动机A 固定在支架B 上,通过转轴F 驱动旋转臂C 旋转。
摆杆E 通过转轴D 固定在旋转臂C 的一端,当旋转臂C 在电动机A 驱动下作往复旋转运动时,带动摆杆E 在垂直于旋转臂C 的平面作自由旋转。
二、要求图1 旋转倒立摆结构示意图1.基本要求(1)摆杆从处于自然下垂状态(摆角0°)开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过-60°~ +60°;(2)从摆杆处于自然下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动;(3)在摆杆处于自然下垂状态下,外力拉起摆杆至接近165°位置,外力撤除同时,启动控制旋转臂使摆杆保持倒立状态时间不少于5s;期间旋转臂的转动角度不大于90°。
2.发挥部分(1)从摆杆处于自然下垂状态开始,控制旋转臂作往复旋转运动,尽快使摆杆摆起倒立,保持倒立状态时间不少于10s;(2)在摆杆保持倒立状态下,施加干扰后摆杆能继续保持倒立或2s 内恢复倒立状态;(3)在摆杆保持倒立状态的前提下,旋转臂作圆周运动,并尽快使单方向转过角度达到或超过360°;(4)其他。
二级旋转倒立摆说明书
精密机械课程设计学院:专业:班级:姓名:学号:精密机械课程设计二级旋转式倒立摆说明书目录序:倒立摆简介前言:设计任务说明一、二级旋转式倒立摆概述:结构设计说明1.1 系统总体结构1.2 机械结构1.3 硬件部分1.4 软件部分1.5 相关计算二、二级旋转式倒立摆的系统使用2.1 注意事项2.1.1 准备阶段注意事项2.1.2 装配电脑的要求2.1.3 使用注意事项2.2 系统使用2.2.1 开机操作与电位器零位的调整方法2.2.2 系统操作与维护三、设计小结四、参考资料序倒立摆系统是理想的自动控制教学实验设备,使用它能全方位的满足自动控制教学的要求。
许多抽象的控制概念如系统稳定性、可控性、系统收敛速度和系统抗干扰能力等,都可以通过倒立摆直观的表现出来。
倒立摆系统具有模块性好和品种多样化的优点,其基本模块既可是一维直线运动平台或旋转运动平台,也可以是两维运动平台。
通过增加角度传感器和一节倒立摆杆,可构成直线单节倒立摆、旋转单节倒立摆或两维单节倒立摆;通过增加两节倒立摆杆和相应的传感器,则可构成两节直线倒立摆和两节旋转倒立摆。
倒立摆的控制技巧和杂技运动员倒立平衡表演技巧有异曲同工之处,极富趣味性,学习自动控制课程的学生通过使用它来验证所学的控制理论和算法,加深对所学课程的理解。
由于倒立摆系统机械结构简单、易于设计和制造,成本廉价,因此在欧美发达国家的高等院校,它已成为常见的控制教学设备。
同时由于倒立摆系统的高阶次、不稳定、多变量、非线性和强耦合特性,许多现代控制理论的研究人员一直将它视为研究对象,并不断从中发掘出新的控制理论和控制方法。
因此,倒立摆系统也是进行控制理论研究的理想平台。
直线运动型倒立摆外形美观、紧凑、可靠性好。
除了为每个子系列提供模块化的实现方案外,其控制系统的软件平台采用开放式结构,使学生建立不同的模型,验证不同的控制算法,供不同层次的学生进行实验和研究。
由于采用了运动控制器和伺服电机进行实时运动控制,以及齿型带传动,固高公司的倒立摆系统还是一个典型的机电一体化教学实验平台,可以用来进行各种电机拖动、定位和速度跟踪控制实验,让学生理解和掌握机电一体化产品的部件特征和系统集成方法。
历年年全国大学生电子设计竞赛题目
2015年全国大学生电子设计竞赛题目【本科组】双向DC-DC变换器(A题)风力摆控制系统(B题)多旋翼自主飞行器(C题)增益可控射频放大器(D题)80MHz-100MHz频谱分析仪(E题)数字频率计(F题)短距视频信号无线通信网络(G题)第一届(1994年)第一届(1994年)全国大学生电子设计竞赛A.简易数控直流电源B.多路数据采集系统第二届(1995年)第二届(1995年)全国大学生电子设计竞赛A.实用低频功率放大器B.实用信号源的设计和制作C.简易无线电遥控系统D.简易电阻、电容和电感测试仪第三届(1997年)第三届(1997年)全国大学生电子设计竞赛A.直流稳定电源B.简易数字频率计C.水温控制系统D.调幅广播收音机第四届(1999年)第四届(1999年)全国大学生电子设计竞赛A.测量放大器B.数字式工频有效值多用表C.频率特性测试仪D.短波调频接收机E.数字化语音存储与回放系统第五届(2001年)第五届(2001年)全国大学生电子设计竞赛A.波形发生器B.简易数字存储示波器C.自动往返电动小汽车D.高效率音频功率放大器E.数据采集与传输系统F.调频收音机第六届(2003年)第六届(2003年)全国大学生电子设计竞赛A.电压控制LC振荡器B.宽带放大器C.低频数字式相位测量仪D.简易逻辑分析仪E.简易智能电动车F.液体点滴速度监控装置第七届(2005年)第七届(2005年)全国大学生电子设计竞赛A.正弦信号发生器B.集成运放测试仪C.简易频谱分析仪D.单工无线呼叫系统E.悬挂运动控制系统F.数控恒流源G.三相正弦波变频电源第八届(2007年)第八届(2007年)全国大学生电子设计竞赛A.音频信号分析仪B.无线识别C.数字示波器D.程控滤波器E.开关稳压电源F.电动车跷跷板G.积分式直流数字电压表H.信号发生器I.可控放大器J.电动车跷跷板第九届(2009年)第九届(2009年)全国大学生电子设计竞赛A.光伏并网发电模拟装置B.声音导引系统C.宽带直流放大器D.无线环境监测模拟装置E.电能收集充电器F.数字幅频均衡功率放大器G.低频功率放大器H.LED点阵书写显示屏I.模拟路灯控制系统第十届(2011年)A.开关电源模块并联供电系统B.基于自由摆的平板控制系统C.智能小车D. LC 谐振放大器E.简易数字信号传输性能分析仪F.帆板控制系统G.简易自动电阻测试仪H.波形采集、存储与回放系统第十一届(2013年)A.单相AC-DC变换电路B.四旋翼自主飞行器C.简易旋转倒立摆及控制装置D.射频宽带放大器E.简易频率特性测试仪F.红外光通信装置G.手写绘图板J.电磁控制运动装置K.简易照明线路探测仪L.直流稳压电源及漏电保护装置第十二届(2015年)【本科组】双向DC-DC变换器(A题)风力摆控制系统(B题)多旋翼自主飞行器(C题)增益可控射频放大器(D题)80MHz-100MHz频谱分析仪(E题)数字频率计(F题)短距视频信号无线通信网络(G题)【高职高专组】LED闪光灯电源(H题)风板控制装置(I题)小球滚动控制系统(J题)获奖状况。
单级旋转倒立摆系统
《现代控制理论》课程综合设计单级旋转倒立摆系统1引言单级旋转倒立摆系统一种广泛应用的物理模型,其物理模型如下:图示为单级旋转倒立摆系统原理图。
其中摆的长度∕1=lm,质量∏71 =Olkg ,横杆的长度厶 =1 m f 质量nt2 =Olkg1重力加速度g =0.98∕π/52O以在水平方向对横杆施加的力矩M 为输入,横杆相对参考系产生的角位移q为输出。
控制的目的是当横杆在水平方向上旋转时,将倒立摆保持在垂直位置上。
图1单级旋转倒立摆系统模型单级旋转倒立摆可以在平行于纸面360°的范围内自由摆动。
倒立摆控制系统的目的是使倒立摆在外力的推动下,摆杆仍然保持竖直向上状态。
在横杆静止的状态下,由于受到重力的作用,倒立摆的稳定性在摆杆微小的扰动下,就会使倒立摆的平衡无法复位,这时必须使横杆在平行于纸面的方向通过位移产生相应的加速度。
作用力与物体位移对时间的二阶导数存在线性关系,故单级倒立摆系统是一个非线性系统。
本文综合设计以以在水平方向对横杆施加的力矩M为输入,横杆相对参考系产生的角位移q为输出,建立状态空间模型,在原有系统上中综合带状态观测器状态反馈系统,从而实现当横杆在旋转运动时,将倒立摆保持在垂直位置上。
2模型建立本文将横杆和摆杆分别进行受力分析,定义以下物理量:本文将横杆和摆杆M-NI 2=J 2d~θx分别进行受力分析,定义以下物理量:M 为加在横杆上的力矩;〃勺为摆杆质量; 厶为摆杆长度;人为摆杆的转动惯量;“为横杆的质量;厶为横杆的长度;厶为 横杆的转动惯量;q 为横杆在力矩作用下转动的角度;g 为摆杆与垂直方向的夹 角;N 和H 分别为摆杆与横杆之间相互作用力的水平和垂直方向的分量。
倒立 摆模型受力分析如图2所示。
图2倒立摆模型受力分析 摆杆水平方向受力平衡方程:NM I 牛甸/+O + ? Sina) (∕2-横杆的转动弧长即位移)摆杆垂直方向受力平衡方程:〃2 I I卑g=卑 2叶一寸COSq)Ur 2 2摆杆转矩平衡方程:横杆转矩平衡方程:XX考虑到摆杆在设定点q,Q=o 附近做微小振动,对上式进行线性化,即• ml JSi 吨≈q, cos^2 ≈1 ‘心0,其中八〒,近似线性化得到,JlN = OΛ-(Θ +OM (IV ・//-0.98 = 0 1 /1If)——= H ∙0.5IN ∙0.5∙l 30 dfM-N = -^∙30 dr整理上式可得倒立摆的状态方程:1 ∙∙ ∙∙—q —0 + 14.70—15M<4 ∙∙ 1 ∙∙-<91 + -6>2-10M =O l3 2本文参数代入计算可得:& =-4.642Q+11.05 3M Q= 12.3790—9.474M■x=q=[ι 0 0 0]■■ ■X =■ qO I■O^Λ ^^0χ2OO -¾.OO"P ■O 尤2 + 11.053 1O O9.474取状态变量如下:故1 OO -4.642 O O O 12.3793稳定性和能控性分析3.1稳定性分析判断一个系统是否稳定,只需判断该系统传递函数的极点是否都在左半平面。
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显示器进行声光显示。
2013简易旋转倒立摆
本方案采用单回路PID控制方案,选取摆杆角度作为反馈信号,此方案间接对摆杆进行控制,系统结构框图如下图所示。
[7]《单片机原理及应用》,李建忠著,西安:西安电子科技大学,2002年;
附录
一.元器件及材料清单
1
单片机最小系统
2
L298N驱动模块
3
ADXL345角度传感器
4
旋转臂
5
摆杆
6
木板支架结构
二.主要程序
#include <REG51.H>
#include <math.h> //Keil library
硬件电路部分主要由单片机控制模块、电机驱动模块、角度传感器检测模块、电源模块等部分组成,系统原理图如下图所示:
3.1.1 单片机最小系统电路图
图10单片机最小系统图
3.1.2 L298N电机驱动模块电路图
图11电机驱动图
3.1.3 角度传感器
图12角度传感器
角度传感器测得X、Y轴方向的重力加速度,通过IIC通信将信号输入单片机,单片机合成数据,得到X、Y轴方向加速度的值,从而计算得出角度值,然后利用屏幕将角度值实时显示出来。
/*********************电机驱动管脚定义****************************/
sbit en=P1^0;
sbit s1=P1^1;
sbit s2=P1^2;
历年年全国大学生电子设计竞赛题目
2015年全国大学生电子设计竞赛题目【本科组】双向DC-DC变换器(A题)风力摆控制系统(B题)多旋翼自主飞行器(C题)增益可控射频放大器(D题)80MHz-100MHz频谱分析仪(E题)数字频率计(F题)短距视频信号无线通信网络(G题)第一届(1994年)第一届(1994年)全国大学生电子设计竞赛A.简易数控直流电源B.多路数据采集系统第二届(1995年)第二届(1995年)全国大学生电子设计竞赛A.实用低频功率放大器B.实用信号源的设计和制作C.简易无线电遥控系统D.简易电阻、电容和电感测试仪第三届(1997年)第三届(1997年)全国大学生电子设计竞赛A.直流稳定电源B.简易数字频率计C.水温控制系统D.调幅广播收音机第四届(1999年)第四届(1999年)全国大学生电子设计竞赛A.测量放大器B.数字式工频有效值多用表C.频率特性测试仪D.短波调频接收机E.数字化语音存储与回放系统第五届(2001年)第五届(2001年)全国大学生电子设计竞赛A.波形发生器B.简易数字存储示波器C.自动往返电动小汽车D.高效率音频功率放大器E.数据采集与传输系统F.调频收音机第六届(2003年)第六届(2003年)全国大学生电子设计竞赛A.电压控制LC振荡器B.宽带放大器C.低频数字式相位测量仪D.简易逻辑分析仪E.简易智能电动车F.液体点滴速度监控装置第七届(2005年)第七届(2005年)全国大学生电子设计竞赛A.正弦信号发生器B.集成运放测试仪C.简易频谱分析仪D.单工无线呼叫系统E.悬挂运动控制系统F.数控恒流源G.三相正弦波变频电源第八届(2007年)第八届(2007年)全国大学生电子设计竞赛A.音频信号分析仪B.无线识别C.数字示波器D.程控滤波器E.开关稳压电源F.电动车跷跷板G.积分式直流数字电压表H.信号发生器I.可控放大器J.电动车跷跷板第九届(2009年)第九届(2009年)全国大学生电子设计竞赛A.光伏并网发电模拟装置B.声音导引系统C.宽带直流放大器D.无线环境监测模拟装置E.电能收集充电器F.数字幅频均衡功率放大器G.低频功率放大器点阵书写显示屏I.模拟路灯控制系统第十届(2011年)A.开关电源模块并联供电系统B.基于自由摆的平板控制系统C.智能小车D. LC 谐振放大器E.简易数字信号传输性能分析仪F.帆板控制系统G.简易自动电阻测试仪H.波形采集、存储与回放系统第十一届(2013年)A.单相AC-DC变换电路B.四旋翼自主飞行器C.简易旋转倒立摆及控制装置D.射频宽带放大器E.简易频率特性测试仪F.红外光通信装置G.手写绘图板J.电磁控制运动装置K.简易照明线路探测仪L.直流稳压电源及漏电保护装置第十二届(2015年)【本科组】双向DC-DC变换器(A题)风力摆控制系统(B题)多旋翼自主飞行器(C题)增益可控射频放大器(D题)80MHz-100MHz频谱分析仪(E题)数字频率计(F题)短距视频信号无线通信网络(G题)【高职高专组】LED闪光灯电源(H题)风板控制装置(I题)小球滚动控制系统(J题)获奖状况。
倒立摆控制系统的设计
自动控制理论课程设计倒立摆系统的控制器设计学生姓名:指导教师:班级:二O一三课程设计指导教师评定成绩表:指导教师评定成绩:指导教师签名:年月日重庆大学本科学生课程设计任务书目录一、倒立摆控制系统概述倒立摆装置被公认为自动控制理论中的典型实验设备,也是控制理论教学和科研中控对象,运用控制手段可使之具有良好的稳定性。
通过对倒立摆系统的研究,不仅可以解决控制中的理论问题,还能将控制理论所涉与的三个基础学科:力学、数学和电学(含计算机)有机的结合起来,在倒立摆系统中进行综合应用。
在多种控制理论与方法的研究和应用中,特别是在工程实践中,也存在一种可行性的试验问题,将其理论和方法得到有效的经验,倒立摆为此提供一个从控制理论通往实践的桥梁。
在稳定性控制问题上,倒立摆既具有普遍性又具有典型性。
倒立摆系统作为一个控制装置,结构简单、价格低廉,便于模拟和数字实现多种不同的控制方法,作为一个被控对象,它是一个高阶次、不稳定、多变量、非线性、强耦合的快速系统,只有采用行之有效的控制策略,才能使其稳定。
倒立摆系统可以用多种理论和方法来实现其稳定控制,如、自适应、状态反馈、智能控制、模糊控制与人工神经元网络等多种理论和方法,都能在倒立摆系统控制上得到实现,而且当一种新的控制理论和方法提出以后,在不能用理论加以严格证明时,可以考虑通过倒立摆装置来验证其正确性和实用性。
倒立摆的种类:悬挂式、直线、环形、平面倒立摆等。
一级、二级、三级、四级乃至多级倒立摆。
倒立摆控制系统的组成:倒立摆系统由倒立摆本体,电控箱以与控制平台(包括运动控制卡和机)三大部分组成。
本次课程设计利用单级倒立摆,主要设计机内控制函数,减小超调量和调节时间!二、数学模型的建立系统建模可以分为两种:机理建模和实验建模。
对于倒立摆系统,由于其本身是自不稳定的系统,实验建模存在一定的困难。
机理建模就是在了解研究对象的运动规律基础上,通过物理、化学等学科的知识和数学手段建立起系统内部变量、输入变量以与输出变量之间的数学关系。
历年年全国大学生电子设计竞赛题目
2015年全国大学生电子设计竞赛题目【本科组】双向DC-DC变换器(A题)风力摆控制系统(B题)多旋翼自主飞行器(C题)增益可控射频放大器(D题)80MHz-100MHz频谱分析仪(E题)数字频率计(F题)短距视频信号无线通信网络(G题)第一届(1994年)第一届(1994年)全国大学生电子设计竞赛A.简易数控直流电源B.多路数据采集系统第二届(1995年)第二届(1995年)全国大学生电子设计竞赛A.实用低频功率放大器B.实用信号源的设计和制作C.简易无线电遥控系统D.简易电阻、电容和电感测试仪第三届(1997年)第三届(1997年)全国大学生电子设计竞赛直流稳定电源A.B.简易数字频率计C.水温控制系统D.调幅广播收音机第四届(1999年)第四届(1999年)全国大学生电子设计竞赛A.测量放大器B.数字式工频有效值多用表C.频率特性测试仪D.短波调频接收机E.数字化语音存储与回放系统第五届(2001年)第五届(2001年)全国大学生电子设计竞赛A.波形发生器B.简易数字存储示波器C.自动往返电动小汽车D.高效率音频功率放大器E.数据采集与传输系统F.调频收音机第六届(2003年)第六届(2003年)全国大学生电子设计竞赛A.电压控制LC振荡器宽带放大器B.C.低频数字式相位测量仪D.简易逻辑分析仪E.简易智能电动车F.液体点滴速度监控装置第七届(2005年)第七届(2005年)全国大学生电子设计竞赛A.正弦信号发生器B.集成运放测试仪C.简易频谱分析仪D.单工无线呼叫系统E.悬挂运动控制系统F.数控恒流源G.三相正弦波变频电源第八届(2007年)第八届(2007年)全国大学生电子设计竞赛A.音频信号分析仪B.无线识别C.数字示波器D.程控滤波器E.开关稳压电源F.电动车跷跷板积分式直流数字电压表G.H.信号发生器I.可控放大器J.电动车跷跷板第九届(2009年)第九届(2009年)全国大学生电子设计竞赛A.光伏并网发电模拟装置B.声音导引系统C.宽带直流放大器D.无线环境监测模拟装置E.电能收集充电器F.数字幅频均衡功率放大器G.低频功率放大器H.LED点阵书写显示屏I.模拟路灯控制系统第十届(2011年)A.开关电源模块并联供电系统B.基于自由摆的平板控制系统C.智能小车D. LC 谐振放大器E.简易数字信号传输性能分析仪F.帆板控制系统简易自动电阻测试仪G.H.波形采集、存储与回放系统第十一届(2013年)A.单相AC-DC变换电路B.四旋翼自主飞行器C.简易旋转倒立摆及控制装置D.射频宽带放大器E.简易频率特性测试仪F.红外光通信装置G.手写绘图板J.电磁控制运动装置K.简易照明线路探测仪L.直流稳压电源及漏电保护装置第十二届(2015年)【本科组】双向DC-DC变换器(A题)风力摆控制系统(B题)多旋翼自主飞行器(C题)增益可控射频放大器(D题)80MHz-100MHz频谱分析仪(E题)数字频率计(F题)短距视频信号无线通信网络(G题)【高职高专组】LED闪光灯电源(H题)风板控制装置(I题)小球滚动控制系统(J题)获奖状况.。
XZII型倒立摆产品说明书
目录前言一、XZ-IIA旋转式倒立摆概述1.1 系统总体结构1.2 机械结构1.3 硬件部分1.4 软件部分二、XZ-IIA旋转式倒立摆的系统使用2.1 注意事项2.1.1 开机注意事项2.1.2 装配电脑的要求2.1.3 使用注意事项2.2 系统使用2.2.1 开机操作与电位器零位的调整方法2.2.2 系统操作与维护三、XZ-IIB、XZ-IIC型倒立摆的操作说明3.1 随动系统的机械改装说明3.2 XZ-IIC型倒立摆操作说明3.3 XZ-IIB型倒立摆操作说明前言现代科技发展,推动传统教学方式的改革,迫使教学着眼培养学生的创造能力和实际操作能力。
一流的教学实验设备为学生掌握所学知识提供可靠保证,使之能更好更快地运用到社会生产实践中去。
科大创新股份有限公司自动化分公司研制的XZ-Ⅱ型旋转式倒立摆系统,是一个典型的机电一体化系统,采用内置DSP运动控制器和力矩电机进行实时运动控制。
XZ-Ⅱ型倒立摆,及其功能扩展后的位置伺服系统,为自动控制理论,计算机控制系统等课程的教学和研究,提供了这类课程全方位的教学实验平台,同时它让学生理解和掌握机电一体化产品的部件特征和系统集成方法。
倒立摆及其功能扩展的位置伺服系统作为一种自动控制教学实验设备,能够全面地满足自动控制教学的要求。
许多抽象的控制概念如系统稳定性、可控性、系统收敛速度和系统抗干扰能力等,都可以通过实验装置直观的表现出来。
倒立摆的控制技巧,极富趣味性,很适合学习自动控制课程的学生使用它来验证所学的控制理论和算法,加深对所学课程的理解。
基于DSP的旋转式倒立摆系统的最大特点是机械结构简单、可靠,成本低廉、体积小,是高等院校理想的自动控制教学的实验设备。
除教学用途之外,由于倒立摆系统的高阶次、不稳定、多变量、非线性和强耦合等特性,许多控制理论的研究人员一直将它作为研究对象,并不断从中发掘出新的控制理论和控制方法,相关的成果在航天科技和机器人学方面获得了广泛的应用。
固高科技《倒立摆与自动控制原理实验》
©Googol 2005
III
内容简介
这是一本为工科自动化和机电一体化的专科、本科以及研究生编写的实验教 科书,可以作为控制领域各门控制课程的配套实验教材,本书的主要内容包括经 典控制理论的部分实验内容和现代控制理论的部分实验内容,经典控制理论内容 包括实际系统模型的建立、根轨迹分析和控制器设计、频率响应分析、PID 控制 分析等内容,现代控制理论内容主要包括状态空间极点配置和线性最优控制 LQR 方法,本书实验内容主要基于固高科技倒立摆完成。
Googol Technology
倒立摆与 自动控制原理实验 V2.0
©Googol 2005
固高科技(深圳)有限公司
二○○五年
1
固高科技(深圳)有限公司 GOOGOL TECHNOLOGY (SHENZHEN) LTD
版权声明
固高科技(深圳)有限公司 保留所有版权
固高科技有限公司(以下简称固高科技)具有本产品及其软件的专利权、版 权和其它知识产权。未经授权,不得直接或间接的复制、制造、加工、使用本产 品及相关部分。
直线倒立摆系统 GLIP 系列包含《直线倒立摆系统 GLIP 系列安装与使用手册》 和《倒立摆与自动控制原理实验》。
声明
固高科技保留在不预先通知的情况下修改设备和文档的权力。 固高科技不承担由于使用本说明书或本产品不当,所造成的直接的、间接的、 特殊的、附带的、或相应的损失和赔偿。
商标声明
Windows 和 Microsoft 为 Microsoft 公司注册商标。 Mathematica 为沃尔夫勒姆研究公司(Wolfram Research Inc.)公司注册商标。 Matlab 为 Mathworks 公司注册商标
一级倒立摆控制装置的设计与开发
得 到 了较 好 的控 制 效 角度 /i q
制 程 序编 制灵 活 的特 点 。用 于控制 技 术 的
实 验 教 学 . 在 实 验 课
嚣 ≥≤ ≤- 拦 ≯ 三
一
图 3电气 系统 的设计
i .h F g3T eDe i f lc r c l y t m s n g o e e ti a se s
置 保持 动 态 平衡 。根据 牛 顿一 拉方 法 可 建 立直 线 型 一 欧
收 稿 日期 :2 1 — 9 0 0 1 0 —2
『 『 0 0 1 X 1 1 0
y0= 1 = 【0 J 【J0 0
式 中 :M一小 车 质量 ;m一摆 杆质 量 ;b 小车 摩 擦 一 系数 ;l 一摆 杆转 动 轴心 到杆 质心 的长 度 ;I 一摆 杆惯 量 ;
A s at T e i l i e e edlm dv eicmp s f bt c: h n e n r dpn u ei o oe o r sg v t u c s d a
ecj cmpt cuio f edlm ag no ebc g a h o ue aq itno nu nl s sred a snl p r si p u ee f ki
K= 3 和 K = 5 以 I15 D7 ,
辨 率 为 8位 ,转 换 时 间
为 10x ) 0 1 ,最 终把 电压转 换 为 0 2 5的数 字量 。飞思卡 s —5
尔 H 桥 直 流 电机驱 动 器 ( 出功 率为 19 输 8 W,额定 输 入
电 压为 2 V,额定 输入 电流为 9 1 A)采 用 P WM 控 制方 式
程 的实 践学 习 ,丰 富了实 验 的手段 ,在 实 验课 中取 得 良
简易旋转倒立摆及控制装置
简易旋转倒立摆及控制装置摘要:本文分析了旋转倒立摆的结构和特点,设计了以微控制器为核心的控制系统和算法,整个系统由MC9S12XS128控制单元、电机驱动电路、液晶显示模块、角度传感器模块、速度检测等5个板块组成。
采用VNH3SP30驱动直流电机,该驱动具有内阻小、电流大、且控制简单的特性。
数据采集使用高精度低量程加速倾角传感器。
为使测控系统更精确,在数据采集的过程中采用了非线性误差校正以及数字滤波等数据处理方法,同时设计中考虑到可能存在的各种干扰因素,采用了软硬件结合的抗干扰技术,提高了系统的稳定性。
实际测试表明,所采用的设计方案先进有效,完全达到了设计要求。
关键词:倒立摆;PID控制;陀螺仪;MC9S12XS128目录一系统硬件设计……………………………………………………………….1.1器件的比较与选择……………………………………………………………1.1.1单片机……………………………………………………………………1.1.2电机………………………………………………………………………..1.1.3电机驱动………………………………………………………………….1.1.4角度传感器……………………………………………………………….1.2方案描述……………………………………………………………………..二单元电路的设计…………………………………………………………………..2.1 控制单元………………………………………………………………………..2.2 电机驱动电路…………………………………………………………………..2.3 多路电源电路……………………………………………………………………2.4 传感器电路模块………………………………………………………………….2.5 显示电路…………………………………………………………………………三系统软件设计……………………………………………………………………….3.1系统总的流程图………………………………………………………………….3.2 摆杆直立控制算法………………………………………………………………..3.3 角度单闭环控制算法……………………………………………………………….3.4子程序………………………………………………………………………………..四实现的技术指标………………………………………………………………………….五参考文献………………………………………………………………………………….附录:元器清单一系统硬件设计摆架系统的结构:摆架由支架,旋转臂,摆杆,轴承等构成三角框架,其中为了保证方便控制并有较高的灵敏度,支架采用防震木质材料,旋转臂采用工程塑料碳素杆,摆杆采用圆形铁杆。
2013年全国大学生电子设计竞赛(C题)
2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)2013年9月7日摘要旋转倒立摆是一个非线性、强耦合、多变量和自然不稳定系统。
通过它能有效地反映控制过程中诸如镇定性、鲁棒性、随动性以及跟踪等多种关键问题,是检验各种控制理论的理想模型。
对倒立摆的研究不仅具有深远的理论意义,而且在航天科技和机器人学领域中也有现实指导性意义。
本作品是基于STC89C52单片机作为核心控制器,以L298N作为驱动电路芯片,利用直流电机PWM调速原理,控制旋转臂的转速,从而控制摆杆的频率和振幅,当二者共振时就实现了摆杆在某一固定角度往复运动,能够实现倒立摆的基本功能。
利用加速度传感器获取摆杆的状态,实现摆杆在固定角度摆动,最终实现在竖直方向倒立,即小范围内摆动而不倒下。
关键词:旋转倒立摆,STC89C52,PWM调速,共振目录1系统方案------------------------------------------------ 1 1.1 设计要求 ------------------------------------------1 1.1.1 任务----------------------------------------1 1.1.2 要求----------------------------------------2 1.1.3 说明----------------------------------------2 1.2 总体设计方案---------------------------------------3 1.2.1 设计思路-------------------------------------3 1.2.2 方案论证与比较-------------------------------5 2单元硬件电路设计-----------------------------------------6 2.1 单片机控制系统设计---------------------------------7 2.1.1 STC89C52最小系统-----------------------------6 2.1.2 AD采集模块电路设计---------------------------6 2.1.3 显示模块电路设计-----------------------------7 2.2 加速度传感器的应用---------------------------------7 2.2.1 MMA7361L原理及应用---------------------------7 2.3 电机驱动模块---------------------------------------7 2.3.1 L298N驱动电路设计----------------------------8 3程序结构与设计-------------------------------------------8 3.1 程序流程图-----------------------------------------9 3.1.1 主程序流程图及算法分析-----------------------9 3.1.2 显示程序设计--------------------------------10 4系统测试------------------------------------------------11 4.1 实验摆角测试-------------------------------------114.2 实验结果分析-----------------------------------11 5参考文献----------------------------------------------12 附录1 总程序附录2 电路原理图简易旋转倒立摆及控制装置(C题)【XX组】1系统方案本系统主要由电机驱动模块、显示模块、加速度传感器模块,下面详细介绍各模块的选择与特点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【本科组】2013年9月7日摘要本题要求设计一个简易旋转倒立摆及控制系统,其中角度传感器、步进电机和单片机890C521是系统核心部件。
系统接收角度传感器反馈的信号,通过PCF8591将接收的信号转换成数字信号,将数值送入单片机中进行计算,可得出摆杆的位置,进而单片机控制步进电机,对摆杆进行控制,达到所要的旋转或者倒立的控制目标。
关键词:简易旋转倒立摆步进电机单片机角度传感器目录1 设计任务及要求.....................................................1.1 设计任务....................................................1.2 基本要求................................................... 2主控制器件的论证与选择.............................................2.1控制器选用 ..................................................2.2控制系统方案选择 ............................................2.3角度的获取模块论证与选择 ....................................2.4步进电机及其驱动模块的选择 ..................................2.5 AD/DA的选择 ................................................3 系统的硬件设计.....................................................3.1总体电路框图 ................................................ 图3-1 系统框图..................................... 错误!未定义书签。
3.2系统电路与程序设计 ..........................................3.2.1 STC89C52单片机最小系统...............................3.2.2 PCF8591模块图如图3-2。
............. 错误!未定义书签。
3.3.3 模块芯片TB6560AHQ原理图如图3-3。
....................3.3.4 供电电源............................................. 4系统软件总体设计框图.............................. 错误!未定义书签。
5 测试方案与测试结果.................................................6 总结............................................................... 参考文献............................................................. 附录.................................................................简易旋转倒立摆及控制装置(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所示。
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 0IDATALEN EQU 80H ; the length of IDATA memory in bytes.;XDATASTART EQU 0H ; the absolute start-address of XDATA memoryXDATALEN EQU 0H ; the length of XDATA memory in bytes.;PDATASTART EQU 0H ; the absolute start-address of PDATA memoryPDATALEN 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 reentrantis 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 KBytexdata RAM;; The following EQU statements define the xdata page used forpdata; variables. The EQU PPAGE must conform with the PPAGEcontrol 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_STARTUPC_C51STARTUP SEGMENT CODESTACK SEGMENT IDATARSEG STACKDS 1EXTRN CODE (C_START)PUBLIC C_STARTUPCSEG AT 0C_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,#PPAGE ENDIFIF 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 BankingMode 4; EXTRN CODE (B_SWITCH0); CALL B_SWITCH0 ; init bankmechanism 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 模数转换3 break;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表示被控器无应答或损坏。