我有一个电路,使用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的开关速度更快,但是在这种情况下真的有所作为吗?