“第十一课--Microduino 达文西之灯(光敏实验)/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(photo added)
 
(未显示2个用户的9个中间版本)
第1行: 第1行:
{{Language|Lesson_11--Microduino_"The_lamp_of_Da_Vinci(light-sensitive_experiments"}}
+
{{Language|Lesson_11--Microduino_"The_lamp_of_Da_Vinci(light-sensitive_experiments)"}}
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-
 
|
 
|
 
==目的==
 
==目的==
上节课讲到了光敏电阻实验,只把光线分为两个等级,强或弱,今天深入一下,做个光照指示器,用4个LED等指示,把光强分为5个等级,光敏电阻感受到的光越强,就点亮越多的LED来达到指示的目的。
+
前面讲了好多内容,也是实实在在存在,并且看得见的东西。接下来一段时间我们将学习传感器,如何使用各种传感器。今天用到的是光敏电阻,能够检测光照强度,来模拟一个自动路灯的实验,白天光照较强时,路灯关闭,晚上光照比较弱,路灯开启。
 
==设备==
 
==设备==
*'''[[Microduino-Core]]'''
+
*'''[[Microduino-Core/zh]]'''
*'''[[Microduino-FT232R]]'''
+
*'''[[Microduino-USBTTL/zh]]'''
 
*其他硬件设备
 
*其他硬件设备
 
**面包板跳线    一盒   
 
**面包板跳线    一盒   
 
**面包板    一块   
 
**面包板    一块   
 
**光敏电阻          一个   
 
**光敏电阻          一个   
**220欧            四个
+
**220欧、10k电阻    各一个
**10K              一个
+
**led发光二级管    一个
**led发光二级管    四个
+
**USB数据连接线   一根
**USB数据连接线   一根
+
 
 +
 
 +
[[File:lesson12All.jpg|600px|center|thumb]]
 +
===光敏电阻===
 +
[[File:第十课-光敏电阻.jpg|600px|center|thumb]]
 +
光敏电阻是一个将光信号转换成电信号的半导体元器件。在黑暗环境里,它的电阻值很高,当受到光照时,电阻阻值下降。光照愈强,阻值愈低。光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也加交流电压。
 +
 
 +
光敏电阻的暗电阻往往超过1MΩ,甚至高达100MΩ,而亮电阻则在几kΩ以下,暗电阻与亮电阻之比在102~106之间,可见光敏电阻的灵敏度很高。并且有很好的光谱特性,光谱响应可从紫外区到红外区范围内。而且体积小、重量轻、性能稳定、价格便宜,因此应用比较广泛。
 +
 
 
==原理图==
 
==原理图==
[[File:第十一课原理图.jpg|600px|center|thumb]]
+
[[File:lesson11-shcematic.jpg|600px|center|thumb]]
这次光敏电阻接法与上次相反,目的是想大家更加明白光敏电阻的用法。光敏电阻一端直接接电源,另一端通过电阻接地。初始状态下为低,随着光照强度的增加电压越来越高。
+
光敏电阻一端直接接地,一端通过电阻接到电源。当晚上无光时,其阻值在几M左右,所以定值电阻阻值可以忽略,光敏电阻两端电压理想为电源两端电压,当白天受到强光照射,其电阻阻值下降至几百欧到几K之间,所以整个电路的总电阻减小,电流增大,定值电阻两端电压增大(Ur=I*R),光敏电阻两端电压减小(U总=Ur+U光敏),电压很低,甚至接近0V。通过此电路可将光信号转换成电信号,我们就可以通过读取其电压来实现一个模拟路灯。
 +
 
 +
因为每个时刻光强不一样,所以为了更好地控制光的影响,可将定值电阻换成一个100K的可调精密电阻。大家可以自行实验。
 +
 
 
==程序==
 
==程序==
 
<source lang="cpp">
 
<source lang="cpp">
 +
int a =600;        //此处需是环境基础亮度变量,请查看自己的亮度数值,填写到此处数值要略大于所测得的数据但小于灯光下的数据
 
