基于msp430超低功耗单片机温度控制器设计_第1页
基于msp430超低功耗单片机温度控制器设计_第2页
基于msp430超低功耗单片机温度控制器设计_第3页
基于msp430超低功耗单片机温度控制器设计_第4页
基于msp430超低功耗单片机温度控制器设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

开放实验报告 课 题 名 称 基于 msp430 单片机的超低功耗智能护眼灯的设计 学 生 姓 名 系、年级专业 信息工程系、11、12 级电子信息 指 导 教 师 于建坤 2014 年 6 月 20 日 1 基于 msp430 单片机的超低功耗智能护眼灯的设计 1实验目的 1、了解 pwm 控制灯光亮度的原理,设计基于单片机的智能护眼灯控制装置。 2、学习电子电路、PCB 板设计,产品制作与调试。 2实验内容 本智能护眼灯以 MSP43G2553 为核心,完成护眼灯的照明,电源管理,环境采 集和中央处理及控制功能。灯珠采用高亮白光 LED,恒流驱动,无频闪,不伤害眼睛, 保护视力。电源管理,由专用电源管理方案,管理系统充电和用电。环境采集,用 光传感器采集光照强度,根据光照强度控制灯珠亮度,用人体热释红外检测人远近。 三系统方案设计 系统整体方框图如下: 图 2.1 系统方框图 ( 1 ) 环境采集用光敏电阻采集环境亮度,人距感应部分采用热释红外。当人靠近台灯, 产生信号给 MCU 控制器,打开台灯。光敏电阻采集当前亮度值,根据使用者选择的模式作 出调整。 ( 2 ) MCU 控制亮度和环境采集采用闭环控制,具体算法用 PID 算法的增量式模式。具 体函数如下: 高亮 LED 驱动 显示部分 电源供电 环境采集和人距 感应部分 MSPG2553 控制 2 typedef struct PID double SetPoint; /设定目标 double Proportion;/比例常数 double Integral; /积分常数 double Derivative;/微分常数 double LastError; /Error-1 double PrevError; /Error-2 double SumError; /Sums of Errors PID; double PIDCalc(PID *pid, double NextPiont) double dError, Error, rOUT; Error = pid-SetPoint - NextPiont; / 偏差 pid-SumError += Error; / 积分 dError = pid-LastError - pid-PrevError; /当前微分 pid-PrevError = pid-LastError; /Error-2 =Error-1 pid-LastError = Error; /Error-1 = Error rOUT = pid-Proportion * Error + pid-Integral * pid-SumError + pid- Derivative * dError; /比例项 /积分项 /微分项 return (rOUT); ( 3 )显示部分因为管脚不足,若用液晶或点阵屏或 OLED,则需要串转并器件,在速度 上对整体控制不利。故用 74LS138 器件,简单的将 3 个 I/O 口转为 8 个 I/O 口,用 8 个 LED 显示,在整体控制上,简单明了。 四硬件设计 7、高亮 LED 驱动模块: 传统的大功率 LED 电源,大部分是用 220V ACDC 后面再用 LM358 或者三极管来做 恒流,此电路恒流精度低,并且过温,短路等保护功能没有,输出的可变性不强.故在此设 3 计中高亮 LED 采用,大电流,高压 DC/DC 升压恒流 XL6004 恒流驱动,其具有宽电压输入, 大电流输出,且其效率可以达到 92%,原理图如下: 图 3.1 高亮 LED 驱动模块 8、 无影的实现: 无影灯原理参照手术无影灯通过多个光源实现无影效果的,手术无影灯用来照明手术 部位,以最佳地观察处于切口和体腔中不同深度的小的、对比度低的物体。并能将色彩失 真降到最低程度。此外,无影灯还要求在工作过程中不散发出过量的热。手术无影灯如下: 图 3.2 手术无影灯布局 4 本设计也采用多个光源实现无影效果,其特点是照度高,因为采用恒流驱动,使高亮 灯能长时间工作,由于在设计中能充分散热,故不会发出过量的热量影响使用者的使用。 9、光照采集: 采用可见光光敏电阻作为光照采集器件,其工作原理方框图如下图所以: 图 3.3 光照采集原理方框图 (4)人体感应: 人体感应采用热式红外采集,其工作方框图如下: 图 3.4 人体感应原理方框图 (5)电源: 电源由变压器、整流桥、和滤波电路组成,再由开关电源器件 LM2596 构成,设计较简单, 不再叙述。 4、程序设计 程序流程图如图 5.1 所示。 系统流程图如下: 光照 增加 电阻减 小 电压 减小 PWM 降低低加 光照减 小低加 待机有人体靠 近 开始 工作 人远 离 5 系统创新系统创新 1、 灯珠亮度自动可控,使台灯发出亮度与环境亮度之和保持一固定值,无需人为频繁操作。 2、 多模式选择,不同情景用不同模式。 3、 灯盘设计模拟手术室用的无影灯,避免写字时手得遮挡引起照明度不足,保护视力。 4、 环境探测,解决用户强光久照伤眼,弱光久视伤眼,用眼过度。突然离 开忘记关灯费电情况等各种情况。 5、 优秀的电池管理方案,更高效率,增长电池和灯珠寿命。 6、 自动调节亮度,更加有效利用电源,更加节能。 6 图 5.1 5、产品性能测试 实物作品 (1 1)放大部分数据放大部分数据( (放大放大 6868 倍倍) ) 电桥输出 电压 (mv) 5101520253035404550 放大输出 (mv) 34568810231361171020382380272730653409 理论值 (mv) 34068010201360170020402380272030603400 7 (2 2)总个系统的测试数据)总个系统的测试数据 10、总结 从放大部分所测得数据可以看出,放大部分基本和理论值相对应,有些误差可 能的来源有:仪用放大器本身的误差、人工测量误差、万用表的误差等。 从总个系统的测试数据看,特别是看附表的曲线图,实际和理论有比较大的误 差,这个是无法避免的,通过人为的修改后,取得了很好的效果。 总而言之,本系统实现了题目的基本要求的全部、发挥部分的大部! 附录 #include #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define CS BIT0 #define SID BIT1 #define SCLK BIT2 #define LCDPORT P2OUT #define SID_1 LCDPORT |= SID #define SID_0 LCDPORT unsigned char b=“当前按键:“; unsigned char c=“实时温度:“; unsigned char d=“0123456789.V“; unsigned char e=“当前电压:“; uint key,value,key_shu; float temperature; float IntDegC; long temp_IntDegc; long IntDegC_1; long temp_set = 30; void delay(unsigned char ms); void write_cmd(uchar cmd); void write_dat(uchar dat); void lcd_pos(uchar x,uchar y); void LCD_init(void); void ADC10_init(void); void LCD_show(void); void temp_collect(void); void pwm_control(uchar pwm_type); void temp_control(); uint keyscan(); uint keyvalue(uint key_value); int main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; 9 ADC10_init(); P2SEL= 0x00; P2DIR = BIT0 + BIT1 + BIT2; P2DIR |= CLK + SH_LD; /P2.3,P2.4 为输出 P2DIR /P2.5 为输入 LCD_init(); delay(40); LCD_show(); while(1) key=keyscan(); key_shu = keyvalue(key); lcd_pos(2,5); write_dat(key_shu+48); if(key_shu = 8) P1DIR = 0x01; P1OUT = BIT0; delay_ms(50); ADC10CTL0 |= ENC + ADC10SC; /ADC10 Enable _bis_SR_register(CPUOFF + GIE); / LPM0 with interrupts enabled /temp_collect(); temp_control(); void delay(unsigned char ms) unsigned char i,j; for(i=ms;i0;i-) for(j=120;j0;j-); void write_cmd(uchar cmd) uchar i,high4bits,low4bits; ulong lcdcmd; high4bits = cmd 10 low4bits = cmd lcdcmd=(ulong)0xf8= 5; temp_1 |= num_1; CLK_1; delay_us(10); for(i = 0;i = 5; temp_2 |= num_2; CLK_1; delay_us(10); temp_1 =21.4 bai = IntDegC_1 /100; shi = IntDegC_1 % 100/10; ge = IntDegC_1 % 100%10; lcd_pos(3,5); write_dat(dbai); write_dat(dshi); write_dat(d12); write_dat(dge); write_dat(d10); write_dat(d11); bai_1 = temp_IntDegc /100; shi_1 = temp_IntDegc %100/10; ge_1 = temp_IntDegc %100%10; lcd_pos(4,5); write_dat(dbai_1); write_dat(d12); write_dat(dshi_1); write_dat(dge_1); write_dat(d13); _no_operation(); / SET BREAKPOINT HERE 16 void temp_control() temp_set = temp_set*10; temp_collect(); if(temp_set - IntDegC_1 100) pwm_control(2); delay_ms(20); temp_collect(); if(temp_set - IntDegC_1 50 delay_ms(20); temp_collect(); if(IntDegC_1 - temp_set 50 temp_collect(); void pwm_control(uchar pwm_type) P1DIR |= 0x04; P1SEL |= 0x04; /设置 P1.2 为 TA0.1 输出功能 TACTL = TASSEL_2 + MC_1 + TACLR; /SMCLK + 增计数模式 + 清除位 18 switch(pwm_type) case 1: CCR0 = 100; CCTL1 = OUTMOD_1;break; /计数到 CCR0 置 1 case 2: CCR0 = 100; CCTL1 = OUTMOD_5;break; /计数到 CCR0 置 0 case 3: CCR0 = 100 - 1; CCTL1 = OUTMOD_7; CCR1 =

温馨提示

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

评论

0/150

提交评论