找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3633|回复: 16
打印 上一主题 下一主题
收起左侧

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

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



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:684049 发表于 2021-3-28 21:30 | 只看该作者
顺序执行了一遍
回复

使用道具 举报

板凳
ID:897505 发表于 2021-3-28 21:53 | 只看该作者
是进制问题么?
回复

使用道具 举报

地板
ID:525582 发表于 2021-3-28 21:58 | 只看该作者

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

使用道具 举报

5#
ID:702386 发表于 2021-3-28 22:06 | 只看该作者
除第一个if外,后面的if换成else if,不然可能重复换算
回复

使用道具 举报

6#
ID:160500 发表于 2021-3-28 22:22 | 只看该作者
你这个程序是有问题的
不能怎么使用if
要用if ... else if...
回复

使用道具 举报

7#
ID:525582 发表于 2021-3-29 07:23 | 只看该作者
谢谢啊,这个可能性很大,晚一点我试试
回复

使用道具 举报

8#
ID:65956 发表于 2021-3-29 08:21 | 只看该作者
你一直用if当然会出现混乱,你要用if{}else if{},意思是如果...否则....这样的条件判断逻辑才对
回复

使用道具 举报

9#
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
回复

使用道具 举报

10#
ID:213173 发表于 2021-3-29 14:33 | 只看该作者
通常要想用ACD尽量准确测量远大于单片机VCC的电压不宜只用一套分压电路,要根据实际被测电压自动换挡。而不是在算法补偿下功夫。
回复

使用道具 举报

11#
ID:883031 发表于 2021-3-29 16:14 | 只看该作者
if 。。。else if。。。
回复

使用道具 举报

12#
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......写法避免发生错误。
回复

使用道具 举报

13#
ID:420836 发表于 2021-3-30 08:43 | 只看该作者
条件语句错误
回复

使用道具 举报

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

使用道具 举报

15#
ID:1088834 发表于 2023-12-13 15:40 | 只看该作者
用switch应该也行吧
回复

使用道具 举报

16#
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 单片机教程网

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