久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2590|回復: 13
收起左側

單片機ADC檢測電壓怎樣校準(電壓標定)

[復制鏈接]
ID:169142 發(fā)表于 2022-2-16 21:46 | 顯示全部樓層 |閱讀模式
請問下,各位老大,單片機用ADC去檢測電壓,由于精度問題,怎樣做電壓校準。比如,檢測一個鋰電池的電壓滿電是12V電量4個LED,11.75V點亮3個LED,11.35V點亮2個LED,10.65V點亮1個LED,9.6V判斷為低電壓自動關斷。檢測精度為+/-0.01V。怎樣去校準這幾個電壓點,以51單片機為例。
謝謝。!
回復

使用道具 舉報

ID:72649 發(fā)表于 2022-2-16 23:46 來自觸屏版 | 顯示全部樓層
加常數(shù)修正
回復

使用道具 舉報

ID:857072 發(fā)表于 2022-2-17 02:38 來自觸屏版 | 顯示全部樓層
就我知道的stc8的有內(nèi)部基準電壓,測到的AD值換算成電壓時要根據(jù)基準電壓校正。測量12v電壓還要做分壓,電阻的精度低了影響也很大。
回復

使用道具 舉報

ID:960157 發(fā)表于 2022-2-17 07:12 | 顯示全部樓層
MC1403電壓基準,軟件加修正。
回復

使用道具 舉報

ID:65956 發(fā)表于 2022-2-17 08:18 | 顯示全部樓層
以STC單片機10位ADC來說,可以采用讀內(nèi)部基準源來計算采集電壓值,這樣就可實現(xiàn)精準電壓采集。如果達不到要求,就得加外部其準源,對于你這個簡單電路,加個基準源顯示沒必要
回復

使用道具 舉報

ID:807651 發(fā)表于 2022-2-17 09:08 | 顯示全部樓層
求多次ad 取平均值
回復

使用道具 舉報

ID:401564 發(fā)表于 2022-2-17 13:52 | 顯示全部樓層
STC8G或者STC8A系列有內(nèi)部穩(wěn)定的參考電壓(精度1%),可以用來作為基準電壓,用于測量鋰電池
STC15系列不行,STC15系列的內(nèi)部參考電壓不是固定的
對于鋰電池通過電壓來大概顯示電量,一定要有一個完整的放電曲線數(shù)據(jù),用來進行電量處理,因為鋰電壓放電時電壓會下降,不能用簡單的電壓比例來計算電量
回復

使用道具 舉報

ID:169142 發(fā)表于 2022-2-17 19:01 | 顯示全部樓層

C語言怎么做常數(shù)修正?
回復

使用道具 舉報

ID:169142 發(fā)表于 2022-2-17 19:03 | 顯示全部樓層
wskufo 發(fā)表于 2022-2-17 07:12
MC1403電壓基準,軟件加修正。

軟件怎么做修正??
回復

使用道具 舉報

ID:169142 發(fā)表于 2022-2-17 19:04 | 顯示全部樓層
aking991 發(fā)表于 2022-2-17 08:18
以STC單片機10位ADC來說,可以采用讀內(nèi)部基準源來計算采集電壓值,這樣就可實現(xiàn)精準電壓采集。如果達不到要 ...

這個內(nèi)部基準源是怎么讀取的???
回復

使用道具 舉報

ID:169142 發(fā)表于 2022-2-17 19:05 | 顯示全部樓層
wd1988 發(fā)表于 2022-2-17 09:08
求多次ad 取平均值

這個好像也達不到要求
回復

使用道具 舉報

