此为基础小白文
功能演示
电路原理
原理图
根据NE555的6脚高电平触发,3脚输出低电平。2脚低电平触发,3脚输出高电平逻辑原理。通过光敏电阻的遇光低阻抗(短路),遇暗高阻抗特性(断路),赋予2pin和6pin连接点高低电平,并通过3脚输出高低电平,使各三极管饱和(导通)—截止(断开)实现灯光切换。3脚高电平触发亮灯的同时,给予Q2_NPN型三极管基积高电平,其瞬间饱和,集电极-发射极导通,触发开发板的计数接口,开发板开始计数。
本实验要从应用角度简单分析,某些原理不清楚的请恶补电路原理和模电知识。
说明
用到的元器件
1个5516光敏电阻;
1个NE555集成芯片;
1个25V_100UF电解电容;
1个10K电阻;
2个0.5K电阻;
2个5K电阻;
1个四位数码管;
1个arduino UNO开发板;
1个常开开关;
2个2v/20ma_LED灯;
2个BC547三极管;
主要元器件对电路作用说明
NE555集成芯片
NE555始于1971年,是十分经典的一款集成电路芯片,一直以体积小、重量轻、稳定可靠,计时精准(微秒到小时级)、操作电源范围大(占空比可调),输出端的供给电流能力强(灌入&提供最高200ma)著称。
引脚分布
结构框图
芯片内部结构由三个区,前级由5K电阻进行2/3VCC和1/3VCC处分压;中间由两个电压比较器构成,其中6pin>2/3VCC,A比较器输出R=0,<2/3VCC输出R=1,2pin>1/3VCC,B比较器输出S=1,<1/3VCC输出S=0;后极RS触发器根据两个比较器输出进行逻辑判断(如表)
R | S | 3pin_OUT | - |
---|---|---|---|
0 | 1 | 0 | 复位 |
1 | 0 | 1 | 置1 |
1 | 1 | 保持 | |
0 | 0 | 禁止 |
NE555逻辑表
根据手册可以了解,其4pin(Reset)需要接高电平芯片才能工作,3pin输出只有四种状态:不工作、高电平、低电平和保持原状态,7pin放电脚连接一个NPN管,3pin输出高电平,NPN管导通,放电脚直连地脚,开始放电,以上是该芯片基本工作原理。
光敏电阻
当光敏电阻处于光照下时,其亮电阻值标称5-10K,实际能低到1K以内相当于导通12V电源给予6号脚高电平。当处于无光照时,其暗电阻值标称0.5MΩ,实际能达到1MΩ以上,呈高阻抗相当于断路,此时12V电源无法给予6号脚高电平,2号脚处于低电平被触发。
BC547三极管
数据手册
我们来看电路用到的参数:
实验电路负载电压12v,负载电流1.2w/12v=0.1a,其Vceo、Vcbo不小于12V,Ic不小于0.1a。本实验只用到三极管饱和-截止功能,其特征频率、放大倍数数据可以忽略。
BC547管脚
数码管
数码管管脚
四位数码管型号:MSQC6412C_3749K。
具体使用可以看下我上一篇文章:https://blog.youkuaiyun.com/2301_78342510/article/details/131018652
电路接线分析
原理图
下面我们简单分析下线路接线和几个元器件如何选用:
根据手册我们知道NE555工作,需要将4pin_复位接高电平,也就是和8pin_供电脚一起接12v,2pin直连6pin并通过5516光敏电阻接12v,光敏电阻控制2pin和6pin电位,其呈高阻抗时低电平触发2pin,则3pin输出1时2v_led红和12v_led亮,呈低阻抗时高电平触发6pin,则3pin输出0时2v_led绿亮。
2pin连接10K下拉电阻到1pin,1pin要接地,下拉电阻钳位2pin低电平触发,其阻值一般在10-100K之间选用。
2v_led绿是3pin输出0时点亮,其限流电阻阻值计算R1=(12-2V)/0.025=0.4K,这里我们选0.5K
2v_led红是3pin输出1时点亮,R2和R1一样。
Q1、Q23pin输出1时工作,其基积电阻R3和R2计算:Ic=UC/RC=12/(12²/1.2)=100ma,ib=ic/Hfe(放大倍数最低110)=1ma,R2=(VCC-VBE)/IB=(10.5(3pin高电平测出10.5v)-0.7)/1=9.8K,我们选10K,R3=R2。
去耦电容并联在供电输入两端,提供滤波和储能作用,选择100uf大容量,滤除低频信号。
程序部分
一、全局变量定义
定义计算触发引脚key,将0接口赋予key ;//该引脚接低电平则触发一次
buttonState为读取key是否为0(低电平);
beforeState判断key是否为1(高电平);
value数码管段选变量,初始值为0;
button是中断引脚,低电平触发;
数码管段选采用数组形式,数字从0至9定义。
如果不了解数组的我上一篇文章有讲
arduino开发板引脚说明
实验的开发板用到的数字引脚2~13,其中2号引脚为中断引脚:
说明 | 引脚 |
---|---|
中断触发 | 2、3 |
数字输入输出 | 2、3、4、5、6、7、8、9、10、11、12、13 |
串口通讯 | 0、1 |
int key = 0;//计数引脚定义
int buttonState;
int beforeState = 1;
int value = 0;
const byte button = 2;//中断接口
int table[10] [7] =
{
//数字显示数组 从左到右a b c d e f g
{
0, 0, 0, 0, 0, 0, 1, },//数字0
{
1, 0, 0, 1