0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

请问PFS122B是如何利用内部参考电压反推VDD的?

应广单片机 来源:应广单片机 2024-01-04 09:58 次阅读

在一些电池产品设计中,往往需要单片机检测电池电压的使用情况。在以往的设计中,多少设计者会利用一路AD输入口来对电池分压,然后检测分压点的电压来计算VDD的值是多少。如图所示:

56c5033e-aa2b-11ee-8b88-92fbcf53809c.png

采用这种方法计算VDD的优点是精度相对较高,缺点是会消耗静态电流和占用一个AD口。所以在后来的设计中,设计者往往直接把电池的电压接在MCU的VDD上,然后通过内部提供的一路或者多路参考电压来计算VDD。以利用内部1.2V作为一路AD输入为例,当设置VDD为AD转换参考的参考电压,那么在不同的VDD时,对1.2V参考电压转换的结果不一样。

如果AD为12位数字精度,那么VDD对应的值为 VDD= 1200*4095/AD转换值。其他的参考电压1.6V,2.0V,2.4V计算方式类似。一般普通的锂电池电压,在使用过程中的电压值会是3.0V~4.25V之间,低于3.0V会被做低压保护处理,不让用户继续使用该产品,以起到保护电池的作用。

因为PFS122B,内部具有多路的参考电压,1.2V,1.6V,2.0V,2.4V,3.0V,4.0V等。考虑到电池放电的低压情况,一般参考电压用到2.4V以下就可以了。因为当VDD都没有参考电压高时,参考电压的实际值肯定也不准了,这时已经失去了参考的意义。

为了比较一下看看PFS122B,采用哪种参考电压反推VDD的效果会更好,我做了一个实验。实验利用PFS122B一个IO口输出显示数据,其他只接VDD和GND,利用内部的参考电压来计算测试的VDD值。实验的ADC采样只是简单地做了16次短时间内求平均的方法。单次采集的数据并没有取中间值:

voidGet_16_AD (void)

{

word ad_temp;

word ad16;

byte cnt;

AD_Start=1;//Skip first ADC, can delete by your select

while(!AD_DONE)

{

nop;

}//

ad16=0;

cnt=16;

do

{

AD_Start=1;//Skip first ADC, can delete by your select

while(!AD_DONE)

{

nop;

}//

//

ad_temp = adcrh << 8 | adcrl;

ad16 += ad_temp >> 4;

// get_middle_adc_from_3();

//ad16 += adcr;8bit

.wdreset;

} while (--cnt);

adc_result=ad16 >> 4;// >> 4;

}

ADC初始化做了很多种设置:

void ad_init(void)

{

/*

$ ADCM /2, 12bit;

$ ADCC Enable, ADC;//PB7 通道

$ ADCRGC VDD; // */

$ ADCM 12bit,/8;

$ ADCC Enable, ADC;

switch(sys_mode)

{

case 0:

{

$ ADCRGC VDD,ADC_BG,BG_1V2; //

break;

}

case 1:

{

$ ADCRGC VDD,ADC_BG,BG_1V6; //

break;

}

case 2:

{

$ ADCRGC VDD,ADC_BG,BG_2V; //

break;

}

case 3:

{

$ ADCRGC VDD,ADC_BG,BG_2V4; //

break;

}

case 4:

{

$ ADCRGC 2V,ADC_VDD/4; // 目前看起来是这种设置,利用内部2V参考电压,转化1/4VDD效果更为理想。

break;

}

default:

{

$ ADCRGC VDD,ADC_BG,BG_1V2; //

break;

}

}

.delay 1600;//延时400us

}

实验照片结果比较,当AD转换的高电压为VDD时,直接采用内部1.2V作为一路输入的误差最大,2.4V作为一路输入的误差最小。但是这种效果,还是没有采用内部2V作为AD转换的参考高电压,利用1/4VDD作为输入读取的结果值更为接近实际值。

56d76790-aa2b-11ee-8b88-92fbcf53809c.jpg

利用VDD做AD转换高电压,内部1.2V作为一路输入的误差约60mv。

56ee1094-aa2b-11ee-8b88-92fbcf53809c.jpg

利用VDD做AD转换高电压,内部1.6V作为一路输入的误差约50mv。

56fe428e-aa2b-11ee-8b88-92fbcf53809c.jpg

利用VDD做AD转换高电压,内部2.0V作为一路输入的误差约40mv。

570ea4d0-aa2b-11ee-8b88-92fbcf53809c.jpg

利用VDD做AD转换高电压,内部1.2V作为一路输入的误差约30mv。

578819c8-aa2b-11ee-8b88-92fbcf53809c.jpg

利用内部2V做AD转换高电压,1/4VDD作为一路输入的误差约15mv。

57a6a654-aa2b-11ee-8b88-92fbcf53809c.jpg

这可是相当的准确了,检测误差有时在10mV以内。