ID:857072 發(fā)表于 2022-2-17 23:33 來自觸屏版 | 顯示全部樓層
#ifndef __NTC_TY_H #define __NTC_TY_H  //#include <STC8HX.h>  #include "ADC.h"  #ifndef  BIAO_PIANYI         //阻值表偏移量 #define  BIAO_PIANYI                  10 #endif   float ntcty_read_temp(ADC_Name ntcn,uint8 wei,uint16 cankao);  //獲取ntc溫度 uint16 ntcty_read(ADC_Name ntcn,uint8 wei); //ntc轉換取均值一次 float ntcty_gongdian(uint8 ADW);//功能:根據(jù)內(nèi)部參考電壓計算ADC外部參考電壓, float ntcty_ADCdian(ADC_Name ntcn);//根據(jù)內(nèi)部參考電壓計算ADC電壓  //ntc_ty //數(shù)據(jù)放大1000倍方便整數(shù)計算 extern code uint16 ntc_ty[]; //------------------------------------------------------------------------------------------------------------------- //  @brief      ntc轉換取均值一次 //  @param      ntcn            選擇ntc通道 //  @param      wei      讀ADC次數(shù) //  @return     void //  Sample usage:               ntc_convert(ntc_P10, 10); //------------------------------------------------------------------------------------------------------------------- uint16 ntcty_read(ADC_Name ntcn,uint8 wei) {         uint8 y,i,u;     uint16 shuzu[10];         uint16 yaogan_max,yaogan_min,yaogan_sum;         y=wei;     adc_init(ntcn, ADC_SYSclk_DIV_2, ADC_12BIT);         if (ntcn > 15)ntcn = ntcn - 8;         for(i=0;i<y;i++)         {                 shuzu[i] = adc_read(ntcn);         }         for(u=0;u<2;u++)//拋棄最大值和最小值         {         yaogan_min = shuzu[0];                 yaogan_max = shuzu[0];                 for(i=0;i<y;i++)                 {                                                  if(yaogan_max < shuzu[i])                         {                            yaogan_max=shuzu[i];                         }                         if(yaogan_min >= shuzu[i])                         {                                 yaogan_min = shuzu[i];                         }                 }                                  for(i=0;i<y;i++)                 {                                                  if(yaogan_max==shuzu[i])                         {                            shuzu[i] =shuzu[y-1] ;                            break;                         }                    }                 for(i=0;i<y;i++)                 {                         if(yaogan_min==shuzu[i] )                         {                            shuzu[i] =shuzu[y-2] ;                            break;                                                      }                    }                 y=y-2;         }     yaogan_sum=0;         for(i=0;i<y;i++)         {            yaogan_sum=yaogan_sum+shuzu[i];//計算剩余AD值的和         }         yaogan_sum = yaogan_sum/y;//計算AD平均值         return yaogan_sum;//返回計算的AD平均值 }    //*******************************************************************/ //功能:讀ADC電壓值 //形參:無 //返回:電壓值 //詳解:根據(jù)內(nèi)部參考電壓計算ADC電壓, //*******************************************************************/ float ntcty_ADCdian(ADC_Name ntcn)//根據(jù)內(nèi)部參考電壓計算ADC電壓, {         uint16 adjg,adck;         adjg = ntcty_read(ntcn,6);         adck = ntcty_read(ADC_REF,6);     return 1.19/adck*adjg; }   //*******************************************************************/ //功能:讀供電電壓(ADC外部參考電壓) //形參:ADW:ADC的實際最高位數(shù)。12,10,8 //返回:電壓值 //詳解:根據(jù)內(nèi)部參考電壓計算ADC外部參考電壓, //*******************************************************************/ float ntcty_gongdian(uint8 ADW)//功能:根據(jù)內(nèi)部參考電壓計算ADC外部參考電壓, {         uint16 adjg; //        ntc_init(ADC_REF, ntc_SYSclk_DIV_2);         adjg = ntcty_read(ADC_REF,6);         switch (ADW) {         case 12:    return 4095*1.19/adjg;     break;         case 10:    return 2047*1.19/adjg;     break;         default:    return 255*1.19/adjg;     break;   }         } //======================================================================== // 描述: ntc從電阻分度表格里查找最靠近的位置. // 參數(shù): 電阻值*1000. // 返回: 分度表格里最靠近的位置. //======================================================================== uint8 ntcty_find_r(uint16 data) {     uint8  start_index, mid = 0, end_index;     uint16  dat;          start_index = 0;     end_index = 50;            // 2. 開始二分法查找     while (start_index < end_index)     {         mid = (end_index + start_index) >> 1;         dat = ntc_ty[mid];                  if (data < dat)         {             start_index = mid + 1;         }         else if (data > dat)         {             if (mid)             {                 end_index = mid;             }             else             {                 break;             }         }         else         {             return (mid);         }     }          return (mid); }  //======================================================================== // 描述: 根據(jù)查表結果計算溫度. // 參數(shù): 電阻值*1000. // 返回: 溫度. //======================================================================== float ntcty_get_value(uint16 data) {   uint8 index;   float temp;   data = (data > ntc_ty[0]) ? ntc_ty[0] : data;   data = (data < ntc_ty[50]) ? ntc_ty[50] : data;      index = ntcty_find_r(data);    if(ntc_ty[index]>data)   {     temp = index + (float)(ntc_ty[index]-data)/(ntc_ty[index]-ntc_ty[index+1]);//線性插值          return temp+BIAO_PIANYI-1;//偏移   }   else if(ntc_ty[index]<data)   {     temp =  index-(float)(data-ntc_ty[index])/(ntc_ty[index-1]-ntc_ty[index]);//線性插值     return temp+BIAO_PIANYI+1;//偏移   }   else   {     return index+BIAO_PIANYI;   } }  //======================================================================== // 描述: 獲取ntc溫度. // 參數(shù): None. // 返回: 溫度. //======================================================================== float ntcty_read_temp(ADC_Name ntcn,uint8 wei,uint16 cankao) {     float V,V0;         V0=ntcty_ADCdian(ntcn);//讀ADC電壓值     V=ntcty_gongdian(wei); //讀供電電壓     V=V/(V0-V)*cankao;     V = ntcty_get_value(V*1000);//電阻值放大1000倍查找溫度     V = (int)(10.0 * V + 0.5) / 10.0;//保留一位小數(shù)     return V*1.0; }  #endif
回復

