可控led照明及检测报告讲解.docx

上传人:b****6 文档编号:4768503 上传时间:2022-12-08 格式:DOCX 页数:20 大小:134.10KB
下载 相关 举报
可控led照明及检测报告讲解.docx_第1页
第1页 / 共20页
可控led照明及检测报告讲解.docx_第2页
第2页 / 共20页
可控led照明及检测报告讲解.docx_第3页
第3页 / 共20页
可控led照明及检测报告讲解.docx_第4页
第4页 / 共20页
可控led照明及检测报告讲解.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

可控led照明及检测报告讲解.docx

《可控led照明及检测报告讲解.docx》由会员分享,可在线阅读,更多相关《可控led照明及检测报告讲解.docx(20页珍藏版)》请在冰豆网上搜索。

可控led照明及检测报告讲解.docx

可控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]);

}

}

//----------------------比较调光-----------

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1