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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 33719|回復(fù): 50
打印 上一主題 下一主題
收起左側(cè)

stc8單片機(jī)自帶ADC值跳動(dòng)嚴(yán)重,采樣數(shù)據(jù)波動(dòng)很大

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 lidong85 于 2019-4-22 15:24 編輯

STC8A8K64S4A12單片機(jī)用自帶ADC進(jìn)行轉(zhuǎn)換,硬件采用高精度連接模式(TL431),采樣數(shù)據(jù)波動(dòng)很大請(qǐng)問(wèn)是什么原因?采樣值如圖:

,最小和最大相差100+。程序如下:


使用一個(gè)22K的可調(diào)電阻來(lái)改變采樣電壓,可調(diào)電阻兩端分別連Vref和地,中間抽頭接在P1.0上。
我使用的是某寶買(mǎi)的簡(jiǎn)易開(kāi)發(fā)板,基準(zhǔn)電壓為T(mén)L431的輸出電壓,同時(shí)我把這個(gè)電壓也作為負(fù)載的供電電壓。如圖:




我懷疑是采樣端沒(méi)有進(jìn)行硬件濾波的原因造成的,因?yàn)镻1.0口沒(méi)有任何的RC電路。




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

使用道具 舉報(bào)

沙發(fā)
ID:401564 發(fā)表于 2019-4-22 10:37 | 只看該作者
你那些25XX是什么,是2500mV嗎?
電路圖搞上來(lái)看一下
數(shù)據(jù)波動(dòng)原因:C語(yǔ)言本身計(jì)算的誤差,但并不大
                    ADC采樣的誤差,這個(gè)數(shù)據(jù)變化比較大,原因很多,電源的波動(dòng),外部的干擾都有可能,說(shuō)不清楚,我用示波器看過(guò)ADC的端口的波形,有的時(shí)候會(huì)有20mV左右的波動(dòng),就算是加了一個(gè)電容也是這樣的.
STC8A系列是12位的ADC,你想要好一點(diǎn)的ADC結(jié)果,那就取12位的運(yùn)算結(jié)果
ADC的參考電壓要用TL431來(lái)作為參考電壓,電壓取值為:4.096V,不是5V的VCC,我的電路給你參考ADC采樣的次數(shù)設(shè)定為128次或者256次,然后再平均值


回復(fù)

使用道具 舉報(bào)

板凳
ID:432823 發(fā)表于 2019-4-22 14:56 | 只看該作者
這樣結(jié)果是正常的,可采用軟件濾波減少波動(dòng)。方法:連續(xù)采集10次,去除最大、最小各一個(gè),余下8個(gè)取平均。
回復(fù)

使用道具 舉報(bào)

地板
ID:514692 發(fā)表于 2019-4-22 15:34 | 只看該作者
Y_G_G 發(fā)表于 2019-4-22 10:37
你那些25XX是什么,是2500mV嗎?
電路圖搞上來(lái)看一下
數(shù)據(jù)波動(dòng)原因:C語(yǔ)言本身計(jì)算的誤差,但并不大

謝謝指教。回答您幾個(gè)問(wèn)題。
1.25XX是ADC采樣的12位結(jié)果,我轉(zhuǎn)換成10進(jìn)制然后通過(guò)串口輸出。
2.我的基準(zhǔn)使用的是TL431輸出的2.5V,沒(méi)有用示波器觀察電源的波動(dòng)情況。
PS:電路圖我已經(jīng)在原帖中進(jìn)行了更新。

還有3個(gè)問(wèn)題想請(qǐng)教:
1.您給出的電路圖中ADC的參考電壓端并聯(lián)兩套47u電解電容和104的瓷片電容的目的是什么?用一套行不行?
2.ADC的采樣口是不是要加RC進(jìn)行濾波,一般要加多大的?
3.模擬通道的地和電源地您是如何進(jìn)行隔離的?
回復(fù)

使用道具 舉報(bào)

5#
ID:514692 發(fā)表于 2019-4-22 15:37 | 只看該作者
yaoji123 發(fā)表于 2019-4-22 14:56
這樣結(jié)果是正常的,可采用軟件濾波減少波動(dòng)。方法:連續(xù)采集10次,去除最大、最小各一個(gè),余下8個(gè)取平均。

