红外感应自动窗帘控制器.doc_第1页
红外感应自动窗帘控制器.doc_第2页
红外感应自动窗帘控制器.doc_第3页
红外感应自动窗帘控制器.doc_第4页
红外感应自动窗帘控制器.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

第15页西安科技大学电控学院课程设计 电控学院课程设计(论文) 课程名称: ARM嵌入式系统 题 目: 红外感应自动窗帘控制器设计 院 (系): 电 控 学 院 专业班级: 自 动 化0904 0905 姓 名: 王杰 朱闯 许支明 严东虎 王飞(0905) 学 号: 0411 0410 0426 0806050428 0806050212 指导教师: 李红岩 杨学存 2013年 01月16日目 录第1章 ARM嵌入式系统概述 2 1.1 嵌入式系统 21.2 嵌入式系统的特点 2第2章 步进电机原理简介 22.1 步进电机 32.1.1 步进电机原理 3 2.1.2 步进电机的一些基本参数 3第3章 控制系统的总体设计33.1 总体设计思路 33.2 系统硬件设计 43.2.1 EasyARM2131开发板功能 43.2.2 ULN003A驱动芯片53.2.3 TH12864-15液晶显示 53.2.4 电机驱动模块 53.2.5 显示模块63.3 总设计电路图73.4 软件设计7 3.4.1 程序流程图7结论 7附 录(课设体会)8参考文献 8设计程序 9第1章 ARM嵌入式系统概述1.1嵌入式系统 嵌入式计算机系统的出现,是现代计算机发展史上的里程碑。嵌入式系统诞生于微型计算机时代,与通用计算机的发展道路完全不同,形成了独立的单芯片的技术发展道路。由于嵌入式系统的诞生,现代计算机领域出现了通用计算机与嵌入式计算机两大分支。1.2嵌入式系统的特点(1) 由于嵌入式系统一般是应用于小型电子装置,系统资源相对有限,所以内核较之传统的操作系统要小得多。(2) 嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。(3) 嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能的 设计及实现过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。(4) 高实时性的操作系统软件是嵌入式软件的基本要求。而且软件要求固化存储,以提高速度。软件代码要求高质量和高可靠性。 (4) 嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行;(5) 嵌入式系统开发需要专门的开发工具和环境。由于嵌入式系统本身不具备自主开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,因此必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。第2章 步进电机原理简介2.1步进电机在电气时代的今天,电动机一直在现代化的生产和生活中起着十分重要的作用。无论是在工农业生产还是在日常生活中的家用电器,都大量地使用着各种各样的电动机。因此对电动机的控制变得越来越重要了。下图1为本设计所用到的五线式四相步进电机图1五线式四相步进电机2.1.1步进电机原理步进电机是机电控制中一种常用的执行机构,其原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的,现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM),混合式步进电机(HB)和单相式步进电机等。2.1.2步进电机的一些基本参数电机固有步距角:它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0。90/1。80(表示半步工作时为0。90、整步工作时为1。80),这个步距角可以称之为“电机固有步距角”,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。步进电机的相数:是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0。90/1。80、三相的为0。750/1。50、五相的为0。360/0。720。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分动器,则“相数”将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。第3章控制系统的总体设计3.1总体设计思路本次设计采用EasyARM2131 ARM芯片为主控制芯片,由ULN2003A为驱动芯片控制步进电机转动;并通过MG12864点阵图形液晶图形模块显示步进电机转动模式。系统硬件总体设计框图如图2所示。12864液晶显示EasyARMLPC2131最小系统红外感应模块四相五线步进电机ULN2003A驱动芯片图2系统原理结构框图3.2系统硬件设计本设计共用到的功能器件有,EasyARM2131开发板、ULN2003A驱动芯片、MG12864液晶显示屏、四相五线式步进电机、按键开关等器件。3.2.1 EasyARM2131开发板功能EasyARM2131开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S 核、单电源供电、LQFP64封装的LPC2131,具有JTAG仿真调试、ISP编程等功能。如下图3所示为2131功能框图。图3 EasyARM2131开发板功能框图可进行GPIO的控制实验,如LED闪烁控制、键盘输入、蜂鸣器控制、模拟SPI等; 可进行外部中断实验,学习向量中断控制器(VIC); 定时器控制实验,如定时控制LED、按键捕获输入、匹配比较输出等;使用RS232转换电路,完成UART通讯实验等。3.2.2 ULN003A驱动芯片ULN是集成达林管IC,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压为50V,电流为500MA,输入电压为,适用于TTL COMS,由达林顿管组成驱动电路。下图4为ULN2003A的管脚功能图。图4 ULN2003A管脚图ULN2003 高压大电流达林顿晶体管阵列芯片,吸收电流可达500mA,输出耐压50V,具有很强的驱动能力。内部具有7组达林顿管电路,可以驱动7路负载。IN为输入端可由单片机引脚直接控制,当输入端为高电平时,输出端OUT输出低电平。3.2.3 TH12864-15液晶显示 TH12864-15是128(列)64(行)点阵的液晶显示模块。当15脚为低且16脚为高时选中TH12864-15的左区(左边的6464),当15脚为高且16脚为低时选中MG12864的右区(右边的6464)。19脚和20脚是为了在光线暗的环境下看到液晶显示器的显示内容而加的背光,即在液晶显示器的背面加一光源。控制线RW、CSI、CS2、RS必须在使能线E为低的时候改变。当使能线E为高时控制线RW、CSI、CS2、RS不能改变;使能线E为高时TH12864-15从数据线DB0DB7输出数据。下图6为TH12864-15的管脚说明。引脚号 符号 功能引脚号 符号 功能1GND 模块的电源地714 DB0DB7 并行数据072VDD 模块的电源正端15PSB 并/串行接口选择3 V0 LCD驱动电压输入端16NC空脚4 RS 并行的指令/数据选择信号;串行的片选信号17RET复位,低电平有效18 NC 空脚5 R/W 并行的读/写选择信号;串行的数据口19 BLA 背光源正极(LED+5V)6 E 并行的使能信号;串行的同步时钟19BLK 背光源负极(LED-0V)图6TH12864-15管脚说明3.2.4 电机驱动模块设计使用ULN2003A驱动芯片来驱动步进电机,用发光二极管来显示程序的运行状态。驱动电路如下图5所示。图5 电机驱动模块电路3.2.5显示模块 设计采用TH12864-15点阵式液晶显示屏,使用串行接法,电路模块图如下图6所示。图6 12864液晶显示模块3.3总设计电路图(见报告最后)3.4软件设计3.4.1 程序流程:设置引脚功能液晶初始化是否上升沿跳变是电机正转是否下降沿跳变是电机反转结论本次课程设计中主体功能采用步进电机实现,显示功能采用液晶12864实现,对于步进电机的驱动采用uln2003芯片,使用方便,简化电路。对于液晶12864的操作采用串行通信,串行通信操作简单,连线方便。检测感应模块主要通过检测人体运动产生电平跳变即有人走近窗帘或者离开窗帘,然后将信号发送给lpc2131来控制电机正反转。对于主程序的设计,先定义一个标志变量flag,当检测到电平上升沿时,控制电机正转,变量flag=1;当检测到下降沿,同时flag=1时即人离开窗帘,控制电机反转,关闭窗帘。定义两个变量用来计数,在开关窗帘过程中,每当电机转动一圈时,相应变量自动加一,当变量达到设定上限值时,电机停止转动,即窗帘已经完全打开或者完全关闭。附录朱闯设计心得 为期两周的课程设计结束了,在没有实际操作以前,我觉得ARM课程设计会比较麻烦,为此我们参考了别人的设计,初步了解总体思路后开始动手实践。由于有C语言编程经验和51单片机课设的经验,再结合ARM课程的学习,真正设计的过程中并没有想象的那么困难。只要ARM中的各个寄存器的名称和功能,以及一些常用的指令语句记得清楚,那么同样的用C语言编程是没有什么困难的。对于这种实践性比较强的课程,一般情况下是少说多动手才有益于我们对这门课程的学习。对于程序设计来说,各个子程序的设计比较简单,只需按照各个芯片的操作时序编程就可以。比较困难的是主程序,由于各个模块功能相互穿插,因此要综合考虑。我们这次课设所做的题目是红外感应自动窗帘控制器设计。总共能够实现两个功能,第一是控制两个步进电机的同时的正转、反转和停止,也即控制窗帘的开闭和停。第二是实现了一个显示的功能,显示窗帘的开关以及窗帘的开度。这次课设中硬件电路比较简单,最重要的是加深了软件的调试方法,先将各个功能模块的子程序设计好,再与主程序连接综合调试,加深了对ARM课程内容的理解。参考文献:1周立功.编著.ARM微控制器基础与实践M.北京:北京航空航天大学出版社.2005.2黄智伟.ARM嵌入式系统应用设计与实践M.北京:北京航空航天大学出版社.2011.2沈建华.译.ARM嵌入式系统开发、软件设计与优化M.北京:北京航空航天大学出版社.2005.设计程序:#include config.h#include stdio.h#define KEY1 117 / P0.17#define KEY2 120 / P0.20 #define BEEPCON 17 / P0.7#define KEY3 121 / P0.21#define MOTO1 19 / P0.9 #define MOTO2 110/ P0.10#define MOTO3 112/ P0.12#define MOTO4113/ P0.13#define MOTOCON0x3c003600 / MOTO控制字#define GPIOSET(PIN) IO0SET = PIN / 方便修改置位端口#define GPIOCLR(PIN)IO0CLR = PIN / 方便修改清位端口#define LCD_CON 0x000c0080 /液晶显示控制字#define E_CLK (118) ; /clock input 同步时钟输入端 const uint32 RW_SID= (119) ; /data input/output 串行数据输入、输出端 const uint32 CS = (10; dly-)for (i=0; i10; i+); /串行发送一字节数据 void SendByte(uint8 dat) uint8 i; IO0SET=CS; for(i=0;i8;i+) IO0CLR=E_CLK ;delay(5);if(dat&0x80)IO0SET=RW_SID;delay(5);else IO0CLR=RW_SID; IO0SET=E_CLK;delay(5); dat=dat1; IO0CLR=CS; /串行接收一字节数据 unsigned char ReceieveByte(void) uint8 i,d1,d2; for(i=0;i8;i+) IO0CLR=E_CLK;delay(5); IO0SET=E_CLK;delay(5); if(RW_SID)d1+; d1=d11; for(i=0;i8;i+) IO0CLR=E_CLK;delay(5); IO0SET=E_CLK;delay(5); if(RW_SID)d2+; d2=d21; return (d1&0xF0+d2&0x0F); /写控制命令 void SendCMD(uint8 dat) SendByte(0xF8); SendByte(dat&0xF0); SendByte(dat&0x0F)4); /写显示数据或单字节字符 void SendDat(uint8 dat) SendByte(0xFA); SendByte(dat&0xF0); SendByte(dat&0x0F)0; dly-) for(i=0; i4000; i+); void MOTO_Mode2(uint8 i) while(fan!=0x5cf)&(KEY3&IO0PIN)!=0) initlcm(); display(0x80,FZ); delay(100); display(0x90,ZZ1); delay(100); /* AB */ GPIOSET(MOTO1); GPIOSET(MOTO4); DelayNS(i); GPIOCLR(MOTO1); GPIOCLR(MOTO4); /* BC */ GPIOSET(MOTO4); GPIOSET(MOTO3); DelayNS(i); GPIOCLR(MOTO4); GPIOCLR(MOTO3); /* CD */ GPIOSET(MOTO3); GPIOSET(MOTO2); DelayNS(i); GPIOCLR(MOTO3); GPIOCLR(MOTO2); /* DA */ GPIOSET(MOTO2); GPIOSET(MOTO1); DelayNS(i); GPIOCLR(MOTO2); GPIOCLR(MOTO1); fan+; if(fan=0x5cf) initlcm(); display(0x80,TZ); delay(100);void MOTO_Mode1(uint8 i) if(KEY3&IO0PIN)!=0) while(zhen!=0x5cf) initlcm(); display(0x80,ZZ); display(0x90,ZZ1); delay(100); if(zhen=1400) display(0x88,KD);delay(100);SendCMD(0x8B);SendDat(zhen/14)/10+0x30); SendCMD(0x8C);SendDat(zhen/14)%10+0x30); /* AB */ G

温馨提示

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

评论

0/150

提交评论