当前位置:文档之家› 简易智能电风扇的课程设计

简易智能电风扇的课程设计

目录1 系统概述 (1)1.1 系统简介 (1)1.2 理论基础知识 (1)1.3直流电机控制 (1)2 需求分析 (3)2.1 设计目的 (3)2.2 设计要求 (3)2.3 参考程序 (3)3 系统设计 (4)3.1 概要设计 (4)3.2 详细设计 (4)3.3 功能需求分析 (4)3.4 性能需求分析 (5)3.5 系统运行环境 (5)4编码 (6)5测试分析报告 (7)5.1测试结果及发现 (7)5.2 加载调试 (7)5.3 故障处理 (7)6参考文献 (9)7总结 (10)7.1 收获 (10)7.2 不足与改进 (10)附录 (11)1 系统概述1.1 系统简介智能家电是嵌入式系统的一个非常重要的应用领域,具有广阔的应用前景和经济价值。

智能风扇是在普通风扇的基础上增加了智能,具有按照运行的实际环境,自动调节运行模式。

本课题设计简易的智能电风扇,通过本课程设计掌握直流电动机驱动程序设计方法,掌握模数转换的原理及ADC驱动程序的设计方法,了解简易嵌入式系统设计流程。

1.2 理论基础知识ADC●S3C2410A具有1个8通道的10位模数转换器(ADC),有采样保持功能,输入电压范围是0~3.3V,在2.5MHz的转换器时钟下,最大的转换速率可达500KSPS。

A/D转换器的AIN5、AIN7还可以与控制脚nYPON、YMON、nXPON和XMON配合,实现触摸屏输入功能;图1.2 ADC电路图1.3直流电机控制●S3C2410A具有4路PWM输出,输出口分别为TOUT0~TOUT3,其中两路带有死区控制功能。

为了能够正确输出PWM信号,需要正确设置GPBCON寄存器选择相●应I/O的为TOUTx功能。

然后,通过TCFG0寄存器为PWM定时器时钟源设置预分频值,通过TCFG1寄存器选择PWM定时器时钟源。

接着,通过TCNTB0寄存器设置PWM周期,通过TCMPB0设置PWM占空比。

最后,通过TCON寄存器启动PWM定时器,即可输出PWM信号图1.3直流电机控制电路图2 需求分析智能家电是嵌入式系统的一个非常重要的应用领域,具有广阔的应用前景和经济价值。

智能风扇是在普通风扇的基础上增加了智能,具有按照运行的实际环境,自动调节运行模式。

2.1 设计目的本课题设计简易的智能电风扇,通过本课程设计掌握直流电动机驱动程序设计方法,掌握模数转换的原理及ADC驱动程序的设计方法,了解简易嵌入式系统设计流程。

2.2 设计要求本课题所设计的系统要求实现以下功能。

●智能电风扇可工作在两种模式:手控方式、自控方式。

手控方式可以选择风型(恒定风、自然风),自控方式可以根据环境温度自动运行;●通过调节ADC采集实验箱上的直流电压,模拟环境温度的变化;●在LED上显示当前的工作模式及风型与风速。

2.3 参考程序●直流电机控制●ADC实验●LED实验3 系统设计3.1 概要设计3.2 详细设计直流电机控制器:实现对直流电压的器控,从而决定了电风扇的直流功率,通过按键来实现。

ADC控制器:能够自行的控制直流电压,从而为智能电风扇的实现奠定了基础。

LED显示器:显示电风扇的工作方式风型等工作状态。

3.3 功能需求分析系统的功能需求IPO表如下表:3.4 性能需求分析(1)时间特性要求响应时间:在输入控制信号时,能很好的改变风速,达到智能控制。

(2)灵活性操作方式: 使用ADC模块控制A/D转换来控制电机的转速,利用直流电机转速来改变风力,达到控制风速。

运行环境: PC机,MagicARM2410教学实验开发平台,Windows 98/2000/XP操作系统,ADS 1.2集成开发环境,超级终端程序(Windows系统自带) 涉及接口:LED接口, ADC接口。

3.5 系统运行环境硬件:PC机1台MagicARM2410教学实验开发平台1台软件:Windows 98/2000/XP操作系统ADS 1.2集成开发环境超级终端程序(Windows系统自带)4编码b。

PDL语言;c。

N-S图;d。

PAD;e。

判定表等描述算法的图表。

)5测试分析报告5.1测试结果及发现启动ADS 1。

2,使用ARM Executable Image for DeviceARM2410 打开工程,双击工程中的main.c中的代码,选用DebugRel生成目标,然后编译链接工程,发现出现下图所示的结果:启动AXD进行JTAG仿真调试,发现到以下几点问题:(1)undeclared name,inventing'extern int CAT1025(2)inventing int IRcvStr( )(3)inventing int InitIIC( )5.2 加载调试我们经过了几次修改后在通过CodeWarrior生成了可调试文件,现在要在ADX中进行模拟调试和板级调试.在ADX中点击Debug,加载调试文件.在没有接实验箱与电脑连接时,程序没有出现错误。

5.3 故障处理下列为智能电风扇常见的问题:1.风扇会有很大的噪音原因分析:1.风扇叶片变形或其电机故障;2.转盘电机故障或滚道上有杂物;3.变压器/磁控管固定不良;4.变压器/磁控管本身不合格。

