0
Tải bản đầy đủ (.pdf) (52 trang)

Kết quả thực nghiệm vành ận xét

Một phần của tài liệu XÂY DỰNG THIẾT BỊ NHẬN BIẾT PHƯƠNG TIỆN GIAO THÔNG SỬ DỤNG CẢM BIẾN TỪ TRỞ (Trang 34 -52 )

Bản mạch hoàn chỉnh của thiết bị được xây dựng như trong hình 22. Cảm biến được đặt tại phía ngoài của mạch để tối ưu khoảng cách từ cảm biến tới các vật thể cần phát hiện. Nhiệm vụ của thực nghiệm là kiểm tra về mặt định tính và định lượng các chức năng của thiết bị: phát hiện xe ôtô, đếm lưu lượng xe ôtô, tính vận tốc của xe khi đi qua thiết bị…

Trong thực nghiệm của chúng tôi, thiết bị được đặt trên vỉa hè (tại điểm nút cầu vượt Mai Dịch). Khoảng cách từ thiết bị tới làn đường gần nhất là 1m, tới làn đường thứ hai là 3m. Ở đây chúng tôi thực hiện hai cấu hình phục vụ cho thí nghiệm. Cấu hình thứ nhất, thiết bị gồm 1 cảm biến HMC1052 (Hình 23), có hai trục cảm biến. Cấu hình này nhằm mục đích phát hiện các xe ô tô chuyển động qua và đếm lượng xe qua thiết bị trong 1 khoảng thời gian định trước. Thiết bị được đặt sao cho trục cảm nhận X sẽ vuông góc với hướng của làn chuyển động của các xe, còn trục Y dọc theo làn đường và có hướng cùng với hướng chuyển động của các phương tiện.

Hình 23. Cu hình cm biến đặt trên va hè làn đường giao thông

Trên máy tính có phần mềm thu thập và xử lý dữ liệu (phần mềm này được viết bằng ngôn ngữ Visual Basic 6.0), có giao diện thân thiện và thể hiện các thông số như: dạng tín hiệu, lưu lượng xe qua thiết bị, thời gian đếm xe…

Hình 24. Dng tín hiu thu được khi xe ti - xe ti – xe con đi qua cm biến

Qua các dạng tín hiệu thu nhận được ta thấy rằng, biên độ của biến thiên tín hiệu thu được khi có xe ôtô đi qua phụ thuộc vào từng loại xe ôtô. Đối với những xe có nhiều thành phần sắt từ hơn, xe dài hơn, có nhiều bánh hơn…độ rộng tín hiệu biến thiên lớn hơn và biên độ lớn hơn (xét khi các xe chạy cùng một làn đường),đây là đặc điểm quan trọng giúp phân loại các xe ôtô. Một yếu tố khác cũng làm thay đổi độ rộng tín hiệu biến thiên, đó là tốc độ chuyển động của các xe khi đi qua cảm biến. Với cùng một xe ôtô, nếu ôtô chuyển động với vận tốc chậm, thì độ rộng tín hiệu biến thiên sẽ lớn hơn khi xe chuyển với vận tốc nhanh hơn. Khoảng cách từ cảm biến tới các xe ôtô quyết định đến biên độ của thay đổi tín hiệu. Bằng thuật toán và giá trị ngưỡng phù hợp, thiết bị đã nhận biết và tính được lưu lượng xe ôtô qua cảm biến. Giá trị ngưỡng đựơc lựa chọn thông qua các kết quả thực nghiệm.

Để kiểm tra độ chính xác và ổn định của thiết bị khi tính lưu lượng xe ôtô, chúng tôi thực hiện nhiều phép đo ở nhiều khoảng thời gian khác nhau. Kết quả thu được từ thiết bị sẽ được so sánh với kết quảđếm thủ công, từ đó xác định sai số của thiết bị. Hình 27 là kết quả của hai lần đo tại điểm nút giao thông cầu Mai Dịch..Qua hai lần đo, sai số của kết quả do thiết bị trong lần đo 1 là 10%, lần 2 là 7.5%.

