找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机电压表误差校准怎么处理

[复制链接]
跳转到指定楼层
楼主
ID:705846 发表于 2024-12-1 21:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在校准电压误差时时我想这样处理的。
基准电压20伏, 如果电压表显示大于20伏,我就在ADC 结果内减去误差数。
如果电压表显示小于20伏,我就在ADC结果内加上误差数。

从而达到校准电压表的目的。


请问在实际存储这个误差数时,我如何存储正或者时负数呢。或者大家用的其它办法。谢谢大家指教。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:434018 发表于 2024-12-2 02:30 | 只看该作者
s bit sxxx xxxx
正数 0000 0000 = 0
负数 1000 0000 =-1
回复

使用道具 举报

板凳
ID:879348 发表于 2024-12-2 08:07 | 只看该作者
用指针强制转换即可,比如一个浮点数,你用unsigned char指针指向他的地址,就可以提取4bytes出来存储,同理用浮点指针指向这个地址,就可以取出浮点数
回复

使用道具 举报

地板
ID:92781 发表于 2024-12-2 08:36 | 只看该作者
参考数据类型,一般来说直接用有符号的数值就行了,定义数值类型的时候不加unsigned。
C语言的数值类型如下:
int -2147483648至2147483647
long -2147483648至2147483647
long long的最大值:9223372036854775807至-9223372036854775808
float -3.4 x 10^(-38)至 3.4 x 10^(+38)
double -1.7 x 10^(-308)至 1.7 x 10^(+308)
short -32768至32768
char -128至127
unsigned char 0至255
unsigned int 0至4294967295
unsigned short 0至65535
unsigned long 0至4294967295
unsigned long long 0至18446744073709551615
需要注意的是,大多数8位单片机C语言里面没有longlong这个数据类型,而且int=short,

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:1034262 发表于 2024-12-3 12:30 | 只看该作者
线性校准,乘一个校准系数。
回复

使用道具 举报

6#
ID:401564 发表于 2024-12-6 12:52 | 只看该作者
先看你是怎么使用这些数据的,再根据单片机片上的资源来决定怎么做
如果是用STC的8051这样的,片上资源是够用的,直接上float数据,如果有数码管显示之类的,再强制转换就可以了
如果片上资源不够用,又要求效率之类的,可以直接处理ADC数字量结果,也就是int型数据,而不计算实际电压
比如,你20.00V的ADC数字结果是2000,ADC的数量是1550,那就只针对这两个数制进行处理
而并不需要先换算成实际电压再处理
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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