Re: pic16f877 A/D问题集
|
||||
---|---|---|---|---|
高級會員
|
真的是搞混了 , 你所指的採樣頻率應該是對外來信號 , 以時間切割的方式將一個連續信號轉換成一連串不連續的數位資料 , 而採樣頻率的快摱 , 影響到對取樣信號的還原度 , 以一個1KHZ的正弦波而言 , 如果你以2K的取樣頻率對輸入信號做轉換 , 那麼在一個完整的週期內你所能夠得到的轉換值只有兩筆 , 那在還原信號的過程中 , 你有99%的機率會將輸入的正弦波還原成三角波 , 另有1%皂機率會得到DC值(如果在0度與180度時) , 所以你必需將取樣頻率再加快 , 若以10K的取樣頻率來做 , 一個正弦波的週期會被切割成10等份 , 那麼你可以得到較接近真實輸入信號的轉換資料 ,
另一個是AD本身對一個取樣點所需要的最短取樣時間 , 也就是說 , 當一個ADC完成8BIT的轉換動作所需要的時間 , 那麼延伸開來 , 若連續執行10次的ADC , 每次ADC都需要40u的話 , 總共會花掉400uS , 所以你的取樣頻率不可以快過1/40uS , 因為AD本身的速度會來不及 , 總而言之 , 你可以規劃每10mS取樣一次 , 每次要花40uS , 或是5mS取樣一次 , 每次還是40uS , 取樣頻率可以自行決定 , 因為那影響到信號的還原度 , ADC的取樣時間你也可以改 , 不過會因為AD本身的設計會有最短和最長的時間 , 另外也會限制你設定取樣頻率的最快頻率能有多快 , 很長一大串 , 希望各位看得懂我寫的是什麼 ,
發表於: 2005/3/25 16:15
|
|||
|
Re: pic16f877 A/D问题集
|
||||
---|---|---|---|---|
新會員
|
Thank you very much!!
One question: 最小轉換時間+最小充電時間=採樣閒距?
發表於: 2005/3/25 15:28
|
|||
|
Re: pic16f877 A/D问题集
|
||||
---|---|---|---|---|
資深會員
|
名詞解說之前,先要說明 AD系統的硬體架構與動作流程
硬體架構:一個 A/D 轉換器,前面有一個取樣器(就是一個電容器),前面接多工器(multi-plexer) 用於選擇信號源通道(AN0 ~ANx) 動作流程: 1. 設定信號源通道,選擇AN0~ANx 其中之一,接到取樣電容器 2. 休息一段時間,讓電容器充電,直到電容器的電壓與信號源電壓相同,完成'採樣'的工作,所需時間,稱為 sampling time,取樣時間,若要使電容器的電壓與信號源電壓之差小於1/2 bit,則需時約 10 usec + R_source*1 usec/kohm,其中 R_source 為信號源之輸出阻抗。 3. 切斷電容器與信號源之間的電路,接通電容器與 A/D轉換器之間的電路,開始轉換,此時電容器的電壓不再隨著信號源的電壓改變,電壓被保持在電容器上,這叫 Hold 保持,所以這電容器的功能稱為 取樣保存器,sample and hold。每轉換一個 bit 需時 T_ad,T_ad 最小為 1.6 usec,轉換 10 bit 需要 (10+2)*T_ad = 19.2 usec。 名詞說明: 採樣頻率 sampling frequency, Fs: 每秒採樣的次數 採樣閒距 sample interval, Ts : 兩次採樣之間的時距 Ts = 1 / Fs 注意: 採樣間距 與 採樣時間 是完全不同的事,切勿混淆! 採樣時間 是 電容器所需的充電時間,你把這兩件事搞混啦。 古時候,二三十年前,CPU 是一顆IC,AD 又是一顆IC,取樣保存器是第三顆IC,全都是分離獨立的,要採樣就要送一個L-H脈波去觸發取樣保存器,並不是給輸入信號一個脈沖,脈沖是送到採樣器的觸發信號。一種可能的做法是 High 就是採樣, Low 就是保持。 做 AD 轉換之前,就要先送 High 去通知採樣保持器去採樣,充電夠了送出 Low 讓 採樣保持器進入保持狀態,然後開始轉換。所以要透過編程產生週期性的電路的脈沖信號,讓採樣器去採樣,例如說要每秒採樣 100 次,充電時間是 20 usec,就是每秒鐘送出 100 個 High 20 usec, Low 9980 usec 的脈沖,並用 H->L 下降緣作為觸發 A/D 轉換器開始轉換的信號。 現在嘛,一顆單片機就整合了CPU 與 A/D 與 取樣保存器,全做在一顆 IC 裡,不必送H-L脈波去做採樣保存啦,將所要的通道寫入特殊寄存器時,就會接通電容器開始取樣,將控制AD轉換的特殊寄存器的特定位元置為1 (寫入1)就會開始轉換並同時將電容器與信號源切斷讓它進入保持狀態。全是用軟件控制,根本不需要外部電路的脈沖啦,脈沖全在單片機裡面,呵呵。 不管是三十年前的多 IC 的AD系統,還是現代的單片機系統,要做的事情與流程都一樣,就是用不同的方式去做就對了。 採樣頻率或採樣時距當然也都是在程式裡寫的啦。隨你寫,單片機能跑多快就多快,只不過若 Fs > 1/(最小轉換時間+最小充電時間) 的話,讀數就會有誤差啦,這就是單片機的極限了。 去找個實驗板做就對了。不同的電路有不同的做法。
發表於: 2005/3/11 11:28
|
|||
|
Re: pic16f877 A/D问题集
|
||||
---|---|---|---|---|
新會員
|
非常感谢 仍有些疑惑 关于采样频率 好像datasheet上叫转换速率 或采样速率 好像在频谱分析上采用到采样频率,我无法与真正的模数转换器相联系! 你的意思是不是若用pic内部A/D 采样频率可以自己设 大于Tad=1.6us 就可以? 我不明白,采样不是应该给输入信号一个采样脉冲 (fs)吗? 通过编程设定这个值吗? 如果对应单纯的模数转换器,若不连接MCU可不可以达到改变采样频率
發表於: 2005/3/10 16:54
|
|||
|
Re: pic16f877 A/D问题集
|
||||
---|---|---|---|---|
版主
|
A1 : 采样频率可以用 Timer 的計時中斷來設定,不同的channel可以用不同的采样频率的。AD轉換的速度 = 采样時間 + 轉換時間
A2 : 可以在底下的網站下載 dsPICworks 的軟件,它可以分析data 的 Time and Frequency domain 的波形。它可以配合 MPLAB IDE 做資料的分析,使用手冊也在網站裡如使用有問題 可以打 中國的微芯科技技術服務專線 : 080-820-6247 找一位謝小姐。 http://www.microchip.com/stellent/idc ... Id=1406&dDocName=en010092 A3 : 要聽聲音就要接 Audio amplifier (0.5W) , 如果取樣頻率高於輸入頻率8倍以上應該是聽不出來有何差異,如果太接近就會產生很大的量化誤差當然就有較大的失真,同時Aliasing的現象也會越明顯。如果將轉換的數值直接送到DAC去就會看到量化的輸出結果,經過低通濾波器後才會比較接近輸入的波形。 A4 : bit rate 一般是指傳送速度,如果有輸出當然可以用示波器觀察。 A5 : 量化後的bit數,可以經由軟體方式改變其為準、振幅值(gain)、降低解析度、壓縮等動作但無增加其解析度,除非它是先有經過 compander (A-Law , u-Law) 的信號壓縮。 PIC16F877 可以達成你的需求。
發表於: 2005/3/7 12:06
|
|||
|
pic16f877 A/D问题集
|
||||
---|---|---|---|---|
新會員
|
要做一个教学实验板 论证采样和量化的过程
想用pic16f877 输入正弦波(方波和三角波) 频率不用很大 做一个8bit A/D和 D/A的硬件接口 要求学生可以拿采样频率和量化比特作实验 分别显示数字输出和模拟输出,并研究bit rate 我的思路是‘拿采样频率和量化resolution‘就是改变这两个参数 请教:1。采样频率如何设定?是Tad吗?还是系统转换速率? 能否改变采样频率?可否设定不同的通道不同的 采样频率? 2。输入正弦波(方波和三角波)数字输出用什莫观察? 3。模拟输出如果想听声音,应接什莫?怎样接? 改变采样频率 声音会有明显变化吗? 如是接示波器,波形会有明显变化吗? 4。bit rate是什莫?能够观察吗? 5。 如果给定一个A/D转换器,量化比特能改变吗? 不知pic16f877可否实现? 或有其他更适合的片子? 或直接连一个A/D和一个D/A转换器能否实现? 想用c编,程序的框架大体如何? 敬请各位大虾赐教,集思广益。感激不尽!!
發表於: 2005/3/6 20:44
|
|||
|