1. Trang chủ
  2. » Luận Văn - Báo Cáo

ứng dụng Labview để thu thập tín hiệu từ cảm biến

16 1,3K 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 676,76 KB

Nội dung

Như vậy quá trình thu thập thông tin quyết định đến việc điều khiển đối tượng, thông tin trên hệ thống điều khiển nhiên liệu điện tử được xác định qua tín hiệu tiền định từ các cảm biến

Trang 1

LabVIEW COM 1.Đặt vấn đề

Điều khiển là quá trình thu thập thông tin, xữ lý thông tin và tác động lên hệ thống để đạt được mục đích Như vậy quá trình thu thập thông tin quyết định đến việc điều khiển đối tượng, thông tin trên hệ thống điều khiển nhiên liệu điện tử được xác định qua tín hiệu tiền định từ các cảm biến như VTG,OXY,n, vv Việc ứng dụng Labview để thu thập tín hiệu từ cảm biến giúp người điều khiển có cái nhìn trực quan

về hệ thống, phát hiện những tín hiệu bất thường trong việc điều khiển từ đó đưa ra hướng điều khiển

2 Cơ sở lý thuyết về cảm biến và tín hiệu cảm biến và trên động cơ đốt trong 2.1 Cảm biến trên động cơ đốt trong

Cảm biến là thiết bị dùng để cảm nhận sự biến đối của đại lượng vật lí và đại lượng không có tính điện thành các đại lượng điện có thể đo và xữ lý

Cảm biến sử dụng trên động cơ đốt trong có nhiệm vụ thu thập các tín hiệu về trạng thái các thông số trong động cơ như cảm biến tốc độ trục khuỷu cho biết số vòng quay của trục khuỷu trên một đơn vị thời gian, cảm biến oxy xác định trạng thái hỗn hợp nhiên liệu sau khi đốt cháy, cảm biến vị trí ga cho biết phần trăm tải khi chạy trên đường Để thu thập tín hiệu từ cảm biến ta cần xác định dạng tín hiệu của cảm biến Các chỉ tiêu đánh giá cảm biến trên động cơ đốt trong

• Dải đo: Chênh lệch giữa giá trị lớn nhất và giá trị nhỏ nhất của tham số cần

đo

• Độ phân giải: Thay đổi nhỏ nhất mà cảm biến có thể phân biệt được

• Độ chính xác: Sai khác giữa giá trị đo được và giá trị thực

• Tính chính xác: Khả năng lặp lại kết quả đo với độ chính xác cho trước

• Độ nhạy: Là tỷ số của thay đổi đầu ra trên một đơn vị thay đổi của đầu vào

• Thời gian đáp ứng: Độ trễ giữa đầu vào và đầu ra

• Nhiệt độ hoạt động: Khoảng nhiệt độ mà tại đó cảm biến hoạt động được

• Vùng chết: Dải đầu vào mà trong dải đó sẽ không có đầu ra

2.2 Tín hiệu từ cảm biến động cơ đốt trong

Tín hiệu là biểu diễn của một đại lượng vật lý chứa đựng tham số thông tin và truyền dẫn được

Trang 2

Tín hiệu thường được biểu diễn theo miền thời gian hoặc theo miền tần số Đối với những tín hiệu có sự thay đổi tuyến tính, hoặc phi tuyến trong điều khiển như tín hiệu từ cảm biến vị trí ga, cảm biến nhiệt độ nước làm mát thì thường biểu diễn trên miền thời gian Với tín hiệu tuần hoàn như cảm biến kích nổ, cảm biến tốc độ thì được biểu diễn trong miền tần số

Hình 2.1 Biểu diễn tín hiệu trong miền thời gian và tần số

Cảm biến động cơ đốt trong cho ra hầu hết là tín hiệu tiền định ( dạng tín hiệu xác định trước) Việc khảo sát các tín hiệu từ cảm biến giúp ta xác định miền làm việc của tín hiệu các đường đặc tính là cơ sỡ cho việc thay thế các cảm biến, củng như thiết

kế các bộ lọc (bộ lọc thông thấp, bộ lọc dãi, bộ lọc thông cao), các mạch khuếch đại tín hiệu để phù hợp với chuẩn đầu vào ECU

3 Thiết kế Card giao tiếp với Labview qua chuẩn RS232 để thu thập tín hiệu

3.1 Giao thức UART và cổng RS232

a) Giao thức UART

UART (Universal Asynchronous Receiver/Transmitter) là vi mạch điện tử được

