“第九课--光敏实验/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{| style="width: 800px;" |- | ==目的== 前面讲了好多内容,也是实实在在存在,并且看得见的东西。今天用到的是光敏电阻,能够检测光照...")
 
 
(未显示1个用户的5个中间版本)
第1行: 第1行:
 +
{{Language|Maple Lesson 09 - Photosensitive experiment}}
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-
第8行: 第9行:
 
Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。
 
Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。
 
*其他硬件设备
 
*其他硬件设备
    **面包板跳线    一盒   
+
**面包板跳线    一盒   
 
**面包板    一块   
 
**面包板    一块   
 
**光敏电阻          一个   
 
**光敏电阻          一个   
第18行: 第19行:
 
[[File:stm32-lesson12All.jpg|600px|center|thumb]]
 
[[File:stm32-lesson12All.jpg|600px|center|thumb]]
 
===光敏电阻===
 
===光敏电阻===
[[File:第十课-光敏电阻.jpg|600px|center|thumb]]
+
[[File:stm32-Photoresistor.jpg|600px|center|thumb]]
 
光敏电阻是一个将光信号转换成电信号的半导体元器件。在黑暗环境里,它的电阻值很高,当受到光照时,电阻阻值下降。光照愈强,阻值愈低。光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也加交流电压。
 
光敏电阻是一个将光信号转换成电信号的半导体元器件。在黑暗环境里,它的电阻值很高,当受到光照时,电阻阻值下降。光照愈强,阻值愈低。光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也加交流电压。
  
第24行: 第25行:
  
 
==原理图==
 
==原理图==
[[File:lesson11-shcematic.jpg|600px|center|thumb]]
+
[[File:stm32-lesson11-shcematic.jpg|600px|center|thumb]]
 
光敏电阻一端直接接地,一端通过电阻接到电源。当晚上无光时,其阻值在几M左右,所以定值电阻阻值可以忽略,光敏电阻两端电压理想为电源两端电压,当白天受到强光照射,其电阻阻值下降至几百欧到几K之间,所以整个电路的总电阻减小,电流增大,定值电阻两端电压增大(Ur=I*R),光敏电阻两端电压减小(U总=Ur+U光敏),电压很低,甚至接近0V。通过此电路可将光信号转换成电信号,我们就可以通过读取其电压来实现一个模拟路灯。
 
光敏电阻一端直接接地,一端通过电阻接到电源。当晚上无光时,其阻值在几M左右,所以定值电阻阻值可以忽略,光敏电阻两端电压理想为电源两端电压,当白天受到强光照射,其电阻阻值下降至几百欧到几K之间,所以整个电路的总电阻减小,电流增大,定值电阻两端电压增大(Ur=I*R),光敏电阻两端电压减小(U总=Ur+U光敏),电压很低,甚至接近0V。通过此电路可将光信号转换成电信号,我们就可以通过读取其电压来实现一个模拟路灯。
  
因为每个时刻光强不一样,所以为了更好地控制光的影响,可将定值电阻换成一个100K的可调精密电阻。大家可以自行实验。
+
==程序==
 +
<source lang="cpp">
 +
const int analogInPin = 14;
 +
const int ledPin = 4;
 +
 
 +
float sensorValue = 0;        // value read from the pot
 +
float Voltage=0;
  
==程序==
+
int xl=4000; //此处需是环境基础亮度变量,请查看自己的亮度数值,填写到此处数值要略大于所测得的数据但小于灯光下的数据
<source lang="cpp">
+
int a =600;       //此处需是环境基础亮度变量,请查看自己的亮度数值,填写到此处数值要略大于所测得的数据但小于灯光下的数据
+
void setup() {
void setup ()
+
    pinMode(analogInPin, INPUT);
{
+
    pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
 
  pinMode(13,OUTPUT);
 
 
}
 
}
void loop()
+
{
+
void loop() {
  int n = analogRead(A0);       //读取模拟口A0数值
+
    // read the analog in value:
  Serial.println(n);
+
    sensorValue = analogRead(analogInPin);
  if (n>= a )                  //对光线强度进行判断,如果比我们的预设值小就关闭LED,否则就点亮
+
 +
if (sensorValue >= xl )                  //对光线强度进行判断,如果比我们的预设值小就关闭LED,否则就点亮
 
   {
 
   {
     digitalWrite(13,HIGH);
+
     digitalWrite(ledPin,HIGH);
 
   }
 
   }
 
   else
 
   else
 
   {
 
   {
     digitalWrite(13,LOW);
+
     digitalWrite(ledPin,LOW);
 
   }
 
   }
  delay(100);
+
    SerialUSB.print("sensorValue = ");
 +
    SerialUSB.println(sensorValue);
 +
    delay(500);
 
}
 
}
 
</source>
 
</source>
 +
 +
你可以用串口监视来判断你的最佳感光值,因为每个时刻光强不一样,所以为了更好地控制光的影响,还可以将定值电阻换成一个100K的可调精密电阻。大家可以自行实验。
  
 
==结果==
 
==结果==

2014年11月5日 (三) 07:21的最新版本

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,模拟了夜天打开灯光。

视频