使用道具 舉報

ID:857072 發(fā)表于 2022-2-17 23:35 來自觸屏版 | 顯示全部樓層
給你看這個stc8的ntc庫測溫我用到了內(nèi)部基準電壓校正AD電壓。的
回復

使用道具 舉報

ID:382454 發(fā)表于 2022-2-23 12:04 | 顯示全部樓層
要精準測量,MCU板的基準電源要用低溫漂的作為參考電源,至于怎么修正,進行多次AD后,比如128次,再做平均值,即除于128,在這一段代碼里有一個基準參照電源,比如參照電源是4V,在代碼里就是4000   你可以用福錄克萬用表測量對比一下,如果太低可以把參照源改成4010,計算出來不行再進行微調(diào)。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美一区二区三区精品久久 | 亚洲精彩免费视频 | aa级毛片毛片免费观看久 | www.久| 午夜影晥 | 天天人人精品 | 亚洲不卡av在线 | 久久一区二区三区免费 | 精品一区二区三区不卡 | 视频在线日韩 | 欧美白人做受xxxx视频 | 国产情侣在线看 | 国产亚洲一区二区在线观看 | 精品成人av | 国产精品视频网址 | 51ⅴ精品国产91久久久久久 | 日韩久久在线 | 91精品国产综合久久久久久 | 欧美成人h版在线观看 | 中文字幕在线观看www | 午夜爽爽爽男女免费观看影院 | 嫩草视频在线看 | www.成人免费视频 | 日韩一区在线视频 | 欧美中文在线 | 亚洲高清av在线 | 99久久国产免费 | 97精品超碰一区二区三区 | 久操亚洲 | 九九亚洲| 日日操日日干 | 91精品国产综合久久久密闭 | 久久久久国产精品一区二区 | 亚洲美女在线一区 | 亚洲精品黄色 | 精品一区二区三区中文字幕 | 久久久女女女女999久久 | 天堂资源| 欧美综合国产精品久久丁香 | 成人亚洲 | 亚洲视频精品 |