LED驱动与输出电路技术解析
1. LED基础参数
LED的正向电压降(Vf)因颜色而异,具体如下:
| LED颜色 | 正向电压降(Vf) |
| ---- | ---- |
| 现代红色 | 1.5 - 2.2V |
| 绿色 | 2 - 3V |
| 蓝色 | 2.5 - 3.5V或更高 |
| 黄色 | 1.5 - 2.5V |
| 白色 | 3.5 - 4V |
LED有一个相当明显的截止电压,通常比Vf低零点几伏,低于此电压LED完全不发光。5mm LED的最大连续正向电流范围在15 - 70mA,超过此值可能会损坏LED。5mm LED的峰值电流通常是连续额定电流的三到五倍,更大尺寸的LED峰值电流可能更高。
LED过热时容易损坏,高功率LED(1 - 3W及以上)通常需要配备散热片。如果将LED用作简单的状态指示器,可串联一个200 - 300Ω的电阻。但如果使用PWM调光或进行多路复用/Charlieplexing,则需要更精细的设计。
2. 多路复用(Multiplexing)
多路复用是驱动LED的常见方式,尤其适用于点阵显示器或多位七段/数字显示器。其原理是快速开关光源,使人眼感觉光源持续发光。
2.1 双位七段显示器示例
以下是在双位七段显示器上显示两个不同数字的程序示例:
repeat {
Set Outputs 3 to 9 as required for first digit;
Turn Output 1 On;
Delay;
Turn Output 1 Off;
Set Outputs 3 to 9 as required for second digit;
Turn Output 2 On;
Delay;
Turn Output 2 Off;
}
如果快速重复此过程,人眼会感觉两个显示器都在持续显示所需数字。此原理可扩展到更多位数,如时钟的四位或六位显示。
2.2 多路复用的问题与解决方法
多路复用会使LED看起来更暗,因为LED并非一直点亮。例如,双位显示的占空比为50%,四位显示为25%。为解决此问题,可增加发送到每个显示器的电流,但要注意不能超过显示器的峰值电流额定值。对于典型的七段显示器,每段电流增加到50mA可能是可以接受的,更高电流则需查看数据手册并进行计算。
驱动LED以峰值电流运行时,要确保软件不会意外让LED长时间点亮,否则可能损坏设备。此外,多路复用需要ATMega定期更新LED或显示器的状态,这会减少处理器用于其他任务的时间,可考虑使用定期中断进行显示更新。
2.3 多路复用流程图
graph TD;
A[设置第一位数字输出] --> B[打开输出1];
B --> C[延迟];
C --> D[关闭输出1];
D --> E[设置第二位数字输出];
E --> F[打开输出2];
F --> G[延迟];
G --> H[关闭输出2];
H --> A;
3. Charlieplexing
Charlieplexing技术可在微控制器引脚有限的情况下,最大化可控制的LED或开关数量。现代微控制器的引脚可设置为高、低或输入(Hi - Z)三种状态。
3.1 基本原理
两个引脚驱动两个LED的示例中,要点亮LED1,可将Output1设为高,Output2设为低;点亮LED2则相反。关闭LED可将引脚设为输入或使输出状态相同。
3.2 三位引脚驱动六个LED示例
通过Arduino引脚的不同状态设置,可以驱动六个LED。例如,点亮LED1需将DIO1设为输出且为高,DIO2设为输出且为低,DIO3设为输入。
3.3 多LED点亮问题
如果需要同时点亮多个LED,可采用多路复用方式,依次快速切换到每个LED。避免跳过熄灭的LED,否则点亮LED的亮度会随同时点亮的LED数量变化。若同时点亮的LED数量恒定,则可跳过熄灭的LED。此外,Charlieplexing中限流电阻的值是正常情况下的一半。
3.4 可驱动LED数量公式
使用n个引脚可驱动的LED数量为n² - n。例如,8个DIO引脚可驱动56个LED,12个DIO引脚可驱动132个LED。
4. 输出电路与隔离
微控制器为外部设备提供电流的能力有限,当内部驱动能力不足时,需要额外的电路来正确安全地切换负载。选择适合应用的设备时,需要考虑四个参数:电流、电压、开关频率和隔离。
4.1 参数说明
- 电流和电压 :两者相互关联,高电压通常指超过24V,高电流指超过几百mA。
- 开关频率 :因应用而异。
- 隔离 :指电路中“低”和“高”功率部分的电气和/或物理分离,在涉及高电压或市电切换时,隔离是必要的,高电流应用中也可避免损坏敏感电路。
4.2 开关类型
4.2.1 半导体开关
包括晶体管、光耦合器和固态继电器(SSRs)。固态设备通常体积小、功耗低、开关速度快,但部分设备使用较复杂,且只有特定类型能提供输入输出之间的电气隔离。
4.2.2 机械开关
主要是各种继电器。机械开关能提供电气隔离,设计简单易懂,但需要较高的驱动电流,开关频率有限,持续运行的电路中,开关频率达到1Hz或更高时,机械继电器的性能可能不佳。
4.3 开关类型对比表格
| 开关类型 | 优点 | 缺点 |
|---|---|---|
| 半导体开关 | 体积小、功耗低、开关速度快 | 部分使用复杂,部分无电气隔离 |
| 机械开关 | 提供电气隔离,设计简单 | 需要高驱动电流,开关频率有限 |
5. 具体开关设备
5.1 舌簧继电器(Reed Relays)
舌簧继电器由线圈内的开关元件(“簧片”)组成。当电流通过通电线圈时,产生的磁场会闭合或(在某些情况下)打开触点。如果线圈断电时开关是打开的,该继电器称为“常开”(NO);如果开关是闭合的,则称为“常闭”(NC),有些舌簧继电器同时具备NC和NO触点。
舌簧继电器的结构提供了高度的电气隔离,但由于簧片内的触点较小,其处理电流和电压的能力有限。不过,小触点也有好处,只需很小的电流(通常低于15mA)就能使线圈通电并保持触点闭合。舌簧继电器的线圈电压通常与5V数字电路兼容,因此在很多情况下可以由Arduino直接驱动。
5.1.1 舌簧继电器驱动电路及注意事项
在驱动带有线圈或灯丝的设备(如继电器或白炽灯)时,要注意这类设备有峰值和稳态电流需求。峰值电流是在磁场稳定或灯丝加热时产生的,之后会降至稳态值。所选的驱动电路必须能够应对这种电流瞬变。
当切断带有线圈设备的电流时,磁场会坍塌并产生反向或“反电动势”(Back - EMF)电压。根据设备类型和电路配置,这个电压可能达到几十伏,且极性与供电电路相反。如果驱动电路没有适当保护,这个电压瞬变可能会损坏电路。因此,在舌簧继电器的线圈两端会连接一个二极管,用于吸收或“抑制”这种反向瞬变。舌簧继电器由Arduino输出引脚驱动的示意图如下:
graph LR;
A[Arduino输出引脚] --> B[舌簧继电器线圈];
B --> C[接地];
D[二极管] -->|并联| B;
5.2 继电器(Relays)
继电器是舌簧继电器的一种变体,主要区别在于机械结构。通常,线圈(或螺线管)会使杠杆移动,从而打开和/或关闭继电器触点。继电器的电压和电流额定值通常较高,但开关速度稍慢,线圈电流也更大。其优点是在触点配置方面具有更大的灵活性,常见的有多极(独立开关)和转换(NC + NO)配置。
由于传统线圈继电器的电流需求较高,一般不能直接由Arduino驱动。如果只使用一两个继电器,可以使用简单的双极晶体管来解决;如果使用四个或更多继电器,可考虑使用专门的晶体管阵列或驱动芯片。
5.2.2 继电器驱动电路
使用传统双极晶体管为继电器提供额外的电流处理能力,从Arduino驱动继电器的电路中,和舌簧继电器电路一样,会使用一个反电动势二极管。其示意图如下:
graph LR;
A[Arduino输出引脚] --> B[双极晶体管基极];
B --> C[双极晶体管集电极];
C --> D[继电器线圈];
D --> E[接地];
F[二极管] -->|并联| D;
B -->|发射极| E;
同时,在设计高可靠性应用时,要注意机械触点(如舌簧继电器、传统继电器和开关中使用的触点)的一个小问题。除了特殊的“湿”触点外,为确保触点不被氧化和腐蚀,导通时至少要有10mA左右的电流流过触点。如果只是进行简单的实验,可以忽略这个问题。
5.3 双极晶体管(Bipolar Transistors)
双极晶体管是我们考虑的第一种半导体输出设备,有NPN和PNP两种基本类型。N和P表示用于制造设备的半导体材料,在实际应用中,这决定了设备的使用方式。
在数字应用中,双极晶体管可被视为电子开关,使低功率微控制器能够控制更高的电流。通过基极(图中标记为B)的小电流可以控制从集电极到发射极(图中分别标记为C和E)的大电流。如果流入基极的电流足够高,晶体管会“饱和”,即完全导通,此时电阻和功耗都很小。
5.3.1 双极晶体管在数字和模拟电路中的应用
在数字电路中,双极晶体管作为开关使用。而在模拟电路中,晶体管通常在非饱和区域工作,此时集电极到发射极的电流与基极电流成比例变化,这是几乎所有模拟电路(如放大器、振荡器等)的基础。当晶体管以这种方式工作时,会根据其导通电阻产生功率损耗(以热量形式),设计良好的模拟电路会使用散热片来解决这个问题。
5.3.2 双极晶体管的性能特点
常见的双极晶体管能够切换几百毫安到几安培的电流,具体取决于所选类型。如果使用合适的设备和电路配置,开关频率可以轻松达到几兆赫兹甚至更高。在实际应用中,对于高达一两安培的电流切换,双极晶体管是一个不错且简单的选择。对于更高的电流,可考虑使用场效应晶体管(FET)。
5.4 晶体管阵列(Transistor Arrays)
晶体管阵列是将多个晶体管封装在同一器件中的设备。其主要优点是封装密度高且使用方便,一个18引脚的双列直插式封装(DIP)器件可以提供七个或八个配置为高端或低端开关的晶体管。
5.4.1 常见的晶体管阵列型号
ULN2003是最知名的型号之一,它提供八个晶体管,每个晶体管在低端(或共发射极)配置下可以切换约500mA的电流。UDN2981相对不太常见,它提供八个高端开关,每个输出可以提供约500mA的电流。使用这两种器件时,要查阅数据手册,确保在其限制范围内操作,特别是接近每个引脚的最大电流时,因为可能会超出整个器件的限制。
5.5 场效应晶体管(FETs)
场效应晶体管(FET)和双极晶体管一样,也是电子开关。其内部结构的不同主要体现在半导体材料的布局上,特别是栅极,它在功能上类似于双极晶体管的基极。FET的另外两个引脚,漏极和源极,大致对应于双极晶体管的集电极和发射极。
5.5.1 MOSFET的特点
金属氧化物半导体场效应晶体管(MOSFET)是最常见的FET形式。MOSFET的内部结构使得栅极端子相对于源极和漏极引脚呈现出非常高的电阻(或阻抗),实际上它就像一个电容器。这意味着该器件只需要很小的电流就能完全导通。完全导通时,MOSFET的导通电阻非常低,比双极晶体管还要低,因此非常适合高电流应用。
5.5.2 FET设计考虑因素
设计使用FET时,要确保它能够快速导通或关断,因为它在中间区域的处理能力有限,并且要相对于电源电压施加足够的栅极电压。
5.6 各类开关设备性能对比表格
| 设备类型 | 电流处理能力 | 开关速度 | 隔离能力 | 驱动难度 | 适用场景 |
|---|---|---|---|---|---|
| 舌簧继电器 | 有限 | 适中 | 高 | 低(部分可直驱) | 低电流、需要电气隔离场景 |
| 继电器 | 高 | 稍慢 | 高 | 中(需额外电路) | 高电压、高电流场景 |
| 双极晶体管 | 几百毫安 - 几安培 | 高 | 无 | 低 | 低 - 中电流数字及部分模拟电路 |
| 晶体管阵列 | 约500mA/个 | 高 | 无 | 低 | 多通道低 - 中电流控制 |
| FET(MOSFET) | 高 | 高 | 无 | 中(需合适栅极电压) | 高电流应用 |
综上所述,在设计涉及LED驱动和输出电路时,需要根据实际需求综合考虑各种因素,选择合适的驱动方式和开关设备,以确保电路的性能、可靠性和安全性。
超级会员免费看
9329

被折叠的 条评论
为什么被折叠?



