labview com

16
[email protected] LabVIEW COM 1.Đặt vn đề Điu khin là quá trình thu thp thông tin, xlý thông tin và tác động lên hthng để đạt được mc đích. Như vy quá trình thu thp thông tin quyết định đến vic điu khin đối tượng, thông tin trên hthng điu khin nhiên liu đin tđược xác định qua tín hiu tin định tcác cm biến như VTG,OXY,n,..vv. Vic ng dng Labview để thu thp tín hiu tcm biến giúp người điu khin có cái nhìn trc quan vhthng, phát hin nhng tín hiu bt thường trong vic điu khin tđó đưa ra hướng điu khin. 2. Cơ slý thuyết vcm biến và tín hiu cm biến và trên động cơ đốt trong 2.1. Cm biến trên động cơ đốt trong Cm biến là thiết bdùng để cm nhn sbiến đối ca đại lượng vt lí và đại lượng không có tính đin thành các đại lượng đin có thđo và xlý. Cm biến sdng trên động cơ đốt trong có nhim vthu thp các tín hiu vtrng thái các thông strong động cơ như cm biến tc độ trc khuu cho biết svòng quay ca trc khuu trên mt đơn vthi gian, cm biến oxy xác định trng thái hn hp nhiên liu sau khi đốt cháy, cm biến vtrí ga cho biết phn trăm ti khi chy trên đường. Để thu thp tín hiu tcm biến ta cn xác định dng tín hiu ca cm biến Các chtiêu đánh giá cm biến trên động cơ đốt trong Di đo: Chênh lch gia giá trln nht và giá trnhnht ca tham scn đo. Độ phân gii: Thay đổi nhnht mà cm biến có thphân bit được. Độ chính xác: Sai khác gia giá trđo được và giá trthc. Tính chính xác: Khnăng lp li kết quđo vi độ chính xác cho trước. Độ nhy: Là tsca thay đổi đầu ra trên mt đơn vthay đổi ca đầu vào. Thi gian đáp ng: Độ trgia đầu vào và đầu ra. Nhit độ hot động: Khong nhit độ mà ti đó cm biến hot động được. Vùng chết: Di đầu vào mà trong di đó skhông có đầu ra. 2.2. Tín hiu tcm biến động cơ đốt trong Tín hiu là biu din ca mt đại lượng vt lý cha đựng tham sthông tin và truyn dn được.

Upload: huy-huu

Post on 05-Dec-2014

55 views

Category:

Documents


1 download

DESCRIPTION

labview

TRANSCRIPT

Page 1: Labview Com

[email protected]

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.

Page 2: Labview Com

[email protected]

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)

Start 0 1 2 3 4 5 6 7 P Stop

0 LSB MSB 1

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

Page 3: Labview Com

[email protected]

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

Số chân Mô tả 1 Data carrier detect (DCD) Tránh tín hiệu mạng dữ liệu

2 Received data (RxD) Dữ liệu được nhận

3 Transmitted data (TxD) Dữ liệu được gửi

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

5 Signal ground (GND) Đất của tín hiệu

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

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

8 Clear to send (CTS) Xóa để gửi

9 Ring indicator (RL) Báo chuông

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.

Page 4: Labview Com

[email protected]

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

Page 5: Labview Com

[email protected]

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

Page 6: Labview Com

[email protected]

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

12

Y1

12MHZ

C133

C233

PVN1

PIC18F4331

RA0/AN02

RA1/AN13

RA2/AN2/VREF-/CAP1/INDX4

RA3/AN3/VREF+/CAP2/QEA5

RA4/AN4/CAP3/QEB6

RA5/AN5/LVDIN7

RB0/PWM033

RB1/PWM134

RB2/PWM235

RB3/PWM336

RB4/KBI0/PWM537

RB5/PGM/KBI1/PWM438

RB6/PGC/KBI239

RB7/PGD/KBI340

RC0/T1OSO/T1CKI15

RC1/T1OSI/CCP2/FLTA*16

RC2/CCP1/FLTB*17

RC3/T0CKI/T5CKI/INT018

RC4/INT1/SDI/SDA23

RC5/INT2/SCK/SCL24

RC6/TX/CK/SS*25

RC7/RX/DT/SDO26

RD0/T0CKI/T5CKI19

RD1/SDO20

RD2/SDI/SDA21

RD3/SCK/SCL22

RD4/FLTA*27

RD5/PWM428

RD6/PWM629

RD7/PWM730

OSC1/CLKIN/RA713

OSC2/CLKOUT/RA614

VDD32AVDD11

VSS31 AVSS12

MCLR*/VPP/RE31

RE0/AN68

RE1/AN79

RE2/AN810

RST

J1

JACK NAP ICSP

12345

data

+5V

clock

R1 10K

TXD

D401N4148

RXD

CHAN DIEU KHIEN

123456

RST

CH

AN

DIE

U K

HIE

N

123456

dataclock

C10+5V

U2

MAX232

C1+1

C1-3

C2+4

C2-5

V+2

V-6

R1OUT12

R2OUT9

T1IN11

T2IN10

R1IN13

R2IN8

T1OUT14

T2OUT7

GN

D15

+5V

