會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客



« 1 (2)


Re: PIC18F4520 ADC問題
資深會員
註冊日期:
2007/06/05 21:45
所屬群組:
註冊會員
文章: 1014
等級: 28; EXP: 16
HP : 0 / 679
MP : 338 / 22849
離線
引用:

Ryang 寫道:
我想這除錯要分兩階段來看:

1. ADC 轉換是否有到全範圍。ADC 輸入 Ov ~ 5V 時,底下的 adc0_dec 的轉換值是否有從 0x0000 ~ 0x03FF 呢?

ConvertADC(); // Start an A/D Conversion
while(BusyADC()); // Wait for Conversion Finished
adc0_dec=ReadADC(); // Read A/D Result

2. 轉換用浮點數運算? 這對 8-bit MCU 是件很耗損的事。建議使用 itoa( ) 函數做 Hex to Decimal to ASCII 的轉換 (0 ~ 1023)

3. 一個轉換bit值對應到電壓值為 4.88mV。所以將直放達 100 倍來做整數運算即可。如果轉換電壓為 1V :

(1V /5V) x 1024 = 205
205 x 488 = 100040 = 1000.40mV

所以以整數方式算出來的電壓值記住小數點的位置即可。


給版主Ryang及有ADC轉換需求者:

>>3. 一個轉換bit值對應到電壓值為 4.88mV。所以將直放達 100 倍來做整數運算即可。如果轉換電壓為 1V :

>> (1V /5V) x 1024 = 205
>> 205 x 488 = 100040 = 1000.40mV

>> 所以以整數方式算出來的電壓值記住小數點的位置即可。

在放大倍數時,要注意一件事...

一件還蠻重要的事...
1. 轉換正確
2. 轉換速度

1. 轉換正確
一定要"轉換正確",要不然就白轉了...

2. 轉換速度
單晶片大部分CPU只有8或16bits,運算能力有限...
得到同樣的答案,但演算法好不好跟效率(速度)很有關係...

簡單先說一下,直接用*488來放大100倍(10mV為單位)有什麼問題
*超出 unsigned int(16bits)範圍
unsigned int(16bits) 範圍為0x0000-0xFFFF
十進位為 0-65535
205 * 488 = 100040 > 65535

這樣容易出問題
Volt_10mv = ADC * 488;
A: Volt_10mv 是unsigned int(16bits)結果出錯
B: Volt_10mv 是unsigned long(24or32bits)
要用16bits以上的long資料格式,這樣容易有效率問題...

使用整數運算,得到mV單位(放大1000倍,且有四捨五入)
http://www.microchip.com.tw/modules/n ... t_id=44930#forumpost44930

Vref+ = Vdd = 5V
#define adc2volt(n) ( n*4 + n - (n*30+128)/256)
註: n*5改成 n*4 + n

adc2volt轉出的值是mV
例: Vref+ = 5V, n是10bits的ADC值(0-1023)
volt = adc2volt(n);
...

2月27日 22:33:57
轉換PDF檔 列印


Re: PIC18F4520 ADC問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14561
等級: 73; EXP: 15
HP : 1082 / 1803
MP : 4853 / 77034
離線
感謝 Jason680 提供的經驗分享。

3月01日 14:08:29
轉換PDF檔 列印



« 1 (2)



無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2019 Winter Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project