LED闪烁——电路改造(NE555)

今天我做了第四题,其中第四小问,我在网上了解到有三种常用的使LED闪烁的方案,分别是MCU单片机使用一个i/o端口再写入程序实现控制、NE555定时器产生周期矩形脉冲型号。


NE555的工作原理

ne555有三种类型:双稳态、单稳态、无稳态

内部由比较电路、复位电路、输出电路、放电电路、分压电阻组成

核心在于复位电路,判断输入高电平还是低电平。

vcc接电源,RESET也要接高电位(只有接高电位才可以工作),触发输入接在离电容近的地方,清除输入接在离电源远的地方,DISC是放电接口


因为TINA中没有MCU且不能在tina中输入代码产生一个方波,所以我选择NE555来实现对LED闪烁的控制

工作原理:利用555定时器振荡电路来控制高低电平的输出,其中电阻R1、R2作用是减缓电容充电与放电的时间,电阻R3是一个保护电阻,防止LED被烧坏。首先电源给电容充电,当充到4V时,DISC接通,电容中的电量通过47k的电阻缓慢放电,当电容的正极<2v时输出高电平,LED电亮,此时DISC与负极断开,处于悬空状态,电容开始充电,当电容正极电压>4V时清除输入脚被触发,输出低电平,LED熄灭,DISC再次导通给电容放电,如此循环达到闪烁效果。

下图为输出波形

查询资料知:高电平宽度t1≈0.7(R1+R2)C

                      低电平宽度t2≈0.7R2C

周期T=0.7(R1+2R2)C

频率f=1.44/(R1+2R2)C

人眼感知频段380~750HZ

将f1=380HZ,f2=750HZ带入得C1=56.6nF,C2=28.7nF

### NE555 波形发生器电路设计及应用实例 #### 1. 基本原理 NE555定时器是一种广泛应用的集成电路,可以用于多种波形生成和定时功能。该芯片内部集成了比较器、触发器和其他必要的逻辑元件,能够方便地构建单稳态多谐振荡器、双稳态多谐振荡器以及无稳态多谐振荡器等不同类型的电路结构[^1]。 #### 2. 单稳态模式下的方波信号源 当配置成单稳态工作方式时,在输入端施加一个负脉冲后,输出会保持高电平一段时间t=1.1*R*C (其中R为外接电阻,C为外接电容),之后自动返回低电平状态直到再次受到触发。这种特性非常适合用来制作简单的延时控制装置或是作为其他复杂系统的组成部分之一[^2]。 ```c++ // Arduino模拟NE555单稳态模式 void setup() { pinMode(8, OUTPUT); } void loop() { digitalWrite(8, HIGH); // 输出高电平 delay(1000); // 维持时间由RC决定 digitalWrite(8, LOW); // 返回到低电平 } ``` #### 3. 多谐振荡器的应用——LED闪烁灯 通过设置合适的外部组件参数可以使两个互补的三极管轮流导通从而形成连续不断的矩形波输出。此频率f≈1/(ln3)*((Ra+2Rb)/C),占空比D=(Ra)/(Ra+2Rb)[^3]。利用这一特点可轻松实现诸如交通指示牌上的红绿交替变化效果或者是节日装饰品中的彩灯闪亮现象。 ```html <!-- HTML页面展示LED闪烁 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>LED Flasher</title> <style> #led { width:50px; height:50px; background:red;} </style> <script> setInterval(function(){ document.getElementById('led').classList.toggle('on'); }, 1000); </script> </head> <body> <div id="led"></div> </body> </html> ``` #### 4. 可调宽度PWM控制器 如果希望获得更精确的时间间隔调整能力,则可以通过改变充放电回路中串联接入的一个额外变阻器来达到目的;此时产生的周期T=0.7*(Ra+Rb)*C而高低电位持续期分别为Thigh=T*ln[(Vcc-Vth)/(Vcc-Vtl)] 和 Tlow=-T*ln[Vtl/Vth],这里Vth,Vtl分别代表阈值电压上下限[^4]。 ```python import RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BCM) pwm_pin = 18 GPIO.setup(pwm_pin, GPIO.OUT) def set_pwm(duty_cycle): pwm = GPIO.PWM(pwm_pin, frequency) pwm.start(duty_cycle) sleep(0.1) pwm.stop() frequency = 50 # Hz duty_cycles = range(0, 101, 10) for dc in duty_cycles: set_pwm(dc) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值