基于ARM红外感应自动窗帘控制器设计- 西安科技大学_第1页
基于ARM红外感应自动窗帘控制器设计- 西安科技大学_第2页
基于ARM红外感应自动窗帘控制器设计- 西安科技大学_第3页
基于ARM红外感应自动窗帘控制器设计- 西安科技大学_第4页
基于ARM红外感应自动窗帘控制器设计- 西安科技大学_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、II西安科技大学电控学院课程设计 电控学院课程设计(论文) 课程名称: ARM嵌入式系统 题 目:红外感应自动窗帘控制器设计 院 (系): 电 控 学 院 专业班级: 自动化1105班 姓 名: 夏转转 何瑢 蔡驰 刘阿敏 学 号: 1106050502 1106050503 1106050505 1106050507 指导教师: 李红岩 杨学存 2015年 1 月 20日I西安科技大学电控学院课程设计目 录一、 ARM嵌入式系统及课题背景11.1嵌入式系统11.1.1嵌入式系统的特点:11.2红外感应自动窗帘课题背景2二、步进电机原理简介22.1步进电机22.1.1步进电机原理:32.1.2

2、步进电机的一些基本参数:3三、控制系统的总体设计33.1总体设计思路33.2系统硬件设计43.2.1 EasyARM2131开发板功能:43.2.2 ULN003A驱动芯片:53.2.4 电机驱动模块:63.2.5显示模块:73.2.6红外感应模块:83.3总设计电路图(见报告最后)83.4软件设计83.4.1 程序流程:(如右图)8结论9五、附录95.1参考文献95.2实习心得95.3设计程序:11第 16 页西安科技大学电控学院课程设计一、 ARM嵌入式系统及课题背景1.1嵌入式系统 嵌入式计算机系统的出现,是现代计算机发展史上的里程碑。嵌入式系统诞生于微型计算机时代,与通用计算机的发展道

3、路完全不同,形成了独立的单芯片的技术发展道路。由于嵌入式系统的诞生,现代计算机领域出现了通用计算机与嵌入式计算机两大分支。1.1.1嵌入式系统的特点: (1) 由于嵌入式系统一般是应用于小型电子装置,系统资源相对有限,所以内核较之传统的操作系统要小得多。 (2) 嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。(3) 嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能的 设计及实现过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。 (4) 高实时性的操作系

4、统软件是嵌入式软件的基本要求。而且软件要求固化存储,以提高速度。软件代码要求高质量和高可靠性。 (5) 嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行;(6) 嵌入式系统开发需要专门的开发工具和环境。由于嵌入式系统本身不具备自主开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,因此必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。1.2红外感应自动窗帘课题背景智能家居控制系统可以定义为一个过程或者一个系统,利用先进的计算机技术、网络通讯技

5、术、技术,将与家居生活有关的各种子系统,有机的结合在一起,通过统筹管理,让家居生活更加舒适、安全、高效。在现代社会,对室内设计而言,窗帘不仅具有遮光作用,更有美化功能,它不仅可以协调局是色彩搭配,而且能够柔化空间造型的线条,营造温馨惬意的环境。随着高新技术及电子器件的发展,光控、温控及遥控窗帘应运而生,给人们的生活带来很多方便。自动窗帘控制系统,既能解决用手拉开和关上窗帘的不便,又显示出生活的档次,同时还可以根据光线的明暗来自动控制窗帘的开关,以调节室内的光线,进一步满足人们的享受要求。自动窗帘主要有以下功能:(1)、手动控制:该功能自动窗帘具有手动正转,手动反转和手动停止功能。(2)、半自动

6、手动控制:半自动手动控制是指在需要关闭和打开窗帘的时候,只需要人工按一下“正转”或“反转”按键后,窗帘到位自动停止。(3)、红外智能控制:窗帘的关闭和开启通过红外感应环境自动完成窗帘的开启或关闭操作控制,具有智能管理功能。二、步进电机原理简介2.1步进电机 在电气时代的今天,电动机一直在现代化的生产和生活中起着十分重要的作用。无论是在工农业生产还是在日常生活中的家用电器,都大量地使用着各种各样的电动机。因此对电动机的控制变得越来越重要了。下图1为所用到的五线式四相步进电机。图1五线式四相步进电机2.1.1步进电机原理: 步进电机是机电控制中一种常用的执行机构,其原理是通过对它每相线圈中的电流和

7、顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的,现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM),混合式步进电机(HB)和单相式步进电机等。2.1.2步进电机的一些基本参数: 电机固有步距角:它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG

8、250A型电机给出的值为0。90/1。80(表示半步工作时为0。90、整步工作时为1。80),这个步距角可以称之为“电机固有步距角”,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 步进电机的相数:是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0。90/1。80、三相的为0。750/1。50、五相的为0。360/0。720。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分动器,则“相数”将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。三、控制系统的

