问答

汇集网友智慧,解决技术难题

21ic问答首页 - 单片机ADC检测电压怎样校准(电压标定)

单片机ADC检测电压怎样校准(电压标定)

abc痕迹2022-02-16
请问下,各位老大,单片机用ADC去检测电压,由于精度问题,怎样做电压校准。比如,检测一个锂电池的电压满电是12V电量4个LED,11.75V点亮3个LED,11.35V点亮2个LED,10.65V点亮1个LED,9.6V判断为低电压自动关断。检测精度为+/-0.01V。怎样去校准这几个电压点,以51单片机为例。
谢谢!!!
回答 +关注 20
10238人浏览 15人回答问题 分享 举报
15 个回答
  • 这里有一个参考非常详细,你看可参考以下https://blog.csdn.net/ZCShouCSDN/article/details/85158025?locationNum=3&fps=1
  • 测几个点,电压和ad值对应起来,用matlab做个拟合,搞出个公式来,直接用就行了
  • ADC的分辨率是多少  如果内置ADC分辨率不足就用过采样提高分辨率  一般ADC线性度还可以就两点标定   若是要求高就分段多点标定
  • ADC都是很线性的,取两个点就可以了,两点拉一条直线,输入一个零点和一个合适的参考点,都保存起来,然后做下面的处理
    假设
    实际测量两个测量点
    ADC_CAL_0 = 10,        //0点
    ADC_CAL_1 = 900,        //1点
    理论两个点是
    ADC_STD_0 = 0,        //0点
    ADC_STD_1 = 1000,        //1点

    现在实测一个ADC是800,经过以下转换
    x = 800;
    y = (x-ADC_CAL_0)*(ADC_STD_1 /ADC_CAL_1 );
    这只是说明原理
    实际就是类似于以前运放的调零与增益调整,
  • 分段进行线性拟合,常用的方法是最小二乘法。
  • rankey 发表于 2022-2-17 19:43
    外接精准输入11.75V ,11.35V ,10.65V ,9.6V.  用单片机的ADC功能读取这4档电压下的AD值,通过去头去尾, ...

    对的,就是用这种方法。但是没学过不会,哪里可以找类似的代码看看就好了。
  • 外接精准输入11.75V ,11.35V ,10.65V ,9.6V.  用单片机的ADC功能读取这4档电压下的AD值,通过去头去尾,冒泡排序,取中间值的算法。得到这4档电压对应的AD值,
        这些稳定的AD值,通过Uart打印出来,也可以通过显示屏输出。反正需要人眼看到并想办法保存这些数据。   
         这AD值存入EEPROM或直接在Code区做表,以备查询。
         这些工作技巧,需要有一定的敲代码的功力才能完成。其实也不难,会者不难
  • fengfengic 发表于 2022-2-17 18:53
    哪款单片机,单片机自己AD不稳的话,校准也不好用。

    只校准几个电压点。
  • Latin_newday 发表于 2022-2-17 11:36
    如果仅仅只有这4个点的话,可以直接连个精准的DC source校准,将这4个电压接入,然后读AD,存入EEPROM,实 ...

    好像是你说的这种方法,我看公司的软件工程师好像是这样的,首次下载好软件后,用精准的稳压源,调好电压点,触发一下轻触按键就校准好一个电压点了,再调到其他电压点,再按一下轻触按键。不过部知道怎样写代码!
12下一页

您需要登录后才可以回复 登录 | 注册