解决方法:查看各可能原因造成点。

2.风扇会出现不能通电的现象原因分析:1.电源不通;2.烧保险;3.温控开关坏;4.变压器/高压二极管/时间功率分配器/磁控管等接线松脱或毁坏;5.电压低于187伏,无法启动。

解决办法:查看电源﹑保险管及各回路元器件和接线。

3.功率低的原因原因分析:1.电压低;2.磁控管不合格;3.时间功率分配器不良。

解决方法:查看电压或更换磁控器﹑分配器。

6参考文献⑴徐英慧,马忠梅,王磊,王琳编著的《ARM9嵌入式系统设计》(基于s3c2410与1inux)北京航空天大学出版社。

⑵王天苗,魏洪兴编著《嵌入式系统设计与实例开发》(第三看版)清华大学出版社,2007王黎明,陈双桥,葛德红编著《ARM9嵌入式系统开发与实践》北京航空航天大学出版社,20087总结7.1 收获通过这次课程设计,我学到了很多,锻炼了能力,更确切的说是进一步理解了嵌入式系统的开发及流程。

也学会了使用ADS1.2这个软件,及怎样建工程,怎样编代码,怎样调试代码等等。

嵌入式对于我们电科专业来说,尤其重要,这就着实要求在嵌入式学习和实践中认真对待,多做多练,恰恰是这次课程设计让我找到理论与实际需要的区别,结合实际、了解自我,相信在以后的学习与工作当中,定会及时补充相关知识,为求职与工作做好充分的知识、能力准备,同时这次课程设计也促进了班里同学的合作意识,效果还是比较理想的。

7.2 不足与改进由于我是第一次学嵌入式系统,在做课程设计的过程中发现了知识功底不够扎实,阅历颇浅,在系统设计方面还有一些不足;功能不够完善,智能操作比较麻烦,一开始系统代码编的不是很理想等,我会在使用过程中,根据工作的具体要求不断的完善,争取使系统慢慢趋向完美。

附录#include "config.h"// 定义蜂鸣器控制口#define BEEP (1<<10) /* GPH10口*/#define BEEP_MASK (~BEEP)#define CENTER_X 320#define CENTER_Y 240#define KEY_CON (1<<4) /* GPF4口*/ #define ADC_FREQ (2*1000000)// 定义16标准色uint16 const COLORS_TAB[16] = {BLACK,NA VY,DGREEN,DCY AN,MAROON,PURPLE,OLIVE,LGRAY,DGRAY,BLUE,GREEN,CY AN,RED,MAGENTA,YELLOW,WHITE};void DelayNS(uint32 dly){uint32 i;for(; dly>0; dly--)for(i=0; i<50000; i++);}void RunBeep(void){rGPHDAT = rGPHDAT & BEEP_MASK; // BEEP = 0DelayNS(5);rGPHDAT = rGPHDAT | BEEP; // BEEP = 1DelayNS(5);}uint16 random(uint16 seed){uint16 temp;temp = rand();temp = temp % seed;return(temp);}void CLineDemo(void){uint32 x0, y0;uint32 x1, y1;uint16 color;uint32 no;for(no=0; no<300; no++){// 取第一个点坐标x0 = random(640);y0 = random(480);color = random(15)+1; // 不使用黑色(背景色)// 计算出中心对称点x1 = 2*CENTER_X - x0;y1 = 2*CENTER_Y - y0;GUI_Line(x0, y0, x1, y1, COLORS_TAB[color]);DelayNS(1);}}void CRectangleDemo(void){uint32 x0, y0;uint32 x1, y1;uint16 color;uint32 no;for(no=0; no<200; no++){// 取第一个点坐标x0 = random(640);y0 = random(480);color = random(15)+1; // 不使用黑色(背景色)// 取第二点坐标x1 = x0 + random(300); // 长控制在300像素以内y1 = y0 + random(200); // 宽控制在200像素以内GUI_RectangleFill(x0, y0, x1, y1, COLORS_TAB[color]);DelayNS(2);}}void DispRGB(void){uint32 x,y;uint16 *p_buffer;p_buffer = (uint16 *)FrameBuffer;// 填充红色for(y=0; y<120; y++){for(x=0; x<640; x++){*p_buffer++ = 0xF000;}}// 填充绿色for(y=0; y<120; y++){for(x=0; x<640; x++){*p_buffer++ = 0x07C0;}}// 填充蓝色for(y=0; y<120; y++){for(x=0; x<640; x++){*p_buffer++ = 0x003E;}}// 填充白色for(y=0; y<120; y++){for(x=0; x<640; x++){*p_buffer++ = 0xFFFF;}}}// 定义独立按键KEY1的输入口void WaitKey(void){uint32 i;while(1){while((rGPFDAT&KEY_CON) == KEY_CON) ; // 等待KEY键按下for(i=0; i<1000; i++); // 延时去抖if( (rGPFDA T&KEY_CON) != KEY_CON) break;}while((rGPFDAT&KEY_CON) != KEY_CON); // 等待按键放开}void PWM_Init(uint16 cycle, uint16 duty){// 参数过滤if(duty>cycle) duty = cycle;// 设置定时器0,即PWM周期和占空比// Fclk=200MHz,时钟分频配置为1:2:4,即Pclk=50MHz。

相关主题