世界上最常用的开发板,Arduino Uno,支持多种供电方式,大致分为两类:5V直接供电与更高电压经LDO(Low Dropout Regulator,低压差线性稳压器)后供电。神奇的是,当两种电源都连接时,开发板会自动选择后者,而不会让两者冲突。
完整的原理图可以在这里查看。由于整张图比较大,我把电源部分抽出来自己画了一遍。
V1
和VBUS
分别是外接电源和USB供电;S1
和S2
用于控制两个电源的连接状态;D1
是防反接保护二极管;U1
和U2
分别是5V和3.3V LDO;U3
是LMV358低压轨至轨运放,起到比较器的作用;R1
和R2
构成分压电路,把外接输入电压减去二极管压降的一半作为运放同相输入;Q1
是一个P沟道MOS管;VCC
是输出的5V电源。(以上名词不懂的请自行百度。)
简单分析一下:如果S1
闭合,U1
给VCC
5V输出,运放有供电,反相输入为U2
输出的3.3V,正相电压高于反相,运放输出5V,Q1
栅极与源极电压相等,不导通,无论S2
是否闭合,VBUS
都不会输出电流。
如果S1
断开,且电路已经通过VBUS
电源供应正常工作,那么类似分析可得运放输出0V,Q1
栅极电压比源极电压低5V,MOS管导通,VBUS
通过Q1
给VCC
5V输出,电路继续正常工作。
但是在只有USB供电的情况下,电路上电时会怎样?有网友也提出了这样的疑问。
I half understand the Arduino Uno power select circuit that uses as p-FET to disconnect the USBVCC when an external Vin is supplied, but one bit baffles me. If no external supply is connected then at startup what state is the p-FET in? If the p-FET is ON (Vgs -ve) then USBVCC powers the LMV358 op-amp which compares 3v3 to 0V and drags the p-FET gate voltage down and it all works (although the initial p-FET source voltage is floating). But if the p-FET is OFF then the LMV358 has no power, so the p-FET gate voltage is indeterminate, so what happens to the p-FET? It all seems a bit chicken and egg to me.
我不是很理解Arduino Uno的电源选择电路。当有外接电源连接时,它用P沟道MOS管断开USB电源,但有一点我不理解。如果没有外接电源,启动时MOS的状态是什么?如果是导通的,USB电源给LMV358供电,比较3.3V与0V,把MOS的栅极拉低,电路正常工作(尽管初始时MOS的源极电压是浮空的)。但是如果MOS是关断的,LMV358就没有电源,所以MOS的栅极电压是未定的,所以MOS会怎么样?这就像先有鸡还是先有蛋一样。
答案是电路依然能正常工作,原因是MOS管中有一个寄生二极管。注意,只有分立MOS管才有寄生二极管。寄生二极管方向是:N沟道管由S极向D极,P沟道管由D极向S极。可以这样记:衬底连接S极,两个箭头的方向相同。
因为有这个寄生二极管的存在,无论上电时MOS处于什么状态,VCC
总有4.3V电压,可以让U2
输出3.3V,也可以让运放工作,于是运放就会输出0V,MOS导通,VCC
输出5V。这个过程在一瞬间完成。
一般来说,高边P沟道MOS管都是源极连接电源,漏极输出。而这个电路为了利用寄生二极管把两者颠倒了过来,仍能正常工作,十分巧妙。