基于AT89C52单片机的光功率计的设计资料Word格式文档下载.docx
《基于AT89C52单片机的光功率计的设计资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于AT89C52单片机的光功率计的设计资料Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
本概念,掌握应用光电子技术解决测量问题的基本方法,学会测量误差分析、数据处理等。
该课程对于培养有计量特色的光电子技术人才十分重要。
基于光电转换器件的光强度的测量,设计光接收电路,并进行光电转换,再设计放大电路、滤波电路、AD转换电路及微处理器电路,对测量光的光强度进行标定,最终实现光强度的测量,系统要求精度为1mW。
三、方案设计与比较
方案一:
基于光电二极管的光功率测量
1)光电探头的选择:
光电二极管:
PD333-3C响应波长为400~1100nm,具有高响应速率、高光电灵敏度等特性。
2)AD转换芯片的选择:
TLC549是8位串行A/D转换器芯可与通用微处理器、控制器通过CLK、CS、DATAOUT三条口线进行串行接口。
具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC549为40000次/s。
总失调误差最大为±
0.5LSB,典型功耗值为6mW。
采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。
方案二:
基于硅光电池的光功率测量
1)光电探头的选择:
硅光电池:
BPW34具有高光电探测率、比较大的光敏面积、高光电灵敏度,快速响应时间、体积小等特点。
2)AD转换芯片的选择:
(图1)
ADC0809是8位逐次逼近型A/D转换器。
它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成(见图1)。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
方案三:
采用集成光强感应芯片
采用已经有的集成光强感应芯片,如下图所示。
BH1710FVC内置了16bitAD转换器,可对广泛的亮度进行1勒克斯的高精度,内置A/D转换器,测定照明度数字值可以直接输出。
输出采用I2CBUS接口可以直接与单片机通讯。
方案的比较与选择:
方案一的AD芯片管脚比较少,同时有4MHz片内系统时钟和软、硬件控制电路,芯片的功能能够满足设计的要求,而且使用简单、功能强大。
而AD0809使用时还要使用外部时钟,同时还要外接逻辑器件。
在使用光电和光伏探测器件的功能上是基本一致的,就是频带响应不一样,对于可见光的光功率的测量二者都可以用。
所以采用方案一。
四、实验器件
光功率计探头(光电传感器),AT89C52单片机,电阻,电容,晶振,1602液晶屏,导线若干。
5、光功率测量原理
1、原理框图
2、各模块功能详解
1)光功率计探头
光功率计探头,是光信号转换为电信号的核心部件。
探
头带有光电传感器,用来接收被测光源的辐射并将其转换为
电流信号。
探头采用双线正负两个端口输出。
当被检测光
源强度发生变化时,传感器输出的电流会随之改变。
我们通
过对电流量变化进行转换分析最终获得外部光源的光功率
变化参数。
2)I/U变换
光功率探头输出小电流信号。
电流信号与电压信号相
比,长距离传输抗干扰性能较好。
但是由于本次试验距离较
短,同时为了与后面电压放大器相匹配,所以要转换为电压
信号。
本次设计使用LM358N芯片连接I/U变换电路和放大电路。
连接时,光功率探头的输出正端口接入转换电路输入
端,负端口与I/U变换电路共地连接,如图一所示。
图一,I/U变化电路
3)运算放大电路
I/U变换以后输出的信号很微弱,大概是毫伏的量级,要对信号后期处理,首先要进行放大。
由于本次试验对电路精度要求不高,这里只设计了一级放大。
电路图如图二所示。
图二,运算放大电路
4)低通滤波电路
本实验所得的信号为低频信号,故在进行A/D转换之前要滤除高频信号,我们用两个电容组成的无源低通滤波器作为被刺实验的滤波电路。
电路图如图三。
图三,低通滤波电路
5)A/D转换电路
本实验采用TLC549CD芯片实现A/D转换。
TLC549是TI公司生产的一种低价位、高性能的8位A/D转换器,它以8位开关电容逐次逼近的方法实现A/D转换,其转换速度小于17us,最大转换速率为40000HZ,4MHZ典型内部系统时钟,电源为3V至6V。
它能方便地采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统。
当/CS变为低电平后,TLC549芯片被选中,同时前次转换结果的最高有效位MSB(A7)自DATAOUT端输出,接着要求自I/OCLOCK端输入8个外部时钟信号,前7个I/OCLOCK信号的作用,是配合TLC549输出前次转换结果的A6-A0位,并为本次转换做准备:
在第4个I/OCLOCK信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个I/OCLOCK信号的下降沿使片内采样/保持电路进入保持状态并启动A/D开始转换。
转换时间为36个系统时钟周期,最大为17us。
直到A/D转换完成前的这段时间内,TLC549的控制逻辑要求:
或者/CS保持高电平,或者I/OCLOCK时钟端保持36个系统时钟周期的低电平。
由此可见,在自TLC549的I/OCLOCK端输入8个外部时钟信号期间需要完成以下工作:
读入前次A/D转换结果;
对本次转换的输入模拟信号采样并保持;
启动本次A/D转换开始。
TLC549时序图
TLC549与单片机连接图如下所示
模拟信号从2号脚输入,6号脚输出数字信号。
6)LCD显示电路
数字信号经过单片机运算后要通过液晶显示出来,本实验使用的是1062液晶屏显示,1062与单片机连接图如下所示。
1062管脚
六、完整电路原理图设计
基于上述思想设计出的完整电路图如下所示。
七、程序设计
现列出单片机程序关键程序代码:
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
chartable1[16]="
AD:
0000"
;
chartable2[16]="
00.00uW"
uchartime,a;
uintVolt,AD;
ulongPOW;
ints;
sbitlcdrs=P0^7;
sbitlcdrw=P0^6;
sbitlcden=P0^5;
sbitCS=P3^7;
//片选
sbitDO=P3^6;
//数据输出
sbitCLK=P3^5;
//时钟
voiddelay(uintz)//延时函数
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=120;
y>
y--);
}
voidwrite_com(ucharcom)//写指令函数
lcdrs=0;
lcdrw=0;
P2=com;
lcden=1;
delay
(2);
lcden=0;
voidwrite_data(uchardate)//写数据函数
lcdrs=1;
P2=date;
voidinit()//初始化函数
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
unsignedcharTLC549(void)//AD转换,返回结果
uchari,temp;
CS=1;
CLK=0;
CS=0;
//拉低CS端DO输出最高位
_nop_();
for(i=0;
i<
8;
i++)
{
temp<
<
=1;
if(DO)
temp|=0x01;
else
temp|=0x00;
CLK=1;
//形成一次时钟脉冲
_nop_();
}
for(i=17;
i>
i--)_nop_();
//延迟17us
return(temp);
voidData_Conversion(void)//AD读数转十进制函数
AD=TLC549();
if(a<
5)
s=s+AD;
a++;
if(a==5)
{
table1[8]=s/1000+'
0'
table1[9]=s/100%10+'
table1[10]=s/10%10+'
table1[11]=s%10+'
Volt=AD*100/255*5;
POW=(-0.4140)*Volt*Volt+100*10.2729*Volt+10000*1.2273;
POW=POW/100;
table2[4]=POW/1000+'
table2[5]=POW/100%10+'
table2[7]=POW/10%10+'
table2[8]=POW%10+'
a=0;
s=0;
}
voiddisplay(ucharx,uchary,uchar*str)
uchari;
if(x==0)write_com(0x80|y);
if(x==1)write_com(0xc0|y);
16;
write_data(str[i]);
if(str[i]=='
\0'
)break;
}
voidmain()
init();