您說(shuō)的對(duì),我之前確實(shí)沒(méi)有加上軟件濾波,加上軟件濾波后效果也不是太明顯,是不是應(yīng)該考慮硬件濾波,如何加?
回復(fù)

使用道具 舉報(bào)

6#
ID:401564 發(fā)表于 2019-4-23 08:51 | 只看該作者
1:參考電壓那的電容你用一個(gè)100uF和一個(gè)104的也行,我主是沒(méi)有那么大的,才用兩個(gè)的
2:如果你ADC的采樣端口是由運(yùn)放輸出的,那么就并聯(lián)一個(gè)104電容和一個(gè)10K電阻試一下.如果只是一個(gè)電壓的采樣而已,那就一個(gè)104就可以了,不需要其它的電路了
3:電路中如果沒(méi)有高頻信號(hào)和大電流,地實(shí)際上不用管的,聯(lián)通就可以
但如果是有高頻信號(hào),你就得對(duì)地進(jìn)行一定隔離,給你一個(gè)電路參考一下
如果可以的話,你采樣的次數(shù)要多一些,130次,然后再減去一個(gè)最大值和一個(gè)最小值,再除以128,這效果會(huì)好一點(diǎn)
不管是參考電壓還是采樣的平均次數(shù),都盡可能的和2的次冪有關(guān)2.048V 4.096V  32 64 128,不要取10進(jìn)制的整數(shù)100次,2.500V之類(lèi)的,如果你了解編譯的原理你就會(huì)知道為什么要取這些值了,網(wǎng)上也會(huì)有專(zhuān)門(mén)的2.048V或者4.096V的基準(zhǔn)電壓源賣(mài)的


回復(fù)

使用道具 舉報(bào)

7#
ID:514692 發(fā)表于 2019-4-24 18:31 | 只看該作者
Y_G_G 發(fā)表于 2019-4-23 08:51
1:參考電壓那的電容你用一個(gè)100uF和一個(gè)104的也行,我主是沒(méi)有那么大的,才用兩個(gè)的
2:如果你ADC的采樣端口 ...

并聯(lián)了電容還是沒(méi)有解決,懷疑是VREF不穩(wěn)定。
回復(fù)

使用道具 舉報(bào)

8#
ID:401564 發(fā)表于 2019-4-24 19:46 | 只看該作者
lidong85 發(fā)表于 2019-4-24 18:31
并聯(lián)了電容還是沒(méi)有解決,懷疑是VREF不穩(wěn)定。

你采樣的次數(shù)是多少次?
回復(fù)

使用道具 舉報(bào)

9#
ID:386402 發(fā)表于 2019-4-24 20:31 | 只看該作者
問(wèn)題出在基準(zhǔn)電壓使用TL431,他只能做為基準(zhǔn)電壓用,不能用于負(fù)載電壓
回復(fù)

使用道具 舉報(bào)

10#
ID:514692 發(fā)表于 2019-4-26 10:45 | 只看該作者
wqjhj 發(fā)表于 2019-4-24 20:31
問(wèn)題出在基準(zhǔn)電壓使用TL431,他只能做為基準(zhǔn)電壓用,不能用于負(fù)載電壓

沒(méi)錯(cuò),這個(gè)是正解,接上負(fù)載后TL431的波動(dòng)就特別大,我用示波器測(cè)了。
回復(fù)

使用道具 舉報(bào)

11#
ID:547194 發(fā)表于 2019-5-25 21:35 | 只看該作者
樓主大大,能將您的這個(gè)程序發(fā)我借鑒下嗎?
回復(fù)

使用道具 舉報(bào)

12#
ID:494850 發(fā)表于 2019-5-28 07:50 | 只看該作者
剛好遇到同問(wèn)題,參考了
回復(fù)

使用道具 舉報(bào)

13#
ID:346927 發(fā)表于 2019-5-28 11:31 | 只看該作者
需要加入濾波算法,比如中值濾波,遞推平均濾波等,數(shù)值會(huì)穩(wěn)定很多
回復(fù)