sử dụng rộng rãi cho việc truyền dữ liệu bits nối tiếp cũng như chuyển đổi song song/nối tiếp giữa đường truyền và bus máy tính Việc truyền tải được thực hiện theo từng kí tự 7 hoặc 8 bits, được bổ sung hai bít dấu đầu cuối và một bít kiễm tra lỗi chẵn

lẽ (parity bit)

Bit khởi đầu (Start bit) bao giờ cũng là 0 và bits kết thúc (Stop bit) bao giờ cũng là 1 Các bit trong một kí tự được được truyền theo thứ tự từ bit thấp (LSB) tới bit cao (MSB) Bit P (parity) dùng để kiểm tra chẵn lẽ

b) Cổng RS232

Là một chuẩn phát triển bởi Electronic Industries Asiociation (EIA) và các tổ chức liên quan khác chỉ ra giao diện nối tiếp giữa thiết bị đầu cuối dữ liệu (DTE) và thiết bị truyền tin dữ liệu (DCE)

Trang 3

Hình 3.1 Sơ đồ chân DB-9

1 Data carrier detect (DCD) Tránh tín hiệu mạng dữ liệu

4 Data terminal ready (DTR) Đầu dữ liệu sẵn sàng

6 Data set ready (DSR) Dữ liệu sẵn sàng

7 Request to send (RTS) Yều cầu gửi

3.2 Giới thiệu về Labview và tính năng giao tiếp qua RS232

a) Giới thiệu về Labview

Giao diện LabView và mã lập trình Việc lập trình trên Labview chỉ đơn giản là các biểu tượng thay vì các dòng văn bản để tạo các ứng dụng.Trong LabView việc xây dựng giao diện điều khiển củng như thu thập tín hiệu rất đơn gian do được hổ trở các thanh công cụ đồ họa mạnh, các hàm tính toán trong LabView được chuẩn hóa cao

Tính năng giao tiếp giữa LabView với thiết bị ngoại vi được hổ trợ mạnh đặc biệt truyền thông nối tiếp, trong LabView có các thư viện và các hàm mặt định

Trang 4

Thư viện truyền thông nối tiếp qua RS232

b) Tính năng giao tiếp qua RS232

Để giao tiếp giữa LabView với thiết bị ngoại vi ta cần thiết lập cấu hình trong các thư viện truyền thông nối tiếp bao gồm

*Thiết lập cấu hình cổng truyền thông : Với mục đích xác định chế độ baud, số bits truyền, kiễm tra lỗi

*Khối ghi dữ liệu : Với mục đích truyền dữ liệu từ máy tính xuống card

*Khối đọc dữ liệu : Với mục đích nhận dữ hiệu từ card đưa lên

3.2 Sơ đồ điều khiển và lưu đồ thuật toán

Trang 5

Sơ đồ kết nối điều khiển thực tế

Trang 6

Hình 3.2 Sơ đồ thuật toán truyền và nhận dữ liệu giữa Card và máy tính

a-Thuật toán trong Card; b-Thuật toán trong máy tính

3.3 Sơ đồ mạch thiết kế

J62

CON2

1

Y 1

12MHZ

C1

33

C2

33

PVN1

PIC18F4331

RA0/AN0

2

RA1/AN1

3

RA2/AN2/VREF-/CAP1/INDX

4

RA3/AN3/VREF+/CAP2/QEA

5

RA4/AN4/CAP3/QEB

6

RA5/AN5/LVDIN

7

RC0/T1OSO/T1CKI

15

RC1/T1OSI/CCP2/FLTA*

16

RC2/CCP1/FLTB*

17

RC3/T0CKI/T5CKI/INT0

18

RC4/INT1/SDI/SDA

23

RC5/INT2/SCK/SCL

24

RC6/TX/CK/SS*

25

RC7/RX/DT/SDO

26

OSC1/CLKIN/RA7

13

OSC2/CLKOUT/RA6

14

VSS

31 AVSS 12

MCLR*/VPP/RE3

1

RST

J1

JACK NAP ICSP

1 3 5 data +5V

clock

R1 10K

TXD

D40 1N4148

RXD

CHAN DIEU KHIEN 1 3 5

RST

1 3 5

data clock

U2

MAX232

C1+

1

C1-3

C2+

4

C2-5

R1OUT

12

T1IN

11

C8

CAM BIEN

1

3

5

RXD

C27

TXD

P1

CONNECTOR DB9

5 4 3 2 1 THU TIN HIEU 1

C9

THU TIN HIEU 2

THU TIN HIEU 4

THU TIN HIEU 6

DIEU KHIEN

1

3

5

CHAN DIEU KHIEN 1

CHAN DIEU KHIEN 3

THU TIN HIEU TOC DO

CHAN DIEU KHIEN 4

