工程师在开发项目,设计产品的电路原理方案,如果有使用到单片机,一般给它供电的电源电压是5V或者3.3V。
假如在开发空气净化器,单片机的电源是5V,相应地,它的IO引脚输入输出电压也是5V。但若空气净化器用到的PM2.5传感器,它的工作电源是3.3V,传感器输出的IIC信号同样也是3.3V。
于是,工程师就会碰到一个问题,5V的单片机怎么和3.3V的PM2.5传感器进行IIC通信呢?
有两种方案
方案一是将单片机的电源电压5V调成3.3V,保持和PM2.5传感器的电源电压一致,这样就不存在IIC通信电压不匹配的问题了。
方案二是做一个电平转换电路,实现5V和3.3V不同电平之间的互相转换。
如果单片机的电源电压实在是不能调为3.3V,剩下的也只能是做电平转换电路了。
电平转换的电路,该怎么做呢?
方法有很多,芯片哥说其中的一个,个人认为还是比较简单可靠的,它不仅能实现不同电平之间的转换功能,而且还能实现双向的转换。
直接看它的详细电路原理图
电平转换电路
电路中,左边是5V的单片机系统,右边是3.3V的PM2.5传感器系统;对于IIC通信,一个信号是SCL时钟信号,是单片机向传感器输出的信号,方向是从左往右;另一个信号是SDA数据信号,是单片机和传感器之间互相传递数据的信号,方向是双向的,既要从左往右,也要从右往左。
它是怎么工作的呢?
5V转换3.3V
左边的单片机系统VA向右发送一个5V高电平,电路中Q1的MOS管,由于栅极电压和源极电压都是3.3V,所以VB接收到的电平信号是3.3V的高电平;
这样就实现了5V转换3.3V的功能;
逻辑电平除了高电平,它还有低电平。如果左边的单片机系统VA向右发送一个0V低电平呢?
同样的分析,电路中Q1的MOS管,由于两端有一个并联的二极管,阳极接到一个上拉的3.3V电阻,阴极接到的是VA发送的0V低电平,所以二极管会导通。
二极管一旦导通,VB的电压就会由3.3V拉低到只有0.7V左右了,就会由原来的高电平变为低电平了。
所以,无论左边发送一个5V的高电平还是0V的低电平,通过这个转换电路,都能从VB输出一个3.3V的高电平和“0V”的低电平。
3.3V转5V
实现了5V转换3.3V,接下来看下是否可以实现3.3V转换5V的功能?
3.3V转换5V
还是一样,电路中的左边是5V单片机系统,右边是3.3V传感器系统。如果右边的VB想要发送一个3.3V高电平和一个0V低电平给到左边呢?
首先看下发送3.3V高电平
VB输出3.3V高电平,Q1的MOS管,因为栅极和源极都是3.3V,所以MOS管不导通,VA得到的就是一个R1电阻上拉的5V,于是就相当于实现了左边的3.3V转换成了右边的5V。
再看下发送0V高电平
VB输出0V低电平,Q1的MOS管,因为栅极的电压是3.3V,源极的电压变为0V了,所以MOS管会导通,VA的电压会被拉低,因此VA得到的就是一个0V低电平,于是也就相当于实现了左边的0V转化成了右边的0V。
总结下来,工程师有没有发现,无论信号是从哪个方向传递,这个电路都能实现电平电压之间的转换,,尤其是适合类似于IIC通信的SDA数据信号,它是双向的。
电路简单,只需要一个MOS管和3个上拉电阻就可以了。