16

C6 +5V

C8

CAM BIEN

123456

RXDRXD

C27

TXDTXD

P1

CONNECTOR DB9

594837261

THU TIN HIEU 1

C9

THU TIN HIEU 2THU TIN HIEU 3THU TIN HIEU 4THU TIN HIEU 5THU TIN HIEU 6

DIEU KHIEN

123456

CHAN DIEU KHIEN 1CHAN DIEU KHIEN 2CHAN DIEU KHIEN 3

THU TIN HIEU TOC DOCHAN DIEU KHIEN 4CHAN DIEU KHIEN 5

+12V+5V

C17104

U10 LM7805C/TO

IN1

OUT3

GN

D2

+ C3

1000uF

C20104

+ C4

1000uF

D2

LED

R29 330

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

Page 7: Labview Com

[email protected]

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

12345678

U12

L297

A4HOME3GND2SYNC1

Control11

B6

Enable10D9

VS12 SENS213

Vref15

SENS114

INH15

C7

INH28

OSC16 CW/CCW17 CLOCK18 HALF/FULL19 RESET20

J18

CON4

1234

5VA1

A2

A3

A4U14

ULN2803

CO

M1

0G

ND

9

IN1

1

IN2

2

IN3

3

IN4

4

IN5

5

IN6

6

IN7

7

IN8

8

OU

T1

18

OU

T2

17

OU

T3

16

OU

T4

15

OU

T5

14

OU

T6

13

OU

T7

12

OU

T8

11

5V

D29

4007

D30

4007

D31

4007

D32

4007

R28

472

1 23456789

J19

4OPTOPC817

1

2

3

4

5

6

7

8 9

10

11

12

13

14

15

16

J22

MO

DU

L S

TE

PP

ER

12345678

12V

C V

AN

DIE

NT

U1

C V

AN

VO

IPH

UN

C V

AN

DIE

NT

U3

C V

AN

DIE

NT

U2

RS297

12V

12V

RS297

12V12V

D33

LED

D34

LED

D35

LED

12V

D36

LED

DK VANDIENTU1

DK VANVOIPHUN

DK VANDIENTU3

DK VANDIENTU2

C18

102

R30

0.5/2W

VANDIENTU2VANVOIPHUN

VANDIENTU1VANDIENTU3

D37

2A

R310.5/2W

R32R2

R33R2

D38

2A

R34R2

R35R2

A5

Q16 IRF3250

Q17 IRF3250

D39

2A

C19104

Q18 IRF3250

C20 104

Q19 IRF3250

D40

2A

J24

VAN1

12

J25

VAN2

12

J26

VAN3

12

U16

L298

1A15

1A27

2A110

2A212

1Y12

1Y23

2Y113

2Y214

GND8

1EN6

2EN11

1E1

2E15

VCC19

VCC24

J27

VAN4

12

D41

2A

J28

CON8

12345678

5V

D42

2A

R36 22k

D43

2A

D44

2A J29

CON4

1234

U17

L297

A4HOME3GND2SYNC1

Control11

B6

Enable10D9

VS12 SENS213

Vref15

SENS114

INH15

C7

INH28

OSC16 CW/CCW17 CLOCK18 HALF/FULL19 RESET20

12V

R37 472

123456789

R38 10K

R3939K

5V

U18

L298

1A15

1A27

2A110

2A212

1Y12

1Y23

2Y113

2Y214

GND8

1EN6

2EN11

1E1

2E15

VCC19

VCC24

12V

12V12V

12V

Y5

12V

VANVOIPHUN

VANDIENTU1

VANDIENTU3

VANDIENTU2

VA

ND

IEN

TU

1

VA

NV

OIP

HU

N

VA

ND

IEN

TU

2

D451N4007 R41 3.9K

VA

ND

IEN

TU

3

Y5

MODULE DIEU KHIEN VOI PHUN

R42 22k

C26

102

C27104

Q20

B562

Q21

B562Q22

B562

Q23

B562

Q24D468

Q25D468 Q26

D468

Q27D468

R430.5/2W

R44

0.5/2W

5V

MODUL DONG CO BUOC

U20

74HCT244

A12

A24

A36

A48

1OE1

Y118

Y216

Y314

Y412

VCC20

GND10

A511

A613

A715

A817

Y59

Y67

Y75

Y83

2OE19

C VANDIENTU2C VANDIENTU3

C VANDIENTU1

C VANVOIPHUN

C VANVOIPHUN

C VANDIENTU1

D47

2A

C VANDIENTU2

D48

2A

C VANDIENTU3

D49

2A

D50

2A

R46

470

R47R48R49

D51

2A

D52

2A

D53

2A

D54

2A

R50

472

1 23456789

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)

Page 8: Labview Com

[email protected]

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//////////////////////////////

Page 9: Labview Com

[email protected]

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

Page 10: Labview Com

[email protected]

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)

Page 11: Labview Com

[email protected]

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

Page 12: Labview Com

[email protected]

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

Page 13: Labview Com

[email protected]

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

Page 14: Labview Com

[email protected]

}

}

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

}

Page 15: Labview Com

[email protected]

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

}

}

Page 16: Labview Com

[email protected]

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