+12V

+5V

C17 104

U10 LM7805C/TO IN

1

+ C3 1000uF

C20 104

+ C4 1000uF

D2 LED

CARD GIAO TIEP

Hình 3.3 Sơ đồ mạch nguyên lý CARD TME

Card được thiết kế dùng Vi Điều Khiển (VĐK) PIC18F4331 để thu thập tín hiệu cảm biến và điều khiển, gồm 9 kênh thu thập tín hiệu, 8 kênh xuất xung PWM

Trang 7

và 20 chân điều khiển số Nguôn 5V nuôi VĐK được lấy từ IC ổn định nguồn LM7805 Vì điện áp giữa chuẩn RS232 và VĐK không tương thích nên cần sử dụng IC Max232 đã chuyển điện áp qua lại tương thích

J17

CON8

1

4

7

U12 L297 A HOME GND 3 2

Control

11

B

VS

13

Vref

15

SENS1

14

OSC

20

J18

CON4 1

4

5V

A1

A3

U14

ULN2803

5V

D29

4007

D30

4007

D31

4007

D32

4007

R28

472

5

8

J19

4OPTOPC817 1 2

3 4

5 6

7

10 11

12 13

14 15

16 J22

1

4

7

12V

RS297

12V

12V

RS297

12V 12V

D33

LED D34

LED D35

LED

12V

D36

LED

DK VANDIENTU1

C18

102

R30

0.5/2W

VANDIENTU2 VANVOIPHUN

VANDIENTU1

VANDIENTU3

D37 2A

R31 0.5/2W

R32 R2

R33 R2

D38 2A

R34 R2

R35 R2

A5

Q16 IRF3250

Q17 IRF3250

D39 2A

C19 104

C20 104

D40 2A

J24

VAN1 1

J25

VAN2 1

J26

VAN3 1

U16

L298

1A1 5 1A2 7

2A1 10

2A2 12

1Y1 2 1Y2 3

2Y1 13 2Y2 14 GND 8 1EN 6

2EN 11

1E 1

2E VCC1 9 VCC2 4

J27

VAN4 1

D41 2A J28

CON8

1

4

7

5V

D42 2A

D43 2A

D44

CON4 1

4 U17

L297 A HOME GND 3 2

Control

11

B

VS

13

Vref

15

SENS1

14

OSC

20

12V

R37 472

1 2 5 8

R39 39K

5V

U18

L298

1A1 5 1A2 7

2A1 10 2A2 12

1Y1 2 1Y2 3

2Y1 13 2Y2 14 GND 8 1EN 6

2EN 11

1E 1

2E VCC1 9 VCC2 4

12V

12V 12V

12V

Y5

12V

VANVOIPHUN

VANDIENTU3

Y5

MODULE DIEU KHIEN VOI PHUN

C26

102

C27 104

Q20 B562

Q21

B562

Q23 B562

Q24 D468

Q25

D468

Q27 D468 R43

0.5/2W R44

0.5/2W

5V

MODUL DONG CO BUOC

U20

74HCT244

A1 2

A2 4 A3 6 A4 8

1OE 1

GND

13 A8

Y5 9 Y6 7 Y7 5 Y8 3

C VANDIENTU2

C VANVOIPHUN

C VANVOIPHUN

C VANDIENTU1

D47 2A

C VANDIENTU2

D48 2A

C VANDIENTU3

D49 2A D50 2A

R46

470 R47

D51 2A D52 2A D53 2A D54 2A

R50

472

5

8

Hình 3.3 Sơ đồ mạch nguyên lý module điều khiển động cơ bước và vòi phun

Module điều khiển động cơ gồm hai IC L297 và L298, IC74HCT244 có tác dụng dụng chuẩn mức High-Low.Module điều khiển vòi phun là mạch khuếch đại công suất chế độ AB, gồm hai transistor khác loại D468 và B562 kéo, đẩy

IRF3250 dứt khoát

4 Kết quả trên giao diện Labview và đánh giá

Hình 4.2 Số liệu thu thập từ Card giao tiếp Labview khi xe chạy xăng hoàn toàn

ở tốc độ 2500 (vòng/phút)

Trang 8

Hình 4.3 Số liệu thu thập từ Card giao tiếp Labview khi xe chạy xăng cồn ở tốc

độ 2500 (vòng/phút)

