第十一课--光照报警器(自己DIY光敏三极管)/zh

来自Microduino Wikipedia
1183296105@qq.com讨论 | 贡献2015年1月19日 (一) 14:03的版本 原理图
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

目的

以前LED用来做指示,利用了其发光效应,今天我们实验其另外一个功能——光电效应,原理是LED发光二极管在受到强光照射时会产生微弱的电流,我们可用三极管将其放大。当检测有变化就用蜂鸣器提醒。

设备

Microduino-CoreSTM32/zh

Microduino-CoreSTM32小巧精悍,其内核来自于ARM公司具有突破性的Cortex-M3内核的32位闪存微控制器。该内核是专门设计于满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域的要求。

  • 其他硬件设备
  • 面包板跳线 一盒
  • 面包板 一块
  • LED发光二极管 一个
  • 10k、1K电阻 各一个
  • 蜂鸣器 一个
  • USB数据连接线 一根
  • 9013三极管 一个

原理图

三极管是一种电流控制电流的半导体器件,其作用是把微弱信号放大成辐值较大的电信号,也作无触点开关或者电压跟随等。三极管是在一块半导体基片上制作两个相距很近的PN结,两个PN结把整块半导体分成三部分,中间部分是基区,两侧部分是发射区和集电区,排列方式有PNP和NPN两种。

NPN型三极管由两块N型和一块P型半导体构成,如图所示:

P型半导体在中间,两块N型半导体在两侧,各半导体所引出的电极见图中所示。在P型和N型半导体的交界面形成两个PN结,形成三个区,中间部分成为基区,相连电极成为基极,用B表示,两侧分别是发射区和集电区,相连电极分别为发射极和集电极。在基极与集电极之间的PN结称为集电结,在基极与发射极之间的PN结称为发射结。

常用三极管的区别大家参考:http://wenku.baidu.com/view/0fc3bc5077232f60ddcca1ae.html

三极管的引脚识别大家参考:http://wenku.baidu.com/view/3e636bb469dc5022aaea0098.html

本实验用的是9013三极管(NPN型),写有型号数字一面的朝自己,从左往右数分别是E,B,C。如图:

本课采用电压跟随的接法,即触发信号接基极B,集电极C接VCC,发射极接GND,输出信号通过下拉电阻接到GND。若中间的基极B有微弱电流触发,三极管就如同开关被打开,电流由C-B-E,发射机电压几乎等于基极电压。起始状态光照强度不够时,光电效应产生的电流还不足以触发,所以三极管断开,直接通过下拉电阻将电压拉低。当光照强度增强,光电效应产生的电流使三极管触发导通,但电压很低,所以很难考虑光线的强弱,只要检测到有电压变化就说明有光照有作用,就让蜂鸣器发出声响。大家可以用光敏二极管做该实验,实现效果更明显。

程序

#include <libmaple.h>
int n;
void setup()
{ 
  pinMode(15,INPUT);  //模拟输入口
  pinMode(8,OUTPUT);   //蜂鸣器控制口
}
void loop()
{
  n=analogRead(15);        //读取模拟口数据    
  if(n>0)                  //有电压反应就运行以下程序,产生特定脉冲,让蜂鸣器响
  {    
    digitalWrite(8,HIGH);  //蜂鸣器开始报警
    SerialUSB.print("Alarming   ");  
    SerialUSB.println(n);  //显示当前读取的模拟值 
    delay(10);
  }
  else
  {
    SerialUSB.print("normal   "); 
    SerialUSB.println(n);   
    digitalWrite(8,LOW);   //关闭蜂鸣器
    delay(10);
  }
 delay(10);     //串口监视最好加延时,不然速率太快,容易死机。
}

调试

参考上图用导线连接完毕并确认无误。

把程序复制到Maple IDE中。

编译程序,选择正确的板卡与相应串口。

点击Upload,下载完毕后打开Maple IDE自带的串口监视器,观察结果。

结果

有强光照射LED后,模拟输入口读取的值不为大于0,此时蜂鸣器报警。当把强光一开LED后,模拟输入口读取的值变为0,此时蜂鸣器停止报警。

视频