一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 1836|回复: 4

[其他综合] 求解,倪老师这段电压计算程序是怎么计算的

[复制链接]
发表于 2013-8-2 23:57 | 显示全部楼层 |阅读模式
本帖最后由 gw168sh 于 2013-8-3 00:13 编辑

求解,倪老师这段电压计算程序是怎么计算的呢?

uint get_ad()
{
        uint adval=0,adva2=0,adva3=0,cnt;

    for (cnt = 0; cnt < 32; cnt++) {
        GO_DONE=1;
        while(GO_DONE);
        adval=ADRESH;
        adva2=adval<<8|ADRESL;
    asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP");
    adva3+=adva2;--------这里做了32次累加
    }
    adva3>>=5;              
        return (adva3);        
}

        while(1)        {            
lednum=get_ad();        
ads=lednum*24414;    为啥要乘以24414呢?这个24414怎么算出来的呢?      
a1= ads/10000000;                    
a2=(ads/1000000)%10;               
a3=(ads/100000)%10;               
a4=(ads/10000)%10;               
disp(a1,a2,a3,a4);     

      }


发表于 2013-8-3 00:31 | 显示全部楼层
从公式看好像是基准电压
回复

使用道具 举报

发表于 2013-8-3 17:43 | 显示全部楼层
楼上正解,板卡的电压基准不同,具体的需要测量。批量生产这样是不成的呦
回复

使用道具 举报

发表于 2013-8-23 11:58 | 显示全部楼层



               原板上用的是TL431,基准电压是=2。5V

               因此:

               1LSB约为2.4414mv。

评分

参与人数 1一乐金币 +20 收起 理由
gw168sh + 20 非常感谢哈,晚上试试看。

查看全部评分

回复

使用道具 举报

发表于 2013-8-24 09:39 | 显示全部楼层
本帖最后由 倪大德 于 2013-8-24 09:47 编辑

        PM已读!简单的电压表再作说明如下:

一。
uint get_ad()
{
        uint adval=0,adva2=0,adva3=0,cnt;

    for (cnt = 0; cnt < 32; cnt++) {          //连续32次采样
        GO_DONE=1;                                 //开始AD转换
        while(GO_DONE);                           //等待AD转换结束
        adval=ADRESH;                             //读取AD转换结果
        adva2=adval<<8|ADRESL;
    asm("NOP"); asm("NOP");
    asm("NOP"); asm("NOP"); //稍加延时,保证每次转换前CHOLD为输入通道的电压电平。以使AD达到手册规定的精度
    adva3+=adva2;              //32次累加
    }
    adva3>>=5;                  //取32次均值
        return (adva3);        
}

        while(1)        {            
lednum=get_ad();        
ads=lednum*24414;        //基准TL431   1LSB约为2.4414mv   
a1= ads/10000000;                    
a2=(ads/1000000)%10;               
a3=(ads/100000)%10;               
a4=(ads/10000)%10;               
disp(a1,a2,a3,a4);     

      }

二。
       一般电压表测量电压超过基准电压,需加分压电阻,实际测量结果时要考虑分压电阻的影响。程序中也要作相应的处理。

请见原电路中的分压电阻R18和R19。如果它们分压电阻计算结果刚好为10。这样就可省去程序中对分压电阻影响的处理。

三。
    ads=lednum*24414

  

     这样处理的好处是:不仅是程序中不用小数点的运算。如果用一键盘修正24414值,就能修正AD转换的结果。不妨一试!













评分

参与人数 1一乐金币 +20 收起 理由
gw168sh + 20 非常感谢您

查看全部评分

回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-1 08:17 , Processed in 0.031563 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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