利用光敏电阻检测光强

一·原理

光敏电阻元件的特性便是随着光照的增强,其自身的电阻便会逐渐降低。利用这一特性,我们便可以将其与电阻串联,由电阻分压原理可将光的强弱信号转为电阻大小再转为光敏电阻两端电压大小信号,这样就做成了一个简单的光敏传感器。传感器信号经集成运放放大后再用单片机P1.5引脚读取此值,最后再将读取到的电压值用串口通信输出到串口屏上。

二·具体电路图如下


该电路中,我们通过msp430的vcc端口供电,电压为3.3V,用10千欧电阻R1与光敏电阻R5串联,由于multisim中没有光敏电阻,我们用100KΩ的滑动变阻器来代替。这样R5两端输出电压便约在0到3.3V之间。由于要求输出信号的范围在0到5V之间,我们再将此信号用集成运放放大(5/3.3)=1.515倍。即

1+R4/R3=1.515

R3选取1千欧,则经计算R4选取515欧较为合适。实现了信号放大之后,我们再将放大后的信号用单片机检测出来。由于P1.5引脚读取到的电压模拟量经单片机自身模数转换后被分成1024份,最大检测电压为3.3V。即

单片机读出的数字量 val = (真实电压值/3.3)*1024

我们将光敏电阻的高电位一端作为待检测信号连接到P1.5,经简单计算可得单片机读取的数字量转换为真实电压值的表达式:

真实电压值 =(单片机转换后数字量 val/1024)3.31.515

这样即可用单片机检测到真实电压输出值。Msp430单片机具体代码如下:

#include <Arduino.h>

void LCDprintstring(const String &aa ,const String bb) //向usart hmi 串口屏上**文本打印字符串
{
  Serial.print( bb + ".txt=\"" + aa + "\"");
  Serial.write(0XFF);
  Serial.write(0XFF);
  Serial.write(0XFF);
  delay(500);
}
void LCDprintnum(float &num) //向usart hmi 串口屏上t0文本打印数字
{
  Serial.write("t0.txt=\"");
  Serial.print(num);
  Serial.write("\"");
  Serial.write(0XFF);
  Serial.write(0XFF);
  Serial.write(0XFF);
}

float val1=0;
void setup()
{
  pinMode(P1_5,INPUT);
  Serial.begin(9600); //设置波特率为9600
}

void loop()
{
  val1=analogRead(P1_5);
  String data1 = "电压读取值/V";
  LCDprintstring(data1,"t1");
  delay(250);
  val1 = (val1/1024)*3.3*1.515;
  LCDprintnum(val1);
  delay(250);
}

接下来接线就完成啦