Qua kết quả thu thập card giao tiếp đáp ứng được khả năng nhận tín hiệu từ cảm biến Việc truyền dữ liệu qua chuẩn RS232 đáp ứng tốc độ truyền tải dữ liệu lên máy tính Tuy nhiên việc sữ dụng card còn hạn chế trong việc đo tốc độ ở động cơ đánh lữa do nhiễu cao áp, việc thu thập tín hiệu củng khó khăn khi không có băng thử nên phải mang máy tính chạy trên đường Do vậy hướng phát triễn của đề tài sẽ tích hợp KIT KM9260 có nhúng hệ điều hành LINUX cho phép truyền dữ liệu qua mạng internet 3G

Chương trình PIC

Master

#include <18f4431.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP

#use delay(clock=12000000)

#use rs232(baud=9600,parity=n,xmit=PIN_C6,rcv=PIN_C7)

#include <stdlib.h>

#use i2c(master,SDA=PIN_C4,SCL=PIN_C5)

/////////////////////////////////CHU Y/////////////////////////////////////////////////////

//////////////////////////////MASTER DOC CAC CAM BIEN SAU: VI_TRI_GA;TOC_DO///////////////////

//////////////////////////////MASTER DIEU KHIEN VOI PHUN LPG////////////////////////////////////

/////////////////////////////MASTER NHAN TIN HIEU LUU LUONG,KICH NO,OXY///////////////////////

/////////////////////////////////////////////KHAI BAO BIEN TOAN CUC//////////////////////////////

Trang 9

INT8 I,A[8],C,LUU_LUONG,vi_tri_ga,kich_no,oxy,DATA,xung,gia_tri=5; INT16 LPG,LAN_LPG,V,DIESEL,CAN_DIESEL;

#INT_RDA

VOID NHAN_DU_LIEU(){

data=GETC();

////////////////////DIEU KHIEN VOI PHUN/////////////////

IF (DATA=='#'){

FOR (I=1;I<=5;I++) {A[I]=GETC();

IF (A[I]=='$') {IF (I==2){ LPG=(A[1]-0X30);

break;}

IF (I==3) {LPG= (A[1]-0X30)*10+(A[2]-0X30);

break;}

IF (I==4){ LPG= (A[1]-0X30)*100+(A[2]-0X30)*10+(A[3]-0X30); break;}

IF (I==5){ LPG= (A[1]-0X30)*1000+(A[2]-0X30)*100+10*(A[3]-0X30)+(A[4]-0X30);

break;}

}

}

}

IF (DATA=='%') {

FOR(I=1;I<=4;I++){A[I]=GETC();

IF (A[I]=='^') {IF (I==2){ CAN_DIESEL=(A[1]-0X30);

break;}

IF (I==3) {CAN_DIESEL=(A[1]-0X30)*10+(A[2]-0X30);

break;}

IF (I==4){ CAN_DIESEL=(A[1]-0X30)*100+(A[2]-0X30)*10+(A[3]-0X30);

Trang 10

break;}

}

}

}

}

#INT_RTCC

VOID BODEMTIMER()

{C++;

}

#INT_TIMER1

VOID PHUN_LPG()

{SET_TIMER1(65386);

LAN_LPG++;

IF (LAN_LPG==1) OUTPUT_HIGH(PIN_C2);

IF (LAN_LPG==LPG) OUTPUT_LOW(PIN_C2);

IF (LAN_LPG>400) LAN_LPG=0;

}

#INT_TIMER5

VOID DIEU_KHIEN_CAN_DIESEL()

{SET_TIMER5(65386);

CAN_DIESEL++;

IF (CAN_DIESEL==1) OUTPUT_HIGH(PIN_C1);

IF (CAN_DIESEL==DIESEL) OUTPUT_LOW(PIN_C1);

IF (CAN_DIESEL>400) CAN_DIESEL=0;

}

////////////////////////Chuong trinh viet i2c///////////////////// void write_I2C(int8 value,int8 slave_addr)

Trang 11

{ i2c_start();

delay_ms(10);

i2c_write(slave_addr);

delay_ms(10);

i2c_write(value);

delay_ms(10);

i2c_stop();

}

///////////////////////chuong trinh doc i2c////////////////////////

int8 read_i2c(int8 slave_addr)

{ int8 value_re;

i2c_start();

delay_ms(10);

i2c_write(0xA1);

delay_ms(10);

value_re=i2c_read(0);

delay_ms(10);

i2c_stop();

return value_re;

}

void main(){

const int8 slave_addr=0xA0;

set_tris_b(0x00);

setup_adc(ALL_ANALOG);

setup_adc(ADC_CLOCK_INTERNAL);

set_adc_channel(0);

setup_uart(9600);

ENABLE_INTERRUPTS(INT_RDA);

//SETUP_TIMER_0(RTCC_DIV_1 |RTCC_EXT_H_TO_L);

Trang 12

SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_1);

