一般,5mm LED正向电压为2V,工作电流20mA。MCU的I/O pin一般不适合直接点亮LED。以STM32F303xE为例,Datasheet给出如下电流特性:
- VDD输入电流总和最大160mA
- 单个VDD pin输入电流最大100mA
- 单个I/O pin最大电流25mA
- 所有I/O pin电流总和最大80mA
所以要通过驱动电路来控制LED。下图为使用NPN晶体管实现的LED驱动电路:
2N3904是一种易得的小信号三极管。c极电流Ic即LED工作电流
- LED分压电阻RL的阻值用压降除以Ic即可得到:RL = (5V - 2V) / 20mA = 150 ohm
- b极电流由电流增益hFE和Ic计算得到,hFE可查晶体管Datasheet得知:Ib = Ic / hFE = 20mA / 100 = .2mA
- 为确保b极电流达到饱和,将它乘以一个因子3,因此:Ib = .2mA x 3 = .6mA
- 于是b极电阻RB便可计算出来:RB = 3.3V / Ib = 3.3V / .6mA = 5.5 k
利用我手上现有的元件,RL=200 ohm,RB=10k,实测并计算得到如下数据:
- RL压降3V
- RB压降2.5V
- Ic = (5V - 3V) / 200 ohm = 15mA
- Ib = 2.5V / 10k = .25mA
- hFE = Ic / Ib = 15mA / .25mA = 60
即,I/O口驱动电流仅需.25mA。