9、总体设计3.1总体设计思路 本次设计采用EasyARM2131 ARM芯片为主控制芯片,由ULN2003A为驱动芯片控制步进电机转动;并通过MG12864点阵图形液晶图形模块显示步进电机转动模式。设计原理:当光敏器件受到光照300Lux以下时,步进电机正转,使窗帘上升,当受到1500到3000Lux之间的光照时,步进电机反转,使窗帘下降。按键控制,分为三个按键,分别为上升键K1,下降键K2和自动键。当按下K1键时,电机正转,窗帘上升,按下K2键时,电机反转,窗帘下降,当按下自动键时,光敏器件作用,系统自动运行。系统硬件总体设计框图如图2所示。3.2系统硬件设计 本设计共用到的功能器件有:Eas

10、yARM2131开发板、ULN2003A驱动芯片、MG12864液晶显示屏、四相五线式步进电机、按键开关等器件。3.2.1 EasyARM2131开发板功能: EasyARM2131开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S 核、单电源供电、LQFP64封装的LPC2131,具有JTAG仿真调试、ISP编程等功能。 如下图3所示为2131功能框图。图3 EasyARM2131开发板功能框图可进行GPIO的控制实验,如LED闪烁控制、键盘输入、蜂鸣器控制、模拟SPI等; 可进行外部中断实验,学习向量中断控制器(VIC); 定时器控

11、制实验,如定时控制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为输入端可由单

12、片机引脚直接控制,当输入端为高电平时,输出端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输出数据

13、。下图5为12864-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)图5TH12864-15管脚说明3.2.4 电机驱动模块: 设计使用ULN2003A驱动芯片来驱动步进电机,用发光二极管来

14、显示程序的运行状态。驱动电路如下图6示。图6 驱动模块电路3.2.5显示模块: 设计采用TH12864-15点阵式液晶显示屏,使用串行接法,电路模块图如下图7所示。图7 2864液晶显示模块3.2.6红外感应模块:3.3总设计电路图(见报告最后)3.4软件设计3.4.1 程序流程:(如右图)结论 本次课程设计中主体功能采用步进电机实现,显示功能采用液晶12864实现,对于步进电机的驱动采用uln2003芯片,使用方便,简化电路。对于液晶12864的操作采用串行通信,串行通信操作简单,连线方便。检测感应模块主要通过检测人体运动产生电平跳变即有人走近窗帘或者离开窗帘,然后将信号发送给lpc2131

15、来控制电机正反转。对于主程序的设计,先定义一个标志变量flag,当检测到电平上升沿时,控制电机正转,变量flag=1;当检测到下降沿,同时flag=1时即人离开窗帘,控制电机反转,关闭窗帘。定义两个变量用来计数,在开关窗帘过程中,每当电机转动一圈时,相应变量自动加一,当变量达到设定上限值时,电机停止转动,即窗帘已经完全打开或者完全关闭。五、附录5.1参考文献1马忠梅,马广云.ARM嵌入式处理器结构与应用基础M.北京:北京航空航天大学出版社.2002.2黄智伟.ARM嵌入式系统应用设计与实践M.北京:北京航空航天大学出版社.2011.3沈建华.译.ARM嵌入式系统开发、软件设计与优化M.北京:北

16、京航空航天大学出版社.2005.4周立功.编著.ARM微控制器基础与实践M.北京:北京航空航天大学出版社.20055.2实习心得夏转转实习心得:为期两周的实习接近尾声,我们这一期的实习题目是红外线感应窗帘,在组长的领导下,我们发挥团队协作精神,积极配合组长,基本完成了老师要求的任务,基本实现了根据光线变化自主开闭窗帘。我主要负责软件的调试,刚开始的时候在图书馆查阅资料写的程序运行一直有错误,经过反复调试和询问老师,最终实现了基本的功能。然后又添加新的功能,经过调试实现了一部分功能,但不能完全实现。以后一定会继续努力。很辛苦的两周让我受益良多,不知不觉时间就过去了。两周内,在老师的帮助下,组长的

17、带领下,我们能顺利地完成老师布置的任务,最终实现了预期的目标,无论多艰苦的情况,都可以很耐心的学习,遇到自己不会的问题,一定积极解决,询问,反复练习。今后一定要继续努力,争取做得更好。谢谢组员以及老师的帮助。何瑢实习心得:很快,我们的实习就接近了尾声,我们这一期的实习题目是红外线感应窗帘,在组长的领导下,我们发挥团队协作精神,积极配合组长,基本完成了老师要求的任务,起初,程序老是出现问题,我们经过多次的调试,修改,使得它得以正确运行,窗帘也基本实现了在光线变化的条件下自主升降。我们也各自完成了自己的任务。两周内,在老师指导下,我们顺利的完成了实现了所有功能,最终实现了预期的目标,使自己这学期所

18、学到的知识得到了应用,通过这两周的实习,我认识到了自己的很多不足,学到了很多课本上学不到的东西,使我认识到自己的不足,所以我以后要努力学习,把知识用到实际中去,以便将来更好的报效国家。蔡驰实习心得:为期两周的课程设计结束了,在没有实际操作以前,我觉得ARM课程设计会比较麻烦,为此我们参考了别人的设计,初步了解总体思路后开始动手实践。由于有C语言编程经验和51单片机课设的经验,再结合ARM课程的学习,真正设计的过程中并没有想象的那么困难。只要ARM中的各个寄存器的名称和功能,以及一些常用的指令语句记得清楚,那么同样的用C语言编程是没有什么困难的。对于这种实践性比较强的课程,一般情况下是少说多动手

