找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4437|回复: 16
收起左侧

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

  [复制链接]
ID:525582 发表于 2021-3-28 21:04 | 显示全部楼层 |阅读模式
下图是一个电压测量的代码,电压测量范围比较宽,是从0V测到100V,实际测试发现,如果不用那些if语句,让temp乘以一个固定的倍数,12V的时候测的比较准,电压越高,测量结果偏差越大,50V的时候,测量偏差已经有1.5V了,就是实际电压50V,测量结果是51.5V,然后用下面这段代码进行校正,测试结果却显示有几千伏,请问是哪里出了问题?这代码我自己感觉应该没问题,就是测试结果不正常

捕获1.JPG

回复

使用道具 举报

ID:684049 发表于 2021-3-28 21:30 | 显示全部楼层
顺序执行了一遍
回复

使用道具 举报

ID:897505 发表于 2021-3-28 21:53 | 显示全部楼层
是进制问题么?
回复

使用道具 举报

ID:525582 发表于 2021-3-28 21:58 | 显示全部楼层

可当实际电压5V的时候,它并没有满足后面那些if语句的条件,为什么却能进入后面那些if语句里面呢?
回复

使用道具 举报

ID:702386 发表于 2021-3-28 22:06 | 显示全部楼层
除第一个if外,后面的if换成else if,不然可能重复换算
回复

使用道具 举报

ID:160500 发表于 2021-3-28 22:22 | 显示全部楼层
你这个程序是有问题的
不能怎么使用if
要用if ... else if...
回复

使用道具 举报

ID:525582 发表于 2021-3-29 07:23 | 显示全部楼层
谢谢啊,这个可能性很大,晚一点我试试
回复

使用道具 举报

ID:65956 发表于 2021-3-29 08:21 | 显示全部楼层
你一直用if当然会出现混乱,你要用if{}else if{},意思是如果...否则....这样的条件判断逻辑才对
回复

使用道具 举报

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:213173 发表于 2021-3-29 14:33 | 显示全部楼层
通常要想用ACD尽量准确测量远大于单片机VCC的电压不宜只用一套分压电路,要根据实际被测电压自动换挡。而不是在算法补偿下功夫。
回复

使用道具 举报

ID:883031 发表于 2021-3-29 16:14 | 显示全部楼层
if 。。。else if。。。
回复

使用道具 举报

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:420836 发表于 2021-3-30 08:43 | 显示全部楼层
条件语句错误
回复

使用道具 举报

ID:723547 发表于 2021-3-30 09:36 | 显示全部楼层
提供一个最简单的改正方法,新设置一个变量c,让c=e*10;,10是你的分压倍数。这样就避免了判断失误。
回复

使用道具 举报

ID:1088834 发表于 2023-12-13 15:40 | 显示全部楼层
用switch应该也行吧
回复

使用道具 举报

ID:879348 发表于 2023-12-13 15:54 | 显示全部楼层
我做过测量0-100V,并没有发现你说的如此严重的非线性问题,只需要手工校准一个系数,是不是你的硬件有问题或者软件配置ADC采样时间不符
回复

使用道具 举报

17#
无效楼层,该帖已经被删除
ID:883242 发表于 2023-12-13 18:13 | 显示全部楼层
jkluzi 发表于 2023-12-13 15:40
用switch应该也行吧

不可以,不然你写一个让大家乐一乐?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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