我想找到一种基于硬件的解决方案,使 LED 从数字引脚上消失。即不是打开/关闭,而是慢慢淡入(500ms)进入/退出全亮度。我无法想象一个小电容器需要半秒钟才能放电……理想情况下,它会采用一个不错的 DIP16 封装,这样我就可以获得一系列褪色的 LED。我的梦想组件存在吗?
通过数字输出淡化 LED 开/关的硬件解决方案
通常的方法是使用PWM(脉冲宽度调制)
几乎任何现代微控制器都有一个可以为此目的设置的 PWM 外设。如果您不想使用微控制器,可以使用专用的 PWM IC 或定时器 IC,如无处不在的 555。
该过程很简单,脉冲频率设置得足够快,因此人眼无法检测到闪烁(通常高于 25Hz - 请参阅视觉持久性),开启时间与关闭时间从 100% 开启(全亮度)到 50% 开启50% 关闭(半亮度)到 0% 开启(关闭)
请注意,这可以很容易地用于阵列,您只需将 PWM 提供给所有 LED 驱动晶体管(确保基极电流足以用于双极,或使用 MOSFET . 设计选择取决于您驱动的 LED 类型、高/低电流)
检查“555 LED Fade”的网络,你应该得到很多结果。这是从这里随机挑选的一个(我没有检查过,所以我无法确认它是否正常工作):
或者,如果时序的绝对精度不是那么重要,一个简单的选择是使用 RC 滤波器和晶体管开关。这样,电容就不必提供 LED 电流,只需提供基极电流。像这样的东西:
模拟:
任何通用 NPN 都应该这样做,您可以调整 R 和 C 值以适应。
通过添加运算放大器,该选项可以轻松扩展到电流镜阵列。只要晶体管都是相同类型的(使用的电源为+5V),该电路就应该表现良好:
模拟:
如果您有足够高的电源电压,LED 可以像这样串联(这里使用的电源是 +10V):
模拟:
或者,如果您的电源电压较低,但想要串联驱动 LED,则有很多便宜的升压 IC,例如CAT4238。这部分可以使用 PWM 或变化的直流电压对 LED 进行调光(详细信息在数据表中)
您可以使用小电容 + 大电阻来产生良好的长充电特性 (t=RC),然后将其馈入晶体管的基极并从那里驱动 LED。
这允许更大的电阻,因为通过 LED 的电流不受电阻大小的限制,然后您可以使用小电容。
有必要对晶体管进行偏置,以便将其用作放大器(如果它达到饱和,那么 LED 将保持亮起)。
如果您通过数字引脚使用某种处理器的输出,则可以更改固件中的亮度。当您更改引脚的占空比时,眼睛就像一个过滤器,将较短的导通时间感知为亮度变暗。
1 - 使用 PWM 引脚输出而不是数字 GPIO 引脚。通过更改一些寄存器,您可以更改 LED 的开启时间,从而更改亮度。
2 - 使用定时器(轮询或中断)来更改引脚的状态。
3 - 使用外部移位寄存器 IC 锁存 n 个 LED 的开/关时间。虽然这需要更多的编程工作,但它是可扩展的,并且使用的 GPIO 引脚比 (1) 和 (2) 少。