第九课--光敏实验/zh
Language | English |
---|
目的前面讲了好多内容,也是实实在在存在,并且看得见的东西。今天用到的是光敏电阻,能够检测光照强度,来模拟一个自动路灯的实验,白天光照较强时,路灯关闭,晚上光照比较弱,路灯开启。 设备Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。
光敏电阻光敏电阻是一个将光信号转换成电信号的半导体元器件。在黑暗环境里,它的电阻值很高,当受到光照时,电阻阻值下降。光照愈强,阻值愈低。光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也加交流电压。 光敏电阻的暗电阻往往超过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,模拟了夜天打开灯光。 视频 |