使用道具 舉報(bào)

14#
ID:419072 發(fā)表于 2019-6-9 19:21 來(lái)自手機(jī) | 只看該作者
樓主可以把你說(shuō)的那個(gè)最大值最小值然后平均值那個(gè)給我看看么
回復(fù)

使用道具 舉報(bào)

15#
ID:696952 發(fā)表于 2020-2-28 17:09 | 只看該作者
我也是遇到這個(gè)問(wèn)題,中位值濾波用了,也不行,測(cè)ad口電壓很穩(wěn)定的,就是讀取出來(lái)跳動(dòng)很大,中位值取的40次濾波,還是不行,而且adc還不滿,最大沒(méi)有4096,濾波都做了,地也隔離了就是不行
回復(fù)

使用道具 舉報(bào)

16#
ID:401564 發(fā)表于 2020-2-29 08:26 | 只看該作者
太陽(yáng)的心 發(fā)表于 2020-2-28 17:09
我也是遇到這個(gè)問(wèn)題,中位值濾波用了,也不行,測(cè)ad口電壓很穩(wěn)定的,就是讀取出來(lái)跳動(dòng)很大,中位值取的40次 ...

ADC本身就不是一個(gè)穩(wěn)定的,就算是硬件ADC也是要有一定的濾波的
你取值的方法不對(duì)
并不是你進(jìn)行了多次的ADC然后平均就能得到一個(gè)平均值的
打個(gè)比方:進(jìn)入ADC中斷或者函數(shù)調(diào)用ADC,你進(jìn)行一次ADC之后,ADC結(jié)果的值為:1024,如果你直接再進(jìn)行39次ADC,結(jié)果基本上也都是1024.下一次再進(jìn)行ADC的時(shí)候,結(jié)果可能是1000,顯示就會(huì)有波動(dòng)了
我的方法是:進(jìn)行一次ADC之后,保存ADC結(jié)果了,就選擇一個(gè)不用的通道進(jìn)行一次ADC,然后再來(lái)進(jìn)行一次當(dāng)前通道的ADC,不用擔(dān)心速度的問(wèn)題,使用中斷就可以了
你去看一下這個(gè)單片機(jī)的ADC框圖,就會(huì)理解我說(shuō)的了
回復(fù)

使用道具 舉報(bào)

17#
ID:159575 發(fā)表于 2020-2-29 18:17 來(lái)自手機(jī) | 只看該作者
stc精度也就這樣,一般五次取平均值就可以了。
回復(fù)

使用道具 舉報(bào)

18#
ID:316880 發(fā)表于 2020-3-5 22:52 | 只看該作者
說(shuō)一下我用STC8A8K,12位AD的經(jīng)驗(yàn),也是按照PDF資料這個(gè)搭建的電路,程序不加軟件慮波直接出來(lái)的結(jié)果跳變特別嚴(yán)重,后面想是不是電壓不穩(wěn)點(diǎn),用示波器看TL431的2.5V有一點(diǎn)點(diǎn)波浪,不穩(wěn)點(diǎn),后面我直接把TL431直接去了,直接5v做基準(zhǔn),數(shù)據(jù)跳變就沒(méi)有多大厲害,然后在程序里面加個(gè)平均值慮波,數(shù)據(jù)很穩(wěn)點(diǎn),如果數(shù)據(jù)轉(zhuǎn)換出來(lái)不穩(wěn)點(diǎn),應(yīng)該檢查T(mén)L431的2.5V有沒(méi)有波浪,和通道輸入的慮波,還有電源電壓有沒(méi)有很大波浪。
回復(fù)

使用道具 舉報(bào)

19#
ID:316880 發(fā)表于 2020-3-5 22:57 | 只看該作者
太陽(yáng)的心 發(fā)表于 2020-2-28 17:09
我也是遇到這個(gè)問(wèn)題,中位值濾波用了,也不行,測(cè)ad口電壓很穩(wěn)定的,就是讀取出來(lái)跳動(dòng)很大,中位值取的40次 ...