审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620874
  • 电池电压
    +关注

    关注

    0

    文章

    166

    浏览量

    11397
  • VDD
    VDD
    +关注

    关注

    1

    文章

    301

    浏览量

    31913
  • GND
    GND
    +关注

    关注

    2

    文章

    512

    浏览量

    38067
  • ADC采样
    +关注

    关注

    0

    文章

    125

    浏览量

    12710
收藏 人收藏

    评论

    相关推荐

    如何烧录PFS122-MSOP10的封装

    应广有好几个型号都封装了MSOP10的封装形式,比如PMS132B,PFS122-MSOP10等。MSOP10的官方封装引脚,用烧录座在烧录器上无法直接烧录,需要转接。
    的头像 发表于 12-07 11:43 1510次阅读
    如何烧录<b class='flag-5'>PFS122</b>-MSOP10的封装

    CC2530 如何减小内部电压误差?

    CC2530使用了内部vdd/3通道,内部参考值1.25v电压,无论选用多少的分辨率,检测到的电压都是3.6-3.7v;我实际供电是用cc
    发表于 04-19 16:40

    转:FRDM-KL02改变VDD使用内部温度传感器测温例程

    FRDM-KL02改变VDD使用内部温度传感器测温例程Author:FSL_TICS_ZJJ1,例程功能描述本例程旨在使用官方的FRDM_KL02开发板,测试改变芯片VDD电压的时候,
    发表于 06-06 11:44

    转:使用kinetis芯片自测VDD电压

    本文以KL25为例,其他型号类似,讲解如何使用芯片内部的bandgap以及ADC相结合,实现对芯片VDD电压的检测,这样可以跟踪实际VDD电压
    发表于 06-06 11:47

    STM8L的ADC之测量VDD电压详解+例程

    [table][tr][td] STM8L内部含有一个12位的ADC,拥有25个输入通道,包括一个内部温度传感器,一个内部参考电压。 STM8L使用外部参考
    发表于 07-02 07:33

    利用ST MCU内部的基准参考电压监测电源电压

    大家分享交流一个方法。就是在没有其它外来参考电压,用芯片电源电压VDD作为ADC的参考电压,同时该电源电压又在一定范围内变动的情况下【这个范
    发表于 07-06 00:59

    请问ADC中NFS和PFS指的是什么

    在AD7609的手册16页,有相关图表。但不明白NFS和PFS是什么
    发表于 01-11 09:20

    应广PMS171B(3)--比较器测供电电源VDD电压

    概述应广PMS171B单片机有很实用的功能,就是可以用内部的分压电阻,Band-gap 电路提供 1.2V 参考电压,和比较器一起,测试单片机VDD
    发表于 11-16 16:32

    OM27160没有在TVDD_IN、VDD(TX)、VDD_IN2上获得电压的原因?

    在这个开发套件中,我没有在 TVDD_IN、VDD(TX)、VDD_IN2 上获得电压。我使用了配置 2,还初始化了用于初始化 Internal LD​​O 的内部寄存器。
    发表于 05-12 07:54

    VCC、VDD、VSS的区别

    VCC:C=circuit 表示电路的意思, 即接入电路的电压VDD:D=device 表示器件的意思, 即器件内部的工作电压; VSS:S=series 表示公共连接的意思,通常
    发表于 03-18 11:04 188次下载

    VCC、VDD、VSS

    VCC:C=circuit 表示电路的意思, 即接入电路的电压VDD:D=device 表示器件的意思, 即器件内部的工作电压;对于数字电路来说,VCC是电路的供电
    发表于 12-01 09:51 10次下载
    VCC、<b class='flag-5'>VDD</b>、VSS

    利用ADC量测VDD电压

    利用ADC量测VDD电压
    发表于 06-30 15:21 11次下载
    <b class='flag-5'>利用</b>ADC量测<b class='flag-5'>VDD</b><b class='flag-5'>电压</b>

    PFS122检测VDD及IO口的AD电压方法

    PFS122是应广推出的一颗,可以多次烧录的2K程序空间的带数字12位AD转换的单片机。目前以高性价比重新获得用户的喜爱,其价格优势明显,比九齐的062E的价格,可能还更具有优势。
    的头像 发表于 11-29 09:20 2259次阅读

    PFS122检测VDD及IO口的AD电压方法

    PFS122是应广推出的一颗,可以多次烧录的2K程序空间的带数字12位AD转换的单片机。目前以高性价比重新获得用户的喜爱,其价格优势明显,比九齐的062E的价格,可能还更具有优势。
    发表于 05-19 10:09 1700次阅读
    <b class='flag-5'>PFS122</b>检测<b class='flag-5'>VDD</b>及IO口的AD<b class='flag-5'>电压</b>方法

    PFS122BPFS122 MCU的主要区别

    ,由原PFS122只能由VDD做参考更改为还可以用内部其他的参考电压来做AD转换的参考。有了这样的设计后,使得在没有LDO的情况下,也更方便的可以做IO口的AD检测。
    的头像 发表于 12-22 10:03 618次阅读
    <b class='flag-5'>PFS122B</b>和<b class='flag-5'>PFS122</b> MCU的主要区别