ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:22.06KB ,
资源ID:8749910      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8749910.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简易旋转倒立摆及控制装置.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、简易旋转倒立摆及控制装置 Prepared on 22 November 2020简易旋转倒立摆及控制装置2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【本科组】 2013年9月7日 摘要 本题要求设计一个简易旋转倒立摆及控制系统,其中角度传感器、步进电机和单片机890C521是系统核心部件。系统接收角度传感器反馈的信号,通过PCF8591将接收的信号转换成数字信号,将数值送入单片机中进行计算,可得出摆杆的位置,进而单片机控制步进电机,对摆杆进行控制,达到所要的旋转或者倒立的控制目标。 关键词:简易旋转倒立摆 步进电机 单片机 角度传感器 简易旋转倒立摆及控制装置(C题)【本

2、科组】1 设计任务及要求 设计任务设计并制作一套简易旋转倒立摆及其控制装置。旋转倒立摆的结构如图1-1 所示。电动机 A 固定在支架 B 上,通过转轴 F 驱动旋转臂 C 旋转。摆杆 E 通过转轴 D 固定在旋转臂 C 的一端,当旋转臂 C 在电动机 A 驱动下作往复旋转运动时,带动摆杆 E 在垂直于旋转臂 C 的平面作自由旋转。图1-1 旋转倒立摆结构示意图 基本要求 (1)摆杆从处于自然下垂状态(摆角 0)开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过-60 +60; (2)从摆杆处于自然下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动;(3)在摆杆处于自然下垂

3、状态下,外力拉起摆杆至接近 165位置,外力撤除同时,启动控制旋转臂使摆杆保持倒立状态时间不少于 5s;期间 旋转臂的转动角度不大于 90。2主控制器件的论证与选择控制器选用方案一: 采用ARM,运行速度快,引脚多,内部资源丰富,具有很高的运算速率,但是价格较高,对于初学者,ARM不易掌握.方案二: 采用STC89C52单片机, 选用STC89C52单片机作为控制核心,它具有8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路,且容易烧录,使用方便。所以我们选用STC8

4、9V52作为主控芯片 控制系统方案选择方案一:采用在面包板上搭建简易单片机系统在面包板上搭建单片机系统可以方便的对硬件做随时修改,也易于搭建,但是系统连线较多,不仅相互干扰,使电路杂乱无章,而且系统可靠性低。方案二:自制单片机印刷电路板自制印刷电路实现较为困难,实现周期长,此外也会花费较多的时间,影响整体设计进程。方案三:采用单片机最小系统。单片机最小系统,能明显减少外围电路的设计,降低系统设计的难度,非常适合本系统的设计。综上所述,我们选择方案三。 角度的获取模块论证与选择方案一:采用加速度传感器加速度传感器采用模拟量输出,需要放大电路及A/D完成角度的测量,测量精度高,但是摆杆上不易安装重

5、物,且不易固定。方案二:采用增量式光电旋转编码器光电旋转编码器是一种角度(角速度)检测装置,它将输入给轴的角度量,利用光电转换原理转换成相应的电脉冲。旋转编码器具有体积小,精度高,工作可靠,接口数字化等优点。但是旋转编码器安装较为不便,增加了系统硬件电路设计的工作量。方案三:采用电位器作为角度传感器简易旋转倒立摆系统的角度测量也可采用可变电阻器。精密的可变电阻器具易获得、重复性高、分辨率高、高频响应特性好、易使用等特点。且电位器传感器结构简单,体积小,价格低廉,受环境因素影响小,性能稳定。综合以上三种方案微调电位器可以很好地达到我们的要求,角度有效范围载度左右,由于本课题精度不高,考虑带经济性

6、和灵活性,我们选择方案三。步进电机及其驱动模块的选择方案一:采用直流减速电机,转速较低,反应速度慢,但是驱动模块简单。方案二:采用型号为57 步进电机,为两相四线步进电机,它的步距角仅为,扭矩为m,有较高的空载启动频率,在十六细分后能实现 的步距角能够满足本系统的控制要求,驱动电路较复杂,用42/57专用驱动模块TB6560AHQ驱动,能满足要求,而驱动L298N模块功率较小,无法满足要求,易造成失步。 最终选定的步进电机为57步进电机,驱动电路模块选用TB6560AHQ模块。 AD/DA的选择方案一:采用ADC0832 ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适

