會員登陸
帳號:

密碼:

記住我



忘記密碼?

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


正在流覽:   1 名訪客





18F4520,如何量測電流值
新會員
註冊日期:
7月31日 12:08:57
所屬群組:
註冊會員
文章: 4
等級: 1; EXP: 21
HP : 0 / 5
MP : 1 / 4
離線
各位前輩好,小弟現在做直流電源供應器Output:-3A~3A夾在WCS1700上,在0A=2.321MV 1A=2.355MV,在把數值傳送到終端機上,顯示要求的範圍-3A~3A要與供應器提供的值對應,但現在原本做好電壓值如何轉換成顯示電流值?麻煩請前輩指點一下

#include <stdio.h>
#include <stdlib.h>
#include <p18f4520.h> //納入微控制器定義檔
#include <delays.h> //納入延遲檔
#include <adc.h>//納入類比訊號轉換函式庫定義檔
#include <timers.h>
#include <usart.h>



// 結構位元定義
#pragma config OSC=HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF

#define TML1_VAL 32768 //設定1000ms中斷一次



//宣告中斷執行程式
void timer1_isr(void);
//定義高優先中斷執行程式位址及內容
#pragma code high_vector = 0x08

void high_interrupt(void) {
_asm GOTO timer1_isr _endasm
}
#pragma code

#pragma interrupt timer1_isr

void timer1_isr(void) {
PIR1bits.TMR1IF = 0;
WriteTimer1(TML1_VAL);

}
void main(){

float a;
int b,c,d,e,f,g,h,i;
PORTD = 0xF0;
TRISD = 0;



//開啟類比訊號轉換模組
OpenADC(ADC_FOSC_32 &
ADC_RIGHT_JUST &
ADC_20_TAD,ADC_CH1 &
ADC_INT_OFF &
ADC_VREFPLUS_VDD &
ADC_VREFMINUS_VSS,14);

//開啟USART通訊界面 設定8-N-1-9600 開啟資料接收中斷功能
OpenUSART(USART_TX_INT_OFF &
USART_RX_INT_ON &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH,
64);

OpenTimer1(TIMER_INT_ON & // 使用C18編譯器timer函式庫
T1_16BIT_RW & // 初始化設定Timer1
T1_SOURCE_EXT & // 並開啟TIMER1中斷功能
T1_PS_1_1 &
T1_OSC1EN_ON &
T1_SYNC_EXT_ON);
WriteTimer1(TML1_VAL); //寫入預設值
PIR1bits.TMR1IF = 0; // 清除中斷旗標

while(1){
while(PIR1bits.TMR1IF == 0);//判斷資料傳送狀態旗標
PIR1bits.TMR1IF =0;
WriteTimer1(TML1_VAL);
Delay10TCYx(5);

ConvertADC();
while(BusyADC());

//將10位元資料分三次傳出
a=ADRESH*256+ADRESL;
b=a/1024*2.321*1000;
i=b*2.355;
c=i/1000;

g=c/10;
g +=0x30;
WriteUSART(g);
while(BusyUSART());

h=c%10;
h +=0x30;
WriteUSART(h);
while(BusyUSART());

WriteUSART(0x2e);

d=i%1000/100;
d +=0x30;
WriteUSART(d);
while(BusyUSART());


e=i%100/10;
e+=0x30;
WriteUSART(e);
while(BusyUSART());


f=i%100%10;
f+=0x30;
WriteUSART(f);
while(BusyUSART());


WriteUSART(0x0A);
while(BusyUSART());
WriteUSART(0x0D);
while(BusyUSART());
}
}

附加檔案:



jpg  2.jpg (31.94 KB)
73790_5b7636aa201c5.jpg 619X216 px

8月17日 10:44:58
轉換PDF檔 列印


Re: 18F4520,如何量測電流值
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14528
等級: 73; EXP: 10
HP : 1081 / 1802
MP : 4842 / 76619
離線
很明顯的這霍爾的電壓輸出值太小了是無法直接拿來用的。
你必須要有一個前端放大器及準位位移後才進到 ADC 來轉換以達到較大的解析度。

0A=2.321MV 1A=2.355MV。你要依據你想要測量的最低電壓值到最高電壓值做個滿刻度的轉換。
例如: 0A = 2.321mV, 3A = 2.450mV。你就需要一個放大及位移的電路將 2.321mV 轉成 0V 的輸出。而 2.450mV 轉成 5V 的輸出,再用ADC 轉換這 0V ~ 5V 的電流值。

剛於這應用可以參考教育訓練光碟裡的教材 W402T v2.0 PIC18F整合應用課程
這裡面就有一類比電路(如貼圖)專門在處理這校訊號的放大與鉗位電路。Code Example 裡也有轉換成 ASCII Code 輸出的部分。

附加檔案:



jpg  擷取.JPG (84.04 KB)
16_5b764344a7ba1.jpg 982X628 px

8月17日 11:37:24
轉換PDF檔 列印






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

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2018 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