第九课--光敏实验/zh

来自Microduino Wikipedia
跳转至: 导航搜索
Language English

目的

前面讲了好多内容,也是实实在在存在,并且看得见的东西。今天用到的是光敏电阻,能够检测光照强度,来模拟一个自动路灯的实验,白天光照较强时,路灯关闭,晚上光照比较弱,路灯开启。

设备

Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。

  • 其他硬件设备
    • 面包板跳线 一盒
    • 面包板 一块
    • 光敏电阻 一个
    • 220欧、10k电阻 各一个
    • led发光二级管 一个
    • USB数据连接线 一根


光敏电阻

光敏电阻是一个将光信号转换成电信号的半导体元器件。在黑暗环境里,它的电阻值很高,当受到光照时,电阻阻值下降。光照愈强,阻值愈低。光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也加交流电压。

光敏电阻的暗电阻往往超过1MΩ,甚至高达100MΩ,而亮电阻则在几kΩ以下,暗电阻与亮电阻之比在102~106之间,可见光敏电阻的灵敏度很高。并且有很好的光谱特性,光谱响应可从紫外区到红外区范围内。而且体积小、重量轻、性能稳定、价格便宜,因此应用比较广泛。

原理图

光敏电阻一端直接接地,一端通过电阻接到电源。当晚上无光时,其阻值在几M左右,所以定值电阻阻值可以忽略,光敏电阻两端电压理想为电源两端电压,当白天受到强光照射,其电阻阻值下降至几百欧到几K之间,所以整个电路的总电阻减小,电流增大,定值电阻两端电压增大(Ur=I*R),光敏电阻两端电压减小(U总=Ur+U光敏),电压很低,甚至接近0V。通过此电路可将光信号转换成电信号,我们就可以通过读取其电压来实现一个模拟路灯。

程序

 
const int analogInPin = 14;
const int ledPin = 4;

float sensorValue = 0;        // value read from the pot
float Voltage=0;

int xl=4000; //此处需是环境基础亮度变量,请查看自己的亮度数值,填写到此处数值要略大于所测得的数据但小于灯光下的数据
 
void setup() {
    pinMode(analogInPin, INPUT);
    pinMode(ledPin, OUTPUT);
}
 
void loop() {
    // read the analog in value:
    sensorValue = analogRead(analogInPin);
 
 if (sensorValue >= xl )                   //对光线强度进行判断,如果比我们的预设值小就关闭LED,否则就点亮
  {
    digitalWrite(ledPin,HIGH);
  }
  else
  {
    digitalWrite(ledPin,LOW);
  }
    SerialUSB.print("sensorValue = ");
    SerialUSB.println(sensorValue);
    delay(500);
}

你可以用串口监视来判断你的最佳感光值,因为每个时刻光强不一样,所以为了更好地控制光的影响,还可以将定值电阻换成一个100K的可调精密电阻。大家可以自行实验。

结果

当光照强度较强时光敏电阻两端电压较低,读取模拟值低于设定的参考值关闭LED,模拟了白天关闭灯光。当光线好弱时光敏电阻两端电压较高,模拟口读取模拟值高于设定的参考值点亮LED,模拟了夜天打开灯光。

视频