Nguyên nhân chính dẫn đến sai số của thiết bịđo là do thuật toán phát hiện xe ôtô. Trong thuật toán trên (hình 26), hai giá trị ngưỡng được lựa chọn để so sánh, phát hiện xe. Khi xe ôtô chuyển động ở khoảng cách xa thiết bị thì độ biến thiên của tín hiệu là rất nhỏ, dưới mức giá trị ngưỡng đã chọn. Do đó các xe này sẽ không được thiết bị phát hiện. Một nguyên nhân khác gây ra sai số đó là trường hợp khi có hơn một xe cùng đi qua thiết bị, thiết bị chỉ coi là có một xe. Tuy nhiên trên tại các vị trí chỉ có một làn xe ôtô, thì nguyên nhân này được bỏ qua.

(a) (b)

Hình 27. Kết qu tính lượng xe ti đim nút cu Mai Dch: (a) Trên cu, t 10h 30 đến 10h 45

(b)Trên cu, t 11h đến 11h 10

Kết quả thực nghiệm cũng đã kiểm tra vùng phát hiện xe của thiết bị. Trong vùng có bán kính 3 m, thiết bị sẽ nhận biết được và được tính khi cần xác định lưu lượng. Một thông số quan trọng trong việc xác định vận tốc của xe đó là giới hạn vận

tốc mà thiết bị có thể phát hiện được. Trong thực nghiệm, xác định được giới hạn này là khó khăn. Tuy nhiên theo lý thuyết, giới hạn này là hoàn toàn xác định. Thông qua vùng phát hiện của thiết bị và tốc độ thu nhận dữ liệu về máy tính xử lý, giới hạn vận tốc này được xác định. Về cơ bản, cảm biến phát hiện được nhiễu loạn từ trường tới tần số 15MHz, tốc độ biến đổi của ADC đạt 2.000 mẫu/s. Các thao tác xử lý và việc truyền thông giữa thiết bị và máy tính làm cho tốc độ lấy mẫu thực đạt được trên máy tính là 30 mẫu/second. Như vậy thời gian giữa hai mẫu là :

