- Cảm biến áp suất MPX2300D là một sản phẩm thương mại của công ty Motorola.
- MPX2300D chịu đựng được áp lực từ 0mmHg đến 300mmHg và với mỗi áp
lực1mmHg MPX2300D cho ta một điện thế ra 1uV (1uV/mmHg).
- Sơ đồ chân cảm biến MPX2300D (xem bảng 3.1) cùng với hình dáng bên ngoài
Bảng 3.1. Sơ đồ chân cảm biến MPX2300D
Sơ đồ chân của cảm biến MPX2300D
1 2 3 4
Vs S+ S- GND
a)
Hình dáng bên ngoài và bên trong cảm biến được biểu diễn trên hình 3.27a và 3.27b
a) b)
Hình 3.27. a)Hình dáng bên ngoài MPX2300D b)Hình dáng bên trong MPX2300D
3.3.2.2. Kết quả thí nghiệm:
Sơ đồ hệ đo thử nghiệm lock-in số sử dụng cảm biến áp suất được trình bày như
hình 3.28.
Hình 3.28. Sơ đồ hệ đo cảm biến MPX2300
Hình 3.29. chỉ ra cách mắc cho hệ đo
Hình 3.29. Cách mắc hệđo thử nghiệm
Bộ Khuyếch Đại Lock-In Sensor MPX2300D Reference signal
Signal Input
Kết qủa (hiển thị
trên LCD) Tác dụng áp suất
Đầu vào bộ khuyếch đại lock-in
Hệ đo thực tế được trình bày trên hình 3.30
Hình 3.30. Hệ đo thực tế
Kết qủa đo thử của bộ lock-in số dùng cảm biến áp suất MPX2300D để thử nghiệm được trình bày trên bảng 3.2
Áp suất vào Kết quả 10mmHg 9,8uV 15mmHg 14,6uV 20mmHg 21,3uV 25mmHg 24,3uV 30mmHg 32,1uV 40mmHg 40,3uV 50mmHg 53,8uV Bảng 3.2. Kết quả đo
Kết qủa đo được biểu diễn trên các hình 3.31 và 3.32
Hình 3.31. Mối quan hệ giữa tín hiệu ra theo thời gian
Hình 3.32. Mối quan hệ giữa áp suất đưa vào và tín hiệu ra
V(uV)
Kết Luận
Kết quả thu được sau khi khóa luận được thực hiện:
- Tìm hiểu về cấu tạo và nguyên tắc hoạt động của bộ khuyếch đại lock-in - Nắm vững cấu trúc và lập trình tốt cho vi xử lý dsPic30F4011.
- Biết cách sử dụng Matlab để thiết kế một bộ lọc.
- Sử dùng thành thạo phần mềm vẽ mạch in protel và orcad - Hiểu rõ về những phương pháp biến đổi ADC và DAC.
- Xây dựng được cho bản thân cách làm việc khoa học, cách tư duy có hệ thống khi
thực hiện một khóa luận.
- Chế tạo một bộ khuyếch đại lock-in và đã thử nghiệm với một sensor áp suất.
Đánh giá kết quả thu được và hướng phát triển của khóa luận:
- Có thể sử dụng bộ khuyếch đại lock-in số đã chế tạo cho nhiều thí nghiệm với nhiều
loại sensor khác nhau.
- Bộ khuyếch đại lock-in đang còn sai số và độ ổn định vẫn chưa cao.
- Mạch vẫn chưa được gọn gàng
- Vì thời gian thực hiện đề tài là khá ngắn nên hệ đo chưa được thử nghiệm nhiều, do đó đánh giá chưa thật khách quan.
- Hướng phát triển tiếp của đề tài là rút gọn mạch điện, tăng độ chính xác cho hệ đo qua đó có thể thương mại hóa hệ đo.(Có thể sử dụng hệ đo có nhân là bộ khuyếch đại lock- in cho những cảm biến y sinh học – Bio Sensor).
Phụ Lục Mã nguồn chương trình: //---Main--- #include <p30f4011.h> #include <stdio.h> #include "common.h" #include "dsp.h" #include "lcd8bit.h" #include "delay.h" #include "string.h" _FOSC(CSW_FSCM_OFF & XT_PLL16); _FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF & MCLR_EN); _FGS(CODE_PROT_OFF);
extern FIRStruct lowpassexample_psvFilter; /*Contains filter structures for FIR-LPF*/ extern FIRStruct fir_oneFilter;
extern FIRStruct fir_baFilter; extern FIRStruct fir_cuoiFilter; fractional i_Ptr_sig[NUMSAMP]; fractional input_I_signal[NUMSAMP]; fractional input_Q_signal[NUMSAMP]; fractional output_I_signal[NUMSAMP]; fractional output_Q_signal[NUMSAMP]; fractional* i_Ptr;
unsigned int ref_input_s90; unsigned int ref_input; unsigned int doFilterFlag; int main(void)
{
float fI,fQ; float mag,phi; char sBuff[40]; TRISE = 0xFFF0; FIRDelayInit(&lowpassexample_psvFilter); FIRDelayInit(&fir_oneFilter); FIRDelayInit(&fir_baFilter); // Uart_Init(); Init_Timers(); Init_ADC(); TMR1 = 0; TMR2 = 0; TMR3 = 0; T1CONbits.TON = 1; T2CONbits.TON = 1; T3CONbits.TON = 1; while(!doFilterFlag); while (1) { if (doFilterFlag) {
i_Ptr =& i_Ptr_sig[0]; adc = Fract2Float(i_Ptr_sig[0]); nhan1=Fract2Float(i_Ptr_sig[0])*ref_input; nhan2=Fract2Float(i_Ptr_sig[0])*ref_input_s90; input_I_signal[0] = Float2Fract(nhan1); input_Q_signal[0] = Float2Fract(nhan2); FIR(NUMSAMP,&output_I_signal[0],&input_I_signal[0],&fir_oneFilter); FIRDecimate(NUMSAMP,&output_I_signal[10],&input_I_signal[10],&fir_oneFilter,10); FIR(NUMSAMP,&output_Q_signal[0],&input_Q_signal[0],&fir_oneFilter);
FIRDecimate(NUMSAMP,&output_Q_signal[10],&input_Q_signal[10],&fir_oneFilter,1 0); FIR(NUMSAMP,&output_I_signal[0],&input_I_signal[0],&lowpassexample_psvFilter); FIRDecimate(NUMSAMP,&output_I_signal[8],&input_I_signal[8],&lowpassexample_p svFilter,8); FIR(NUMSAMP,&output_Q_signal[0],&input_Q_signal[0],&lowpassexample_psvFilter ); FIRDecimate(NUMSAMP,&output_Q_signal[8],&input_Q_signal[8],&lowpassexample_ psvFilter,8); FIRDecimate(NUMSAMP,&output_I_signal[0],&input_I_signal[0],&fir_baFilter,2); FIRDecimate(NUMSAMP,&output_Q_signal[0],&input_Q_signal[0],&fir_baFilter,2); FIR(NUMSAMP,&output_I_signal[0],&input_I_signal[0],&fir_cuoiFilter); FIR(NUMSAMP,&output_Q_signal[0],&input_Q_signal[0],&fir_cuoiFilter); fI = Fract2Float(output_I_signal[0]); fQ = Fract2Float(output_Q_signal[0]); ... Init_LCD(); // lcd_cmd(lcd_homeL1);
print_lcd(0x80,"TIN HIEU DO DUOC"); // sprintf(sBuff," PHI = %8.4f ",phi);
puts_lcd(sBuff,strlen(sBuff)); lcd_cmd(lcd_homeL2);
sprintf(sBuff," MAG = %8.5f ",mag); puts_lcd(sBuff,strlen(sBuff)); // RS232XMT(sBuff); doFilterFlag = 0; } } return 0;
}
//---Isr_Timers--- #include <p30f4011.h> #include "common.h" #include "dsp.h"
volatile unsigned char _sinTableIndex; extern unsigned int ref_input_s90; extern unsigned int ref_input;
static unsigned char sinTable[] = {5,6,7,8,9,9,10,10,10,10,10,9,9,8,7,6,5,4,3,2,1,1,0,0 ,0,0,0,1,1,2,3,4};
static unsigned char sinTable_s90[] = {10,10,10,9,9,8,7,6,5,4,3,2,1,1,0,0,0,0,0,1,1,2,3 ,4,5,6,7,8,9,9,10,10};
void __attribute__((__interrupt__,no_auto_psv)) _T2Interrupt( void ) { _sinTableIndex++; _sinTableIndex &= 0b00011111; LATE = (sinTable[_sinTableIndex]); ref_input = (sinTable[_sinTableIndex]); ref_input_s90 = (sinTable_s90[_sinTableIndex]); IFS0bits.T2IF = 0; // Xoa co ngat
}
//--lcd--
#include "p30f4011.h" #include "delay.h" #include "lcd8bit.h"
void print_LCD(char a,char *s); void Init_LCD( void );
void lcd_cmd( char cmd ); void lcd_data( char data ) ;
// cai dat lcd
void Init_LCD( void ) {
TRISB &= 0xFF00; // cai dat 8 bit (RB0...RB7) la out con lai la in RW_TRIS = 0; // cai dat RW la out
RS_TRIS = 0; // cai dat RS la out E_TRIS = 0; // cai dat E la out LATB &= 0xFF00;
RW = 0; // RW = low RS = 0; // RS = low E = 0; // E = low
lcd_cmd( lcd_8bit ); // che do giao tiep 8 bit
lcd_cmd( lcd_normal ); // che do nhap du lieu binh thuong lcd_cmd( lcd_on_crsr ); // bat mam hinh va con tro
Delay_ms(1); }
//Chuong trinh con xuat lenh o che do 8 bit void lcd_cmd( char cmd )
{
DATA &= 0xFF00; // chuan bi RB0 - RB7 DATA |= cmd; // gui lenh toi lcd
RW = 0; // RW = low RS = 0; E = 1; // E = hight Nop(); Nop(); Nop(); E = 0; RS = 0; Delay_ms(10);
}
//Chuong trinh con xuat du lieu o che do 8 bit void lcd_data( char data )
{
RW = 0; //
RS = 1; //
DATA &= 0xFF00; // chuan bi RE0 - RE7 DATA |= data; // gui du lieu toi lcd
E = 1; Nop(); Nop(); Nop(); E = 0; // RS = 0; //
Delay_ms(10); // 200uS delay }
void print_lcd(char a,char *s) // ham in ky tu tren LCD, in ky tu truc tiep {
lcd_cmd(a); while(*s != 0) lcd_data(*s++); }
void puts_lcd( unsigned char *data, unsigned char count ) { while ( count ) { lcd_data( *data++ ); count--; } }
Tài Liệu Tham Khảo
[1] “Chip pak high volume presure sensor for disposable, backside pressure applications MPX2300D” – http://www.datasheetcatalog.com
[2] Bentham – “Lockin amplifers” – http://www.bentham.co.uk [3] “dsPIC Language Tool Libraries” – http://www.microchip.com [4] “dsPIC30F Family Reference Manual” – http://www.microchip.com
[5] “dsPIC30F’s Programmer Reference Manual” – http://www.microchip.com [6] “dsPic30F4011/4012” – http://alldatasheet.com
[7] “FilterPro MFB and Sallen– Key Low-Pass Filter Design Program” – John Bishop, Bruce Trump, R. Mark Stitt. – http://www.focus.ti.com
[8] “Implementing Digital Lock-In Amplifiers Using the dsPIC DSC” – http://microchip.com
[9] Jerry Seams – “R/2R LADDER NETWORKS” – http://www.irctt.com [10] “Low Cost, Low Power Instrumentation Amplifier” – http://www.analog.com [11] Microchip Inc website – http://www.microchip.com
[12] “Sallen-Key Low-Pass Filter” – http://www.ecircuitcenter.com [13] “The Analog Lock-in Amplifier” – http://www.signalrecovery.com [14] “The Digital Lock-in Amplifier” – http://www.signalrecovery.com [15] “What is a Lock-in Amplifier?” – http://www.signalrecovery.com
[16] “Wide Bandwidth Dual JFET Input Operational Amplifier” – www.national.com [17] www.docu-track.com