19、才有益于我们对这门课程的学习。对于程序设计来说,各个子程序的设计比较简单,只需按照各个芯片的操作时序编程就可以。刘阿敏实习心得:本次A R M课程设计,我这一组选的是红外感应自动窗帘控制器,总共实习了两周,实习过程中,完成了对硬件的焊接,虽然焊接过程中,出现了失误和一些困难,但经过自己的检查和通过请教别人,一些小的难题都解决了,但比较困难的是功能的扩展。软件实现的过程中,比较困难,大部分是通过去图书馆和上网解决,最终还是完成了课程设计。通过这次课设,使我对ARM的知识更了解,尤其是在实际应用中,知道了怎样去编译程序,怎么去调试,知道怎么和团队一起合作,一起解决问题,真的收益真大,相信这对以后的

20、工作也会有帮助,其中也有老师的帮忙,谢谢李老师,和杨老师的指导!5.3设计程序:#include config.h#include stdio.h#define KEY1 116 / P0.16#define KEY2 120 / P0.20 #define BEEPCON 17 / P0.7#define KEY3 121 / P0.21#define KEY4 117 / P0.17#define MOTO1 19 / P0.9 #define MOTO2 110/ P0.10#define MOTO3 112/ P0.12#define MOTO4113/ P0.13#define MO

21、TOCON0x3c003600 / 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+); /串行

22、发送一字节数据 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;

23、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&0x

24、F0); SendByte(dat&0x0F)4); void display(uint8 x_add, unsigned char * word) SendCMD(x_add); while(*word) SendDat(*(word+); /初始化 LCM void initlcm(void) delay(200); SendCMD(0x30);/功能设置,一次送8位数据,基本指令集 SendCMD(0x0C);/0000,1100 整体显示,游标off,游标位置off SendCMD(0x01);/0000,0001 清DDRAM SendCMD(0x02);/0000,0010 DDR

25、AM地址归位 SendCMD(0x80);/1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC /* 名 称:main()* 功 能:根据表DISP_TAB来控制LED显示。*/int main(void)PINSEL0&=0xFFFF3FFF;PINSEL1|=0x15400000;/PINSEL2&=0x00000000; /设置所有I/O口为GPIO口IO0DIR =MOTOCON|BEEPCON|LCD_CON;initlcm(); /12864初始化程序 display(0x80,XX); delay(100); display(0x90,TM); dela

26、y(100); display(0x88,XS); delay(100); display(0x98,BJ); /DelayNS(1000); /IO0CLR=LCD_CON; /while(1); AD0CR = (1 1) |/ SEL = 1 ,选择通道0 (Fpclk / 1000000 - 1) 8) | / CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟为1MHz (0 16) |/ BURST = 0 ,软件控制转换操作 (0 17) | / CLKS = 0 ,使用11clock转换 (1 21) | / PDN = 1 , 正常工作模式(非掉电转换模式

27、) (0 22) | / TEST1:0 = 00 ,正常工作模式(非测试模式) (1 24) | / START = 1 ,直接启动ADC转换 (0 27);/ EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换) DelayNS(10); ADC_Data = AD0DR;while(1)AD0CR = (AD0CR&0x00FFFF00)|0x08|(1 24);while (AD0DR & 0x80000000) = 0);/ 等待转换结束AD0CR |= 1 6) & 0x3ff;ADC_Data = ADC_Data * 3280;ADC_Data=ADC_Data/102

28、4;if(KEY4&IO0PIN)=0)while(KEY4&IO0PIN)=0);temp+;delay(5);if(temp%2)=1)if (ADC_Data2000)MOTO_B(6);if(fan=0x587) initlcm(); display(0x80,TZ); delay(100);elseMOTO_A(6);if(fan=0x587) initlcm(); display(0x80,TZ); delay(100);if(KEY1&IO0PIN)=0)delay(5);if(KEY1&IO0PIN)!=0&(flag=0)MOTO_Mode1(6);flag=1;/if(KE

29、Y1&IO0PIN)=0)/delay(5);if(KEY1&IO0PIN)!=0&(flag!=0)MOTO_Mode2(6);fan=0x00;flag=0;/else if(KEY2&IO0PIN)=0) MOTO_Mode2(6); /WaitKey3(); if (KEY3&IO0PIN)=0) MOTO_Mode3(6); return 0;/* 名 称:DelayNS()* 功 能:长软件延时* 入口参数:dly延时参数,值越大,延时越久* 出口参数:无*/void DelayNS(uint32 dly) uint32 i; for(; dly0; dly-) for(i=0; i4000; i+); void MOTO_B(uint8 i)initlcm(); di

温馨提示

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

评论

0/150

提交评论