可控led照明及检测报告.docx
- 文档编号:4963996
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:20
- 大小:133.99KB
可控led照明及检测报告.docx
《可控led照明及检测报告.docx》由会员分享,可在线阅读,更多相关《可控led照明及检测报告.docx(20页珍藏版)》请在冰豆网上搜索。
可控led照明及检测报告
培训报告
题目:
可控LED照明及检测
组员:
学院:
电子控制与工程
专业:
电子科学与技术
可控LED照明灯设计报告
摘要:
本组采用TI的TPS61040作为led的驱动芯片,以MSP430单片机为控制核心,光敏二极管作为照度检测传感器,实现led电流预制功能及照度检测。
关键词:
MSP430照度检测TPS61040
一、总体方案设计与论证
1、恒流部分
方案一:
系统恒流可控部分采用分立元件搭建,由于分立元件各项参数可方便自由更改,如果参数适当,系统的整体性能将会远远超过集成元件的性能。
但由于分离元件的各项参数都可调,如果不具备丰富的经验,将会给调试带来很大困难。
方案二:
恒流部分采用开关电源芯片驱动,由于开关电源的低损耗将会对整体电路的效率有较大提升,同时集成芯片外围器件简单,方便电路的安装设计
综合考虑本系统采用方案二
2、芯片选择
MSP430系列单片机具有处理能力强、运算速度快、超低功耗、片上资源丰富、方便高效的开发环境等优良特性。TPS61040作为恒流数控电源,1.8V至6V的输入电压范围,400mA的输出电流能力,最高输出电压达28V,满足本设计的所有要求。
本系统采用单片机MSP430F149为系统控制的核心,主要包括TPS驱动模块,LED的功率检测,电源和光度计的制作模块等,总体框图如图表1。
图表1
二、各模块电路方案选择
1、恒流及功率检测
图表2
TPS61040是一个DC/DC的低功率boost升压电路转换器,由于内部开关频率达到1M所以外部元件可以值可以取很小。
其中EN端是使能端保证芯片的正常工作,FB是反馈端内部参考电压1.233V,外部接电流采样电阻实现恒流输出。
AD转换采用MSP430内部集成12位ADC将输出电压采样传送给单片机,使用精密电阻采样电流经送入单片机的ADC,单片机计算出功率后送入1602液晶屏显示。
电感L1是储能电感,D1和1uF电容用于整流滤波。Rs将输出电流转换为电压反馈到FB,控制输出电流的稳定,单片机通过数模转换芯片TLV5618控制R2的电压,设定输出电流,其中DA输出3.3V时Io=0,DA输出0V时Io=20mA。
2、数模转换部分
采用TLV5618,TLV5618兼容SPI协议,12位串行DA,具有较高精度,且占用IO口很少,符合本设计要求。
图表3
3、照度检测部分
图表4
光敏二极管具有比光敏电阻更高的灵敏度,所以采用型号为2CU1B的光敏二极管,灵敏度可达到80uA/uW,暗电流5uA以下,使用时要加反向电压。
OP07不支持单电源供电,但由于本系统只能用+5V电源供电,于是采用抬高地电位作为浮地使用将负电源接口接真实地,其中浮地电位由TL431提供(稳定电压值为2.5V,准确值为2.495V),TL431最大能承受100mA的电流,选择合适的电阻使其工作在50mA状态,这样浮地电位最大可提供50mA的输入输出电流,足以满足题目要求。
此时的输出电压实际是
4、显示及按键部分
图表5
按键采用四个独立按键,显示使用1602液晶屏。按键采用独立按键,由于msp430的port1,port2口都有外部中断的功能,因此,当检测到按键按下时就会触发中断,从而能对按键的功能进行处理。
1602液晶是最常用的显示器,它的操作比较方便,满足一般的显示要求并且本系统要求显示的量比较简单,只涉及简单的数字字母显示,不涉及汉子显示。因此本采用1602液晶进行显示就能满足要求。
三:
软件流程
图表6
四、总体电路
图表7
五:
附录1程序源码
//---------------------------------------------
//--------1602液晶驱动-------------------
//---------------------------------------------
#include
#include"1602.h"
#defineCPU_F((double)8000000)
#definedelay_us(x)__delay_cycles((long)(CPU_F*(double)x/1000000.0))
#definedelay_ms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0))
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
#defineP555
#defineP566
#defineP577
//-------------------------端口定义------------------------
#defineRS_CLRP5OUT&=~(1< #defineRS_SETP5OUT|=(1< #defineRW_CLRP5OUT&=~(1< #defineRW_SETP5OUT|=(1< #defineEN_CLRP5OUT&=~(1< #defineEN_SETP5OUT|=(1< #defineDataPortP4OUT//P4口为数据口 //--------------------1602gpio初始化----------------- voidLCD_gpio_init() { P4SEL=0x00;//普通io口 P4DIR=0xFF; P5SEL=0x00; P5DIR|=BIT5+BIT6+BIT7;//控制口设置为输出模式 } //----------------lcd写入命令--------------------------- voidLCD_write_com(unsignedcharcom) { RS_CLR; RW_CLR; EN_SET; DataPort=com;//命令写入端口 delay_ms(5); EN_CLR; } //-----------------lcd写入数据--------------------------- voidLCD_write_data(unsignedchardata) { RS_SET; RW_CLR; EN_SET; DataPort=data;//数据写入端口 delay_ms(5); EN_CLR; } //--------------------lcd清屏----------------------------- voidLCD_clear(void) { LCD_write_com(0x01);//清屏幕显示 delay_ms(5); } //--------------------lcd屏幕初始化-------------------------- voidLCD_init(void) { LCD_write_com(0x38);//显示模式设置 delay_ms(5); LCD_write_com(0x08);//显示关闭 delay_ms(5); LCD_write_com(0x01);//显示清屏 delay_ms(5); LCD_write_com(0x06);//显示光标移动设置 delay_ms(5); LCD_write_com(0x0C);//显示开及光标设置 delay_ms(5); } //----------------------------------------------------------------------------- //名称: 可控的LED灯 //作者: 小拉面 //修改: //日期: 2013-8-6 //----------------------------------------------------------------------------- #include #include"1602.h" #include"1602.c" //************自适应调节******************* #definepid_p0.005 #definepid_i0 #definepid_d0.005 floatlastdlta_ad=0.0,cur_ad=0.0,last_ad=0.0; intDlta=0,Dlta_ad=0; charnum[10]={'0','1','2','3','4','5','6','7','8','9'}; charyihang[]="mAv"; charerhang[]="mW"; intDA_cont[201]={372,382,395,408,415,425,435,458,462,468,476, 481,496,508,517,524,531,540,550,560,582,588, 598,605,618,624,634,645,654,665,674,683,697, 712,719,726,737,746,756,766,776,786,794,813, 821,832,840,851,860,870,880,890,902,913,922, 930,940,950,960,974,983,992,1000,1010,1020, 1030,1040,1055,1065,1075,1085,1090,1100,1115, 1125,1135,1145,1152,1162,1177,1185,1195,1205, 1215,1225,1235,1245,1255,1268,1278,1284,1293, 1309,1317,1325,1333,1350,1358,1365,1379,1387, 1393,1410,1416,1426,1440,1445,1454,1471,1476, 1491,1498,1505,1518,1527,1539,1545,1558,1564, 1578,1585,1597,1605,1616,1624,1635,1646,1652, 1664,1670,1680,1691,1700,1708,1717,1726,1734, 1746,1753,1764,1771,1777,1788,1796,1803,1812, 1822,1828,1837,1844,1851,1860,1868,1874,1882, 1888,1897,1904,1910,1918,1925,1930,1938,1943, 1949,1954,1960,1964,1969,1975,1980,1984,1989, 1995,1998,2000,2006,2009,2013,2017,2020,2022, 2025,2027,2030,2033,2035,2036,2038,2040,2041, 2043,2044,2045,2046,2047,2048,2049,2051,2053, 2054}; unsignedcharDA=100; unsignedintU1,voltemp0[32],voltemp1[32],voltemp2[32]; charcon0=0,con1=0,con2=0; unsignedlongsumvol0,sumvol1,sumvol2; unsignedintavevol0,avevol1,avevol2; //-------------------------key端口------------------- #defineKeyPortP1IN voidall_gpio() { P1DIR=0XFF;P1OUT=0XFF; P2DIR=0XFF;P2OUT=0XFF; P3DIR=0XFF;P3OUT=0XFF; P4DIR=0XFF;P4OUT=0XFF; P5DIR=0XFF;P5OUT=0XFF; P6DIR=0XFF;P6OUT=0XFF; } //--------------------------keygpio------------------ voidKey_gpio_init() { P1SEL=0x00;//P1普通IO功能 P1DIR=0xF0;//P10~P13输入模式,外部电路已接上拉电阻 P1IE|=0X0F;//P10---P13中断允许 P1IES|=BIT0+BIT1+BIT2+BIT3;//上升沿触发 } //-------------------TLV5618-------------------------- //#defineTDIRP3DIR//2.7-5.5V低功耗双12位,带掉电D/A转换器 #defineCS_LP3OUT&=~BIT0 #defineCS_HP3OUT|=BIT0 #defineSCLK_HP3OUT|=BIT1 #defineSCLK_LP3OUT&=~BIT1 #defineDIN_HP3OUT|=BIT2 #defineDIN_LP3OUT&=~BIT2 //---------------------gpio初始化--------------------- voidDAC_gpio_init() { P3DIR|=0X07;//配端口 P3SEL=0X00; } //--------DAC---TLV5618转换程序----------------------------/ voidwrite_data(unsignedintDA_DATA)//编程位R1SPDPWRR0 {//寄存器选择位R1R0 uchari;//00写数据到DACB和BUFFER uinttemp;//01写数据到BUFFER temp=DA_DATA|0x8000;//10写数据到DACA和用BUFFER内容更新DACB SCLK_H; CS_L;//SPD速度控制位SPD=1高速,SPD=0低速 //发送16位数据 for(i=0;i<16;i++)//PWR电源控制位PWR=1掉电,PWR=0正常操作 {//上电时SPD=0,PWR=0(低速模式、正常操作) if(temp&0x8000)DIN_H;//contr=0x8000选择A通道,contr=0x0000选择B通道 elseDIN_L; temp=temp<<1; SCLK_L; _NOP(); SCLK_H; _NOP(); } CS_H; } //------------------ADC配置--------------------- voidInit_adc() {//上电复位是enc为0,可以操作ctl0 P6SEL=0X0F; ADC12CTL0|=ADC12ON+MSC+SHT0_6;//开启内核,多次采样,采样保持时间256 ADC12CTL1|=CSTARTADD_0+CSTARTADD_1+CSTARTADD_2+SHP+CONSEQ_3;//A0通道。 ADC12MCTL0|=INCH_0;//用默认值就可以 ADC12MCTL1|=INCH_1; ADC12MCTL2|=INCH_2; ADC12IE|=0X07;//通道0中断允许 ADC12CTL0|=ENC; } //-----------------进制转换--------------------- voidtrans_val(intadd,unsignedinthex_val) { unsignedlongtemp1; charvol[4]; temp1=hex_val; //temp1=(hex_val<<5)+hex_val;//*33 //temp1=(temp1<<3)+(temp1<<2);//*10 temp1=temp1*330; temp1=temp1>>12;///4096 if(temp1>=3295) {temp1=3295;} vol[0]=temp1/100; vol[1]=temp1%100/10; vol[2]=temp1%100%10; LCD_write_com(add); LCD_write_data(num[vol[0]]); LCD_write_data(0x2e); LCD_write_data(num[vol[1]]); LCD_write_data(num[vol[2]]); } //-----------------------计算电流值---------------------- voidtrans_cur(intadd,unsignedinthex_val) { unsignedlongtemp1; charvol[3]; temp1=hex_val; temp1=temp1*300; temp1=temp1>>12;///4096 if(temp1>=200) {temp1=200;} vol[0]=temp1/100; vol[1]=temp1%100/10; vol[2]=temp1%100%10; LCD_write_com(add); LCD_write_data(num[vol[0]]); LCD_write_data(num[vol[1]]); LCD_write_data(0x2e); LCD_write_data(num[vol[2]]); } //-----------------------------计算电压值-------------------- voidtrans_val_U(intadd,unsignedinthex_val_1,unsignedinthex_val_2) { unsignedlongtemp1,temp2,temp3; charvol[3]; temp1=hex_val_1; temp2=hex_val_2; temp1=temp1*330; temp2=temp2*110; temp1=temp1>>12; temp2=temp2>>9; temp3=temp2-temp1; if(temp3>=700) {temp3=700;} vol[0]=temp3/100; vol[1]=temp3%100/10; vol[2]=temp3%100%10; LCD_write_com(add); LCD_write_data(num[vol[0]]); LCD_write_data(0x2e); LCD_write_data(num[vol[1]]); LCD_write_data(num[vol[2]]); } //-------------------计算功率----------------------------- voidtrans_val_P(intadd,unsignedinthex_val_1,unsignedinthex_val_2) { unsignedlongtemp1,temp2,temp3; charp[4]; temp1=hex_val_1; temp2=hex_val_2; temp2=(temp2*temp1*33); temp1=(temp1*temp1*99); temp1=temp1>>24; temp2=temp2>>21; temp3=temp2-temp1; //if(temp3>=14000) //{temp3=14000;} //temp3=temp3/100; p[0]=temp3/1000;//1 p[1]=temp3%1000/100;//4 p[2]=temp3%1000%100/10;//0 p[3]=temp3%1000%100%10;//0 LCD_write_com(add); //LCD_write_data(num[p[0]]); LCD_write_data(num[p[1]]); LCD_write_data(num[p[2]]); //LCD_write_data(0x2e); LCD_write_data(num[p[3]]); } //-----------------光照值转换--------------------- voidtrans_light(intadd,unsignedinthex_val) { unsignedlongtemp1; charvol[4]; temp1=hex_val; if(temp1>=4090) {temp1=4090;} if(temp1<3227) {temp1=3227;} temp1=temp1-3209; temp1=temp1*50; temp1=temp1/880; vol[0]=temp1/100; vol[1]=temp1%100/10; vol[2]=temp1%100%10; LCD_write_com(add); LCD_write_data(num[vol[0]]); LCD_write_data(num[vol[1]]); LCD_write_data(num[vol[2]]); } /* //----------------------比较调光----------------- voidcompare_add(unsignedintstand,unsignedintAD_3) { while((AD_3-stand)>=10) { DA++; if(DA==200) {DA=200;break;} write_data(DA_cont[DA]); delay_us(100); LCD_write_com(0x80+13); LCD_write_data(num[DA/100%10]); } } //----------------------比较调光-------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可控 led 照明 检测 报告