简易旋转倒立摆及控制装置_第1页
简易旋转倒立摆及控制装置_第2页
简易旋转倒立摆及控制装置_第3页
简易旋转倒立摆及控制装置_第4页
简易旋转倒立摆及控制装置_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2 20 01 13 3 年年全全国国大大学学生生电电子子设设计计竞竞赛赛 简简易易旋旋转转倒倒立立摆摆及及控控制制装装置置 C C 题题 本科组本科组 2013 年年 9 月月 7 日日 3 摘要摘要 本题要求设计一个简易旋转倒立摆及控制系统 其中角度传感器 步进电机和单片机 890C521 是系统核心部件 系统接收角度传感器反馈的信号 通过 PCF8591 将接收的信号 转换成数字信号 将数值送入单片机中进行计算 可得出摆杆的位置 进而单片机控制步 进电机 对摆杆进行控制 达到所要的旋转或者倒立的控制目标 关键词 简易旋转倒立摆 步进电机 单片机 角度传感器 4 目录 1 设计任务及要求 6 1 1 设计任务 6 1 2 基本要求 6 2 主控制器件的论证与选择 7 2 1 控制器选用 7 2 2 控制系统方案选择 7 2 3 角度的获取模块论证与选择 7 2 4 步进电机及其驱动模块的选择 8 2 5 AD DA 的选择 8 3 系统的硬件设计 8 3 1 总体电路框图 8 图 3 1 系统框图 9 3 2 系统电路与程序设计 10 3 2 1 STC89C52 单片机最小系统 10 3 2 2 PCF8591 模块图如图 3 2 11 3 3 3 模块芯片 TB6560AHQ 原理图如图 3 3 11 3 3 4 供电电源 12 4 系统软件总体设计框图 14 5 测试方案与测试结果 14 6 总结 16 参考文献 17 附录 18 5 简简易易旋旋转转倒倒立立摆摆及及控控制制装装置置 C C 题题 本科组本科组 1 1 设计任务及要求设计任务及要求 1 11 1 设计任务设计任务 设计并制作一套简易旋转倒立摆及其控制装置 旋转倒立摆的结构如图 1 1 所 示 电动机 A 固定在支架 B 上 通过转轴 F 驱动旋转臂 C 旋转 摆杆 E 通 过转轴 D 固定在旋转臂 C 的一端 当旋转臂 C 在电动机 A 驱动下作往复旋 转运动时 带动摆杆 E 在垂直于旋转臂 C 的平面作自由旋转 图1 1 旋转倒立摆结构示意图 1 21 2 基本要求基本要求 1 摆杆从处于自然下垂状态 摆角 0 开始 驱动电机带动旋转臂作往复 旋转使摆杆摆动 并尽快使摆角达到或超过 60 60 2 从摆杆处于自然下垂状态开始 尽快增大摆杆的摆动幅度 直至完成圆周 运动 3 在摆杆处于自然下垂状态下 外力拉起摆杆至接近 165 位置 外力撤除 同时 启动控制旋转臂使摆杆保持倒立状态时间不少于 5s 期间 旋转臂的转 动角度不大于 90 6 2 2 主控制器件的论证与选择主控制器件的论证与选择 2 12 1 控制器选用控制器选用 方案一 采用 ARM 运行速度快 引脚多 内部资源丰富 具有很高的运算速 率 但是价格较高 对于初学者 ARM 不易掌握 方案二 采用 STC89C52 单片机 选用 STC89C52 单片机作为控制核心 它 具有 8k 字节 Flash 512 字节 RAM 32 位 I O 口线 看门狗定时器 2 个数 据指针 三个 16 位 定时器 计数器 一个 6 向量 2 级中断结构 全双工串行 口 片内晶振及时钟电路 且容易烧录 使用方便 所以我们选用 STC89V52 作为主控芯片 2 22 2 控制系统方案选择控制系统方案选择 方案一 采用在面包板上搭建简易单片机系统 在面包板上搭建单片机系统可以方便的对硬件做随时修改 也易于搭建 但 是系统连线较多 不仅相互干扰 使电路杂乱无章 而且系统可靠性低 方案二 自制单片机印刷电路板 自制印刷电路实现较为困难 实现周期长 此外也会花费较多的时间 影响 整体设计进程 方案三 采用单片机最小系统 单片机最小系统 能明显减少外围电路的设计 降低系统设计的难度 非常 适合本系统的设计 综上所述 我们选择方案三 2 32 3 角度的获取模块论证与选择角度的获取模块论证与选择 方案一 采用加速度传感器 加速度传感器采用模拟量输出 需要放大电路及 A D 完成角度的测量 测量 精度高 但是摆杆上不易安装重物 且不易固定 方案二 采用增量式光电旋转编码器 光电旋转编码器是一种角度 角速度 检测装置 它将输入给轴的角度量 利用光电转换原理转换成相应的电脉冲 旋转编码器具有体积小 精度高 工 作可靠 接口数字化等优点 但是旋转编码器安装较为不便 增加了系统硬件电 路设计的工作量 方案三 采用电位器作为角度传感器 简易旋转倒立摆系统的角度测量也可采用可变电阻器 精密的可变电阻器 具易获得 重复性高 分辨率高 高频响应特性好 易使用等特点 且电位器 传感器结构简单 体积小 价格低廉 受环境因素影响小 性能稳定 综合以上三种方案微调电位器可以很好地达到我们的要求 角度有效范围 载 33 3 度左右 由于本课题精度不高 考虑带经济性和灵活性 我们选择方案 三 7 2 42 4 步进电机及其驱动模块的选择步进电机及其驱动模块的选择 方案一 采用直流减速电机 转速较低 反应速度慢 但是驱动模块简单 方案二 采用型号为 57 步进电机 为两相四线步进电机 它的步距角仅 为 1 8 扭矩为 0 50N m 有较高的空载启动频率 在十六细分后能实现 0 225 的步距角能够满足本系统的控制要求 驱动电路较复杂 用 42 57 专用 驱动模块 TB6560AHQ 驱动 能满足要求 而驱动 L298N 模块功率较小 无法满 足要求 易造成失步 最终选定的步进电机为 57 步进电机 驱动电路模块选用 TB6560AHQ 模块 2 52 5 AD DAAD DA 的选择的选择 方案一 采用 ADC0832 ADC0832 为 8 位分辨率 A D 转换芯片 其最高分辨可达 256 级 可以适应 一般的模拟量转换要求 其内部电源输入与参考电压的复用 使得芯片的模拟 电压输入在 0 5V 之间 芯片转换时间仅为 32 S 据有双数据输出可作为数据 校验 以减少数据误差 转换速度慢且稳定性能较差 而且占用 I O 口多 方案二 采用 PCF8591 PCF8591 具有 I2C 总线结构的多通道 8bits 的逐次逼近型 ADC 和一个内置 8bits 单通道 ADC 功能多 速度超快 功耗低 单电源供电 串行输入输出 节约 I O 口资源 并能在一个处理系统中外接多个 PCF8591 能进行更多更强的处理 综上 从各方面考虑 我们选择方案二 3 3 系统的硬件设计系统的硬件设计 3 13 1 总体电路框图总体电路框图 为了使系统能够实现各种复杂的控制功能 本设计采用一种功能强大的 高速低功耗性价比高的单片机 STC89C52 完成对其他部分控制 本设计采用 SV01A103AEA01R00 旋转角度传感器 旋转电位器 对摆杆的倾斜角度进行数据 采集 通过 PCF8591 D A 转换芯片将数据送入单片机 单片机通过数据分析控 制 TB6560AHQ 驱动电路 进而控制步进电机使步进机旋转达到设定的位置 用 数码管显示 A D 的数据 总体框图如图 3 1 所示 8 电 源 单 片 机 驱动 模块 步 进 机 数码管显示 传 感 器 AD 模块 图 3 1 系统框图 按键 电路 模式 选 择 择 9 3 3 2 2 系统电路与程序设计系统电路与程序设计 3 2 1 STC89C52 单片机最小系统 最小系统包括复位 按键 显示和电源部分 而下载模块用单片机最小 系统直接下载 减少了系统的浪费 而且防止连续的拔插单片机 STC89C52 单 片机最小系统如图 3 4 所示 图 3 4 最小系统 10 3 2 2 PCF8591 模块图如图 3 2 图 3 2 PCF8591 模块图 3 3 3 模块芯片 TB6560AHQ 原理图如图 3 3 11 VDD 20 M0 17 PROTECT 19 CLK 3 CW 21 ENABLE 4 RESET 5 M2 22 M1 23 DCY1 25 DCY2 24 TQ1 2 TQ2 1 OSC 7 VMA 18 VMB 8 OUTAP 16 AM 13 BP 12 BM 9 NFA 14 NFB 11 SGND 6 PGNDB 10 DGNDA 15 U1 TB6560 12 D4 12 D5 R11 R12R13 R14 R6R7 R5 C6 C3 C2 12 C5 12 C1 VCC 5V D1 D2 D3 R4 D6 C7 FB 4 ON OFF 5 GND 3 IN 1 OUT 2 U2 LM2576HVT 5 0 D7 100UH L1 1 2 3 4 5 6 12 11 10 9 8 7 S1 SW DIP 6 C8 源源源源 R8 R9 R3 R1 R2 EN EN DIR DIR CP CP 1 2 3 4 5 6 7 8 9 R10 1 2 3 4 5 6 P1 VCC 5V 1 2 4 3 U4 1 2 4 3 U5 VCC 5V VCC 5V VCC 5V AN 2 CA 3 GND 5 OUT 6 EN 7 VCC 8 U3 6N137 C4 1 2 P2 1 2 3 4 P3 A A B B VCC 24V VCC 24V VCC 24V VCC 5V 图 3 3 模块芯片 TB6560AHQ 原理图 3 3 4 供电电源 12 由于需要驱动 57 步进电机 防止失步 其需要的功率较大 我们采用现有 的直流稳压电源直接供电 电源模块的示意图如图 3 5 为了达到较好的工作 效果 我们选用兆信 RXD 302 双路电源供电 具有很好的可靠性和灵活性 电压电流均可调 而且还在带一个 5V 电压输出端 图 3 5 电源电路 13 4 4 系统软件总体设计系统软件总体设计框图框图 如图 4 1 所示 图 4 1 总体程序框图 5 5 测试方案与测试结果测试方案与测试结果 测试结果 S 模式选择 读倾角传感器电压 A D 转换 单片机处理读到的 A D 数据 控制驱动电机转动 摆杆是否达到要求状态 否 结束 是 初始化 14 模式模式一模式二 第一次 4925 第二次 3435 这次设计的要求 所设计的系统要有较高的灵敏度和相应的转矩 这两样 是最为重要的 我们所设计的系统 不能很好地满足要求 有待进一步改进 15 6 6 总结总结 经过四天三夜的辛勤努力 此次基于单片机为控制核心的简易旋转倒立摆 的系统设计终于完成 通过合理的系统构建和软件编程 本系统也未能够完成 题目的要求 实现摆杆的旋转及倒立 实际测试表明 所设计系统的稳定性有 待改进 但由于时间紧 任务重 系统还有一些功能未能实现 比如摆杆在受 到干扰后 能够及时恢复倒立状态 若经过改进 相信性能还会有进一步的提 升 本次竞赛极大的锻炼了我们各方面的能力 虽然我们遇到了很多困难和障 碍 但总体上成功与挫折交替 困难与希望并存 我们将继续努力争取更大的 进步 16 参考文献参考文献 1 刘宝延 步进电机及其驱动控制系统 M 哈尔滨 哈尔滨工业大学出版社 1972 2 周航慈 单片机应用程序设计技术 M 北京 北京航空航天大学出版社 1991 3 郁有文 传感器原理及工程应用 M 西安 西安电子科技大学出版 2008 4 宋戈 51 单片机应用开发范例大全 M 北京 人民邮电出版社 2010 5 张毅刚 单片机原理及应用 M 北京 高等教育出版社 2009 6 吴建平 传感器原理及应用 M 北京 机械工业出版社 2009 7 唐继贤 51 单片机工程应用实例 M 北京 北京航空航天大学出版社 2009 17 附录 第一部分第一部分 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 STARTUP OBJ 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 18 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 Symbols ACC DATA 0E0H B DATA 0F0H SP DATA 81H DPL DATA 82H DPH DATA 83H NAME C STARTUP C C51STARTUP SEGMENT CODE STACK SEGMENT IDATA 19 RSEG STACK DS 1 EXTRN CODE C START PUBLIC C STARTUP CSEG AT 0 C STARTUP LJMP STARTUP1 RSEG C C51STARTUP STARTUP1 IF IDATALEN 0 MOV R0 IDATALEN 1 CLR A IDATALOOP MOV R0 A DJNZ R0 IDATALOOP ENDIF IF 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 A XDATALOOP MOVX DPTR A INC DPTR DJNZ R7 XDATALOOP DJNZ R6 XDATALOOP ENDIF IF PPAGEENABLE 0 MOV PPAGE SFR PPAGE ENDIF IF PDATALEN 0 MOV R0 LOW PDATASTART MOV R7 LOW PDATALEN 20 CLR A PDATALOOP MOVX R0 A INC R0 DJNZ R7 PDATALOOP ENDIF IF IBPSTACK 0 EXTRN DATA C IBP MOV C IBP LOW IBPSTACKTOP ENDIF IF XBPSTACK 0 EXTRN DATA C XBP MOV C XBP HIGH XBPSTACKTOP MOV C XBP 1 LOW XBPSTACKTOP ENDIF IF PBPSTACK 0 EXTRN DATA C PBP MOV C PBP LOW PBPSTACKTOP ENDIF MOV 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 0 LJMP C START END 第二部分 标题 DA AD 试验 主程序 include include define PCF8591 0 x90 PCF8591 地址 21 else IO sbit 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 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 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 0 x01 TH0 65535 2000 256 TL0 65535 2000 256 IE 0 x8a IT0 0 TR0 1 DAC 变换 转化函数 bit DACconversion unsigned char sla unsigned char c unsigned char Val Start I2c 启动总线 22 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 读取数据 0 Ack I2c 1 发送非就答位 Stop I2c 结束总线 return c main 23 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 0 x41 D 0 IRcvByte PCF8591 2 ADC0 模数转换 1 放大 2 倍显示 break case 1 ISendByte PCF8591 0 x42 D 1 IRcvByte PCF8591 2 ADC1 模数转换 2 break case 2 ISendByte PCF8591 0 x43 D 2 IRcvByte PCF8591 2 ADC2模数转换 3 break case 3 ISendByte PCF8591 0 x40 D 3 IRcvByte PCF8591 2 ADC3 模数转换 4 break case 4 DACconversion PCF8591 0 x40 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 24 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 4250 n 1 if ad 0 else n 0 if b 1 if xiang 0 if ad ad0 n 1 else round if c 1 if ad 2440 if e 1 if ad 2380 else if ad ad0 else if adad0 else if ad ad0 else if ad7 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 第三部分 28 此部分为 I2C 总线的驱动程序 用来读取 adda 数据 include include include 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 29 结束总线

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论