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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機ADC每次采樣后需要清除結果嗎?平均值怎么計算

  [復制鏈接]
跳轉到指定樓層
樓主
ID:608872 發表于 2021-9-24 16:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 yinnan128 于 2021-9-24 17:02 編輯

       用的是STC15W,現在ADC采樣顯示的電壓浮動很大,鋰電3.66V供電SX1308升壓到12V,然后用78L05降壓到5V給單片機和LCD1602供電,ADC測量鋰電池的電壓顯示3.50-3.74之間跳動,可以使用軟件濾波嗎,還是這個浮動范圍必須用硬件解決。
       ADC每次采樣后,下次采樣前,寄存器里的結果都需要清零嗎?我現在是0.5秒采樣一次,沒有軟件濾波,現在想采樣12次,然后去掉一個最高和一個最低電壓,程序應該怎么寫求平均值呢
       一下是我寫的部分程序/*******************************************************************************
* 功  能:初始化ADC
* 描  述:   
*******************************************************************************/
void ADC_init()               
{
P1ASF=0X04;//把P1.2設置為模擬功能
P1M1=0X04;//把P1.2引腳工作模式設為高阻抗
P1M0=0X00;//把P1.2引腳工作模式設為高阻抗
CLK_DIV |= 0x20; //00100000、ADRJ 為 1,ADC_RES 存放高兩位結果,ADC_RESL 存放低 8 位結果
ADC_RES=0;//清除高位轉換結果寄存器
ADC_RESL=0;//清除低位轉換結果寄存器
       
}

/*******************************************************************************
* 功  能:讀取ADC
* 描  述:   
*******************************************************************************/
void ADC_duqu()
{
ADC_CONTR = 0x8a;//啟動ADC電源和設置P1.2口為ADC輸入并且540個時鐘轉換一次
delay_ms(1);
while(!(ADC_CONTR&0X10));        //等待轉換完成
ADC_V=ADC_RES*256+ADC_RESL;     //獲取ADC結果
ADC_CONTR&=~0x10;//0x82
}

/*******************************************************************************
* 功  能:ADC平均值
* 描  述: 累加10次平均值  
*******************************************************************************/
void ADC_PingJun()
{
??????
}

