“第二十七课--Microduino与三级管的灵活应用/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
设备
 
(未显示1个用户的14个中间版本)
第6行: 第6行:
 
本教程介绍了三极管的基础知识,通过Microduino-Core的IO口驱动不同电压规格继电器的相关内容引入,加深我们对Microduino IO口的理解,为实际应用三极管电路打下基础。同时该教程也对zigbee模块CC2530的IO口进行了简单介绍。
 
本教程介绍了三极管的基础知识,通过Microduino-Core的IO口驱动不同电压规格继电器的相关内容引入,加深我们对Microduino IO口的理解,为实际应用三极管电路打下基础。同时该教程也对zigbee模块CC2530的IO口进行了简单介绍。
 
==设备==
 
==设备==
*'''[[Microduino-Core]]'''
+
*'''[[Microduino-Core/zh]]'''
 
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板,是一个开源的、与 Arduino UNO 兼容的控制器模块。
 
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板,是一个开源的、与 Arduino UNO 兼容的控制器模块。
  
*'''[[Microduino-USBTTL]]'''
+
*'''[[Microduino-USBTTL/zh]]'''
 
下载程序模块,可直接与 Microduino-Core 或者Microduino-Core+ 相连,让他们与计算机通讯。它的下载接口用的是MicUSB,这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的,方便实用。
 
下载程序模块,可直接与 Microduino-Core 或者Microduino-Core+ 相连,让他们与计算机通讯。它的下载接口用的是MicUSB,这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的,方便实用。
  
第49行: 第49行:
  
 
==实验原理图==
 
==实验原理图==
[[File: 5V npn.jpg|600px|center|thumb]]
+
[[File: 5V npn.jpg|600px|center|thumb]]
 
[[File: realConnTransistor.jpg|600px|center|thumb]]
 
[[File: realConnTransistor.jpg|600px|center|thumb]]
如果用Microduino驱动一个5V的继电器,应该不麻烦。选择Microduino的D0脚,接一个1K的电阻到8050的基级,按上图连接硬件即可。
+
如果用Microduino驱动一个5V的继电器,应该不麻烦。选择Microduino的D2脚,接一个1K的电阻到8050的基级,按上图连接硬件即可。
  
 
'''为什么选择1K的电阻呢?'''
 
'''为什么选择1K的电阻呢?'''
因为对于NPN型的硅三极管来说,BE之间的导通压降为0.7V左右,当D0口输出低电平时,BE结没有电流流过,三极管处于截止状态,继电器自然而然的没有吸合。当D0输出高电平时,D0口的输出电压
+
因为对于NPN型的硅三极管来说,BE之间的导通压降为0.7V左右,当D2口输出低电平时,BE结没有电流流过,三极管处于截止状态,继电器自然而然的没有吸合。当D2输出高电平时,D2口的输出电压接近于Microduino的电源电压5V,这5V的电压减去0.7V的BE结压降等于4.3V左右,那么8050的基级电流Ib=4.3V/1K=4.3mA,又因为8050的集电极电流Ic=β*Ib,普通的小功率三极管例如8050,8550,9014,9015,这些三级管的β值大概有100左右,这里我们保守估计,选择β=50计算,Ic=β*Ib=50*4.3mA=215mA。实测笔者手头5V继电器的线圈电阻为72欧姆,(12V继电器线圈的电阻实测为400欧姆)。那么5V继电器线圈两端的电压等于Ic*72=15.48V,该值已大于电源电压,所以可以反推出这时的三极管已经进入饱和状态。如果把这个1K的电阻换为470欧姆或是2K,对于驱动该继电器或是一些小型的蜂鸣器来说,基本没有什么区别。如果不接这个1K的限流电阻,那么8050的BE结(该BE结可以理解为一个PN结的二极管,二极管的伏安特性曲线在电压高于0.7V时电流会急剧上升)电流会很高,这可能会导致8050的烧毁或Microduino的IO口损坏。再退一步,即使什么也没损坏,那么Microduino输出高电平,而读取该点电压却读到低电平,属于设计缺陷。
接近于Mircroduino的电源电压5V,这5V的电压减去0.7V的BE结压降等于4.3V左右,那么8050的基级电流Ib=4.3V/1K=4.3mA,又因为8050的集电极电流Ic=β*Ib,普通的小功率三极管例如8050,8550,9014,9015,这些三级管的β值大概有100左右,这里我们保守估计,选择β=50计算,Ic=β*Ib=50*4.3mA=215mA。实测笔者手头5V继电器的线圈电阻为72欧姆,(12V继电器线圈的电阻实测为400欧姆)。那么5V继电器线圈两端的电压等于Ic*72=15.48V,该值已大于电源电压,所以可以反推出这时的三极管已经进入饱和状态。如果把这个1K的电阻换为470欧姆或是2K,对于驱动该继电器或是一些小型的蜂鸣器来说,基本没有什么区别。如果不接这个1K的限流电阻,那么8050的BE结(该BE结可以理解为一个PN结的二极管,二极管的伏安特性曲线在电压高于0.7V时电流会急剧上升)电流会很高,这可能会导致8050的烧毁或Microduino的IO口损坏。再退一步,即使什么也没损坏,那么Microduino输出高电平,而读取该点电压却读到低电平,属于设计缺陷。
 
  
 
