Mạch khuyếch đại lock-in đã chế tạo và tín hiệu vào ra lock in:

Một phần của tài liệu Thiết kế một bộ khuyếch đại lock-in số dựa trên vi điều khiển DsPic (Trang 56 - 73)

3 2 CẤU TRÚC CỦA VI ĐIỀU KHIỂN DSPIC 0F4011

3.3.1.Mạch khuyếch đại lock-in đã chế tạo và tín hiệu vào ra lock in:

Mạch điện được thiết kế trên phần mềm portel (xem hình 3.21), sơ đồ mạch nguyên lý trình bày chi tiết ở phần phụ lục

Tín hiệu reference thu được sau khi sử dụng bộ chuyển đổi DA 4bit theo kiểu mạng R/2R được biểu diễn các hình 3.22 và 3.23.

Tín hiệu reference khi chưa qua bộ lọc sallen-key

Hình 3.22. Tín hiệu reference khi chưa qua bộ lọc sallen-key

Tín hiệu reference khi qua bộ lọc sallen-key

Hình 3.23. Tín hiệu reference khi qua bộ lọc sallen-key

Tín hiệu refrence này sẽ cung cấp cho cảm biến cần khảo sát. Tần số của tín hiệu reference này có thể thay đổi được bằng cách lập trình cho vi điều khiển.

Tích của tín hiệu vào và tín hiệu reference được trình bày trên các hình 3.24 và 3.25.

Hình 3.24. Tích hai tín hiệu cùng pha và độ lệch trung bình DC của tín hiệu thu được khi qua bộ lọc thông thấp

Sự mô phỏng trên hình 3.24(sử dụng phần mềm Micro-Cap Evaluation) cho ta thấy một phép nhân giữa hai tín hiệu cùng pha (tín hiệu vào và tín hiệu tham chiếu(reference)).

Phép nhân này cho kết qủa là một tín hiệu có tần số bằng hai lần tần số reference và có mức trung bình trên mức 0(dương).

Khi tín hiệu này qua bộ lọc thông thấp chúng ta sẽ thu được 1 mức DC tỷ lệ với tín hiệu vào.

Hình 3.25. Tích hai tín hiệu lệch pha 900 và độ lệch trung bình DC của tín hiệu thu được khi qua bộ lọc thông thấp

Hình 3.25. cho thấy tích giữa hai tín hiệu (tín hiệu vào và tín hiệu tham chiếu

(reference)) khi chúng khác pha nhau 900.

Với phép nhân ta thu được một tín hiệu có tần số bằng hai lần tần số reference nhưng mức trung bình là bằng 0.

Hình 3.26 chỉ ra kết quả phép nhân của tín hiệu reference và tín hiệu vào trong thực tế khi tín hiệu vào có pha tạp ồn nhiễu.

Hình 3.26.

a) Tín hiệu đầu vào và tín hiệu tham chiếu b)Tích của chúng 3.3.2.Thử nghiệm bộ khuyếch đại lock-in với cảm biến áp suất MPX2300D:

Để đánh giá và khả năng đo đạc của bộ khuyếch đại lock-in đã xây dựng em thực hiện thiết kế một hệ đo cho sensor áp suất MPX2300D.

3.3.2.1. Cảm biến áp suất MPX2300D:

- 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 Sơ đồ chân của cảm biến MPX2300D

1 2 3 4

Vs S+ S- GND

a)

Bảng 3.1. Sơ đồ chân cảm biến MPX2300D

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: (adsbygoogle = window.adsbygoogle || []).push({});

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

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ình 3.29. Cách mắc hệ đo thử nghiệm

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 Lock-in Amlifier

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

V(uV)

Hình 3.32. Mối quan hệ giữa áp suất đưa vào và tín hiệu ra

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.

- Mạch vẫn chưa được gọn gàng (adsbygoogle = window.adsbygoogle || []).push({});

- 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);

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 nhan1,nhan2,kq1,kq2,adc; 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,10) ; FIR(NUMSAMP,&output_I_signal[0],&input_I_signal[0],&lowpassexample_psvFilter); FIRDecimate(NUMSAMP,&output_I_signal[8],&input_I_signal[8],&lowpassexample_psv Filter,8); FIR(NUMSAMP,&output_Q_signal[0],&input_Q_signal[0],&lowpassexample_psvFilter); FIRDecimate(NUMSAMP,&output_Q_signal[8],&input_Q_signal[8],&lowpassexample_p svFilter,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]); ...

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 ) ;

void puts_lcd( unsigned char *data, unsigned char count ); // 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);

} (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu Thiết kế một bộ khuyếch đại lock-in số dựa trên vi điều khiển DsPic (Trang 56 - 73)