7、应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度慢且稳定性能较差,而且占用I/O口多。方案二: 采用PCF8591PCF8591具有I2C总线结构的多通道8bits的逐次逼近型ADC和一个内置8bits单通道ADC,功能多,速度超快,功耗低,单电源供电,串行输入输出,节约I/O口资源,并能在一个处理系统中外接多个PCF8591,能进行更多更强的处理。 综上,从各方面考虑,我们选择方案二。3 系统的硬件设计总体电路框图为了使系统能够实现各种复杂的控制功能,本设计采用一种功能强

8、大的、高速低功耗性价比高的单片机STC89C52完成对其他部分控制。本设计采用SV01A103AEA01R00 旋转角度传感器(旋转电位器)对摆杆的倾斜角度进行数据采集,通过PCF8591 D/A转换芯片将数据送入单片机,单片机通过数据分析控制TB6560AHQ驱动电路,进而控制步进电机使步进机旋转达到设定的位置,用数码管显示A/D的数据。总体框图如图3-1所示。按键电路模式选 择择 电 源单片机驱动模块步进机数码管显示传感器AD模块 图3-1 系统框图系统电路与程序设计3.2.1 STC89C52单片机最小系统 最小系统包括复位、按键 、显示和电源部分,而下载模块用单片机最小系统直接下载,减

9、少了系统的浪费,而且防止连续的拔插单片机。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系统软件总体设计框图

10、如图4-1所示。初始化 模式选择读倾角传感器电压A/D转换单片机处理读到的A/D数据控制驱动电机转动摆杆是否达到要求状态否结束是图4-1 总体程序框图5 测试方案与测试结果测试结果(S)模式模式一模式二第一次4925第二次3435这次设计的要求,所设计的系统要有较高的灵敏度和相应的转矩,这两样是最为重要的,我们所设计的系统,不能很好地满足要求,有待进一步改进6 总结经过四天三夜的辛勤努力,此次基于单片机为控制核心的简易旋转倒立摆的系统设计终于完成。通过合理的系统构建和软件编程,本系统也未能够完成题目的要求,实现摆杆的旋转及倒立,实际测试表明,所设计系统的稳定性有待改进。但由于时间紧,任务重,系

11、统还有一些功能未能实现,比如摆杆在受到干扰后,能够及时恢复倒立状态。若经过改进,相信性能还会有进一步的提升。本次竞赛极大的锻炼了我们各方面的能力,虽然我们遇到了很多困难和障碍,但总体上成功与挫折交替,困难与希望并存,我们将继续努力争取更大的进步。参考文献1刘宝延.步进电机及其驱动控制系统M.哈尔滨:哈尔滨工业大学出版社,1972.2周航慈.单片机应用程序设计技术M.北京:北京航空航天大学出版社,1991.3郁有文.传感器原理及工程应用M.西安:西安电子科技大学出版,2008.4宋戈.51单片机应用开发范例大全M.北京:人民邮电出版社,2010.5张毅刚.单片机原理及应用M.北京:高等教育出版社

12、,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.;-; : This code is executed after processor reset.; To translate this file use A51 with the

13、following invocation:; A51 ; To link the modified file to your application use the following; BL51 invocation:; BL51 , ;-; 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

14、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

15、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; func

16、tions 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 reentran

17、t 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 Mod

18、el 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 ;

19、SFR that supplies uppermost address byte; (most 8051 variants use P2 as uppermost address byte);-; Standard SFR Symbols ACC DATA 0E0HB DATA 0F0HSP DATA 81HDPL DATA 82HDPH DATA 83H NAME C_STARTUPC_C51STARTUP SEGMENT CODESTACK SEGMENT IDATA RSEG STACK DS 1 EXTRN CODE (C_START) PUBLIC C_STARTUP CSEG AT

