什么是微控制器中的欠压复位?如何防止误断电

2024-06-11 15:04

本文主要是介绍什么是微控制器中的欠压复位?如何防止误断电,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微控制器的“掉电”是指电源电压部分暂时降低到可靠运行所需的水平以下。许多微控制器都有一个保护电路,可以检测电源电压何时低于此水平,并将设备置于复位状态,以确保电源恢复时正确启动。此操作称为“欠压复位”或 BOR。类似的功能称为低电压检测 (LVD),它更复杂,增加了对多个电压电平的检测,并且可以在触发复位之前产生中断。

BOR 通常由控制寄存器中的一位来启用。通常,当 BOR 引起复位时,状态位被设置。该状态位在复位后仍然存在(如果电源没有太低!),并允许程序检测问题并执行额外的恢复或记录事件。

如果 BOR 被禁用会发生什么?这是电源电压稳步下降的描述。也许这是电源恶化或电池放电。

V1为正常电源电压。V2 是微控制器可能无法可靠运行的点。我将 V3 显示为操作完全停止的点。V2 和 V3 之间是一个“危险区域”,可能会出现问题且运行不可靠。当电源进出危险区域时,该设备可以正常工作多年,然后,砰!,出现故障。BOR 级别设置为高于 V2,并通过设备重置替换危险区域。重置不好,但(通常)比不确定要好。

接下来,我讲述一个电源正常工作但使用 BOR 来解决不同问题的情况。

寻找欠压复位的另一种用途(困难的方法)

我设计了一个电路,该电路在一个模块中包含一个 PIC 微控制器和 18 个电压调节器,用于控制 18 个光传感器的 +5V 电源。十二个模块控制阵列中的 204 个传感器。这些模块是夏威夷莫纳克亚山大型天文望远镜自适应光学系统的一部分。这是模块的内部。

微控制器位于电路板中心附近,18 个线性稳压器安装在外壳壁上。模块和传感器安装在水冷板上,以将热量从传感器阵列上方的光具座上带走。来自光传感器的脉冲进入模块,在模块中转换为差分RS-485 信号,并在图片中上部的连接器上输出。此外,还有进入模块的 RS-485 控制信号。所有 RS-485 信号均连接至约 10 米外机箱内的电路。重要的一点是模块中的所有电路都使用相同的 +5V 电源。

这是微控制器和 RS-485 线路驱动器和接收器 的特写,它们是问题的。黑色模块化插孔是一个异步串行接口,可添加另外两个 RS-485 I/O 信号。

这些模块在工作台上经过了广泛的测试。没问题!他们在实验室进行了数月的系统测试。完美的!的事件是望远镜的首次测试。失败!当电源关闭并重新打开时,大约一半的模块失去了通信。我插入调试器,发现微控制器正在运行并执行代码,但变量已损坏,并且串行接口无法工作。很奇怪。

首先,我想说的是,在海拔 13,589 英尺(4,138 米)、气温为 40°F(4°C)的半夜调试并不好玩。不过,让我们继续前进。这是显示问题的图表。

右侧是带有连接到微控制器和+5V 电源的RS-485 线路接收器的模块。左侧是电缆另一端的线路驱动器,它们始终处于通电状态。实际上,两个方向都有驱动器和接收器,但我正在简化。当模块电源(VCC)关闭时,远程线路驱动器和接收器仍然打开(VDD)。这些信号就像电源一样,通过模块接口设备直接连接到+5V电源,或者通过微控制器引脚上的ESD保护电路。有足够的电量来防止微控制器完全断电,并且设备处于危险区域。

当模块电源打开时,微控制器没有以正常的上电复位序列启动。它开始运行但出现问题。为什么在之前的测试中没有出现这一点?还记得水冷板吗?望远镜里的冷却剂比实验室里的冷却剂冷很多。我的理论是较低的温度足以暴露某些模块中的问题。

修复很容易。我在代码中添加了一条启用BOR的语句,问题就解决了。顺便说一句,我写并说服项目经理一切都很好所花费的时间比解决问题所花费的时间要长得多。

错误断电

这是显示一般问题的图表。

当电源关闭时,电压不会一路下降。相反,其他电源将电源电压保持在危险区域。该电压的一种描述是“虚假功率”。没有 BOR 来检测这种情况并导致复位。当电源再次打开时,设备可能不会执行正常的加电顺序,因为加电复位电路可能不会被触发。后续操作不确定,因为电源电压低于值并且没有复位。

这篇关于什么是微控制器中的欠压复位?如何防止误断电的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051501

相关文章

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

PHP防止SQL注入详解及防范

SQL 注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞。 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者看不到你的

PHP防止SQL注入的方法(2)

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE”); DROP TA

PHP防止SQL注入的方法(1)

(1)mysql_real_escape_string – 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下: $sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='". mysql_r

防止缓存击穿、缓存穿透和缓存雪崩

使用Redis缓存防止缓存击穿、缓存穿透和缓存雪崩 在高并发系统中,缓存击穿、缓存穿透和缓存雪崩是三种常见的缓存问题。本文将介绍如何使用Redis、分布式锁和布隆过滤器有效解决这些问题,并且会通过Java代码详细说明实现的思路和原因。 1. 背景 缓存穿透:指的是大量请求缓存中不存在且数据库中也不存在的数据,导致大量请求直接打到数据库上,形成数据库压力。 缓存击穿:指的是某个热点数据在

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan

使用 `readResolve` 防止序列化破坏单例模式

单例模式是一种设计模式,其目的是确保一个类只有一个实例,并提供一个全局访问点。在 Java 中,我们常常通过私有化构造方法和提供静态访问方法来实现单例。然而,尽管这些手段可以有效防止类的实例化,反射和序列化依然能够破坏单例模式的唯一性。本文将重点讲解序列化如何破坏单例模式,以及如何通过 readResolve 方法来防止这种破坏。 1. 序列化和反序列化 序列化 是指将对象的状态转换为字节

6. 深度学习中的正则化技术:防止过拟合

引言 过拟合是深度学习模型在训练过程中常遇到的挑战。过拟合会导致模型在训练数据上表现良好,但在新数据上表现不佳。为了防止过拟合,研究者们提出了多种正则化技术,如L1/L2正则化、Dropout、数据增强等。这些技术通过约束模型的复杂度或增加数据的多样性,有效提高了模型的泛化能力。本篇博文将深入探讨这些正则化技术的原理、应用及其在实际深度学习任务中的效果。 1. 过拟合的原因与影响 过拟合通常

【科普知识】一体化电机掉电后“位置精准复位“机制与规律

在工业自动化、机器人技术及精密控制领域,电机作为核心执行元件,其稳定运行和精确控制对于整个系统的性能至关重要。 然而,电机在运行过程中可能会遭遇突然断电的情况,这会导致电机失去驱动力并停止在当前位置,甚至在某些情况下发生位置偏移。 因此,电机掉电后的位置恢复机制成为了一个关键技术问题。本文将探讨电机掉电后位置恢复的原理机制,以期为相关领域的研究与应用提供参考。 一、电机掉电后的位置偏移现象

NXP,S32K1XX汽车通用微控制器开发笔记

文章目录 1. 概述2. 开发环境配置2.1 S32 Design Studio2.2 安装SDK2.3 新建demo工程2.4 字体配置2.5 按需求修改demo2.5.1 修改pin脚定义2.5.2 增加串口打印功能 2.6 编译代码2.7 debuger 配置 参考 1. 概述 S32K1系列32位微控制器(MCU)提供基于Arm® Cortex®-M的MCU,以及基