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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2393|回復: 13
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:169142 發表于 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單片機為例。
謝謝!!!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:72649 發表于 2022-2-16 23:46 來自手機 | 只看該作者
加常數修正
回復

使用道具 舉報

板凳
ID:857072 發表于 2022-2-17 02:38 來自手機 | 只看該作者
就我知道的stc8的有內部基準電壓,測到的AD值換算成電壓時要根據基準電壓校正。測量12v電壓還要做分壓,電阻的精度低了影響也很大。
回復

使用道具 舉報

地板
ID:960157 發表于 2022-2-17 07:12 | 只看該作者
MC1403電壓基準,軟件加修正。
回復

使用道具 舉報

5#
ID:65956 發表于 2022-2-17 08:18 | 只看該作者
以STC單片機10位ADC來說,可以采用讀內部基準源來計算采集電壓值,這樣就可實現精準電壓采集。如果達不到要求,就得加外部其準源,對于你這個簡單電路,加個基準源顯示沒必要
回復

使用道具 舉報

6#
ID:807651 發表于 2022-2-17 09:08 | 只看該作者
求多次ad 取平均值
回復

使用道具 舉報

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

使用道具 舉報

8#
ID:169142 發表于 2022-2-17 19:01 | 只看該作者

C語言怎么做常數修正?
回復

使用道具 舉報

9#
ID:169142 發表于 2022-2-17 19:03 | 只看該作者
wskufo 發表于 2022-2-17 07:12
MC1403電壓基準,軟件加修正。

軟件怎么做修正啊??
回復

使用道具 舉報

10#
ID:169142 發表于 2022-2-17 19:04 | 只看該作者
aking991 發表于 2022-2-17 08:18
以STC單片機10位ADC來說,可以采用讀內部基準源來計算采集電壓值,這樣就可實現精準電壓采集。如果達不到要 ...

這個內部基準源是怎么讀取的???
回復

使用道具 舉報

11#
ID:169142 發表于 2022-2-17 19:05 | 只看該作者
wd1988 發表于 2022-2-17 09:08
求多次ad 取平均值

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

使用道具 舉報

12#
ID:857072 發表于 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);//功能:根據內部參考電壓計算ADC外部參考電壓, float ntcty_ADCdian(ADC_Name ntcn);//根據內部參考電壓計算ADC電壓  //ntc_ty //數據放大1000倍方便整數計算 extern code uint16 ntc_ty[]; //------------------------------------------------------------------------------------------------------------------- //  @brief      ntc轉換取均值一次 //  @param      ntcn            選擇ntc通道 //  @param      wei      讀ADC次數 //  @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電壓值 //形參:無 //返回:電壓值 //詳解:根據內部參考電壓計算ADC電壓, //*******************************************************************/ float ntcty_ADCdian(ADC_Name ntcn)//根據內部參考電壓計算ADC電壓, {         uint16 adjg,adck;         adjg = ntcty_read(ntcn,6);         adck = ntcty_read(ADC_REF,6);     return 1.19/adck*adjg; }   //*******************************************************************/ //功能:讀供電電壓(ADC外部參考電壓) //形參:ADW:ADC的實際最高位數。12,10,8 //返回:電壓值 //詳解:根據內部參考電壓計算ADC外部參考電壓, //*******************************************************************/ float ntcty_gongdian(uint8 ADW)//功能:根據內部參考電壓計算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從電阻分度表格里查找最靠近的位置. // 參數: 電阻值*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); }  //======================================================================== // 描述: 根據查表結果計算溫度. // 參數: 電阻值*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溫度. // 參數: 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;//保留一位小數     return V*1.0; }  #endif
回復

使用道具 舉報

13#
ID:857072 發表于 2022-2-17 23:35 來自手機 | 只看該作者
給你看這個stc8的ntc庫測溫我用到了內部基準電壓校正AD電壓。的
回復

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人在线视频播放 | av官网在线 | 亚洲综合二区 | 神马久久久久久久久久 | 亚洲一区免费视频 | 欧美色性 | 7777在线视频免费播放 | 国产精品久久久久aaaa樱花 | 亚洲国产情侣 | 99这里只有精品视频 | 欧美精品在线播放 | 淫片专区| 天堂成人国产精品一区 | 91精品久久久久久久久久小网站 | 精品久久中文字幕 | 91视频精选 | 在线午夜| 欧美美女一区二区 | 四季久久免费一区二区三区四区 | 一级一片在线观看 | 美日韩免费视频 | 免费看黄视频网站 | 国产美女精品视频 | 免费看片在线播放 | 91久久精品国产91久久性色tv | 亚洲黄色网址视频 | 亚洲一区二区久久 | 午夜影院在线观看版 | av在线免费观看网站 | 久久高清亚洲 | 亚洲精品在线免费 | 一区二区三区亚洲 | 久久久久国产一区二区 | 91久久精品一区二区三区 | 精品亚洲一区二区三区 | 我要看黄色录像一级片 | 91视频在线 | 色婷婷久久久久swag精品 | 日韩中文久久 | 日韩黄 | 狼色网 |