收藏 分享(赏)

基于msp430超低功耗单片机温度控制器设计.doc

上传人:hyngb9260 文档编号:6882477 上传时间:2019-04-25 格式:DOC 页数:19 大小:442.94KB
下载 相关 举报
基于msp430超低功耗单片机温度控制器设计.doc_第1页
第1页 / 共19页
基于msp430超低功耗单片机温度控制器设计.doc_第2页
第2页 / 共19页
基于msp430超低功耗单片机温度控制器设计.doc_第3页
第3页 / 共19页
基于msp430超低功耗单片机温度控制器设计.doc_第4页
第4页 / 共19页
基于msp430超低功耗单片机温度控制器设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、开放实验报告课 题 名 称 基于 msp430 单片机的超低功耗智能护眼灯的设计 学 生 姓 名 系 、 年 级 专 业 信息工程系、11、12 级电子信息 指 导 教 师 于建坤 2014 年 6 月 20 日1基于 msp430 单片机的超低功耗智能护眼灯的设计1实验目的1、了解 pwm 控制灯光亮度的原理,设计基于单片机的智能护眼灯控制装置。2、学习电子电路、PCB 板设计,产品制作与调试。2实验内容本智能护眼灯以 MSP43G2553 为核心,完成护眼灯的照明,电源管理,环境采集和中央处理及控制功能。灯珠采用高亮白光 LED,恒流驱动,无频闪,不伤害眼睛,保护视力。电源管理,由专用电源

2、管理方案,管理系统充电和用电。环境采集,用光传感器采集光照强度,根据光照强度控制灯珠亮度,用人体热释红外检测人远近。三系统方案设计系统整体方框图如下:图 2.1 系统方框图( 1 ) 环境采集用光敏电阻采集环境亮度,人距感应部分采用热释红外。当人靠近台灯,产生信号给 MCU 控制器,打开台灯。光敏电阻采集当前亮度值,根据使用者选择的模式作出调整。( 2 ) MCU 控制亮度和环境采集采用闭环控制,具体算法用 PID 算法的增量式模式。具体函数如下:高亮 LED 驱动显示部分电源供电环境采集和人距感应部分 MSPG2553控制2typedef struct PIDdouble SetPoint;

3、 /设定目标double Proportion;/比例常数double Integral; /积分常数double Derivative;/微分常数double LastError; /Error-1double PrevError; /Error-2double SumError; /Sums of Errors PID;double PIDCalc(PID *pid, double NextPiont)double dError, Error, rOUT;Error = pid-SetPoint - NextPiont; / 偏差pid-SumError += Error; / 积分dEr

4、ror = pid-LastError - pid-PrevError; /当前微分pid-PrevError = pid-LastError; /Error-2 =Error-1pid-LastError = Error; /Error-1 = ErrorrOUT = pid-Proportion * Error + pid-Integral * pid-SumError + pid-Derivative * dError;/比例项 /积分项 /微分项return (rOUT); ( 3 )显示部分因为管脚不足,若用液晶或点阵屏或 OLED,则需要串转并器件,在速度上对整体控制不利。故用 7

5、4LS138 器件,简单的将 3 个 I/O 口转为 8 个 I/O 口,用 8 个LED 显示,在整体控制上,简单明了。四硬件设计7、高亮 LED 驱动模块:传统的大功率 LED 电源,大部分是用 220V ACDC 后面再用 LM358 或者三极管来做恒流,此电路恒流精度低,并且过温,短路等保护功能没有,输出的可变性不强.故在此设3计中高亮 LED 采用,大电流,高压 DC/DC 升压恒流 XL6004 恒流驱动,其具有宽电压输入,大电流输出,且其效率可以达到 92%,原理图如下:图 3.1 高亮 LED 驱动模块8、 无影的实现:无影灯原理参照手术无影灯通过多个光源实现无影效果的,手术无

6、影灯用来照明手术部位,以最佳地观察处于切口和体腔中不同深度的小的、对比度低的物体。并能将色彩失真降到最低程度。此外,无影灯还要求在工作过程中不散发出过量的热。手术无影灯如下:图 3.2 手术无影灯布局4本设计也采用多个光源实现无影效果,其特点是照度高,因为采用恒流驱动,使高亮灯能长时间工作,由于在设计中能充分散热,故不会发出过量的热量影响使用者的使用。9、光照采集:采用可见光光敏电阻作为光照采集器件,其工作原理方框图如下图所以:图 3.3 光照采集原理方框图(4)人体感应:人体感应采用热式红外采集,其工作方框图如下:图 3.4 人体感应原理方框图(5)电源:电源由变压器、整流桥、和滤波电路组成

7、,再由开关电源器件 LM2596 构成,设计较简单,不再叙述。4、程序设计程序流程图如图 5.1 所示。系统流程图如下:光照增加电阻减小电压减小PWM降低低加光照减小低加待机 有人体靠近开始工作人远离5系统创新1、 灯珠亮度自动可控,使台灯发出亮度与环境亮度之和保持一固定值,无需人为频繁操作。2、 多模式选择,不同情景用不同模式。3、 灯盘设计模拟手术室用的无影灯,避免写字时手得遮挡引起照明度不足,保护视力。4、 环境探测,解决用户强光久照伤眼,弱光久视伤眼,用眼过度。突然离 开忘记关灯费电情况等各种情况。5、 优秀的电池管理方案,更高效率,增长电池和灯珠寿命。6、 自动调节亮度,更加有效利用

8、电源,更加节能。6图 5.15、产品性能测试实物作品(1)放大部分数据(放大 68 倍)电桥输出电压(mv)5 10 15 20 25 30 35 40 45 50放大输出(mv) 345 688 1023 1361 1710 2038 2380 2727 3065 3409理论值(mv) 340 680 1020 1360 1700 2040 2380 2720 3060 34007(2)总个系统的测试数据10、总结从放大部分所测得数据可以看出,放大部分基本和理论值相对应,有些误差可能的来源有:仪用放大器本身的误差、人工测量误差、万用表的误差等。从总个系统的测试数据看,特别是看附表的曲线图,

9、实际和理论有比较大的误差,这个是无法避免的,通过人为的修改后,取得了很好的效果。总而言之,本系统实现了题目的基本要求的全部、发挥部分的大部!附录#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=“当前按键

10、:“;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);

11、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 resetWDTCTL = WDTPW + WDTHOLD;9ADC10_init();P2SEL= 0x00;P2

12、DIR = 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_registe

13、r(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 10low4bits = cmd lcdcmd=(ulong)0xf8= 5;temp_1 |= num_1;CLK_1;de

14、lay_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 %1

15、00/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 HERE16void temp_control() temp_set = temp_set*10;temp_collect();if(temp_set - IntDegC_1 100)pwm_control(2);delay_ms(20);temp_collect();i

16、f(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 + 增计数模式 + 清除位18switch(pwm_type)case 1: CCR0 = 100;CCTL1 = OUTMOD_1;break; /计数到 CC

17、R0 置 1case 2: CCR0 = 100;CCTL1 = OUTMOD_5;break; /计数到 CCR0 置 0case 3: CCR0 = 100 - 1;CCTL1 = OUTMOD_7;CCR1 = 200;break; /占空比 1:1,周期是 0.02ms#pragma vector = ADC10_VECTOR_interrupt void ADC10_ISR(void)_bic_SR_register_on_exit(CPUOFF); / Clear CPUOFF bit from 0(SR)#pragma vector = TIMER0_A0_VECTOR /TA0 (CCR0) 中断_interrupt void TimeA0_ISR(void)TACTL = 0;LPM0_EXIT; /退出 LPM0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报