如何用单片机检测电源电压?
使用微控制器检测主电源的最简单方法是使用光耦合器(光隔离器)。它允许您在两个电流隔离的电路之间发送信息。初级侧为高电压:230 AC,次级侧为低电压,例如 3.3 或 5 V。通过电阻器将 VAC 连接至输入,电阻器的总阻值约为 230 AC,200 – 300 kΩ 和至少 0.5 W。为了保护光耦合器 LED,最好放置一个二极管(如下图所示)。输出通常有集电极和发射极(就像经典的双极晶体管)。通过 4.7 – 10 kΩ 电阻器将 VCC 连接到集电极,并将发射极直接连接到 GND。就这样了!您可以使用 Arduino、ESP8266、ESP32 或任何其他微控制器安全地检测高交流电压。
下面的示意图说明了我上面写的内容。真的就是这么简单!
高电压检查电路
对于那些觉得这个简短的答案还不够的人,让我们深入探讨一下!
市电危害健康和生命!每当您使用它进行操作时,请断开电源。在重新插入电源之前,请三倍确保您、您的设备以及周围的每个人都安全。
让我们按照示意图一步步进行
输入电路
示波器上的电源电压 (120 / 230 VAC) 如下所示:
国家电压是 230 AC / 50 Hz。例如,在美国,电压为 120 AC / 60 Hz。但除此之外,图表将是相同的。
为了安全地将如此高的电压连接到光耦合器,必须限制电流。这就是原理图中有一个 300 kΩ 电阻的原因。如果您居住在美国,则可以使用较低的电阻,例如 200 kΩ。
重要的!
由于电压很高,因此必须考虑电阻器发出的最大功率。您可以使用以下等式来计算:
就我而言,它是 0.35 W。最好有一些安全缓冲。这就是为什么在第一段中我写了 0.5 W。但仍然要注意这个电阻会很热。不要将其封闭在一个小的密封外壳中,确保一定的空气流通。
我强烈推荐给您的一个好主意是串联使用两个甚至三个电阻。通过这种方式,功率被分配到多个组件而不是一个组件上。其次,更重要的是电阻器可以承受的最大电压。对于小情况会很容易超出。
升级后的原理图如下所示:
输出电路
光耦合器的次级侧与主电源电隔离。您可以在那里安全地连接微控制器的 GPIO。
您必须意识到输出上没有“良好”的直流电压。相反,有一个方波。
在上图中,我显示了打开电源的时刻。黄色图表是 光耦合器的 输入,蓝色图表是其输出 。正如您所看到的,当输入电压为零时,输出为高电平。在本例中为 5V。
当交流电开始流动时,电压从 +325 V 变为 -325 V(在我的例子中)。如果电压超过约+1.3V(光耦合器中LED的正向电压),LED就会亮起。您可以将其视为开始向 NPN 晶体管的基极施加电压。当使用足够的电压时,它起到短路的作用。输出下降至 GND 电平。类似地,当基极不施加电压时,晶体管工作在截止区,表现为开路。输出被上拉至 VCC。
这样的输出有什么优点和缺点?
这取决于您如何看待它以及您想如何使用它。如果您只想检查电流是否流动,则不能只时不时地检查引脚状态。您很可能会遇到“中间”情况,就好像没有市电一样。当然,软件中有很多方法可以解决。下面我将提出一种解决方案。我在之前的一个项目中使用过它,效果非常好。
另一方面,如果您关心“零交叉检测”,这种输出具有显着的优势。我将在另一篇文章中更详细地解释这一点。这里我就简单介绍一下。
过零检测
过零检测 (ZCD) 是一种流行的频率测量方法。例如,您可以使用它代替晶体振荡器来测量时间。从长远来看,频率非常稳定。正如您在上面看到的,频率正好是 50 Hz。
使用它的另一个重要原因是 EMC(电磁兼容性)。当您想要经常打开/关闭高负载(例如电加热器)时,这一点至关重要。您可以在Wikipedia上找到有关 EMC 的更多信息 。
我想要稳定平滑的直流输出!
如果您不关心过零检测,并且希望随时检查 GPIO 状态并确保主电源是否存在 – 以下原理图升级版适合您。
一如既往,在工程领域,每一个问题都有不止一种解决方案。我将向您介绍最简单的一种。我将此线程分为两个阶段:首先,我们将切断输入电压的负部分,然后将其平滑。
第一步:剪掉正弦波的负部分
更准确地说,我们不会完全切除负片部分。我们将把它转化为积极的一面。第一个电路的主要缺点是我们仅使用正弦波形的一半——仅正一半。当电压低于零时,光耦合器 LED 不亮。幸运的是,有一些简单的方法可以解决这个问题。
让我们在该方案中添加四个二极管(所谓的格雷茨桥)。这是一个两个半周期整流器。
在这种情况下,我们不再有负电压,即不再需要保护二极管(如第一个示例)。
通过这个小小的升级,我们改变了这一点:
进入这个:
另一种解决方案是使用双向光耦合器。它有两个相反方向导通的 LED。因此,次级侧的效果将与使用整流器非常相似。
这次输出信号如下所示:
第二步:平滑输出
让我们使图表更平滑。为此,我们将在发射极和 GND 之间添加一个电容器。它的容量并不重要。大多数情况下,2 到 10 uF 之间的值是正确的。
以下是原理图的最终版本。两者都会给您带来几乎相同的结果,因此请选择您更喜欢哪一个。
在示波器上,输出看起来并不完全平坦,但波动小于 0.5 V。对于每个微控制器,电压都会足够平滑。
软件
在最简单的电路版本(我一开始展示的那个)中,不时检查 GPIO 状态是一个坏主意。当状态显示“无电压”时,您很有可能会检查它。因此,更好的解决方案是使用外部中断。如今,所有微控制器都能够做到这一点。我不想详细讨论实现细节,因为这取决于您使用的 uC。您必须查看那里的数据表,以确保所有内容都会得到解释。
在我们使用整流器的版本中,事情要简单得多。您可以随时检查引脚状态并了解 VAC 是否存在。
概括
在本文中,您学习了如何使用简单的电路安全地检测主电源。正如您所看到的,您不需要任何复杂且昂贵的芯片或集成电路来了解您需要博士学位的内容。在电子领域 最普通的光耦合器、几个电阻器、一个二极管和一个电容器就可以做到这一点。
我只向您提供了一种可能的方法。与往常一样,这个问题还有许多其他解决方案。它们更好,更差,更简单,更困难,但我专注于我使用和配合的那个,我可以问心无愧地推荐给你。我希望它对你有用。
怎么标准的测量锂电池内阻?
方法一:双电阻法测量电池内阻
秦辉在他的文章《电池内阻的测量》中介绍了利用双电阻法测量电池内阻的方法。
如图所示,电池串联一个电阻形成回路,测量负载电阻的分压,进而推算电池内阻。这是一个非常简易的方法,从接触电路开始,我们几乎就知道存在这么一个方法。使用这个方法的一个要点是,当外接电阻值与电池内阻越接近,测量结果的误差将越小。电阻计算公式:E/(r+ R)=U/R,所以 r=(E/U- 1)R用单片机实现上述电阻测量原理,框图如下:
单片机主导的电池内阻测量过程如下:单片机复位后,其控制端输出高电平,将模拟开关的控制端IN 置1, 然后连续对电压表进行检测。当检测到电压表有输入电压时, 单片机将模拟开关的IN 控制端置0,则D 端与S2端之间呈断开状态,此时电压表测量所得的电压值为电源的电动势E。单片机通过数据总线将数字电压表测量所得的电压数据存入单片机存储器中。
然后单片机再将模拟开关的IN 端置1, 则D 端与S2 端之间呈导通状态。此时电压表测量所得的电压值为模拟开关、电阻rˊ和R 三者承受的总电压Uˊ,单片机将该电压数据读入到单片机存储器中。利用串联电路分压公式U=100 Uˊ/199.5,单片机计算出U。再利用公式“r=(E/U- 1)R”,单片机计算出电池内阻r(公式中的r1=rˊ+0.5 =99.5Ω)。单片机通过接口电路将计算结果送入电压表显示电路,显示出电池内阻r 的值。
这个方法,可以利用单片机的功能实现自动测量和结果显示,但检测的精度还是由电阻精度和电压表精度决定。
方法二:不平衡电桥法电池内阻测量
作者李舒晨,在他的文章《不平衡电桥法电池内阻测量装置的原理与设计》中介绍了利用不平衡电桥测量电池内阻的方法。
不平衡电桥法测量电池内阻的原理如上图所示。其中R01 , R02 , R03为电桥内设电阻,Rx 为含电动势E 的电池内阻。 电阻R00和开关K跨接在电桥A 至B 之间. 根据戴维南定理,从N、G两点看去,可有图( b)所示的等效电路。其中E0 为开路电压, R0 为等效电阻。当电路满足电桥平衡条件R02 /R01 = R03 /Rx时,上述等效电路电压源E0 和等效电阻R0 均不因开关K的接通与断开状态而改变,即在开关K接通和断开状态下均有:
E0 = E〔( R01+ R02 ) /( R01 + R02 + R03 + Rx )〕=E〔R01 /( R01 + Rx )〕
R0 = ( R01+ R02 ) // ( R03+ Rx ) =( R02// R03 ) + ( R01// Rx )
用上述原理在实验室测试电池内阻时,只要在N , G之间接入一只直流电流表,反复接通和断开开关K,并调节R01或R02,直到开关状态变化时,电流表读数不变,此时便可依公式算出电池内阻:Rx = R01 (R03 /R02 )。
将上述测量过程中使用的开关用电子开关取代,并用周期性电压控制开关反复通断。 将N 、G间的短路电流转换为电压信号,并在开关通断期间对电压信号分别进行采样保持形成两路电压,最后对两路电压进行差分放大送至平衡电压指示表,这就构成一个用不平衡电桥原理测量电池内阻的装置。
电桥电阻R01 、R02、 R03的选择影响测量灵敏度;电阻R00对电桥灵敏度及电池放电有影响。
方法3,电池内阻在线测量
作者陈宝明在他的文章《电池内阻在线测量实验系统的设计与制作》中介绍了一个比较常用的在线测量方法,交流注入法。
基本原理
实现电池内阻在线测量的基本原理如上图所示, 当信号源给电池注入一个交流电流信号,测量出电池两端产生的交流电压信号和输入的电流,就可计算出电池的内阻:r =Vrm/I rms式中:Vrms 为电池两端交流电压信号的有效值;Irms为输入电池中的交流电流信号有效值。
具体实现在线测量的系统框图,如上图所示。系统由输出输入回路、输入转换电路、取样电路、低噪声前置放大器、方波转换电路、乘法器电路、积分器电路、交流恒流信号产生电路、单片机控制系统、显示器电路、接口电路和计算机等组成。输出的交流恒流信号接到电池两端, 再将电池内阻产生的电压信号, 从电池两端直接连接到输入转换开关电路。 注入电流回路和信号测量回路分开, 降低导线阻抗对电池内阻的影响,实现四引线连接。由单片机控制输入转换开关,首先接通取样电路, 检测出注入电池回路中的电流值;再接通电池两端, 检测出内阻上产生的电压信号, 从而根据内阻计算公式,计算出电池内阻并显示。同时, 可通过接口电路,向PC 计算机输送相关信息, 存储相关数据, 并自动绘制充放电特性曲线。
上述方法中,直流内阻测试法,是国内外标准的典型测试方法,测试结果认可度较高;交流注入测试法,则多用在在线测量领域,作为车辆运行过程中,对动力电池性能监测的一种手段。
相关问答
单片机电压检测 ?一般检测io电平的变化通过两种方式,下面分别介绍这两种方法。第一种:查询法,cpu通过程序不断的查询单片机IO引脚的状态,如果检测到电平变化,比如由高电平变...
单片机检测电池 电量的方法有几种?预测蓄电池剩余电量的常见方法有:密度法、开路电压法、放电法、内阻法。前三种方法测量精度较低且不适合密封蓄电池的在线测量,故较难实用。内阻法对被测蓄电...
肿么判断 锂电池 插入了充电器。Q2是低 电压检测 :Vin> 3.3输...单片机用锂电池供电,肿么判断锂电池插入了充电器。Q2是低电压检测:Vin>3.3输出高电平,否则为低电平。举报电子教育快易典快易典Q23人讨论7409次围观...
单片机 控制 电池 电量 检测 原理[回答]手机电池是靠检测电压来判断电量的。有一种检测汽车蓄电池电量的工具——放电钳,让蓄电池通过较小的电阻放电,通过串接在放电电路中的电流表观察放...
单片机 怎么 检测 好坏?单片机好坏的检测可以通过以下方法进行:1.使用测试仪器检测:现今市场上有很多专业的测试仪器和设备可以检测单片机的好坏,例如USBEEPROMProgrammer,即可...
STC 单片机 ,工作 电压 是5V,电流是多少。如何用3--4节干 电池 (5号,或,七号 电池 ) 给STC 单片机 供电?STC89C52RC的工作电压范围是:3.3V~5.5V,整体流过单片机的电流总和不要超过70mA。你直接用三颗1.5V的电池串联供电就可以了。40引脚的单片机简单接法就可以驱...
单片机 测100V左右的直流 电压 ,如何提高精度?用单片机测,就是先用A/D转换电路转换成数字量。而AD转换器输入的模拟电压多为5Ⅴ,所以,必须用电阻对100Ⅴ电压分压后再进行AD转换。所以,要提高精度,要选16...
8.4v 锂电池 电量指示?1、显示8.4V两节锂电池的电量:按一下按钮,唤醒休眠,显示电量剩余值,7秒后自动熄灭,进入休眠状态。电池电压低于7.4V时能报警显示。检测电压值精度为0.1V。2...
STM32 单片机 怎么 检测 0-24 电压 和电流 - 懂得32的采集范围是0-3.3v你需0-24v电压衰减电路:电压跟随器高精度用运放,中精度用T型网络衰减电路,要求低用电阻分压的。电压缩小到0-3.3v范围内采集,...
用 单片机 10位AD测 电池电压 为3.68V,用万用表20V档测却是3.58...[最佳回答]1、万用表测得5.01V,实际值为5.00V应该是正确的。应该信任万用表所读值为实际值。2、被测电池是否稳定,且测量时电池的负载是相当的。可以用5V直接...