我有一个使用 BC548 晶体管将 5V RS-232 极性信号(逻辑 0 = +5V,逻辑 1 = -5V)转换为 3.3V TTL 极性(逻辑 1 = 3.3V,逻辑 0 = 0V)的电路。
它形成一个非门,因此当 RS-232 输出为高电平时,它将输出拉低,反之亦然。
作为参考,RS-232 设备(GPS 接收器)以 9600bps 的速度传输并连接到 Raspberry Pi 的 UART。
我的电路如下所示:
然而,由于 RS-232 输入的负电压,这种配置会导致晶体管在基极-发射极结上看到 -5V 的电压。BC548 的最大 Vbe 为 -6V,但我想通过最小化基极-发射极结上的任何负电压来保护晶体管。
经过一番搜索,我在 Raspberry Pi 论坛上发现了一篇帖子,其中建议使用以下电路来保护晶体管免受负电压的影响:
我已经构建了电路,它似乎是成功的:最低 Vbe 电压约为 -0.5V。我的数字万用表每秒只更新大约 5 次,我没有示波器可以更清楚地看到事物,但它之前显示的最低 Vbe 电压约为 -5V。
我的问题是这样的:
为什么二极管放在它所在的位置?如果我解释正确,这意味着最低 Vbe 将与二极管的正向压降相同,并且将有电流从接地通过电阻器 R1 流入负电压 RS-232 引脚。将二极管放置在 RS-232 输入和 R1 之间或 R1 和晶体管 Q1 之间是否更有意义,以阻止任何电流流入引脚?
原理图上说要使用我用过的 1N4148 高速二极管。使用 1N4001 而不是 1N4148 有什么缺点吗?9600bps 表示每个位长约 100us,而 1N4001 的典型反向恢复时间为 2us。1N4148 的典型反向恢复时间为 4ns——显然 1N4148 的开关速度更快,但在这种情况下它真的有什么不同吗?