void setup ()
 
void setup ()
 
{
 
{
    Serial.begin(115200);
+
  Serial.begin(115200);
  for(int i=2; i<=5;i++)          //使用循环方式创建2-5号数字口为输出模式
+
   pinMode(13,OUTPUT);
  {
 
   pinMode(i,OUTPUT);
 
  }
 
 
}
 
}
void loop ()
+
void loop()
 
{
 
{
+
   int n = analogRead(A0);       //读取模拟口A0数值
   int n =analogRead(A0); //读取光敏电阻的读数
+
  Serial.println(n);
  //Serial.println(n);
+
   if (n>= a )                   //对光线强度进行判断,如果比我们的预设值小就关闭LED,否则就点亮
 
 
   if (n>=100)             //各个颜色层级判断,各个层级数值,大家可根据自己的使用环境进行相应调整,最小0,最大1023
 
 
   {
 
   {
     digitalWrite(2,HIGH);
+
     digitalWrite(13,HIGH);
    digitalWrite(2,LOW);//当不再这个等级下,灯会熄灭
 
 
   }
 
   }
   if(n>250)
+
   else
  {
+
   {
    digitalWrite(3,HIGH);
+
     digitalWrite(13,LOW);
    digitalWrite(3,LOW);
 
   }
 
    if(n>400)
 
  {
 
    digitalWrite(4,HIGH);
 
    digitalWrite(4,LOW);
 
  }
 
     if(n>550)
 
  {
 
    digitalWrite(5,HIGH);
 
    digitalWrite(5,LOW);
 
 
   }
 
   }
   //  delay(100);
+
   delay(100);
 
}
 
}
 
</source>
 
</source>
  
 
==结果==
 
==结果==
当光照很弱,低于设置的最小值时,所有灯都灭。随着光的增加,每到一个设定的级别就点亮一个LED,达到指示的效果。实际上LED灯一直在闪烁,因为为了使光强不在某一等级,要熄灭此等级的灯,就直接在点亮之后立即熄灭,在执行过程中没加延时,只要还在该等级,就循环处理,所以看起来就好像一直亮着。
+
当光照强度较强时光敏电阻两端电压较低,读取模拟值低于设定的参考值关闭LED,模拟了白天关闭灯光。当光线好弱时光敏电阻两端电压较高,模拟口读取模拟值高于设定的参考值点亮LED,模拟了夜天打开灯光。
 +
 
 +
[[File:Lesson11.jpg|600xpx|thumbnail|center]]
 +
 
 +
==视频==
 
|}
 
|}

2015年7月3日 (五) 07:05的最新版本

Language English

目的

前面讲了好多内容,也是实实在在存在,并且看得见的东西。接下来一段时间我们将学习传感器,如何使用各种传感器。今天用到的是光敏电阻,能够检测光照强度,来模拟一个自动路灯的实验,白天光照较强时,路灯关闭,晚上光照比较弱,路灯开启。

设备

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


Lesson12All.jpg

光敏电阻

第十课-光敏电阻.jpg

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

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

原理图

Lesson11-shcematic.jpg

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

因为每个时刻光强不一样,所以为了更好地控制光的影响,可将定值电阻换成一个100K的可调精密电阻。大家可以自行实验。

程序

int a =600;        //此处需是环境基础亮度变量,请查看自己的亮度数值,填写到此处数值要略大于所测得的数据但小于灯光下的数据
void setup ()
{
  Serial.begin(115200);
  pinMode(13,OUTPUT);
}
void loop()
{
  int n = analogRead(A0);        //读取模拟口A0数值
  Serial.println(n);
  if (n>= a )                   //对光线强度进行判断,如果比我们的预设值小就关闭LED,否则就点亮
  {
    digitalWrite(13,HIGH);
  }
  else
  {
    digitalWrite(13,LOW);
  }
  delay(100);
}

结果

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

Lesson11.jpg

视频