/*******************************************************************************
* 功  能:ADC電壓轉換
* 描  述:   
*******************************************************************************/
void ADC_zhuanhuan()
{
ADC_V=(ADC_V*500/1024)*2;  //500代表參考電壓5V
BT_V[0]=ADC_V/100%10+0x30;
BT_V[1]=ADC_V/10%10+0x30;
BT_V[2]=ADC_V%10+0x30;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:514901 發表于 2021-9-24 16:48 | 只看該作者
可以,連續采集20次,給20個數據排序,取中間10數據求平均值
回復

使用道具 舉報

板凳
ID:624769 發表于 2021-9-24 16:48 | 只看該作者
STC系列單片機,如果沒有 Verf 引腳的話,不管用外部參考基準,還是內部參考基準,都會受到VCC的波動影響,因為,都是在假定VCC 為1023的前提下,給出的測量值,所以,VCC要保證,在獲取外部被測值,和獲取基準參考值時,電壓的絕對穩定,你升壓到12V,在用7805降壓的話,這個電壓,絕對波動的非常厲害。

我比較好奇的是: 你既然用的是 STC15W 系列,為啥不直接鋰電給單片機供電?非要搞這么一個升壓再降壓后的不穩定電壓給單片機供電呢?實在是不太理解。
回復

使用道具 舉報

地板
ID:359272 發表于 2021-9-24 16:53 | 只看該作者
首先要排除供電異常。然后考慮軟件過濾,一介滯后濾波
回復

使用道具 舉報

5#
ID:608872 發表于 2021-9-24 17:00 | 只看該作者
本帖最后由 yinnan128 于 2021-9-24 17:08 編輯
188610329 發表于 2021-9-24 16:48
STC系列單片機,如果沒有 Verf 引腳的話,不管用外部參考基準,還是內部參考基準,都會受到VCC的波動影響, ...

升12V控制10V的MOS管導通,STC15W可以用3.3V,但LCD1602用3.3V點不亮,也需要一個穩定的5V做ADC基準電壓
回復

使用道具 舉報

6#
ID:624769 發表于 2021-9-24 22:42 | 只看該作者
yinnan128 發表于 2021-9-24 17:00
升12V控制10V的MOS管導通,STC15W可以用3.3V,但LCD1602用3.3V點不亮,也需要一個穩定的5V做ADC基準電壓

你升壓再降壓之后的5V電壓,絕對不如直接鋰電池的電壓來的,穩定。
你ADC只是為了測量供電的鋰電池的話,你單片機用鋰電池供電,只需要用ADC去測內部基準電壓,得到的值反算1023,就能知道鋰電池電壓,反而更準確更方便。 最后,你單片機3.3V,LCD1602 5V,完全也是可以的呀,無非多幾個上拉電阻,但是,穩定性和可靠性,會比都接那個升壓再降壓的5V要高很多。
回復

使用道具 舉報

7#
ID:401564 發表于 2021-9-24 22:42 | 只看該作者
反正都是STC的,干嘛不換成STC8G的,這個系列內部參考電壓是相對穩定的,可以在電壓不穩定時通過內部參考電壓來計算,引腳也有和15W系列一樣的,STC8G系列的還內置了上拉電阻,也可以開機低電平,反正是比15W系列好用,DIY最佳單片機
回復

使用道具 舉報

8#
ID:608872 發表于 2021-9-25 21:14 | 只看該作者
188610329 發表于 2021-9-24 22:42
你升壓再降壓之后的5V電壓,絕對不如直接鋰電池的電壓來的,穩定。
你ADC只是為了測量供電的鋰電池的話 ...

15W沒有內部基準電壓,只能外接。經你提示現在也是考慮鋰電池降壓3.3V給單片機,LCD不變還是12V降5V,這樣減小對ADC的影響
回復

使用道具 舉報

9#
ID:608872 發表于 2021-9-25 21:17 | 只看該作者
Y_G_G 發表于 2021-9-24 22:42
反正都是STC的,干嘛不換成STC8G的,這個系列內部參考電壓是相對穩定的,可以在電壓不穩定時通過內部參考電壓 ...

前段時間STC8G價格太貴,貨也不好難,就拿了穩定供貨的15W,不知道現在價格和排貨什么情況
回復

使用道具 舉報

10#
ID:213173 發表于 2021-9-25 21:38 | 只看該作者
本帖最后由 wulin 于 2021-9-25 21:42 編輯

1.STC15W系列典型工作電壓范圍2.4~5.5V
2.STC15W系列ADC有內部基準電壓,ADC的第9通道就是用來測試內部BandGap參考電壓的
3.ADC_RES、ADC_RESL不必清除,新數據會覆蓋掉原來數據
4.最簡單濾波方法是多次取樣,取平均值
回復

使用道具 舉報

11#
ID:624769 發表于 2021-9-25 22:48 | 只看該作者
yinnan128 發表于 2021-9-25 21:14
15W沒有內部基準電壓,只能外接。經你提示現在也是考慮鋰電池降壓3.3V給單片機,LCD不變還是12V降5V,這 ...

STC15W 有內部基準電壓的。
P1ASF  = 0x00;  就是測內部基準電壓的,
具體內部基準電壓的值可以在ISP上讀取,或者,程序內,讀取Code 區最末尾的15個關鍵參考字節,建議直接ISP上通過檢測MCU觀察后,寫入程序。
通過已知的內部基準電壓(大約1300mv 左右) *  1023  / 通過P1ASF = 0x00; 測出測量值后,得到的就是你的輸入電壓(鋰電池電壓)了。相對要簡單很多。
回復

使用道具 舉報

12#
ID:401564 發表于 2021-9-26 14:01 | 只看該作者
yinnan128 發表于 2021-9-25 21:17
前段時間STC8G價格太貴,貨也不好難,就拿了穩定供貨的15W,不知道現在價格和排貨什么情況

15W也是有內部參考電壓的,也是很穩定的
但是每片的內部參考電壓都有所不同,所以,15W是要先用精確的VCC測量好內部參考電壓是多少,才能準確的使用,很是麻煩
如果想要穩定的ADC,可以通過2.8V或者3.0V的LDO給單片機供電,增加兩個電阻取樣,這樣的成本增加5毛左右,比增加幾塊錢的單片機好點
回復

使用道具 舉報

13#
ID:968695 發表于 2021-9-27 20:34 | 只看該作者
可以用定時器設置采樣頻率,在規定時間內采樣n次再去掉幾個最大值最小值后取平均值這就是簡單的軟件濾波
回復

使用道具 舉報

14#
ID:637144 發表于 2021-10-4 16:01 來自觸屏版 | 只看該作者
直接用冒泡算法
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲免费高清 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 日韩中文字幕一区二区 | 日韩有码一区二区三区 | 91久色| 黄视频网址 | 欧美区日韩区 | 人妖一区| 视频精品一区 | 日韩资源 | 中文字幕亚洲免费 | 午夜视频网 | 国产精品视频导航 | 欧美一区二区三区久久精品 | 欧美成人自拍视频 | 久草在线视频中文 | 日韩中文字幕免费 | 天天爽天天操 | 久久99国产精品 | 羞羞色视频 | 久久久久久久久久久久久久久久久久久久 | 久久久男人的天堂 | 超碰3 | 在线欧美小视频 | 色狠狠一区 | 国产国语精品 | 久久久精品国产 | 亚洲国产精品久久久久 | 激情五月婷婷在线 | 成人av高清在线观看 | 国产午夜精品一区二区三区四区 | 凹凸日日摸日日碰夜夜 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 午夜激情在线视频 | 亚洲精品在线看 | 国产精品激情小视频 | 四虎影音 | 一区二区成人 | 亚洲天堂一区 | 日韩中文字幕免费在线观看 | 亚洲一区中文字幕 |