找回密码
 注册
关于网站域名变更的通知
查看: 368|回复: 1
打印 上一主题 下一主题

如何降低PIC单片机的功耗?

[复制链接]
  • TA的每日心情
    开心
    2019-11-29 15:37
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    跳转到指定楼层
    1#
    发表于 2019-11-25 18:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    由于项目使用电池供电,所以功耗问题显得非常重要。根据数据手册以及网络上的资料,影响单片机功耗主要由以下几个因素:
    1:所有 I/O 引脚保持为高阻输入高点平或低电平
    2:关闭比较器和 CVref(可编程偏上参考电压)、WTDT1OSCBOR(欠压复位)等
    3PORTB 片内弱上拉
    4:所有不用的模块全部关闭,在用到时再打开
    5MCLR 引脚必须处于逻辑高电平
    PIC 单片机在执行 SLEEP 指令后进入睡眠省电模式。进入 SLEEP 模式后,主振荡停止,如果看门狗在烧写时打开了,看门狗定时器将被清并保持运行。I/O 口,周边模块和内部 RAM 将保持原来状态,所以如果要求睡眠后有很低功耗,应该在进入 SLEEP 前把 IO 口置为高阻抗的输入状态,不用的模块也要关闭。另有些周边模块与主时钟有关,如在异步模式下的 USART,将不工作。
    唤醒 SLEEP 的条件有很多,如 IO 口电平变化,AD 转换结束,外部复位、看门狗溢出等,具体请参考数据手册。
    当执行 SLEEP 指令时,PC+1 的指令被预取指,当器件被一个中断条件唤醒时(这个中断的应是已使能的),如果 GIE(全局中断使能位)为 0,器件将继续执行 SLEEP 指令下面的指令。如果 GIE 1,器件将执行已预取的 PC+1 指令后跳到 0004H 的中断入口。所以建议 SLEEP 后面紧跟着的一条指令最好是个 NOP
    外部手动复位 MCLR 将唤醒器件并 RESET,表示状态的标志位含义详见数据手册。
    看门狗定时器在 SLEEP 下溢出将唤醒器件,然后执行 SLEEP 下面的指令,也有标志位指示状态。
    进入 SLEEP 后,主振荡停振,和主振荡相关的模块都会停止工作,A/D 。液晶驱动。看门狗等模块还是要在 SLEEP 指令执行之前关闭的。这样功耗才会最低。
    关于 I.O 口。在 16C926 DATA SHEET 里,还是说到了一些。所有的 I/O 口,都有确定的接 VDD 或者 VSS,而不能悬空。进入 SLEEP 前,所有的 I/O 应该置为输入口,接上拉或下拉。
    对于 PORTB 口有内部上拉功能的应该选择不上拉。
    这个项目就是因为没有关闭 BOR 在休眠时电流达到 50UA 而搞了近一周的时间才发现问题。
    下面是一位网友的测试数据:
    测试条件:PIC16F676 使用内部 4MHzRC 振荡,电源电压 5V,测试在睡眠下的消耗电流
    单片机在外部 IO 口设置成输入并有固定电平的情况下,程序进入一个 NOP 指令和跳转指令的死循环后耗电约 1.26mA
    1.SLEEP 之后:WDT 开并 256 分频,每 2.3 秒左右唤醒一次,所有 IO 口为数字输入口,直接接高电平或低电平。5V0.159mA,主要配置:_INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _BODEN
    2. 上面的程序没动,只是配置& _BODEN_OFF,电流降为 8.5μA,其它配置变化对电流消耗影响不大,WDT 开与不开只差 0.1μA,可见 BROWN OUT DOWN 功能是个耗电大户。
    3. 上面的配置、程序没动,所有 IO 输入口悬空,结果电流变为 0.8-1mA,以上均没开电平变化中断,而且手接近单片机电流变的更大。可见虽然 IO 口看似没有吸收电流,但干扰电平引起单片机内部比较器频繁翻转的电流可以说很惊人。
    4. 以上配置,仅将 WDT 分频比改为 1:1,各 IO 口仍然接固定电平,此时单片机 WDT 约每 1.8mS 唤醒一次,电流为 8.8μA,可见 RC 的唤醒很省电。
    5. 以上配置,WDT1:256 分频,将所有 IO 口设置成输出,并输出低电平,IO 口不接任何负载,结果电流为 9.5μA,与输入相比多了 1μA。可见 IO 口的驱动也是要能量的。
    6. 以上配置,WDT1:256,各 AD 输入口设置成 AD 输入,其它设置成 IO 输入,均接固定电平,ADON 1GO 为零,此时 AD 模块开启,转换未开始,转换时钟采用系统时钟的 1/8,电流 8.8μA 基本无变化,转换时钟采用 AD 独立 RC 振荡,电流仍为 8.8μA,独立 RC 振荡,GO 1,转换完成后继续 AD 转换,电流为 9.2μA,期间没有空余采样电容的充电时间,可见 AD 转换并不怎么耗电。
    7. 关闭 AD,开启 RA 口的弱上拉,有弱上拉的 IO 悬空,WDT 1:1,电流 8.8μA,将弱上拉的 IO 口其中一脚接地,电流猛增至 212.4μA,换算下来一个弱上拉相当于一个 24KΩ左右的电阻。
    综上所述,耗电大户有两个:第一大户是悬空的输入脚,第二大户为弱上拉时 IO 口接地。第三大户为 BROWN OUT DOWN RESET(电压过低复位)。若要省电的话不妨以此参考。此次试验是单片机没有任何外围电路的情况下测得,当然外围电路比较复杂,设计省电模式其它电路的耗电也要考虑。若要非常省电,那么每个功能是否开启都是锱珠必较的。

      u8 m+ r( @) S: O
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-27 16:26 , Processed in 0.093750 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表