20、 0C_STARTUP: LJMP STARTUP1 RSEG C_C51STARTUPSTARTUP1:IF IDATALEN 0 MOV R0,#IDATALEN - 1 CLR AIDATALOOP: MOV R0,A DJNZ R0,IDATALOOPENDIFIF XDATALEN 0 MOV DPTR,#XDATASTART MOV R7,#LOW (XDATALEN) IF (LOW (XDATALEN) 0 MOV R6,#(HIGH (XDATALEN) +1 ELSE MOV R6,#HIGH (XDATALEN) ENDIF CLR AXDATALOOP: MOVX DP

21、TR,A INC DPTR DJNZ R7,XDATALOOP DJNZ R6,XDATALOOPENDIFIF PPAGEENABLE 0 MOV PPAGE_SFR,#PPAGEENDIFIF PDATALEN 0 MOV R0,#LOW (PDATASTART) MOV R7,#LOW (PDATALEN) CLR APDATALOOP: MOVX R0,A INC R0 DJNZ R7,PDATALOOPENDIFIF IBPSTACK 0EXTRN DATA (C_IBP) MOV C_IBP,#LOW IBPSTACKTOPENDIFIF XBPSTACK 0EXTRN DATA

22、(C_XBP) MOV C_XBP,#HIGH XBPSTACKTOP MOV C_XBP+1,#LOW XBPSTACKTOPENDIFIF PBPSTACK 0EXTRN DATA (C_PBP) MOV C_PBP,#LOW PBPSTACKTOPENDIF MOV SP,#STACK-1; This code is required if you use with Banking Mode 4; EXTRN CODE (B_SWITCH0); CALL B_SWITCH0 ; init bank mechanism to code bank 0 LJMP C_START END第二部分

23、/* 标题: * DA-AD试验* * /*主程序*/#include#include #define PCF8591 0x90 138A138C3f4f7f6f8a2c2c2c2c2c2c2c138A138C138A138C138A138C138A138C138A138C138A138C138A138C138A138C2C2C2C2C2c2C2C */void Start_I2c() SDA=1; /*发送起始条件的数据信号*/ _Nop(); SCL=1; _Nop(); /*起始条件建立时间大于,延时*/ _Nop(); _Nop(); _Nop(); _Nop(); SDA=0; /*

24、发送起始信号*/ _Nop(); /* 起始条件锁定时间大于4s*/ _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; /*钳住I2C总线,准备发送或接收数据 */ _Nop(); _Nop();/* 结束总线函数 函数原型: void Stop_I2c(); 功能: 结束I2C总线,即发送I2C结束条件. */void Stop_I2c() SDA=0; /*发送结束条件的数据信号*/ _Nop(); /*发送结束条件的时钟信号*/ SCL=1; /*结束条件建立时间大于4s*/ _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SD

25、A=1; /*发送I2C总线结束信号*/ _Nop(); _Nop(); _Nop(); _Nop();/* 字节数据发送函数 函数原型: void SendByte(UCHAR c);功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对 此状态位进行操作.(不应答或非应答都使ack=0) 发送数据正常,ack=1; ack=0表示被控器无应答或损坏。*/void SendByte(unsigned char c) unsigned char BitCnt; for(BitCnt=0;BitCnt8;BitCnt+) /*要传送的数据长度为8位*/ if(cBitCnt)&

26、0x80)SDA=1; /*判断发送位*/ else SDA=0; _Nop(); SCL=1; /*置时钟线为高,通知被控器开始接收数据位*/ _Nop(); _Nop(); /*保证时钟高电平周期大于4s*/ _Nop(); _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); SDA=1; /*8位发送完后释放数据线,准备接收应答位*/ _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); if(SDA=1)ack=0; else ack=1; /*判断是否接收到应答信号*/ SCL=0; _Nop(); _Nop();/* 字节数据接收函数 函数原型: UCHAR RcvByte();功能: 用来接收从器件传来的数据,并判断总线错误(不发应答信号), 发完后请用应答函数应答从机。 */ unsigned char RcvByte() unsigned char retc; unsigned char BitCnt; retc=0; /*置数据线为输入方式*/ for

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1