示波器看一下電源電壓穩(wěn)點(diǎn)不,然后看TL431的2.5V,我之前就是2.5V示波器看了有一點(diǎn)點(diǎn)文波,我直接把431去了,AVCC經(jīng)過(guò)510R電阻5v直接上,不要2.5v,程序里面加了 平均值慮波,轉(zhuǎn)換的結(jié)果顯示 0-30V電壓,結(jié)果穩(wěn)的一批,效果杠杠的
回復(fù)

使用道具 舉報(bào)

20#
ID:633626 發(fā)表于 2020-3-6 19:30 | 只看該作者
余生不負(fù) 發(fā)表于 2020-3-5 22:57
示波器看一下電源電壓穩(wěn)點(diǎn)不,然后看TL431的2.5V,我之前就是2.5V示波器看了有一點(diǎn)點(diǎn)文波,我直接把431去 ...

“AVCC經(jīng)過(guò)510R電阻5v直接上”的意思是AVCC經(jīng)過(guò)510R連接到Vref嗎?為什么要加電阻,直接連上不可以嗎
回復(fù)

使用道具 舉報(bào)

21#
ID:120930 發(fā)表于 2020-3-14 11:12 | 只看該作者
我正在用stc8a8k64s4a12做了個(gè)產(chǎn)品,正好用到pt100溫度采集,用adc0采集,官方的高精度電路和官方的代碼,數(shù)據(jù)變化的厲害,變化幅度有5%,我采用先取10次數(shù)據(jù)去掉最大和最小再取平均值還是有跳動(dòng),然后取100次數(shù)據(jù)去掉最大和最小再取平均值還是有跳動(dòng),最后取100次數(shù)據(jù)去掉最大和最小再取平均值,把取得100次的平均值再取1000次平均值后就穩(wěn)定了,一點(diǎn)跳動(dòng)也沒(méi)有,其實(shí)也不用取這么多次,因?yàn)閱纹瑱C(jī)的資源充足,時(shí)間有限我就沒(méi)再繼續(xù)增減數(shù)值做實(shí)驗(yàn),就這樣用了,最后把代碼奉上
void ADC_Isr() interrupt 5
{
        static uint8 i = 0,j = 0;
        uint8 max,min;
        uint16 tmp;
        ADC_CONTR &= ~0X20;       //清零ADC_FLAG       
        if(i<100)
        {
                if(j<100)
                {
                        adcstr[j] = 255-ADC_RES;
                        j ++;
                }
                else
                {
                        tmp = 0;
                        for(j=0;j<100;j++)
                        {
                                tmp += adcstr[j];
                        }
                        max = min = adcstr[0];
                        for(j=0;j<100;j++)
                        {
                                if(min>adcstr[j])
                                        min = adcstr[j];
                                if(max<adcstr[j])
                                        max = adcstr[j];
                        }
                        adcstr1[i] = (tmp-min-max)/98;
                        j = 0;
                        i ++;
                }               
        }
        else
        {
                tmp = 0;
                for(i=0;i<100;i++)
                {
                        tmp += adcstr1[i];
                }
                max = min = adcstr1[0];
                for(i=0;i<50;i++)
                {
                        if(min>adcstr1[i])
                                min = adcstr1[i];
                        if(max<adcstr1[i])
                                max = adcstr1[i];
                }
                temperature = (tmp-min-max)/98;
                i = 0;               
        }
        ADC_CONTR |= 0X40;     //關(guān)閉ADC
}
回復(fù)

使用道具 舉報(bào)