033 . 0 30 1 = (s) Do đó vận tốc đạt được là: ) / ( 324 ) / ( 90 033 . 0 3 h km s m ≈ ≈

Trong thực tếđiều kiện giao thông ở nước ta, thì giới hạn này chấp nhận được.

Với nhiều phép đo thực hiện ở nhiều thời điểm trong ngày, cho phép đưa ra lưu đồ thể hiện lưu lượng xe qua điểm nút đặt thiết bị trong ngày. Điều này rất có ý nghĩa khi cần giám sát hoạt động giao thông trên các làn đường, đường xa lộ, đường cao tốc…Ví dụ: hệ thống quản lý có thể cảnh báo khả năng tắc ngẽn có thể xảy ra ở các thời điểm trong ngày.

Hình 28. Cu hình khi s dng hai cm biến đặt cách nhau 2m

Trên cơ sở phát hiện được các xe ôtô, thiết bị có thể cải tiến để xác định được tốc độ của các xe ôtô. Bằng cấu hình sử dụng hai cảm biến đặt cách nhau s = 2 m, ta có thể xác định chính xác vận tốc của chúng. Thông qua xác định thời điểm xe đi qua hai cảm biến, t1 và t2, vận tốc của xe được xác định.

1 2 t t t = (2.2) t s v ∆ =

Một vấn đề được đặt ra đó là nhận biết chính xác xe khi đi qua 2 cảm biến để xác định thời điểm qua cảm biến của từng xe. Do đặc điểm của cấu hình và các linh kiện phụ điện tử thụ động khác trong thiết bị, nên tín hiệu thu về từ hai cảm biến đối với cùng một xe là không hoàn toàn giống nhau (vềđộ rộng tín hiệu biến đổi, biên độ biến đổi…). Trong sự sai khác cho phép giữa hai tín hiệu thu về từ hai cảm biến, thiết bị sẽ nhận biết là cùng một xe. Trong điều kiện bình thường, khi các xe ôtô chạy ở khoảng cách an toàn thì việc phân biệt xe là dễ dàng. Vận tốc thu được sẽ là vận tốc tức thời của xe ở thời điểm đi qua thiết bị. Để giám sát được hoạt động giao thông trong một vùng, cần thiết có nhiều thiết bị đặt tại nhiều vị trí và được kết nối với trạm trung tâm. Tuy nhiên công việc này đòi hỏi có sự đầu tư lớn về nhiều mặt. Thiết bị chúng tôi xây dựng được là cơ sở cho việc xây dựng hệ thống lớn trong tương lai.

Kết lun

Thiết bị chúng tôi xây dựng có khả năng nhận biết xe ôtô khi chúng chuyển

động qua ở khoảng cách không quá 3 m. Thuật toán đếm xe áp dụng cho thiết bị, đã

được kiểm nghiệm trong thực tế, thu được kết quả khả quan với độ chính xác 92%. Phần cứng của thiết bị đã được xây dựng có khả năng tính vận tốc xe ôtô khi chúng đi qua điểm khả sát. Trong thời gian gấn, chúng tôi sẽ nâng cấp phần mềm để đếm xe chính xác hơn, và xác định được tốc đô của các xe ôtô khi chúng đi qua.

Các kết quả thu được khi thực nghiệm tại điểm nút giao thông cầu vượt Mai Dịch, bước đầu đã khảo sát được độ chính xác của ứng dụng. Thiết bị đã xác định

được thông số cơ bản là lượng xe chuyển động qua một điểm, và hoàn toàn có khả

năng xác định được thông số vận tốc của xe khi nâng cấp phần mềm.Việc xây dựng một khối đo này thành công sẽ đảm bảo cho khả năng xây dựng một mạng giữa các khối đo. Các khối đo này có thểđược đặt tại nhiều điểm nút giao thông. Đó là cơ sở để

Tài liu tham kho

[1] GS.TSKH Nguyễn Phú Thuỳ, “Vật lý và các hiện tượng từ”,

NXB ĐHQG Hà ni.

[2] Micheal J.Caruso, Lucky S.Withanawasam, “Vehicle detection and

Compass Applications using AMR Magnetic sensors”. [3] Application Notes AN-201, 202, 204, and 207

Honeywell SSEC, www.ssec.honeywell.com

[4] B.B.Pant, “Magnetoresistive Sensors”, Scientific Honeyweller.

[5] “1, 2 and 3-axis magnetic sensors”, Datasheets, www.ssec.honeywell.com [6] Steven A.Macintyre, “Magnetic Field Measurement”.

[7] “A summary of Vehicle Detection and Surveillance Technologies used in Intelligent Transportation Systems”

[8] “Freeway Operations Handbook”, Chapter15: “Detection and Surveillance”

http://ops.fhwa.dot.gov/Travel/traffic/freeway_management_handbook/chapte r15_01.htm.

Ph lc 1

Ph lc 2

Mã chương trình viết cho vi xử lý AT90S8535

/**************************************************************/ // Chuong trinh thuc hien gui cac gia tri ADC bien doi duoc

/**************************************************************/ #include"io8535v.h" #include"macros.h" #include"math.h" void Init_adc0(); void Init_adc1(); void Init_uart();

void send_byte(unsigned char temp); void delay(unsigned int interval);

/**********************************************************/ void main()

{

unsigned char low_byte_0,high_byte_0,low_byte_1,high_byte_1; unsigned char tmp_low_0,tmp_high_0,tmp_low_1,tmp_high_1; unsigned int i; low_byte_0=0; high_byte_0=0; low_byte_1=0; high_byte_1=0; tmp_low_0=0; tmp_high_0=0; tmp_low_1=0; tmp_high_1=0; Init_uart();

SREG|=0x80;//Enable global interrupt

//Get data from AMR sensor (with 2-sensitive axis) //firstly X-axis, then Y-axis

while(1)

{

//Use ADC0 Init_adc0();

ADCSR|=0x40;//Start conversion

while((ADCSR & 0x10)==0x00){;}//Waiting for ADC conversion complete tmp_low_0=ADCL; tmp_high_0=ADCH; delay(3); Init_adc1(); low_byte_0=tmp_low_0 & 0x7F; high_byte_0=((tmp_high_0<<1)|0x80)|(tmp_low_0>>7); ADCSR|=0x40;//Start conversion

while((ADCSR & 0x10)==0x00){;}//Waiting for ADC conversion complete

tmp_low_1=ADCL; tmp_high_1=ADCH; //Encode the data

low_byte_1=tmp_low_1 & 0x7F;

high_byte_1=((tmp_high_1<<1)|0x80)|(tmp_low_1>>7); //Gui du lieu theo khung duoc dinh dang Frame= 0xFF send_byte(0xFF);

delay(20); //Gui du lieu kenh X

send_byte(low_byte_0); delay(20);

send_byte(high_byte_0); delay(20);

//Gui du lieu cua truc Y send_byte(0xFE); delay(20); send_byte(low_byte_1); delay(20); send_byte(high_byte_1); delay(10); }

} /*************************************************************/ void Init_adc0() { ADCSR=0x80;//ADEN_ADSC_ADFR_ADIF_ADIE_ADPS2_ADPS1_ADPS0 ADMUX=0x00;//Channel 0 } /*************************************************************/ void Init_adc1() { ADCSR=0x80;// ADMUX=01;//Select channel 1 } /*************************************************************/ void Init_uart() {

UBRR=51;//Chon toc do Baud =9600 UCR=0x18; //1111 1000

//RXCIE_TXCIE_UDRIE__RXEN_TXEN_CHR9_TXB8_RXB8 }

/*************************************************************/ void delay(unsigned int interval)

{

unsigned int i,j,k; for (i=0;i<interval;i++) for(j=0;j<interval;j++) for(k=0;k<interval;k++); } /*************************************************************/ void send_byte(unsigned char tmp)

{

do

UDR=tmp; }

Mã chương trình viết bằng ngôn ngữ Visual Basic, thực hiện thu và xử lý dữ

liệu trên máy tính

Option Explicit

Dim Counter, R1, R2 As Integer Dim j As Byte

Dim Detected As Boolean

Dim Current_X1, Current_Y1, Old_X1, Old_Y1, Org_X1, Org_Y1, End_X1, dx As Long

Dim tmp_low_0, tmp_high_0, low_byte_0, high_byte_0 As Byte Dim data_1, value_comp As Integer 'Luu du lieu nhan duoc Dim ADCL_0, ADCH_0 As Byte

Dim time_1, time_2 As Long

Private Declare Function InitCommonControls Lib "comctl32.dll" () As Long

Public Sub Grid_Screen(dx As Long)

' Thuc hien ve luoi man hinh

Picture1.ScaleMode = 1 Picture1.DrawWidth = 3

Picture1.Line (1, 5 * 102 * dx)-(Picture1.ScaleWidth, 5 * 102 * dx), vbBlue Picture1.Line (3, 0)-(3, Picture1.ScaleHeight()), vbBlue

For j = 0 To 10 Step 1 Picture1.Line (0, j * 102 * dx)-(100, j * 102 * dx), vbBlue Next j Picture1.DrawWidth = 1 For j = 0 To 50 Step 1 Picture1.Line (0, j * 102 * dx / 5)-(Picture1.ScaleWidth, j * 102 * dx / 5), vbGreen Next j End Sub

Public Sub Draw_Signal()

' Thu tuc Draw() thuc hien ve dang tin hieu tu du lieu thu duoc

dx = Picture1.ScaleHeight() / 1024

Current_Y1 = CLng(Picture1.ScaleHeight() - data_1 * dx) If Current_X1 > End_X1 Then

Current_X1 = 0 Old_X1 = 0 Picture1.Cls Picture1.ScaleMode = 1 ' Axial Grid_Screen (dx) Else Current_X1 = Old_X1 + 30 End If

Picture1.Line (Old_X1, Old_Y1)-(Current_X1, Current_Y1), vbBlack Old_X1 = Current_X1

Old_Y1 = Current_Y1

End Sub

Public Function In_Port() As Integer

‘ Doc du lieu tu cong COM1

Do

DoEvents

Loop Until MSComm1.InBufferCount <> 0 In_Port = Asc(MSComm1.Input)

End Function

Private Sub InitComm()

' Ham nay thuc hien khoi dong COM1

On Error GoTo ERR_OPEN_PORT With MSComm1 .CommPort = 1 .Settings = "9600,N,8,1" .InBufferSize = 1 .InputLen = 1 .InputMode = comInputModeText .PortOpen = True End With Exit Sub

ERR_OPEN_PORT:

'MsgBox "Error while attemp to open the Port. Please restart your PC", vbInformation + vbOKOnly

MsgBox Err.Description

End Sub

Private Sub Exit_Port()

' Dong cong noi tiep RS232

On Error GoTo ERR_CLOSE_PORT MSComm1.PortOpen = False Exit Sub

ERR_CLOSE_PORT:

'MsgBox "The Port can't close!", vbInformation + vbOKOnly MsgBox Err.Description

End Sub

Private Sub CmdClear_Click()

TxtX = " " 'TxtY = " " Counter = 0

End Sub

Private Sub CmdExit_Click()

Unload FrmMain

End Sub

Private Sub CmdSave_Click()

CommonDialog1.Filter = "Text files (*.txt)|*.txt" CommonDialog1.ShowSave

If CommonDialog1.FileName <> "" Then

Open CommonDialog1.FileName For Output As #1 Print #1, vbTab & vbTab & "Du lieu cua truc X" Print #1, TxtX.Text

End If Close #1

End Sub

Private Sub CmdStart_Click()

'**************Khi nguoi su dung Click nut Start*********** '-Nhan du lieu ve qua cong noi tiep RS232

' +Kiem tra du lieu thu duoc: Nhan byte cao truoc, ' Byte thap sau

'-Thuc hien ve tin hieu thu duoc

'**********************************************************

Dim tmp As Integer

'Dim ADCL, ADCH, Tmp_ADCH, Tmp_ADCL As Byte Dim i As Long Org_X1 = 0 End_X1 = Picture1.ScaleWidth() Org_Y1 = Picture1.ScaleHeight() Current_X1 = -2 Old_X1 = -2 Old_Y1 = 0

time_1 = Hour(Time) * 3600 + Minute(Time) * 60 + Second(Time) Do

time_2 = Hour(Time) * 3600 + Minute(Time) * 60 + Second(Time) LblTime.Caption = "Waiting..."

Loop Until (time_2 - time_1) > 10 Counter = 0

Detected = True IGNORE_0: tmp = In_Port()

If tmp = 255 Then ' Khung du lieu cua truc X tmp = In_Port() ' Nhan byte thap truoc

low_byte_0 = CByte(tmp)

tmp = In_Port() ' Nhan byte cao

high_byte_0 = CByte(tmp) Else

GoTo IGNORE_0 End If

ADCL_0 = low_byte_0 + ((high_byte_0 Mod 2) * 128) ' Tmp_ADCL | ((Tmp_ADCH & 0x01)<<7)

ADCH_0 = (high_byte_0 Mod 128) / 2 ' (Tmp_ADCH & 0x7F)>>1

data_1 = ADCH_0 * 256 + ADCL_0 value_comp = data_1

LblCompare.Caption = value_comp i = 0

While (1) IGNORE:

tmp = In_Port()

If tmp = 255 Then ' Khung du lieu cua truc X tmp = In_Port() ' Nhan byte thap truoc

low_byte_0 = CByte(tmp)

tmp = In_Port() ' Nhan byte cao

high_byte_0 = CByte(tmp) Else

GoTo IGNORE End If

' Khoi phuc du lieu

ADCL_0 = low_byte_0 + ((high_byte_0 Mod 2) * 128) ' Tmp_ADCL | ((Tmp_ADCH & 0x01)<<7)

ADCH_0 = (high_byte_0 Mod 128) / 2 ' (Tmp_ADCH & 0x7F)>>1

data_1 = ADCH_0 * 256 + ADCL_0 i = i + 1

LblCompare.Caption = i TxtX = TxtX & " " & data_1 R1 = Abs(value_comp - data_1)

If (R1 > 10) And (Detected = True) Then Counter = Counter + 1

LblCounter.Caption = CStr(Counter) Detected = False

ElseIf R1 < 5 Then Detected = True End If

Draw_Signal ' Ve tin hieu

time_2 = Hour(Time) * 3600 + Minute(Time) * 60 + Second(Time) LblTime.Caption = time_2 - time_1

Wend

End Sub

Private Sub Form_Initialize()

InitCommonControls Picture1.Cls

dx = Picture1.ScaleHeight / 1024 Grid_Screen (dx)

End Sub

Private Sub Form_Load()

InitComm Counter = 0

LblCounter.Caption = CStr(Counter)

End Sub

Private Sub Form_Unload(Cancel As Integer)

' Dong cong noi tiep RS232

Exit_Port

A B C D 6 5 4 3 2 1 D C B A Title Number Revision Size B

Date: 6-Jun-2005 Sheet of

C20 C7 C21 C8 Vin 1 GND 2 +5V 3 U12 UA7805UC D2 +5V 10 9 8 U3C LM324A R62 R60 R61 +5 V +2.5V +5V C3 Q4 NPN R58 R67 R68 C10 C9 COMMON IN RESET C16 C22 R49 TTL RESET 1 2 3 J7 MANUAL COMMON R1 R2 R3 3 2 6 7 1 5 4 8 U1 AD620N +2.5V +2.5V +5V +2.5V 1 2 3 4 5 JP1 5 HEARDER 6 7 8 9 10 JP2 5 HEADER_2 +5V RESET 3 2 1 4 11 U3A LM324A R5 R4 R7 R6 +2.5V C1 C2 +5V R12 R48 R13 3 2 6 7 1 5 4 8 U2 AD620N +2.5V +2.5V +5V +2.5V 5 6 7 U3B LM324A R15 R14 R16 R50 +2.5V C4 +5V A 1 B 3 TAP 2 R69 A 1 B 3 TAP 2 R70 S1B C50 D1 R47 +5V 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 U5 MAX232 C46 C17 C18 C19 C49 RxD CMOS TxD CMOS RxD TTL TxD TTL ADC1 ADC0 R8 R17 + C11 + C12 +2.5V +2.5V S3 R52 R51 +5 V MANUAL 1 2 3 4 5 6 7 8 9 10 JP10 +5V PB0 (T0) 1 PB1 (T1) 2 PB2 (AIN0) 3 PB3 (AIN1) 4 PB4 (/SS) 5 PB5 (MOSI) 6 PB6 (MISO) 7 PB7 (SCK) 8 /RESET 9 VCC 10 GND 11 XTAL2 12 XTAL1 13 PD0 (RxD) 14 PD1 (TxD) 15 PD2 (INT0) 16 PD3 (INT1) 17 PD4 (OC1B) 18 PD5 (OC1A) 19 PD6 (ICP) 20 PA0 (ADC0) 40 PA1 (ADC1) 39 PA2 (ADC2) 38 PA3 (ADC3) 37 PA4 (ADC4) 36 PA5 (ADC5) 35 PA6 (ADC6) 34 PA7 (ADC7) 33 AREF 32 AGND 31

Một phần của tài liệu XÂY DỰNG THIẾT BỊ NHẬN BIẾT PHƯƠNG TIỆN GIAO THÔNG SỬ DỤNG CẢM BIẾN TỪ TRỞ (Trang 34 -52 )

×