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 1LabVIEW 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 2Tí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 3Hì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 4Thư 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 5Sơ đồ kết nối điều khiển thực tế
Trang 6Hì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 7và 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 8Hì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 9INT8 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 10break;}
}
}
}
}
#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 12SETUP_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 13printf("%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 16Tà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