'''1N4148二级管有什么作用呢?'''
 
'''1N4148二级管有什么作用呢?'''
当三极管由导通到截止,继电器线圈会突然掉电,此时线圈中存储的磁场能无处释放,会产生一个很高的反压,该反压为上负下正,这时的线圈我们可以理解为一个电池,电池内部的电流方向是从负极流向正极。恰好,
+
当三极管由导通到截止,继电器线圈会突然掉电,此时线圈中存储的磁场能无处释放,会产生一个很高的反压(自感电动势),该反压为上负下正,这时的线圈我们可以理解为一个电池,电池内部的电流方向是从负极流向正极。恰好,
 
该二极管提供了这么一个通道,保护了三级管的集电极不再承受该反压值。
 
该二极管提供了这么一个通道,保护了三级管的集电极不再承受该反压值。
  
 
'''如果不接三极管,直接接继电器是否可行?'''   
 
'''如果不接三极管,直接接继电器是否可行?'''   
不行。因为I=V/R=5/72=69.4mA, 该电流值已超过arduino官网提供IO口输出限流,参考:[[http://arduino.cc/en/Main/ArduinoBoardUno]]。即使没有超过官网提供的电流值,加入三极管放大这一隔离依旧是一个很好设计方案,因为刚才提到的二极管并不是一个理想器件,当线圈关断时的自感电动势可能会对Microduino的IO口产生影响。
+
不行。因为I=V/R=5/72=69.4mA, 该电流值已超过arduino官网提供IO口输出限流,参考:http://arduino.cc/en/Main/ArduinoBoardUno 即使没有超过官网提供的电流值,加入三极管放大这一隔离依旧是一个很好设计方案,因为刚才提到的二极管并不是一个理想器件,当线圈关断时的自感电动势可能会对Microduino的IO口产生影响。
  
 
'''驱动5V的继电器,一个8550是否可以搞定?'''
 
'''驱动5V的继电器,一个8550是否可以搞定?'''
第86行: 第85行:
 
参考:[[File: 328IOstatus.jpg|600px|center|thumb]]
 
参考:[[File: 328IOstatus.jpg|600px|center|thumb]]
 
       [[File: 2530resetStatus.jpg|600px|center|thumb]]
 
       [[File: 2530resetStatus.jpg|600px|center|thumb]]
由对比可知,Microduino的IO口复位期间以及复位后均处于高阻状态,上拉电阻未启用。CC2530在复位期间以及复位后的初始状态均为带上拉的输入。尽管上拉是若上拉,但是此上拉电阻拉出电流经三极管放大后依旧会使继电器接通,CC2530的编程只能改变复位后IO口的状态,复位期间的状态则完全由硬件决定。因此采用该电路CC2530模块可以在复位期间精确的控制12V继电器的状态。
+
由对比可知,Microduino的IO口复位期间以及复位后均处于高阻状态,上拉电阻未启用。CC2530在复位期间以及复位后的初始状态均为带上拉的输入。尽管上拉是弱上拉,但是此上拉电阻拉出电流经三极管放大后依旧会使继电器接通(如果直接接一个NPN管),CC2530的编程只能改变复位后IO口的状态,复位期间的状态则完全由硬件决定。因此采用该电路CC2530模块可以在复位期间精确的控制12V继电器的状态。(备注:2530是3.3V供电。)                     
328文档下载:'''[[File:328.pdf]]'''
+
 
 +
328文档下载链接:http://www.atmel.com/Images/doc8161.pdf
 +
 
 
2530文档下载:'''[[File:2530.pdf]]'''
 
2530文档下载:'''[[File:2530.pdf]]'''
  

2014年10月29日 (三) 03:37的最新版本

Microduino与三级管的灵活应用

目的

本教程介绍了三极管的基础知识,通过Microduino-Core的IO口驱动不同电压规格继电器的相关内容引入,加深我们对Microduino IO口的理解,为实际应用三极管电路打下基础。同时该教程也对zigbee模块CC2530的IO口进行了简单介绍。

设备

Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板,是一个开源的、与 Arduino UNO 兼容的控制器模块。

下载程序模块,可直接与 Microduino-Core 或者Microduino-Core+ 相连,让他们与计算机通讯。它的下载接口用的是MicUSB,这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的,方便实用。

  • 其他硬件设备
相关硬件 数量 功能
8050NPN三极管 1个 驱动继电器。
8550PNP三极管 1个 驱动继电器。
1N4148二极管 1个 与继电器线圈并联在一起,吸收反峰电压。
5V继电器 1个 实验测试。
12V继电器 1个 实验测试。
1K电阻 若干 实验测试。
可调直流电源 1个 通过调节旋钮,可以改变直流输出电压。本示例用于外接12V电源。
USB数据连接线 1条 连通Microduino模块与计算机。
面包板 1块 各个元器件汇聚于此。
面包板跳线 1盒 电气连接线。

二极管

二极管的神奇在于单向导电性,这是电阻电容电感这些器件所没有的特性。利用二极管的单向导电性能,可以把它用于整流,检波等电路。用数字万用表的二极管档(会滴滴响的通断测量档位)测量二极管时,如果表上有示数(不为1),那么红表笔接的是二极管正极,黑表笔接的是负极,反之则示数不变化(为1),这明显就是单向导电嘛。实际应用电路二极管损坏时,会有断路与短路两种情况。断路时无论怎样调换红黑表笔,万用表上示数始终为1。测量已短路的二极管时万用表的蜂鸣器会滴滴响,显示值与红黑表笔直接接在一起无区别,二极管损坏会有短路情况的出现与其半导体材质有关系,我们很难见到电阻损坏后阻值为0的情况。

三极管

三极管,见名知义,三个引脚。三个引脚分别对应E(发射极),B(基级),C(集电极)。三极管分为NPN与PNP两种类型,该示例用到的8050属于NPN型,8550属于PNP型,见下图。

三极管属于电流控制型器件,意思是说当基级流过一个相对小电流时(基级电流Ib),集电极会有一个较大的电流流过(集电极电流Ic),Ic与Ib的比值我们称为三极管的电流放大倍数,一般用β表示。用数字万用表测量三极管时,首先可以区分出该三级管是NPN型还是PNP型,同时三极管的基级也确定了。方法如下,红表笔连到三极管某一引脚不动,然后黑表笔分别去触碰另外的两个引脚,然后再把红表笔移动一个引脚,共计测量六次,如果黑表笔分别触碰的两个引脚均有示数(示数不为1),则该管为NPN型管,红表笔连接的那一引脚为基级。该方法是假设该管为NPN型管,假设红表笔所接为三极管的基级。如果假设该管为PNP型,则是黑表笔不动,用红表笔分别触碰另外两个引脚,观察示数,如果红表笔分别触碰的两个引脚均有示数(示数不为1),则该管为PNP型,黑表笔所接为基级。实际测量时需灵活测试,得到所需判断即可。剩下的工作就是找到集电极与发射极。对于NPN型三极管,用红表笔连接非基级的一个引脚,黑表笔连接非基级的另一引脚。然后用手指(网上也有写往手指上沾点唾沫,加唾沫的原理是让手指等效电阻小一些)当电阻,手指连接红表笔与基级,如果万用表有示数(不为1),则红表笔连接的是集电极。手指的作用是引入了基级电流,让CE之间的等效阻值减小,从而万用表可以显示出不为1的示数。对于PNP型的三极管来说,原理是一样的,还需要用手指的等效电阻来引入基级电流,只是PNP型的管子有示数时红表笔接的是发射极。

继电器

继电器在Microduino控制继电器开关已做过介绍。该示例是上文的一种扩展,还用到了12V的继电器。电磁继电器(该示例中的继电器均为电磁式)分为两部分,一是线圈,一是触点。控制线圈的电压信号可以与触点接通或断开的电路没有电气上的连接,这就实现了隔离。该示例的继电器可以通断250V交流电7A的负载,继电器的外壳丝印中已给出。该示例用到的5V(左)与12V继电器:

实验原理图

如果用Microduino驱动一个5V的继电器,应该不麻烦。选择Microduino的D2脚,接一个1K的电阻到8050的基级,按上图连接硬件即可。

为什么选择1K的电阻呢? 因为对于NPN型的硅三极管来说,BE之间的导通压降为0.7V左右,当D2口输出低电平时,BE结没有电流流过,三极管处于截止状态,继电器自然而然的没有吸合。当D2输出高电平时,D2口的输出电压接近于Microduino的电源电压5V,这5V的电压减去0.7V的BE结压降等于4.3V左右,那么8050的基级电流Ib=4.3V/1K=4.3mA,又因为8050的集电极电流Ic=β*Ib,普通的小功率三极管例如8050,8550,9014,9015,这些三级管的β值大概有100左右,这里我们保守估计,选择β=50计算,Ic=β*Ib=50*4.3mA=215mA。实测笔者手头5V继电器的线圈电阻为72欧姆,(12V继电器线圈的电阻实测为400欧姆)。那么5V继电器线圈两端的电压等于Ic*72=15.48V,该值已大于电源电压,所以可以反推出这时的三极管已经进入饱和状态。如果把这个1K的电阻换为470欧姆或是2K,对于驱动该继电器或是一些小型的蜂鸣器来说,基本没有什么区别。如果不接这个1K的限流电阻,那么8050的BE结(该BE结可以理解为一个PN结的二极管,二极管的伏安特性曲线在电压高于0.7V时电流会急剧上升)电流会很高,这可能会导致8050的烧毁或Microduino的IO口损坏。再退一步,即使什么也没损坏,那么Microduino输出高电平,而读取该点电压却读到低电平,属于设计缺陷。

1N4148二级管有什么作用呢? 当三极管由导通到截止,继电器线圈会突然掉电,此时线圈中存储的磁场能无处释放,会产生一个很高的反压(自感电动势),该反压为上负下正,这时的线圈我们可以理解为一个电池,电池内部的电流方向是从负极流向正极。恰好, 该二极管提供了这么一个通道,保护了三级管的集电极不再承受该反压值。

如果不接三极管,直接接继电器是否可行? 不行。因为I=V/R=5/72=69.4mA, 该电流值已超过arduino官网提供IO口输出限流,参考:http://arduino.cc/en/Main/ArduinoBoardUno 即使没有超过官网提供的电流值,加入三极管放大这一隔离依旧是一个很好设计方案,因为刚才提到的二极管并不是一个理想器件,当线圈关断时的自感电动势可能会对Microduino的IO口产生影响。

驱动5V的继电器,一个8550是否可以搞定? 可以。更改8050的VCC与GND,便可以接出PNP型的电路,控制逻辑与NPN型三极管相反。Arduino IDE编程时需注意。如下图

如果把该5V继电器改为12V的继电器,一个8050是否可以搞定? 可以,与接5V继电器无区别。如下图。


驱动12V的继电器,一个8550是否可以实现? 不行。因为无论PNP型的管子怎么接,Microduino的IO口都控制不了继电器的关断。如下图。

按照该图连接硬件,并不能控制继电器。


驱动12V的继电器,需用到PNP型的三极管,如何实现? 需要两个三极管。如下图。

如果用Microduino驱动12V的继电器,加入此PNP三极管确实属于画蛇添足。但是当我们在应用Zigbee模块CC2530驱动12V继电器时,该电路便显示出了合理性。单片机上电瞬间到PC指针可以正常运转需要一个时间。参考:

再对比一下Microduino IO口与CC2530的IO口复位期间以及复位后的初始状态。

参考:

由对比可知,Microduino的IO口复位期间以及复位后均处于高阻状态,上拉电阻未启用。CC2530在复位期间以及复位后的初始状态均为带上拉的输入。尽管上拉是弱上拉,但是此上拉电阻拉出电流经三极管放大后依旧会使继电器接通(如果直接接一个NPN管),CC2530的编程只能改变复位后IO口的状态,复位期间的状态则完全由硬件决定。因此采用该电路CC2530模块可以在复位期间精确的控制12V继电器的状态。(备注:2530是3.3V供电。)

328文档下载链接:http://www.atmel.com/Images/doc8161.pdf

2530文档下载:文件:2530.pdf

程序

void setup()
 {
   pinMode(2,OUTPUT);
   digitalWrite(2,LOW);
   delay(6000);
 }
 void loop()
 {
   digitalWrite(2,HIGH);
   delay(2000);
   digitalWrite(2,LOW);
   delay(2000);
 }

调试

  • 按照原理图搭建硬件电路,注意二极管的方向,以及三级管的EBC引脚序列。
  • 确认硬件无误后,接通Microduino。打开编译器,把程序复制到Arduino IDE中。
  • 编译程序,选择正确的板卡与相应串口。
  • 点击Upload,下载后可根据继电器吸合的声音判断我们的电路设计是否合理。

结果

用Microduino控制5V继电器,8050或8550任何一个三极管均可实现功能。如果需要控制12V继电器,如果采用一个8050可以实现,如果采用8550,则还需加入一级三级管电路。对已CC2530模块来说,如果复位期间也要精准控制IO口的输出状态,需加入PNP型三级管。

视频