22#
ID:120930 發(fā)表于 2020-3-14 11:15 | 只看該作者
void ADC_Isr() interrupt 5
{
        static uint8 i = 0,j = 0;
        uint8 max,min;
        uint16 tmp;
        ADC_CONTR &= ~0X20;       //清零ADC_FLAG       
        if(i<100)
        {
                if(j<100)
                {
                        adcstr[j] = 255-ADC_RES;
                        j ++;
                }
                else
                {
                        tmp = 0;
                        for(j=0;j<100;j++)
                        {
                                tmp += adcstr[j];
                        }
                        max = min = adcstr[0];
                        for(j=0;j<100;j++)
                        {
                                if(min>adcstr[j])
                                        min = adcstr[j];
                                if(max<adcstr[j])
                                        max = adcstr[j];
                        }
                        adcstr1[i] = (tmp-min-max)/98;
                        j = 0;
                        i ++;
                }               
        }
        else
        {
                tmp = 0;
                for(i=0;i<100;i++)
                {
                        tmp += adcstr1[i];
                }
                max = min = adcstr1[0];
                for(i=0;i<100;i++)
                {
                        if(min>adcstr1[i])
                                min = adcstr1[i];
                        if(max<adcstr1[i])
                                max = adcstr1[i];
                }
                temperature = (tmp-min-max)/98;
                i = 0;               
        }
        ADC_CONTR |= 0X40;     //關(guān)閉ADC
}
回復(fù)

使用道具 舉報(bào)

23#
ID:120930 發(fā)表于 2020-3-14 11:16 | 只看該作者
第一次發(fā)的代碼有個(gè)錯(cuò)誤 第二次的改正了
回復(fù)

使用道具 舉報(bào)

24#
ID:165291 發(fā)表于 2020-3-25 16:16 | 只看該作者
同問(wèn)呢!
回復(fù)

使用道具 舉報(bào)

25#
ID:165291 發(fā)表于 2020-3-25 16:16 | 只看該作者
這樣結(jié)果是正常的,可采用軟件濾波減少波動(dòng)。方法:連續(xù)采集10次,去除最大、最小各一個(gè),余下8個(gè)取平均。
回復(fù)

使用道具 舉報(bào)

26#
ID:602576 發(fā)表于 2020-3-25 16:42 | 只看該作者
基準(zhǔn)芯片TL431驅(qū)動(dòng)能力不夠的話,在后面加一個(gè)運(yùn)放跟隨,增加驅(qū)動(dòng)電流,或者直接換一個(gè)基準(zhǔn)源就行了。樓上的幾位提得都對(duì),應(yīng)該軟件采集后濾波,平均值,中值濾波都可以,信號(hào)到AD輸入端,接一個(gè)104的電容濾波,中間可以串一個(gè)25-50歐的小電阻
回復(fù)

使用道具 舉報(bào)

27#
ID:228467 發(fā)表于 2020-3-25 17:05 | 只看該作者
都是好經(jīng)驗(yàn),學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

28#
ID:316880 發(fā)表于 2020-3-25 20:12 | 只看該作者
lenceliu 發(fā)表于 2020-3-6 19:30
“AVCC經(jīng)過(guò)510R電阻5v直接上”的意思是AVCC經(jīng)過(guò)510R連接到Vref嗎?為什么要加電阻,直接連上不可以嗎

不加也可以,因?yàn)槲野?31拿掉了。
回復(fù)

使用道具 舉報(bào)

29#
ID:316880 發(fā)表于 2020-3-25 20:20 | 只看該作者
sduking 發(fā)表于 2020-3-25 16:42
基準(zhǔn)芯片TL431驅(qū)動(dòng)能力不夠的話,在后面加一個(gè)運(yùn)放跟隨,增加驅(qū)動(dòng)電流,或者直接換一個(gè)基準(zhǔn)源就行了。樓上 ...

用不著那么麻煩,只要AVCC穩(wěn)定5V直接上,測(cè)量范圍0-5V,你要是用431,范圍就是0-2.5V,這個(gè)不好用。
回復(fù)

使用道具 舉報(bào)

30#
ID:241128 發(fā)表于 2020-3-26 02:18 | 只看該作者
mark最近用到STC8a系列12位AD,希望能用到。。。
回復(fù)

使用道具 舉報(bào)

31#
ID:25310 發(fā)表于 2020-3-26 08:58 | 只看該作者
431用處不大,看好5V電壓紋波比這個(gè)重要,用過(guò)STC15w32s4 10ADC 精度也能做到10mV
回復(fù)

使用道具 舉報(bào)

