|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
PIC低功耗系统开发过程中的一些问题。 |
作者:johnly 栏目:单片机 |
在下用16C926做的一个系统,对低功耗要求甚高。一段时间做下来,发现离要求还有一段距离。睡眠后的系统功耗还是挺高。:((这里面既有MCU的功耗也有外围电路的功耗。)每次烧写片子来试,成本实在太高了。^_^。。。。 * - 本贴最后修改时间:2003-6-25 14:48:35 修改者:johnly |
2楼: | >>参与讨论 |
作者: johnly 于 2003/6/13 14:05:00 发布:
看了精华区的贴后 于SLEEP martin 发表于 2002-1-12 18:36:10 PIC 单片机 ←返回版面 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下面的指令,也有标志位指示状态。 说得不够详尽,所以最好还是仔细看看数据手册。 |
3楼: | >>参与讨论 |
作者: johnly 于 2003/6/13 14:21:00 发布:
一点想法 看了精华区的贴后。收获不少。但还有一点细节性的东西,大家说一下。 一。进入SLEEP后,主振荡停振,和主振荡相关的模块都会停止工作,A/D .液晶驱动。看门狗等模块还是要在SLEEP指令执行之前关闭的。这样功耗才会最低。 二。关于I.O口。在16C926的DATA SHEET里,还是说到了一些。我的理解是,所有的I/O口,都有确定的接VDD或者VSS,而不能悬空。进入SLEEP前,所有的I/O应该置为输入口。接上拉或下拉。 三。对于PORTB口有内部上拉功能的应该选择不上拉。 以上是我的一点理解,请大家指正。另外有一个问题,进入SLEEP后,不用的中断依然使能,是否会消耗电流? * - 本贴最后修改时间:2003-6-25 14:52:06 修改者:johnly |
4楼: | >>参与讨论 |
作者: highend 于 2003/6/13 16:22:00 发布:
低功耗,使用低功耗MCU,不要用PIC. |
5楼: | >>参与讨论 |
作者: martin 于 2003/6/13 16:45:00 发布:
要求如何?请举出具体参数 926可以做到几个微安以内 |
6楼: | >>参与讨论 |
作者: johnly 于 2003/6/13 17:54:00 发布:
徐工 你说的几个微安应该是指MCU的功耗了。我现在的整个系统的功耗是250微安,不知道MCU的功耗是多少,没有测,我都是把电流表穿在电池里测的系统功耗,目标是整个系统功耗在50微安以内。现在用的片子不是低功耗的926、现在是把前面提到的一些方法都用上了,电流还是250微安。太高了!! * - 本贴最后修改时间:2003-6-25 14:55:32 修改者:johnly |
7楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/13 20:47:00 发布:
关闭芯片的BOD功能 再测功耗是多少。 |
8楼: | >>参与讨论 |
作者: sh_tony 于 2003/6/13 21:01:00 发布:
16LC926 你用的芯片是16C926还是16LC926,如果你做低功耗系统应该用16LC926,我用16LC926也设计了一个产品,我的功耗做到了12UA。这是本人一点体会。 首先,你要确定你所测到电流全部消耗在单片机内部。单片机不对外供电。 你可以用万用表穿在单片机的VCC脚上和GND的脚上,看从VCC流入的电流是否等于从GND流出的电流。如果相等,说明你的管脚设置没问题,如果从GND流出的电流小于从VCC流入的电流。这就说明你的管脚设置有问题。 如果你的系统有EEPROM,特别要注意与它相连的管脚(SDA,SCL)设置。 |
9楼: | >>参与讨论 |
作者: johnly 于 2003/6/16 10:48:00 发布:
:) 张工:我在烧写的时候,把看门狗,还有BOD等都关闭了。测得的电流是250UA。 我觉得可能还是在I/O口的设置上有问题。我现在的做法:进入睡眠前,把所有的口都改为输入口(包括液晶驱动的口)A B C D E F G口,其中A B C D E 断口寄存器全部清零。硬件上,没有用的口全部拉地。在唤醒的中断程序中把I/O口改为正常设置。。。。。。这样做是不是有问题? sh_tony老兄的方法不错,我也试试,不过我没有两个这样的电流表啊:(。。 我想知道的是,对于I/O口的设置,有没有一般的原则,这样的通常做法是不是最好的。 |
10楼: | >>参与讨论 |
作者: ecaibird 于 2003/6/17 9:31:00 发布:
没经验 我也在做低功耗的,奉劝楼主不要用PIC的。我也发现PIC论坛现在是越来越差了,回答问题的热心人真是少啊!! |
11楼: | >>参与讨论 |
作者: ecaibird 于 2003/6/17 9:32:00 发布:
用日立的 我用日立做到10微安以内。呵呵呵 。。。。 |
12楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/17 11:10:00 发布:
你行啊,一菜 不过10uA不算什么,随便找颗PIC都能实现。 每个系统都有特定的功能实现,不考虑这个前提,随手比一个指标,那是在瞎耽误工夫。 不过你还是行的,不算菜了(可以改名了)。 |
13楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/17 11:16:00 发布:
说正事 johnly,你的线路板上有电阻,对吧?有空用万用表量每个电阻上的电压降,看看那些电阻在耗电,然后想想他需要耗电吗?如果不需要,怎样消除他的耗电? 等你做到每个电阻上的压将都为0但系统功耗仍偏大,再发帖。 切记:最低功耗设计并不要求所有IO引脚为输入模式。 |
14楼: | >>参与讨论 |
作者: sosomj 于 2003/6/17 11:39:00 发布:
我的一点看法. 这种情况我认为一个系统里的功耗大多是外围器件产生的,单片机的SLEEP的功耗是比较的小的,我用的PIC16C926要开WDT,LCD休眠的时候还要显示,外围还有一些消耗电流的电阻,也有时钟,EEPRO等器件在工作,这个冬冬还没有经过全面的分析和参数选择,休眠时的整个系统的功耗也就是60到70微安的. 开始作的时候系统的功耗还是4个毫安呢,改进一下外围电路的参数,关掉b口上拉,不用的I/O口设为输入,等等的措施,就变成了60到70毫安的功耗了, 随便的说说的,单片机可能不是你的系统的最大的消耗品,很多的时候可能一个电阻的消耗就会超过单片机很多倍的. |
15楼: | >>参与讨论 |
作者: johnly 于 2003/6/17 11:55:00 发布:
多谢各位 楼上二位好建议,十分赞同! * - 本贴最后修改时间:2003-6-17 13:52:03 修改者:johnly |
16楼: | >>参与讨论 |
作者: johnly 于 2003/6/18 18:00:00 发布:
各位 现在系统功耗70微安,(睡眠时TMR1接外部晶振工作。) * - 本贴最后修改时间:2003-6-25 14:58:46 修改者:johnly |
17楼: | >>参与讨论 |
作者: johnly 于 2003/6/19 15:08:00 发布:
这样是不是好点了 现在地功耗是。。。20微安。;))在这里向前面回帖的网友表示感谢!! 不过离martin说的几个微安还有好大的差距。。:)) 还有一点疑问,对于没有用的LCD的驱动的输出口,软硬件上如何处理?比如G口 F 口等。中断使能位睡眠时依然使能是否会消耗电流? * - 本贴最后修改时间:2003-6-25 15:00:22 修改者:johnly |
18楼: | >>参与讨论 |
作者: ecaibird 于 2003/6/20 10:35:00 发布:
别指望了 我看楼主要失望了,,想做到10微安以内我看是没什么指望了。 |
19楼: | >>参与讨论 |
作者: ecaibird 于 2003/6/20 10:39:00 发布:
有一招 你把所有没有用的液晶驱动口连到一起,但不接地也不接高,试试看 我看PIC的人都该换换了。。:)其实张先生你还是不错的。是PIC太S了!! |
20楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/20 20:40:00 发布:
ecai鸟你也不错,但不要出损招 把所有没有用的液晶驱动口连到一起?你要别人死翘翘? 你的低功耗设计是上层次了,有空再研究研究LCD驱动原理吧。 |
21楼: | >>参与讨论 |
作者: sosomj 于 2003/6/23 11:12:00 发布:
johnly,可以把你的心得说说吗? 我的冬冬和你的比较的相似,可是功耗好像比你的要大许多,说说看,指点一下了. |
22楼: | >>参与讨论 |
作者: johnly 于 2003/6/23 11:41:00 发布:
TO:ALL 我现在地系统功耗是18微安。。呵呵 有几点经过验证的: 一。不是所有的口都要设置成输入的(张明峰),,有些口设置成输出可能功耗更低,比如一个口接LED的,睡眠时就可以设置成输出低。 二。单片机SLEEP功耗很低,可能一个电阻的功耗就超过单片机了(SOSOMI) 我前面的大电流确实来自外围电路的电阻。 三。把没有用的LCD驱动口连到一起,既不接地也不接高(ecaibird),我试着做了一下,发现电流确实小了一点!!!:)但听张SIR的意思好像有问题,我看了一下DATASHEET,没有发现问题。是不是可以请张SIR解释一下这个问题。为什么电流会有下降?不可以这样做的理论基础又在那里? 四。我看到TI的430做的一个表系统,静态功耗只有3个微安!!!如果是指系统功耗的话,我就太佩服了!!不知道是不是吹得。。。:))不知道我的这个926的系统能不能做到这样???现在18微安,要下降发现已经很难了。 |
23楼: | >>参与讨论 |
作者: sosomj 于 2003/6/23 11:58:00 发布:
我的系统是这样的. 我的系统里有时钟,用存储器,还有pic16lc926, 这三个东西时在休眠的时候还要工作的. 应为没有外接晶振,所以看门狗打开, 现在我得功耗还是休眠时是60微安左右,调节不下去了 我的目的是在30微安左右就可以了,可是现在我不知道具体要怎样才可以降低我的系统的功耗. 在休眠的时候,到底一个I/O口是要设置为输入还是输出,到底是要置高还是置低,有什么讲究吗? 补充一下:我得系统在不用MCU时有1微安的功耗. 希望高手来指点.多谢! |
24楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/23 16:59:00 发布:
几点 1) 取决于LCD驱动的具体方式,COM/SEG上的电平在同一时刻是不同的。如果把所有未用到的LCD脚连在一起,很显然电流就要流进流出。 2)18uA的功耗下,系统状态如何? WDT 打开还是关闭?如果打开,溢出时间多长? TMR1 是否工作在外部32KHZ振荡? ADC 模块是否关闭(ADCON0.bit0 = 0)? LCD 偏置电压如何产生? LCD Sleep时,显示模块是否工作? Vdd 几伏? 芯片 是否为窗口片?如果是窗口片是否用黑纸把窗口盖严实? |
25楼: | >>参与讨论 |
作者: sosomj 于 2003/6/23 17:56:00 发布:
我接. WDT 打开,溢出时间设置为最大 TMR1 否,暂时停用 ADC 模块是否关闭(ADCON0.bit0 = 0)?,是 LCD 内部电泵产生 LCD Sleep时,显示模块是否工作?,是 Vdd 几伏?2.5-3.0v 芯片 是否为窗口片?如果是窗口片是否用黑纸把窗口盖严实? 芯片为otp. 张大虾估算一下功耗吧?30微安可能达到吗? |
26楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/23 21:25:00 发布:
mj Sleep时若LCD还要保持常亮,估计功耗会偏大,因为产生LCD显示偏压的内部充电泵一直在工作,LCD屏本身也要耗电。 1)试一下Sleep前LCD显示模块关闭,看看能省多少电流?在其他客户的设计中Sleep时关闭LCD功耗可以降到10uA以下; 2)LCD是否可以不用常显。比如说,按键唤醒电表,然后维持LCD显示若干时间;或持续显示1秒,关闭3秒,等等。(由Sleep+WDT唤醒实现定时) 3)选择的926芯片一定要是低功耗版本的。 |
27楼: | >>参与讨论 |
作者: johnly 于 2003/6/24 10:30:00 发布:
zhang sir 我的: WDT 关闭 TMR1 SLEEP 时关闭 ADC 模块关闭(ADCON0.bit0 = 0)? LCD 偏置电压内部泵产生 LCD Sleep时,显示模块不工作 Vdd 2.5V-4V 芯片 PIC161C926地功耗版本OTP BOD 功能关闭 没有用的普通IO口接地,设置输入口 使用的IO口视外围电路具体情况,SLEEP时设置成输入或者输出,原则是消耗电流最低 没有使用的带有液晶驱动能力的IO口悬空,SLEEP时设置为输出低电平 这样的系统功耗是8微安,但目标板一定要放在电脑机箱旁边或者放在手里!!!!!我ft....:(( 如果放到其他地方,功耗马上变成80微安。。:(((。。。。。。 是何道理!!难道是外围磁场的影响??如何解决??!!呵呵呵。。。 |
28楼: | >>参与讨论 |
作者: ecaibird 于 2003/6/24 14:16:00 发布:
johnly 用PIC做到8微安已经可以了!还想什么呢?解决外围磁场干扰的办法是加屏蔽罩。 |
29楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/24 17:34:00 发布:
johnly 看看Sleep时是否有引脚处于输入高阻且浮空状态。 “没有使用的带有液晶驱动能力的IO口悬空,SLEEP时设置为输出低电平” -液晶引脚是无法设成输出态的,作为数字口只能输入。可能问题在这里。 |
30楼: | >>参与讨论 |
作者: Micropic 于 2003/6/25 10:51:00 发布:
好贴 真是长知识!一口气看完,以前也做过低功耗,但是很失败。 好贴 顶! |
31楼: | >>参与讨论 |
作者: johnly 于 2003/6/25 16:40:00 发布:
这样 讲得对。这样做的: 硬件上,所有没有使用的IO拉地 软件上,睡眠之前,设置好LCDSE寄存器,选择使用的SEG/COM.没有使用的LCD驱动口在方向寄存器中设置为输入。端口寄存器清零。 比如使用了RF0-RF3为LCD驱动口 MOVLW B'11110000' MOVWF TRISF ....... CLRF PORTF ....... 经过这样改动,系统静态功耗为1。8微安 其中:MCU所有模块功能全部关闭 外部无EEPROM电路 未加电源检测电路 |
32楼: | >>参与讨论 |
作者: 电子小妹 于 2003/6/25 16:57:00 发布:
尽量减少外围功耗,如果做的好的话可达到微安 |
33楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/25 17:09:00 发布:
祝贺johnly的成功 - 1.8uA的静态功耗 低功耗的设计关键在与你对设计系统的深入理解,在加上一些软件/硬件的技巧,绝对不是唯芯片论,认为只有xxx芯片才能实现低功耗。芯片之间当然有差别,但相同档次的芯片间休眠时的功耗差别不大。 听多了“拉不出屎即马桶无吸力”的论调,也就懒得和别人争论。但如果大家诚心讨论技术问题,技术上没有先入为主的偏见,我也会乐于参加。 |
34楼: | >>参与讨论 |
作者: johnly 于 2003/6/26 9:56:00 发布:
all 谢谢大家的帮忙,使我节省了许多的开发时间。 |
35楼: | >>参与讨论 |
作者: cason 于 2003/6/26 12:29:00 发布:
用I/O直接作为电源,需要时开启 |
36楼: | >>参与讨论 |
作者: Micropic 于 2003/6/26 14:45:00 发布:
johnly 如果外围电路上加EEPROM的话,就要注意了,可能电流要大点。 |
37楼: | >>参与讨论 |
作者: sqhuang 于 2003/6/26 20:04:00 发布:
我正准备用16C923做一个产品,帮我估计一下可以去到多低... 我的系统与你们的不太一样,在睡眠时LCD也必须亮着,因为有实时时钟功能: PIC16C923 3V供电 WDT OFF 按键唤醒 具有实时时钟,用TIMER1外接晶体产生 LCD需要常亮 输出只有LED之类的东西,没有其他外为的IC了. 请问这样一个系统在睡眠时最低可以做到多少功耗? |
38楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/26 21:19:00 发布:
楼上估计15-20uA左右 一般不会超过30uA。但是,千万不要用923,改用925/926。 |
39楼: | >>参与讨论 |
作者: wuyingjie 于 2003/6/27 4:54:00 发布:
好热闹 我是打定用PIC的,除了价钱高了点。我们做技术的,只要市场认可,不必给自己定很高的指标,快速、可靠、低廉是市场要求的,如果有技术问题,大家交流是很好的,但现在闹得有点出格了。张先生似乎有些沉不住气,您不必太在意个别人的不合理意见,有多数人肯定就行啦! |
40楼: | >>参与讨论 |
作者: sqhuang 于 2003/6/27 9:15:00 发布:
用16C923有什么问题? 16C923和16C925都能满足我的系统的要求,只是925多了ADC,对我没有用. 这两款中哪一个更便宜些? |
41楼: | >>参与讨论 |
作者: johnly 于 2003/6/27 9:25:00 发布:
楼上的 我看你的系统这样设计有问题,当睡眠时,LCD虽然可以继续显示,但却不能实时显示时间。这一点你考虑了吗? |
42楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/27 9:33:00 发布:
923/924 vs 925/926 925/926为新设计,对低功耗专门做了优化。价钱也比923/924便宜。sqhuang你没有理由不用吧? 谢谢wuyingjie同志的关心和安慰。我只是对一些偏颇的观点感到可笑,逗逗他们而已,多数情形下是一笑了之。 此帖的情形在客户中有代表性,希望通过这些讨论让大家多掌握些方法技巧,多一些对问题的了解。 |
43楼: | >>参与讨论 |
作者: 张明峰 于 2003/6/27 9:39:00 发布:
johnly,TMR1溢出可以唤醒单片机 可以每隔1s唤醒单片机,唤醒后更新显示内容,然后休眠。 建议此类设计要重点解决的是主振荡器的起振问题。在唤醒后主振必须快速可靠地建立振荡,优先考虑外部RC振荡,其次用陶瓷谐振器,用晶体振荡必须仔细选择晶体品质和外部振荡移相电容。 |
44楼: | >>参与讨论 |
作者: sqhuang 于 2003/6/27 13:58:00 发布:
多谢张先生,明白了!那我会选925! 顺便说一句,要是925/926有FLASH工艺的就更好了! |
45楼: | >>参与讨论 |
作者: louis.liu 于 2003/6/28 17:23:00 发布:
十几微安的电流早就有人用过 早就有人用16LC926作出12-13uA睡眠模式的功耗了。你用空板实验就可以依次测出各部分的功耗了。 |
46楼: | >>参与讨论 |
作者: zhjun 于 2003/7/1 6:15:00 发布:
我得一点经验。。。 没用的端口应该设置成输出或者直接连到VCC或GND并设成输入,关闭其他万不设备,如BOD,比较器等,推荐使用MSP430,开发容易,一块JTAG板就搞定。 |
47楼: | >>参与讨论 |
作者: dramatic 于 2004/3/4 14:23:00 发布:
收获不少,能提一个菜鸟问题吗? 谢谢各位大哥的发言,让我懂了不少,我想问问侧系统的功耗是直接测源地间电流吗?多谢指点。 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |