音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

困擾已久:AD出來(lái)的數(shù)據(jù)和實(shí)際加在芯片通道上的模擬值有出入

作者:geergeer 欄目:單片機(jī)
困擾已久:AD出來(lái)的數(shù)據(jù)和實(shí)際加在芯片通道上的模擬值有出入
對(duì)瀏覽帖子的大俠表示由衷的感謝。如題,小弟是在MPLAB IDE內(nèi)掛接PICC開發(fā)程序的,使用的芯片是16F877A。AD的兩個(gè)寄存器的值設(shè)為ADCON1=0x00,ADCON0=0x41(當(dāng)然通道會(huì)變),也就是說(shuō)采用Fosc/8的模式,數(shù)據(jù)是左對(duì)齊,AD轉(zhuǎn)換的分辨率為8位,每次AD結(jié)束后取ADRESH中的內(nèi)容即可,而且AD的最大轉(zhuǎn)換范圍是單片機(jī)的供電電壓5v,小弟每次AD之間都會(huì)有100微秒的間隔(采樣捕捉時(shí)間和通道轉(zhuǎn)換時(shí)間),每個(gè)通道不停的AD十次,得到十次的和(用sum表示)后,然后用average=sum*5/2550取得均值(浮點(diǎn)型)。到產(chǎn)品實(shí)際上電檢測(cè)的時(shí)候發(fā)現(xiàn),每次AD轉(zhuǎn)換出來(lái)的數(shù)據(jù)比實(shí)際加在芯片通道上的直流模擬值要小,比如1v的變0.6v了,1.9v的變1.2v了,2v的變1.8v了,有大俠知道是什么原因嗎??感激不盡

* - 本貼最后修改時(shí)間:2006-9-16 9:53:06 修改者:geergeer

2樓: >>參與討論
geergeer
哎,自己頂一個(gè)
把采樣濾波的函數(shù)和中斷函數(shù)貼出來(lái)
void FILTER(void)// 均值濾波
{
   unsigned int i,sum=0;
   for(i=0; i<10; i++)
   {
      delay(20);//捕捉時(shí)間約200多us
      ADGO=1;
      while (!flagperend);//flagperend初始化時(shí)為0
      sum=sum+adconvert;
      flagperend=0;
   }
   average=sum*5/2550;//average浮點(diǎn)型,sum為unsigned CHAR
}
void interrupt ISR(void)
{
   if(ADIE&&ADIF)
   {
      ADIF=0;
      adconvert=ADRESH;
      flagperend=1;
   }
   if(TMR1IE&&TMR1IF)
   {
      TMR1IF=0;
      delaycount--;
   }
   if(EEIE&&EEIF)
   {
      EEIF=0;
      flagwrite=1;
   }
}

* - 本貼最后修改時(shí)間:2006-9-15 8:44:19 修改者:geergeer

3樓: >>參與討論
geergeer
有沒(méi)有大俠賜教一二??
難道自己還忽略了那些重要的寄存器的設(shè)置嗎,還是ADCON0和ADCON1的設(shè)置有問(wèn)題??

* - 本貼最后修改時(shí)間:2006-9-16 10:06:15 修改者:geergeer

4樓: >>參與討論
javie
*
首先不要一次就取10次相加求平均,先取一次,看結(jié)果




5樓: >>參與討論
geergeer
感謝大俠
小弟明天按指示去調(diào)一下~~~~

6樓: >>參與討論
javie
我暈,還要明天啊,老大
 
7樓: >>參與討論
xieyuanbin
AD采樣值偏小的兩個(gè)可能:
第一是采樣時(shí)間不夠,在ADON和ADGO之間必須有一個(gè)足夠的采樣時(shí)間,第一是采樣的AD信號(hào)阻抗偏大,比如大于10K,在這種情況下必須適當(dāng)延長(zhǎng)采樣時(shí)間。建議信號(hào)內(nèi)阻不要超過(guò)10K。
具體采樣時(shí)間和信號(hào)內(nèi)阻有關(guān)算法在每個(gè)數(shù)據(jù)手冊(cè)中都有詳細(xì)說(shuō)明。


8樓: >>參與討論
geergeer
回復(fù)
感謝xieyuanbin大哥,小弟已經(jīng)延時(shí)了近400微秒的采樣捕捉時(shí)間和通道轉(zhuǎn)換時(shí)間了,結(jié)果還是不行,頭疼的問(wèn)題啊,我的程序里面有錯(cuò)誤嗎?與AD有關(guān)的ADCON1的值是初始化中設(shè)好后一直不變的,而ADCON0中的值是根據(jù)通道變化在改變的,在中斷中讀ADRESH的值。也已經(jīng)根據(jù)javie大哥的建議去試,只采樣一次還是和采樣十次取均值一樣的結(jié)果,很郁悶啊,我還測(cè)了一下單片機(jī)的供電電壓(即AD的參考電壓)為5.1V,應(yīng)該問(wèn)題不大啊~~

* - 本貼最后修改時(shí)間:2006-9-16 10:11:36 修改者:geergeer

9樓: >>參與討論
javie
400us?
老大你能不能搞大一點(diǎn)啊,877A我沒(méi)做過(guò)A/D,不過(guò)別的型號(hào)我都是1ms的

10樓: >>參與討論
geergeer
好的,試去
 
11樓: >>參與討論
qianlong30
我覺得你的信號(hào)源內(nèi)阻太大,
我延時(shí)20US,精度很準(zhǔn)確,16F74(8位AD)及12F675(10位AD)都用過(guò)

12樓: >>參與討論
xieyuanbin
參考電壓有點(diǎn)偏高,不過(guò)誤差應(yīng)該沒(méi)這么大
5.1V的參考電壓偏高,不過(guò)在這樣的情況下3V讀出數(shù)應(yīng)該在2.97V左右。既然能得出結(jié)果,那么程序基本是沒(méi)有問(wèn)題的,ADON和ADGO均是ADCON0中的位,看你的程序也找不出毛病,再給兩個(gè)建議:第一關(guān)掉AD中斷,采用死等的辦法看看結(jié)果是否符合,第二,你先告訴我你的AD口外面都接了什么?是否有平滑濾波電容?至少要有一個(gè)的。

13樓: >>參與討論
geergeer
感謝諸位的指點(diǎn)
十分感謝xieyuanbin,qianlong30的指點(diǎn),你們都說(shuō)到了點(diǎn)上。因?yàn)橛布枪驹O(shè)計(jì)的,信號(hào)源內(nèi)阻太大的問(wèn)題我只能夠從軟件上適應(yīng)了。一直覺得延時(shí)已經(jīng)夠長(zhǎng)夠狠了,后來(lái)按照javie大哥的指示,我把延時(shí)搞到了毫秒級(jí),AD的值正常了。≡俅胃兄x幾位大俠的耐心指點(diǎn)~~~~

* - 本貼最后修改時(shí)間:2006-9-18 9:40:11 修改者:geergeer

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求dsp30f3013中文數(shù)據(jù)手冊(cè)
看門狗C程序
請(qǐng)問(wèn)大家有用PIC16C57做過(guò)7個(gè)按鍵帶指示燈和5路繼電器的電路嗎?
求高手指點(diǎn)一下.0-5V的電壓變化如何轉(zhuǎn)換成1-3V?謝謝!
pic16f690 clock out問(wèn)題
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)