完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我正在做一个基于PIC16F616的低功耗单元(我得到与PIC16F685类似的结果)。它监控一个外部输入,如果输入显示一个特定的模式,设备将“跳闸”-指示故障并关闭。电源电压3.5V,外部LP振荡器,没有引脚“浮动”,除了我用于ADC的一个引脚,一个具有内部上拉(和外部开关接地)的引脚。它使用ADC的RC时钟源每20个处理器周期进行一次ADC转换。大约20uA,但是发现我实际上已经接近90uA。我想这是因为ADC的活动,我决定把注意力集中在跳闸状态下的电流消耗上,但是那仍然是90uA。然后我在一个“范围”上看了看LP振荡器,也许它被过度驱动了,并且不知何故燃烧过多的电流。振荡器设计的PIC应用说明之一是观察振荡器从睡眠中醒来所需要的时间。因此,我编写了一些代码,这些代码可以在我的外部开关接地时休眠,并且在我的外部开关不接地时以紧凑的循环运行:我的_u CONFIG是_LP_OSC&_WDT_OFF&_PWRTE_ON&_MCLRE_ON&_CP_ON&_BOREN_OFF&_IOSCFS_4MHZoption是b’0111111 11。在端口A上启用弱上拉让我吃惊的是这个代码的电流消耗总是89uA——与开关是开还是关无关。当开关打开时,通过开关的电流是89uA(对于弱上拉是可信的;数据表显示50到400uA,通常在5伏时为250 UA。但是当开关断开时,电流流向哪里?正如所预期的,当开关断开时晶体振荡器正在运行,而当开关接通时晶体振荡器没有运行。因此我决定探索电流来自哪里。我没有关掉ADC,因为数据表D028建议ADC应该典型地燃烧0.36uA,最大值1.9u。当没有进行转换时。但是在进行BCF ADCON0时,在Osc_Test之前的ADON将电流消耗改变为21uA,开关断开,振荡器运行,89uA接通,振荡器停止。谁能解释我所看到的,或者我应该做进一步的测试?还有(更重要的)我怎么可能接近20uA的电流消耗,鉴于我采样ADC如此频繁,我不想继续打开和关闭它?欢迎任何评论,丹麦人
|
|
相关推荐
19个回答
|
|
|
你没有任何输入引脚浮动,我想我不确定如果WPRTE on将吸引一些权力,我记得博尔…
|
|
|
|
|
|
没有销钉浮动。我刚才试过PrtTeYOFF,这没什么区别。(64毫秒上电延迟振荡器应该,我们希望,只有运行后不久,上电)。但感谢这些建议…-丹麦
|
|
|
|
|
|
ADC有自动修车功能吗?
|
|
|
|
|
|
禁用弱拉,并将引脚设置为低输出。设置与弱拉起,并作为一个输入时,你想检查按钮。
|
|
|
|
|
|
在这张照片将没有汽车(我认为特征是PIC24较大)。我还没有尝试禁用自动把这个简单的测试回路,但是这样做,我的主要代码和重新启用轮询几毫秒一次没有区别。我试着禁用它通过清除仅设置点在WPUA也通过改变option_reg到0xFF。我发现它有导致ADC差不多90微安的电流从两个测试例供应流很奇怪:开关低,PIC睡觉(振荡器停止)。所有的电流通过开关(利用二电表拉开关引脚低代替开关测量)开关高,32khz振荡器运行,PIC执行紧环否则什么都不做。而有了2例烧伤导致ADC预期20 UA -丹麦
|
|
|
|
|
|
数据表通常有每个外围设备绘制的列表。
|
|
|
|
|
|
据我所知,您的PIC16F616带有3.5伏的VDD,大约90uA,ADC模块打开,20uA关闭。数据表上说,ADC应该增加1.9uA的最大值。比较器VREF模块最大值为72uA,所以当ADC打开时,请检查是否关闭。测量低电平电流可能很棘手。请确保ICSP接口与PIC16F616断开。您可能需要验证w你知道通过为PIC16F616建立一个最小电路,它将所有未使用的GPIO引脚连接到地上。您的测试固件不配置任何GPIO引脚作为输出。它所做的就是打开ADC模块大约60秒,然后关掉大约60秒。这应该显示数据表中描述的当前负载。我已经用PIC16F690完成了,并且发现数据表中的数字与测试中的PIC匹配。
|
|
|
|
|
|
ICSP/ICD没有连接。这是传统的“烧毁和崩溃”。VRCON被用来检查电池电压,设置为B’010000’,但是我确定将它设置回B’00000000’,然后ADCON0设置为B’0000000’1’;Ra0=AN0上的感测引脚,左义已做了更多的测试。我做了一个简单的循环,循环通过4个状态,在每个状态坐30秒。我有一个电压表在我的测试引脚,和一个电流表在总电路板电流状态1:ADC上,测试引脚输入与上拉。板电流=90 UA,电压表表示3.5 VSTATE 2:ADC ON,测试引脚输出低。板电流=90 UA,电压表表示0 VSTATE 3:ADC断开,测试引脚输入上拉。板电流=20 UA,电压表表示3.5 VSTATE 4:ADC断开,测试引脚输出低。板电流=20uA,伏特计表示0VAnd,然后我把伏特计换成安培计接地。状态1:ADC接通,上拉测试引脚输入。板电流=183 UA,I/O引脚电流94 UASTATE 2:ADC ON,测试引脚输出低。板电流= 90 UA,I/O引脚电流0 UASTATE 3:ADC关闭,测试引脚输入上拉。板电流= 114 UA,I/O引脚电流94 UASTATE 4:ADC关闭,测试引脚输出低。板电流=20uA,I/O引脚电流0uASo,ADC-on电流接近弱上拉电流可能只是一个巧合。我现在试着在OSCOUT上加一个串联电阻器,以免过驱动晶体,看这是否是这个神秘电流的原因。我已经尝试过10k到1M范围内的值,在室温下,尽管OscIn的振幅下降到1.0V rms,但是电源电压下降到2.0V,我仍然会振荡和从睡眠中启动。(微芯片应用注意事项TB097选择220K)。但即使是1Meg,我仍然能获得ADC的神秘电流。接下来呢?PIC16F616没有错误页面,但我注意到,PIC16(L)F72X有一个关于ADC掉电的错误项:1.1ADC在睡眠中断电。如果设备处于睡眠状态并且ADC中断被禁用,ADC模块在转换后不正确地掉电。正确的操作是,如果设备处于休眠状态,并且ADC中断被禁用,则在转换完成后关闭ADC。所以我不明白为什么它应该是相关的。-丹麦
|
|
|
|
|
|
你试过选择ADC的另一个时钟源吗?不是它自己的RC振荡器吗?可能是专用ADC RC时钟消耗过多的电源,ADC本身还行吗?
|
|
|
|
|
|
嗨,尼古拉斯波,这是个公平的问题。我使用ADC的RC振荡器的原因是PIC运行速度太慢(32.768千赫)的处理器时钟将被使用。(数据表15-12说ADC时钟周期必须在1.6到9.0us之间,而32.768kHz相当于30.5us)。我可以试着从它的内部4/8MHz RC振荡器运行PIC并使用它作为ADC源,看看我是否可以测量ADC之间的电流消耗差异但是,除非我能够在大多数时间里用32k晶体作为Timer1的振荡器,PIC处于睡眠状态,来获得我想要的采样间隔,否则这对我的特定应用可能没有帮助。我确实需要低功耗操作和无休眠,处理器将在3 V和4 MHz ItoSc下典型地燃烧360 UA。-丹麦
|
|
|
|
|
|
到目前为止,您发布的代码不是一个完整的、可构建的示例。我怀疑您打开了FixedVol.Reference,这可能是您看到比预期更流行的原因。通过六种可能的功率状态循环PIC16F616。MLCR必须用一个10K电阻器拉上VDD,其他GPIO管脚必须连接到VSS。请试用这个代码,看看电流是否接近数据表的建议。
|
|
|
|
|
|
你可以尝试把ADC时钟转换成RC振荡器,只用于转换时间。通常,简单的RC振荡器具有非常短的启动时间。ADC RC的速度几乎是一个高于CPU时钟的顺序。这就是为什么在ADC时钟切换之后,ADCRC振荡器将在下一个指令中运行的原因。因此,我认为有可能实现这种操作模式:睡眠,直到需要新的ADC阅读。ADC RC关闭。ADC即将被激活。禁用ADC中断。ADC打开。将ADC时钟转换为ADC RC。设置GO位开始转换。清除GO位以中止转换。此程序用于在时钟切换后初始化ADC,以中和可能的时钟切换故障,而不关闭ADC。通过设置GO位开始转换。我认为这里没有必要去睡觉,因为速度差:ADC需要大约12TAD,大约是12/250000=48。当CPU运行在32.768 kHz时,48秒的时间等于指令周期的0.4。结果将在下一个指令周期中准备就绪。我认为不需要AD_GO位检查。在处理结果之后,将ADC时钟源改为系统时钟,清除AD_GO位,以确保ADC在可能的时钟切换故障之后停止。去睡觉吧。
|
|
|
|
|
|
你好,丹1138和尼古拉斯坡,谢谢你的建议。恐怕今天我被安排了其他任务,所以我必须在周一回到这里。丹:看你的代码,我注意到你实际上把所有的I/O都作为输出(clrf TRISA,clrf TRISC)而不是输入。一秒钟对我来说,注意dmm读数有点紧,所以我可能需要调整你的代码。我还将添加ADC是使用Vdd作为参考的状态。Nikolay_Po:在转换之间关闭ADC可能是第一批原型的解决方案,虽然它没有解释为什么当前使用Vdd时消耗很高(当我阅读数据表时将建议使用其他的)。但是,正如我在第一篇文章中所说,我让ADC大约每读20条处理器指令,所以再用完20条指令中的两条,真的会影响我对这些读数的处理!对于那些试图打开/关闭ADC的人,我应该指出,ADC只有在RC模式下设置GO的一个指令之后才开始转换——这是为了允许处理器在你这样做的地方休眠,以获得尽可能低的噪声。所以需要的顺序是:丹麦
|
|
|
|
|
|
丹:只是快速运行一下你的测试代码,电流从来没有下降到90uA以下,在180uA达到峰值,每6次一个时间单位,而我通常可以在ADC关闭的情况下将电流降到20uA。就像我说的,我周一必须进一步研究这一点。-丹麦语。
|
|
|
|
|
|
看一下数据表http://ww1.micro..com/...n/DeviceDoc/41288F.pdf典型环境的最大HFINTOSC启动时间低于12us。这是大约1/200或您的采样周期。可能会更有效地运行CPU在MHz频率CPU仅15US,而不是一直运行在327 68赫兹?让CPU大部分时间睡觉,以最高可能的速度运行ADC。
|
|
|
|
|
|
你是对的。在我发布的代码中有几个bug。在调试时,我抽取了我唯一的PIC16F616,但是PIC16F690非常相似,所以我使用那个目标找到了bug,然后修复了PIC16F616的源代码。尝试一下:
|
|
|
|
|
|
HI DAN1138I不得不切换到PIC16F685,因为我通过PIC16F616原型到“生产部门”,因为我们需要在圣诞节关机之前得到一批这样的产品。当然PIC16F685更接近于您所设计的PIC16F690。这是我的结果:2 UA;状态1:所有MODU。LES关闭,断电,启用WDT总电流:7.15UA2 UA;状态2:ADC ON,断电,WDT使能总电流:7.15UA+0.36UA96 UA;状态3:ADC和FVR ON,断电,WDT使能总电流:7.15UA+(未知)+0.36UA96 UA;状态4:FVR ON,断电,WDT使能总电流:7.15UA+(UNKNO)WN)18 UA;状态5:所有模块关闭,通电,WDT使能总电流:22.00 UA82UA;状态6:上电,上电,WDT使能总电流:22.00 UA+0.36UA176UA;状态7:ADC和FVR ON,通电,WDT使能总电流:27.00 UA+(未知)+0.36UA112UA;状态8:FVR on,上电,WDT ENABLE总电流:22.00 UA+(未知)状态6是我如何使用该系统-并且我仍然比我预期的要高得多(从我的初始查询的90 UA的10 UA下降与我在PIC16F616和PIC16F685上比较我的代码的测量结果)相一致。-丹麦
|
|
|
|
|
|
我看到的是和你一样的东西。当不睡觉的时候,IDD和ADC的差距不大。当转换正在运行或停止时,它似乎会产生相同的电流。这是我在PIC16F690上使用的代码:请参阅所测量的IPD/IDD值的注释。
|
|
|
|
|
|
嗨,dan1138,你的最新代码和我要测量的代码之间有细微的差别。你的状态2/6是“ADC开和运行”,其中ADC快用完了,处理器应该睡觉。在每次转换结束时,它醒来,以便开始另一个转换。状态2/6是“ADC导通但不运行”,即ADC在过去运行过一次转换到完成,然后应该按照表15.4行D028进入低功率状态。现在不是跑步的时间。-丹麦
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1123浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:31 , Processed in 1.249240 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4386