32#
ID:65956 發(fā)表于 2020-3-26 09:23 | 只看該作者
我認(rèn)為是你計(jì)算直接用5V的參數(shù)值作計(jì)算的,你最好測(cè)一下現(xiàn)在板上工作的實(shí)際電壓值,然后代入這個(gè)值進(jìn)行計(jì)算就OK了,不然就讀取芯片內(nèi)部的基準(zhǔn)源再計(jì)算MCU的工作電壓會(huì)更穩(wěn)定
回復(fù)

使用道具 舉報(bào)

33#
ID:420836 發(fā)表于 2020-3-26 09:48 | 只看該作者
似乎參考電壓存在一些問(wèn)題,如果它平均波動(dòng)20 mV,則轉(zhuǎn)換后的結(jié)果波動(dòng)可能是平均20點(diǎn)或更大。
回復(fù)

使用道具 舉報(bào)

34#
ID:371527 發(fā)表于 2020-5-17 10:24 | 只看該作者
首先,VREF穩(wěn)壓輸出要加10uF,TL431也有品質(zhì)好壞。其次采集端口要串接電阻并加104電容
回復(fù)

使用道具 舉報(bào)

35#
ID:420836 發(fā)表于 2020-5-17 21:43 | 只看該作者
試添加軟件濾波器以平均模擬讀數(shù),以消除轉(zhuǎn)換中的較大波動(dòng)。
回復(fù)

使用道具 舉報(bào)

36#
ID:261024 發(fā)表于 2020-5-30 13:58 | 只看該作者
431基準(zhǔn)電壓輸出濾波電容不能太大,104都大了,用102吧,要不然基準(zhǔn)電壓都不穩(wěn),用示波器觀察有紋波的。
回復(fù)

使用道具 舉報(bào)

37#
ID:471427 發(fā)表于 2020-6-28 18:46 | 只看該作者
同問(wèn)
回復(fù)

使用道具 舉報(bào)

38#
ID:519089 發(fā)表于 2020-6-30 13:51 | 只看該作者
MCU_VCC和模擬Vref 要分開(kāi),TL431輸出電容不夠大
回復(fù)

使用道具 舉報(bào)

39#
ID:752906 發(fā)表于 2020-7-14 18:59 | 只看該作者
STC的ad輸入是沒(méi)有緩沖的,內(nèi)阻很小
回復(fù)

使用道具 舉報(bào)

40#
ID:420836 發(fā)表于 2020-7-15 08:46 | 只看該作者
305/5000
ADC值波動(dòng)的原因有很多,您需要檢查參考電壓是否穩(wěn)定,或者是否存在接地噪聲,或者信號(hào)調(diào)節(jié)電路中是否有正確的低通濾波器。 從軟件的角度來(lái)看,您需要軟件過(guò)濾器算法來(lái)平均測(cè)量值。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美在线观看 | 欧美成人一区二区三区 | 免费一区二区三区在线视频 | 日本天堂一区 | 国产精品久久久久久久久久妇女 | 日韩欧美精品在线播放 | 久久久久国产一区二区三区四区 | 日韩免费视频一区二区 | 一区二区三区影院 | 成人精品国产免费网站 | 久久99精品久久久久久噜噜 | 亚洲精品乱码久久久久久蜜桃 | 国产免费一区二区三区 | 一区二区三区不卡视频 | 狠狠狠色丁香婷婷综合久久五月 | 久久国产婷婷国产香蕉 | 欧美性一级 | 婷婷久久综合 | 亚洲国产精品一区二区久久 | 伊人伊成久久人综合网站 | 欧美成人一区二区 | 欧美日韩国产一区二区三区 | 在线欧美一区 | 一区二区在线免费观看视频 | 久久国产精品久久 | 在线一区 | 久草久草久草 | 国产 欧美 日韩 一区 | 五月综合激情婷婷 | 久久久久久久久久久一区二区 | 天天欧美| 一级国产精品一级国产精品片 | 久久久久久久久久久久久久国产 | 不卡的av在线 | 免费一区二区三区 | 亚洲精品观看 | 久久国产精品免费一区二区三区 | 日本免费在线 | 久久亚洲精品国产精品紫薇 | 午夜寂寞影院在线观看 | 欧美精品一区免费 |