pic单片机低电压检测_PIC单片机:一步一步学习如何实现低功耗设计(上)

本文介绍了低功耗设计的基本概念和策略,通过学习PIC16F184xx系列单片机的三种省电模式:打盹、空闲和休眠,探讨了如何降低动态和静态功耗。通过实际操作和测量,分析了影响功耗的因素,如IO口状态、BOR、LDO和VREGPM寄存器设置,最终实现了1uA以下的超低功耗睡眠模式。文章还预告了后续关于空闲和打盹模式的实例以及作者的经验分享。
摘要由CSDN通过智能技术生成

学习PIC单片机低功耗之前,先简单过一下低功耗的一些基础知识和思想。

功率(瓦特)= U(伏特)I(安培)

能量(焦耳)= U(伏特)I(安培)t(秒)

电量(库伦)= I(安培)t(秒)

功耗可以分为动态(活动)功耗和静态(睡眠)功耗。

平均功耗=(动态功耗x动态时间+静态功耗x静态时间)/(动态时间+静态时间)

cd92a8c4b86a8dd6c670aac96bb29388.png

由此得出一些结论,降低平均功耗,可以从下面几个方面入手

降低动态(运行)功耗;

降低动态(运行)时间;

降低静态(休眠)功耗;

增加静态(休眠)时间。

简单了解这么多,在最后还有一些我自己的积累的经验分享。下面先进入正式的PIC单片机低功耗学习。

PIC16F184xx有3种省电模式:打盹,空闲,休眠。功耗:打盹>空闲>休眠。

打盹模式

通过减少CPU操作和存储器访问来节能,外设和系统时钟都保持运行。通过DOZEN=1来进入打盹模式,通过DOZE[2:0]寄存器确定N个周期执行一个指令。

3681ef63d8859829f4894a4c05781261.png

空闲模式

空闲模式和打盹不同之处在于,CPU和存储器均关闭。通过IDLEN=1,再执行SLEEP指令进入空闲模式。此处回顾一下第一篇时钟的内容,当执行SLEEP指令,就不再有系统时钟了,CPU停止工作;而打盹模式没有执行SLEEP指令,所以有系统时钟,CPU可以理解为处于低速模式。

0c05e467eefd8bf2b5a1e1e7bd33bb06.png

休眠模式

CPU和大部分外设被关闭,是最省电的模式。通过IDLEN=0,然后执行SLEEP指令进入休眠模式。

bc3d06280530bfb6b435620f896cfe2a.png

实战

在MCC中找了找,没有找到低功耗相关的配置选项卡,看来只能在程序中操作。在之前IO的程序中进行,时钟LFINTOSC,512分频,RA2S输出。程序如下。现象为LED闪烁两次,保持熄灭,说明进入睡眠模式。SLEEP();指令也可用asm("sleep");。

8f340a01e22a07bb3d66c2015710dce3.png

接下来测睡眠时的功耗。需要评估板做一些改动,首先割开J100,这是给MCU供电的线路。如图篮筐位置

16007f6bd0f45a8cd976d079a29a0f92.png

然后为MCU供电,并将电流表串入电路中。

27e160333b9cec460d8f5a593b50adc8.png
3c5a02ce360426220736a72fed112173.png

实际测出,在进入睡眠后功耗为29uA,手册上宣称的可是nA级别的,相差甚远。

103496de92c93ec4d3b33d13a89276c8.png

首先考虑到IO口上可能产生的电流,有连接的IO有RA0、RA1、RA2、RA3、RA4、RA5、RB4、RB6、RC2,其中RA2接LED已经配置输出高,不会产生电流;RC2连接按键,是断开的也不会产生电流;RA3是重启,有外部上拉10k电阻,在引脚为低时会产生电流,正常情况下没有,即便有也时nA级别的。这3个引脚连接保留,其他的IO连接全部割断,基本上都是和调试器连接的。如下图篮筐线全部割断。

c054c1c5561154784726a5b97c34cf2c.png

然后测量电流,令人失望的是,并没有变化。接下来考虑可能哪些外设没有关闭。检查MCC配置发现,看门狗WDT没有开,但是欠压复位BOR是开着的,将BOR关闭,测得电流为24uA,下降了一些,BOR确实有一定影响,但还有一定差距,继续排查。

eb48739eaa05cdf110a9589e5b834abf.png

仔细阅读手册,发现这段描述,在PIC16F18446中包含一个LDO,可以让IO使用最高5.5v高电压,内部使用较低电压工作。LDO肯定会有一定的静态电流的。下一段提到将VREGPM置位可以进入低功耗休眠模式。

0883a1eb6f1bf80146da9c44c4170020.png

寄存器的详细描述

7c0fd1458785cf7a972affa74b5f8273.png

程序加入VREGPM=1;之后再执行SLEEP指令。这次测得电流在1uA以下了,影响确实很大。这个结果已经到达nA级,和手册表宣称的在同一单位级了。

dd5da8033b7b71d8025916d37120ce1e.png

因为我的电流表的量程就到1uA,下面换一种方式来测量。如下面原理图

3584de432b70d2cc574bd7b3830496b7.png

测量结果为3.8mV,检测电阻R1为10kΩ,I=U/R,所以电流为380nA。

15fe2091216248b7bc181ffd72a30c44.png

在电气特性里,有看到了下面这段,对我们的测试形成了印证,VREGPM=1时进入睡眠典型功耗为0.4uA,上面实测为0.38uA;VREGPM=0时,即内部LDO打开,典型值18ua,上面实测为24uA,略高一些,但在一个数量级,并且温度和VDD电压也会有一定影响,暂不深究了。至此做低功耗应用时,最基础的最小功耗已经得到,后面再根据需求添加自己的功能和逻辑。

40e5c00876e4b97672382f00fa16767b.png

已经有一些篇幅了,并且后面还有一定内容,包括空闲和打嗝的实例,最后一些我的经验分享。我考虑在论坛上发帖篇幅还是不要太长,坛友阅读和我撰写的压力都大一些。所以本周先到这里,PIC低功耗的下半部分下周见。O(∩_∩)O

(本文摘自21ic论坛,作者:21ic网友yongruru)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值