【建议保存】TI官方 全差分运放设计入门
写在前面
什么是“全差分”
比单端多出来的第二个输出如何使用
TI官方的匹配设计软件
Vocm 又是什么
🌈持续更新~欢迎转发关注🌈
🌈搜卫星号关注:鱼先生理论🌈
Fully Differential Op Amps Made Easy
什么是“全差分”?
单端运算放大器有两个输入——一个正输入和一个负输入——这本质上就是差分结构。它们只有一个输出,这个输出是相对于系统地(ground)而言的。
而全差分运算放大器则增加了第二个输出端:
这两个输出分别称为正输出(Vout+)和负输出(Vout–),与输入端的命名方式类似。
它们是差分输出:两个输出电压大小相等,但极性相反(参考电平为电路的共模工作点)。
这种结构使得输出信号在共模干扰下具有更强的抗噪能力,非常适合高速、高精度的模拟信号链设计。
第二个输出怎么用
运算放大器通常作为闭环器件使用。
作为单端运放闭环:
无论是反相还是同相模式,反馈回路都是从输出端连接到反相输入端。
全差分运放的增益
那么,全差分运放如何闭环呢?由于它有两个输出,因此必须对两个输出都进行闭环操作。
正确的做法是为两个输出各自建立反馈回路。
如果两个反馈环路不匹配,会导致明显的二次谐波失真。
对于全差分运放,每个反馈环路都是反相的。
顶部反馈环路:从正输出连接到负输入,产生180°相位反转。
底部反馈环路:从负输出连接到正输入,同样产生180°相位反转。
因此,全差分运放没有“同相”增益电路的概念,所有反馈都是反相的。
差分增益的计算公式为:
单端转差分转换
全差分运算放大器的一个常见用途是将单端信号转换为差分信号。
许多高速模数转换器(ADC)都采用差分输入结构,因此需要一个差分驱动器。
设计这种单端信号转换为差分信号的放大器要:
将单端信号输入连接到一个输入端(例如负输入端 Vin–)。
另一个输入端(例如正输入端 Vin+)连接到地或参考电压。
通过两个匹配的反馈电阻(Rf)和两个输入电阻(Rg)构建闭环,使两个输出端(Vout+ 和 Vout–)形成差分信号。
这种结构可以将单端信号有效地转换为对称的差分输出,适用于驱动差分ADC或差分传输线。
单端转差分与全差分配置的唯一区别在于,输入电压的一侧以地为参考。
德仪官方匹配软件
进行终端匹配设计可以利用德州仪器 (TI) 在其网站上提供了一个在线计算器。
该工具可以通过“模拟和混合信号知识库”或 TI 网站“模拟和混合信号”部分的“工程设计工具”访问。
(鱼先生注:该在线软件网站地址https://www.ti.com/download/kbase/adc/DifGain.htm)
(鱼先生注:该TI官方工具仅提供直流工作点——无法交流仿真)
全差分运算放大器的共模电平
这一节我们只讨论 Vcom 管脚。
有的叫 Vcm、CM等,只要功能是设置全差分运算放大器的输出共模电平(set the output common-mode level of the fully differential op amp.)电气功能和设计目的类似即可。
Vocm 不可以用作第三个输入
Vocm 不可以用于设置直流工作点
Vout- Vout+ 的电平增益 不受 Vocm 电平的影响
当输入电压 Vocm 从零值增大时,输入电压 Vout- Vout+ 也会发生相同的变化。Vout- Vout+的差分电压也保持不变——由 Rf、Rg 的值决定。
Vocm 实际关系如下公式
{Vocm} = \frac{Vout_++Vout_-}{2}
下图更直观
上图👆是一个有持续峰峰值为 2v 的输入信号,电路增益为 1。
但芯片限制输出电压摆幅范围为 3.7v ~ -4.3v 之间
在 Vocm 为 0 时 两个轨都有余量、且设计有效
在 Vocm 为 3 时 交替地达到芯片电压上限,并在 3.7V 处被削波。
在 Vocm 为 -3.5 时 交替地达到芯片电压下限,并在 -4.3V 处被削波。
(鱼先生注:原应用笔记 PDF 文档可复制下方链接、点击原文,查看详情。)
https://www.ti.com/lit/an/sloa099/sloa099.pdf
给自己挖了不少坑了 但不想文章灌水 有的很多需要打磨研究
🌈持续更新~欢迎关注互访互评,无限进步🌈
欢迎关注鱼先生理论
电池电压 ≠ 电量
写在前面
电池电压 ≠ 电量
解释:大电流、老化、低电量会造成电压大幅跌落?
解释:停止使用后,电池电压会”自动”恢复?
🌈持续更新~欢迎转发关注🌈
电池电压≠电量
锂电池的电量 ≠ 电压!!!
测试电池是:镍钴锰酸锂523三元锂电池600mAh + 电芯保护板
先不说理论,先看现象!
在小电流100mA的输出👇,电压从初始的3.2v 仅仅小幅微跌到3.1v
在大电流500mA的输出👇
可以看出电压从初始的3.2v 跌落到2.8v,“突然没电”
但是 输出停止后会立即恢复,“过了一会儿还可以开机”
就像一个没电的手机,我们突然打开摄像头or游戏,就会突然关机
但是过了十几分钟,还能再开机一会儿
为什么会“突然没电”
看看里面怎么了
从现象来看,同一块电池,输出电流越大,端电压跌落是越大。
好像是“因为使用了更大的电流 → 所以电池突然没电了”
但里面有一个很多人忽略的内因
“现实的电池并不是一个理想的电源”——《电路》
我们手里的“电池”是“电源 + 内阻”(电极材料、电解液等、电芯保护板等)等效模型
很干的公式
我们测量到的电池两端的实际电压,应该叫做端电压 (V_terminal)。
直接端出欧姆定律:端电压 = 理想电压 + 内阻压降,而输出电流的端电压计算公式为:
V_端电压 = V_内电压 - (I × R_内阻)
V_端电压: 你实际测量到的电池电压
V_内电压: 电池的理想电压(恒定值)
I: 电路中的电流
电芯保护板引入了 MOS 保险等元器件在通路中,其本身就有一些内阻
锂电池保护板——电芯的“防弹衣”
电芯电化学性质:电流越大 → 正极-电解液界面极化加快 → 电芯内阻变大 → 内部电流增大 → 表面极化越快 → …
下图是电池侧切面的显微图👇
下图是正极-电解质极化界面显微图👇
他是一种“疏松多孔”的结构,电解液会通过缝隙与正极接触置换电子
电芯剩余容量:剩余容量越少 → 电池界面层越厚 → 内阻越大 → 分压越多 → …
电芯体质:电池越老 → 无法恢复的锂杂质副产物越多 → 内阻越大 → 分压越多 → …
如果只是拿电池的端电压来判断剩余电量并不十分精准。
我的手机也是这样!!
!!这也是手机电池为什么会有电池电量跳变的情况!!
iPhone 的电量检测是用 端电压 + 库仑计 + 软件算法 一同做校准测试
但在:
高输出功率:手机在打开相机、玩游戏、重负载应用的时候,手机会动态给cpu更高的功率来支撑小范围超频处理应用
老化的电池:如果这个时候,叠加老化高内阻的电池 就很容易大范围电池端电压跌落
但很明显,面对电化学物理规律,强如Apple,也拉不住锂电池突然雪崩的电压。
为什么会“慢慢恢复”
从现象看,停用电池一阵子,他好像“自己给自己充电”了
一段时间不使用电池,其化学性质稳定后电池电压会慢慢恢复
正极-电解液界面会自己熵增的宇宙规律慢慢恢复
电极附近锂离子从高浓度内部向表面扩散,补充低浓度的锂离子。
还有咱们的电路公式
电流消失或者变小了:关闭相机、关闭游戏、
虽然内阻还是很大,但电池会“更耐用”些,不至于电压低到关机。
文章已上传 两天后
《锂电池电量检测》
🌈持续更新~欢迎关注互访互评,无限进步🌈
锂电池充电——一切为了安全
字数 687,阅读大约需 3 分钟
写在前面
• 监控发热是重中之重。
• 锂电池充电用五个阶段保证安全,预充、热控、恒流、恒压、监测停止
持续更新~欢迎关注互访互评,无限进步
搜卫星关注:鱼先生理论
第二道保护——安全第一
预处理
为什么电池充电还要预处理阶段?
说明情况前 我们要明确一个客观前提:
从充电管理芯片的角度看:他的电池端口有一个 电压非常低(约2.5V)的东西
这个电压不像是一个正常的电池的电压区间 (3.2V~4.2V)
这个时候会有三种情况
• 并没有连接 4.2v单芯锂电池,接入了一个不知道什么的东西
• 连接电路 或 电池已经损坏,电压异常降低
• (。・∀・)ノ゙嗨,这傻电池就是过放了~
但是作为一个充电芯片,他不能确定,他只能尝试。
充电芯片会先尝试施加一个非常非常小的电流(正常电流10% 或约 10mA)
如果接入的是锂电池,并且电池状态是正常的
这个时候 电池端的电压应该是慢慢的不断的上升,直到最低电池充电电压
为什么预处理充电阶段要慢慢的充呢?
一个极低的电量的单芯锂离子电池 他的内阻更大
一个正常电量的电阻
⚠️干巴公式警告⚠️
根据功率公式
P = I² × R
· P 是 发热功率
· I 是 流过内阻的电流
· R 是内阻值
充电芯片当然也知道这一点
保持极低的电流 ➡️ 保持极低的发热功率 ➡️ 保证电池的安全
!这也是部分手机长时间没用,关机后无法开机,或者需要花两三个小时才能充电开机的原因!
慢慢,电池端电压提升到稳定的电压,才会到下一步,开始正常充电。
热控制
电池电压已经升到正常范围内来,芯片会尝试用设定的最大电流尝试充电。
根据功率公式,刚开始的发热很快,有可能很快到达很高的温度
这段时候充电芯片会根据电池的温度判断:
• 电池发热严重 → 降低充电电流
• 电池温度正常 → 逐渐提升电流值 → 达到设定电流
随着充电的深入,电池的内阻逐渐降低
根据 功率公式 P↓ = I² × R↓
发热功率也在下降,可以安全的慢慢提升电流直到内阻可以忽略不计
恒流升压
锂电池充电芯片会按照设定的最大电流值进行充电,这时电芯电压会逐渐爬升,直到电池电压接近4.2v。
这一段会保持很长时间,直到4.2v后,进入下一阶段。
恒压降流
当电芯进入 4.2V 后,充电电流会逐渐减小,直到 10%。
结束充电
到最后,当充电电流下降到截止电流时候,停止充电。
!不可以到充电电流为0,才停止!
因为这已经是电池过充了,刻意的充电不足,是延长电池的寿命的要求。
文章已上传 两天后
《锂电池电量为什么总是不准?》
🌈持续更新~欢迎关注 鱼先生理论🌈
互访互评,无限进步
锂电池保护板——电芯的“防弹衣”
持续更新~欢迎关注互访互评,无限进步
搜卫星关注:鱼先生理论
写在前面
锂电池绿色PCB保护板通过控制回路上的 MOS 通断,来防止电芯的过充、过放、短路极端情况
巧妙利用 MOS 特性,不额外增加器件,防止过流。
第一道保护——电芯的“防弹衣”
锂电池填充物易燃易爆,化学性质并不十分稳定,电压电流过大过小都有问题。
每一块正规锂电池出厂都会带有保护板
这个保护板的功能十分有限。仅仅是最低防护。
在输入电压高于4.4V、电压低于2.1V、短路(瞬态电流过大),做最基础方面保护。
充电保护板都是使用最基础的元器件保证模组的高可靠性、高灵敏度。
根据原理图,由 控制IC 监控锂电池状态,控制 MOS管 的通断来控制充电回路通断。
由 保险丝 防止 控制IC 失效 如果短路大电流,迅速断开充电回路
正常充电
过充保护
控制 IC Pin5检测到过压 → 关闭 Q2 → 充电回路关断
恢复条件
外部充电电压下降
电芯放电一部分,电芯电压下降
正常放电
过放保护
控制 IC VCC-VSS电压检测到欠压 → 关闭 Q1 → 放电回路关断
短路过流保护
保险丝——瞬态大电流会断开,这是防止控制IC失效,他是纯物理防护,是最后的保障。
现在普遍做法是利用 MOS 的内阻特性,来判定过流。
在介绍前,要先明确
MOS 管内部有约 30mΩ 内阻,两个 MOS 一共是60m
理论:当一个电阻通过10mA电流 和 通过1A电流,两端电压压差是不同的。
控制IC 通过
MOS 两端压差 Vds
MOS 内阻 Rds
控制IC 内部设置的阈值 一般是 0.1v
根据欧姆定律
I = Vds / Rds = 0.1V / 0.06Ω ~ 2A
这就是控制IC 通过 Pin2 检测电压,只要有一点点压差就可以触发厂家预设的阈值
超过 P2 超过电压阈值 → 判定过流>1A → 关断 MOS管 → 断开回路。
保护板在不增加额外器件,还能判定过流。
文章已上传 两天后
《锂电池充电总共分几步?》
🌈持续更新~欢迎关注 鱼先生理论
互访互评,无限进步🌈
【应用】NPN+PMOS的IO控制
🌈持续更新~欢迎关注互访互评,无限进步🌈
柯搜卫星关注:鱼先生理论
在一次DEMO板测试的时候 出现了直接用IO控制可以拉高,但拉低后仍有1.5V电压的情况
写在前面
最后方案:用控制NPN管加速PMOS管电源
主要阐述了对于整体模型的阻容调整
使用的NPN管 SS8050 特性
使用的PMOS管 CJ2301 S1 特性
最后通过的方案
调整各部分电阻值 最后效果
t上升时间(80%Vhigh)是3us左右 可以支持到更快速的到50kHz的开关
写在前面的建议
中高频应用,PMOS 应该选用更低 Ciss Coss。
为了保证开关的迅速,NPN部分耗能约10mA,无法使用在低功耗设备上。
最早的问题
整体电路图是STM32L011使用LPTIMER输出一个1kHz的方波
我是打算用IO直接控制PMOS,PMOS去控制LED灯
IO输出直接拉了
可以看到实际上IO的电压是一个缓慢爬升的过程,示波器检测的IO最高电压只到600mV
MOS管没有饱和:我的MCU电源是3V,完全没有到达最大的电压
升压时间过长:升压的时间远超设定的1kHz的区间,需要更长的时间才能饱和
其实我在设计需要极低功耗的电路,我把很多能限流的地方都限流了,应该是电流过小导致的
排查、调整
IO
我断开了IO和后端的连接,并调整到更高的频率16kHz,先测试MCU IO输出是否正常
MCU 输出的波形没有什么问题 是完美的 16kHz 50% 的方波
IO→NPN
然后将 IO 口接到 NPN 的 B级 上
搭建电路的原理图
测量 C级 的电压
波形又出现了缓慢上升的趋势,但最高只到 2.6v,且每个 20us 左右都会有一个尖刺出现。
分析
最高 2.6V 原因:SS8050 未完全饱和,且考虑饱和压降是 0.5V。
集级电压不足:C级电阻过大。为了低功耗,过低的减小了集电极的电流,进入饱和速度太慢。
基极电流不足:B级电阻和下拉电阻过大。过低的减小了基极的电流和电压。
尖刺产生:可能是测试飞线产生的,先不纠结,下一步处理
调整
调整基极驱动:基极电阻降低到 1kΩ,基极电流大约是 3mA,使三极管深度进入饱和。
调整基极下拉电阻与基极驱动电阻的比值:调整为 47kΩ,下拉电阻比值大( 1:50)
调整集电极电路:集电极电阻降低到 10kΩ,降低对电源电压的分压影响。
调整后的电路原理图
C级的波形
t上升时间 (80%Vhigh) 是 3us 左右
最高电压 2.96V 接近电源电压 3V
基本实现了调整目标
IO→NPN→PMOS→LED
原理图
测量出漏级 PMOS G级 与 NPN C级 的电压
很明显 PMOS 接入后又出现了上升缓慢、尖刺、波形不平整
分析
没有考虑 PMOS管 内电容 Cgs:内部的电容 与 集电极的电阻 形成了 RC延迟电路。
尖刺产生:是测试飞线产生的,在 NPN管 集电极 与 PMOS 栅极之间串联一个阻抗,减少干扰。
调整
集电极的电阻再减小至470Ω:加快 栅极-源级 级间放电速度。
栅极串联负载 22Ω:消除振铃
调整后的原理图
调整后 PMOS管 G端的开通波形
t上升时间 (80%Vhigh) 是3us左右。
PMOS管 D端 - LED+ 波形
整体功耗达到了 10mA*n% (PWM占空比)
写在后面
考虑 PMOS 打开更迅速 适当降低三极管C端电阻 470Ω → 220Ω
注意功耗增加到了约 15mA
考虑 NPN 到仍然还有干扰 接入 22Ω → 47Ω
这几种情况就别用I2C了
🌈持续更新~欢迎关注互访互评,无限进步🌈
搜卫星关注:鱼先生理论
I2C作为最方便、接口最简单的板载通讯方式,哪些场景不适用,有哪些需要注意的时序
写在前面
不在意多几根线PCB空间,需要更快的数据读取频率
实时性差:每次只能和 所有从机 其中一个 一对一通讯,其他从机必须静默,在等待主机读取期间的数据可能丢失。
通讯开销大:每次需要声明从机地址,发 1byte 后就要等待 1bit ACK,效率低。
在较低速度下,通讯的相对单位时间内传输的有效数据就很少了
可以看到下图 “前置通讯准备” 是占据一部分通讯容量,
需要多主机访问从机芯片
鲁棒性差:总线被某异常拉低(最后一位时钟脉冲丢失、某芯片超时、SCL死锁低电平等),主机失去控制权,整组通讯暂停
多主机设备仲裁复杂:主机对待丢失总线控制权后尽快重新仲裁控权,防止数据丢失或上报错误
软件开销大:硬件简单、软件复杂。需要完备的容错、仲裁、总线监听、错误修复、Data加密校验等算法。
对保密性有要求,从机采集的数据敏感
总线劫持 Bus Hijacking:从机不会校验主机身份,可以轻松伪装主机,读取其他从机数据。
硬件接口
硬件接口简单 只需要两根线
SCL 串行时钟 / SDA 串行数据
通讯速率不高 通讯要求低
快速 400KHz / 标准 100KHz / 超高速 5MHz(要双方硬件支持) / 高速 3.4MHz(要双方硬件支持)
只要 SCL 的高电平 就能确认数据线数据,方波速率要求不严格
通讯协议
图表展示了主机和从机在
一字节写入
多字节写入
一字节读取
多字节读取
四个通讯状况下的通讯协议约定
打个比方:
主机就像一个老师
一组I2C接口是一个教室
并联在一起的从机就是一起坐在教室里的学生
老师可以给全部学生说话 大部分时候是一个老师和一个学生一对一说话 别的同学是安静的是不说话
以下对多字节的读和写过程
主机写多字节数据过程
教室都没人说话——两根线都默认高电平
老师说 “我现在要说话”——主机发起起始状态 ST(SCL高的时候 下拉SDA SDA产生一个下降沿) 所有从机监听
老师点名 “张三我要你记笔记”——主机发送从机地址“SAD[6:1]”+最后一位是写命令”SAD[0]/W=0“
张三回复“听到了”——从机回复 SAK(在下一个时钟脉冲高电平前将SDA拉低)
老师说“从笔记本第100页开始”——主机声明将写入数据的第一个位置
张三回复“听到了”——从机回复 SAK
“记一组数据 50”——主机声明第一个地址写入的数据值
张三回复“听到了”——从机回复 SAK
“记一组数据 51”——主机声明第二个地址写入的数据值
张三回复“听到了”——从机回复 SAK
老师说”结束了“——主机发起结束状态 SP(SCL高的时候 上拉SDA SDA产生一个上升沿)
教室都没人说话——两根线恢复默认高电平
SA — Slave Address 从机地址【只有7位】
主机读多字节数据过程
教室都没人说话——两根线都默认高电平
老师说 “我现在要说话”——主机发起起始状态 ST(SCL高的时候 下拉SDA SDA产生一个下降沿) 所有从机监听
老师点名 “张三我要让你读一段数字”——主机发送从机地址“SAD[6:1]”+最后一位是写命令”SAD[0]/W=0“
张三回复“听到了”——从机回复 SAK(在下一个时钟脉冲高电平前将SDA拉低)
老师说 ”把书翻到…“——主机声明要写入 要读数据的起始地址
张三回复“听到了”——从机回复 SAK
“第100页”——主机要读数据的起始地址值
张三回复“听到了”——从机回复 SAK
老师说 ”大家安静“——主机发起重复起始状态 SR = 其实是恢复默认状态 + ST起始状态
SCL在时钟脉冲高电平**之前,**释放SDA,SDA高电平
SCL在时钟脉冲高电平时候,两条线有一刻恢复默认状态(高电平)。
紧接着,主机 再发起一个起始状态 ST (SDA产生一个上升沿)
【从机不需要SAK】
老师说 ”张三 你开始读“——主机发送从机地址“SAD[6:1]”+最后一位是读命令”SAD[0]/R=1“
张三回复“听到了”——从机回复 SAK
张三说 ”50“ ——从机发送1字节数据
老师回复“听到了”——主机回复 MAK(在下一个时钟脉冲高电平前将SDA拉低)
张三说 ”51“ ——从机发送1字节数据
老师回复“听到了”——主机回复 MAK
张三说 ”52“ ——从机发送1字节数据
老师不说话、同学停止读数据——从机没有接收 MAK 而停止发送数据
老师说”结束了“——主机发起结束状态 SP(SCL高的时候 上拉SDA SDA产生一个上升沿)
教室都没人说话——两根线恢复默认高电平
需要注意的几件事
每次传输数据都是 8 位,而是最高位先发送
SCL低电平的时候 SDA数据无效,SCL高电平的时候,SDA数据保持不变。
除了主机可以发起
起始状态 ST
结束状态 SP
重复起始状态 SR
这三个状态外,其他情况不允许在SCL高电平的变更SDA的电平,否则会触发这三个状态,导致通讯混乱。
从机是不可以主动说话的,所有对话都是主机主动发起。
主机结束发送后 需要释放SDA,让其保证默认状态(高电平),让从机可以正确发送 SAK
有的情况从机没有 SAK(没有在下一个时钟脉冲高电平前将SDA拉低),从机是正忙,也就是 NSAK