SETUP_TIMER_5(T5_INTERNAL|T5_DIV_BY_8);

SET_TIMER0(0);

SET_TIMER1(65236);

SET_TIMER5(65386);

ENABLE_INTERRUPTS(INT_RTCC);

ENABLE_INTERRUPTS(INT_TIMER1);

ENABLE_INTERRUPTS(INT_TIMER5);

ENABLE_INTERRUPTS(GLOBAL);

while(true)

{

//write_i2c(gia_tri,slave_addr);

xung=read_i2c(slave_addr);

v=xung;

/////////////DOC CAM VA GUI TIN HIEU VI TRI GA//////////////////////// SET_ADC_CHANNEL(0);

delay_us(50);

vi_tri_ga=read_adc();

delay_ms(7);

putc('g');

delay_ms(7);

printf("%u",vi_tri_ga);

delay_ms(7);

/////////////GUI GIA TRI TOC DO DONG CO/////////////////////////////////////// putc('v');

delay_ms(8);

Trang 13

printf("%lu",v);

delay_ms(6);

///////////DOC CAM VA GUI TIN HIEU CAM BIEN KICH NO/////////////////////////////////

SET_ADC_CHANNEL(2);

delay_us(50);

KICH_NO=read_adc();

delay_ms(7);

putc('k');

delay_ms(5);

printf("%u",KICH_NO);

/////////////DOC VA GUI TIN HIEU CAM BIEN LUU LUONG////////////////////////////////////

SET_ADC_CHANNEL(1);

delay_us(10);

LUU_LUONG=read_adc();

delay_ms(5);

putc('y');

delay_ms(10);

printf("%u",luu_luong);

/////////////DOC VA GUI TIN HIEU CAM BIEN OXY//////////////////////////////////// SET_ADC_CHANNEL(3);

delay_us(5);

OXY=read_adc();

delay_ms(5);

putc('o');

delay_ms(7);

printf("%u",oxy);

Trang 14

}

}

Slave

#include <18f4431.h>

#fuses XT,HS,NOWDT,NOPROTECT,NOLVP

#use delay(clock=12000000)

#include <stdlib.h>

#use i2c(slave,SDA=PIN_C4,SCL=PIN_C5,address=0xA0,force_hw)

int8 V,ga,DIESEL,DIESEL1=10;

int16 c;

///////////////////////////////////KHAI BAO CAC NGAT///////////////////////

#INT_RTCC

VOID BODEMTIMER()

{C++;

}

#INT_TIMER1

VOID TINH_TOC_DO_DONG_CO()

{

DISABLE_INTERRUPTS(INT_RTCC);

DISABLE_INTERRUPTS(INT_TIMER1);

V=(GET_TIMER0());

C=0;

SET_TIMER0(0);

SET_TIMER1(53036);

ENABLE_INTERRUPTS(INT_RTCC);

ENABLE_INTERRUPTS(INT_TIMER1);

}

Trang 15

#INT_SSP

void i2c_isr()

{int8 state;

state=i2c_isr_state();

if (state<=0x80){

i2c_write(V);

}

}

void main()

{setup_adc(ALL_ANALOG);

setup_adc(ADC_CLOCK_INTERNAL);

SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_8); SETUP_TIMER_0(RTCC_DIV_1 |RTCC_EXT_H_TO_L); SETUP_TIMER_5(T5_INTERNAL|T5_DIV_BY_8); SET_TIMER0(0);

//SET_TIMER1(65236);

SET_TIMER1(53036);

ENABLE_INTERRUPTS(INT_RTCC);

ENABLE_INTERRUPTS(INT_TIMER1);

ENABLE_INTERRUPTS(INT_TIMER5);

ENABLE_INTERRUPTS(GLOBAL);

enable_interrupts(int_ssp);

enable_interrupts(global);

while(true)

{SET_ADC_CHANNEL(0);

delay_us(10);

ga=read_adc();

}

}

Trang 16

Tài liệu tham khảo

[1] PIC Microcontrollers Programming in C Milan Verle

[2]William B Ribbens, Ph.D Understanding Automotive Electronics

[3] Nguyễn Thị Lan Hương – Phạm Ngọc Yến – Nguyễn Việt Tùng LABVIEW Thiết bị đo

và giao diện người – máy NXB khoa học và kỹ thuật

[4] Nguyễn Văn Minh Trí – Lâm Tăng Đức Bài giảng Ghép nối và điều khiển thiết bị ngoại

vi

[5]Trần Quang Vinh Nguyên lí phần cứng và kỹ thuật ghép nối máy tính

Ngày đăng: 21/01/2015, 21:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w