找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机电压测量0V-100V的一个问题

查看数: 4695 | 评论数: 16 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-3-28 21:04

正文摘要:

下图是一个电压测量的代码,电压测量范围比较宽,是从0V测到100V,实际测试发现,如果不用那些if语句,让temp乘以一个固定的倍数,12V的时候测的比较准,电压越高,测量结果偏差越大,50V的时候,测量偏差已经有1.5V ...

回复

ID:883242 发表于 2023-12-13 18:13
jkluzi 发表于 2023-12-13 15:40
用switch应该也行吧

不可以,不然你写一个让大家乐一乐?
ID:879348 发表于 2023-12-13 15:54
我做过测量0-100V,并没有发现你说的如此严重的非线性问题,只需要手工校准一个系数,是不是你的硬件有问题或者软件配置ADC采样时间不符
ID:1088834 发表于 2023-12-13 15:40
用switch应该也行吧
ID:723547 发表于 2021-3-30 09:36
提供一个最简单的改正方法,新设置一个变量c,让c=e*10;,10是你的分压倍数。这样就避免了判断失误。
ID:420836 发表于 2021-3-30 08:43
条件语句错误
ID:213173 发表于 2021-3-30 05:50
yytda 发表于 2021-3-28 21:58
可当实际电压5V的时候,它并没有满足后面那些if语句的条件,为什么却能进入后面那些if语句里面呢?

由于楼主判断条件是变量e的值,符合判断条件改变的也是e的值。依次判断时就有可能前面的结果成为后面的依据而发生错误。改为if(temp<=0.14) e=temp*35;.......  或  if.......else if........else if......写法避免发生错误。
ID:883031 发表于 2021-3-29 16:14
if 。。。else if。。。
ID:213173 发表于 2021-3-29 14:33
通常要想用ACD尽量准确测量远大于单片机VCC的电压不宜只用一套分压电路,要根据实际被测电压自动换挡。而不是在算法补偿下功夫。
ID:71233 发表于 2021-3-29 08:29
上面各朋友都说得没有错
用if 和 else iif这是两种不同的结果
再例如:
前提:e==1
if(e==1)
{e=10;}
if(e==10)//上面计算的e结果会进入此条件语句进行判断
{e=100;}
上述运行结果是e=100

if(e==1)
{e=10;}
else if(e==10)
{e=100;}
上述运行结果是e=10
ID:65956 发表于 2021-3-29 08:21
你一直用if当然会出现混乱,你要用if{}else if{},意思是如果...否则....这样的条件判断逻辑才对
ID:525582 发表于 2021-3-29 07:23
谢谢啊,这个可能性很大,晚一点我试试
ID:160500 发表于 2021-3-28 22:22
你这个程序是有问题的
不能怎么使用if
要用if ... else if...
ID:702386 发表于 2021-3-28 22:06
除第一个if外,后面的if换成else if,不然可能重复换算
ID:525582 发表于 2021-3-28 21:58

可当实际电压5V的时候,它并没有满足后面那些if语句的条件,为什么却能进入后面那些if语句里面呢?
ID:897505 发表于 2021-3-28 21:53
是进制问题么?
ID:684049 发表于 2021-3-28 21:30
顺序执行了一遍

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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