.Lƣu đồ giải thuật

Một phần của tài liệu bao ro ri khi gas su dung avr atxmega128a1 (Trang 47)

3.6.1.Lƣu đồ giải thuật VDK

S Đ S Đ BẮT ĐẦU ĐỌC ADC GIÁ TRỊ ĐỌC VỀ BÁO ĐÈN BÁO CÒI TẮT ĐÈN TẮT CÒI

GỞI GIÁ TRỊ ADC LÊN PC

KẾT THÚC TẮT CÒI KIỂM TRA XÁC NHẬN

GVHD: ThS. Nguyễn Ngọc Sơn 39 SVTH: Đặng Ngọc Hải

3.6.2.Lƣu đồ giải thuật cho VB 3.6.2.1.Sự kiện form_load()

Khởi tạo giao diện, hiển thị ngày giờ.

3.6.2.2.Sự kiện kết nối

Thiết lập cổng Com , gởi giá trị kiểm tra kết nối. Nếu chưa nhận được mã thì thơng báo "Thiet bi chua san sang, xin kiem tra lai ket noi."

Kết nối

Kết nối=0, thiết lập cổng com, mở giao tiếp, nhận dữ liêu từ cổng com.

Kết nối=1 Thông báo kết nối

thành công

End Sub

End Sub Form load

-Khởi tạo giao diện -Kết nối=0

GVHD: ThS. Nguyễn Ngọc Sơn 40 SVTH: Đặng Ngọc Hải

3.6.2.3.Sự kiện xác nhận

Nếu ta nhấn nút này trường hợp chưa kết nối thì sẽ báo trạng thái kết nối "He thong da ngat ket noi. Vui long ket noi lai.". Nếu đã kết nối thì sẽ thơng báo trạng thái khí gas, mức độ rị rĩ, và gởi mã lệnh lên VDK để tắt còi.

3.6.2.4.Sự kiện ngắt kết nối

Cho kết nối =0, thông báo trạng thái đã ngắt kết nối lên bảng thông báo, tắt led báo trạng thái kết nối.

-Thông báo trạng thái kết nối. -Trạng thái khí gas.

-Gởi giá trị lên vi điều khiển. -Hiển thị thời gian xác nhận

Xác nhận

End Sub

End Sub Ngắt kết nối

- Kết nối =0

-Thông báo trạng thái ngắt kết nối. -Xóa thơng báo

GVHD: ThS. Nguyễn Ngọc Sơn 41 SVTH: Đặng Ngọc Hải

3.6.2.5.Sự kiện xóa

Xóa thơng báo trên Textbox1

3.6.2.6.Sự kiện thoát

Kiểm tra Port đóng hay mở. Nếu Port mở thì gởi mã dừng VDK và kết thúc chương trình. Nếu Port đóng thì mở Port, gởi mã dừng VDK và kết thúc chương trình.

Chương trình Visual Basic(xem phụ lục2, trang 51) Code c cho AVR (xem phụ lục3, trang 55)

End Sub Thốt -Mở port. -Dừng VDK -Đóng Port Port đóng -Dừng VDK. -Đóng Port Xóa

-Xóa thơng báo trong ơ thông báo.

GVHD: ThS. Nguyễn Ngọc Sơn 42 SVTH: Đặng Ngọc Hải

CHƢƠNG 4

KẾT LUẬN VÀ ĐÁNH GIÁ

4.1.Kết luận:

Nguyên tắc hoạt động của cảm biến khí gas là cảm nhận nồng độ đo được từ các khí LPG để trả về tín hiệu analog cho vi điều khiển xử lý cho ra thông số là ppm đơn vị đo nồng độ khí trong mơi trường. Sau khi thi cơng và chạy chương trình, mạch chạy ổn định và hiển thị thơng số chính xác.

4.2.Đánh giá

- Ưu điểm: đo và hiển thị nồng độ khí (dữ liệu số) lên giao diện người dùng là Visual Basic. Có thể nhận biết được mức khí gas rị rỉ. Dễ lắp đặt và ứng dụng cao vào thự tiễn.

- Khuyết điểm: Chưa đưa ra được quy chuẩn phù hợp với trường hợp là nhiều loại khí, mơi trường nóng ẩm nhiệt độ cao. Chưa tìm ra cơng thức chuyển đổi từ dữ liệu số sang thơng số chuẩn ppm của khí gas.

- Hướng phát triển đề tài: Khắc phục các sai sót trong tính tốn, đưa ra được quy chuẩn phù hợp, có thể đo được khí ở mơi trường gồm nhiều loại khí, điều kiện khắc nghiệt, cần độ chính xác cao như ở các nhà máy lọc dầu, nhà máy chiết nạp khí gas hóa lỏng.

- Kiến nghị: Trong q trình thực hiện đề tài mặc dù đã cố gắng tìm tịi tài liệu và được sử chỉ bảo tận tình của thầy Nguyễn Ngọc Sơn, nhưng vì kiến thức cịn nhiều hạn chế và thời gian có hạn nên em chỉ cơ bản hoàn thành được nội dung yêu cầu của đồ án. Em kính mong tiếp tục nhận được sự chỉ bảo tận tình của q thầy cơ để em có thể tiếp tục tìm hiểu và thực hiện đề tài theo một hướng mới, cao hơn, có nhiều khả năng ứng dụng hơn vào thực tế.

GVHD: ThS. Nguyễn Ngọc Sơn 43 SVTH: Đặng Ngọc Hải

Hình ảnh mơ hình sau khi thi cơng

GVHD: ThS. Nguyễn Ngọc Sơn 45 SVTH: Đặng Ngọc Hải

Hình ảnh giao diện Visual Basic Hình ảnh giao diện khi khởi động

GVHD: ThS. Nguyễn Ngọc Sơn 46 SVTH: Đặng Ngọc Hải

GVHD: ThS. Nguyễn Ngọc Sơn 47 SVTH: Đặng Ngọc Hải

TÀI LIỆU THAM KHẢO

1. Ngô Diên Tập, Kỹ thuật vi điều khiển AVR, Nhà xuất bản khoa học và kỹ thuật, 2003.

2. www.atmel.com

3. http://kiemdinhmiennam.com.vn/ 4. www.pololu.com/file/0J309/MQ2.pdf

5. www.tuhocavr.com

6. Đậu Quang Tuấn, Tự học lập trình Visual Basic, Nhà xuất bản giao thơng vận tải, 2007.

7. www.diendandientu.com

8. Safety Data Sheet LPG/ www.tsocorp.com/stellent/.../msdslpg.pdf

9. Liquified Petroleum Gas Material Safety Data Sheet - Encana/ www.encana.com/pdf/business/.../lpg.pdf

GVHD: ThS. Nguyễn Ngọc Sơn 48 SVTH: Đặng Ngọc Hải

PHỤ LỤC

Phụ lục 1: Giới hạn cháy nổ

GVHD: ThS. Nguyễn Ngọc Sơn 49 SVTH: Đặng Ngọc Hải

Phụ lục 3: Các tiêu chuẩn Việt Nam về khí Gas

Các tiêu chuẩn Việt Nam về Gas (LPG)

ĐƠN VỊ SẢN XUẤT KINH DOANH GAS

1 TCVN 5684 An tồn cháy các cơng trình dầu mỏ-u cầu chung 20 03 Bộ KHCN & Môi trường 2 QĐ36/2006/Q Đ-BCN

Qui chế kỹ thuật an tồn về nạp khí dầu mỏ hóa lỏng vào chai

20 06

Bộ Công nghiệp CỬA HÀNG ĐẠI LÝ KINH DOANH GAS

3 TCVN 6223 Cửa hàng khí đốt hóa lỏng - u cầu chung về an tồn 19 96 Bộ KHCN & Mơi trường

BẢO QUẢN - VẬN CHUYỂN GAS

4 TCVN 6304 Chai chứa khí đốt hóa lỏng u cầu an tồn trong bảo quản, xếp dỡ và vận chuyển

19 97 Bộ KHCN & Môi trường 5 TCVN 6484 Khí đốt hóa lỏng (LPG) - Xe bồn vận chuyển - Yêu cầu an toàn về thiết kế, chế tạo và sử dụng

19 99

Bộ KHCN & Môi trường HỆ THỐNG CUNG CẤP GAS TẠI NƠI TIÊU THỤ

6 TCVN 6486 Khí đốt hóa lỏng - Tồn chứa dưới áp suất - Vị trí, thiết kế, dung lượng và lắp đặt

19 99

Bộ KHCN & Môi trường

7 TCVN 7441 Hệ thống cung cấp LPG tại nơi tiêu thụ - Yêu cầu thiết kế, lắp đặt và vận hành 20 04 Bộ KHCN & Môi trường TRẠM NẠP GAS CHO PHƢƠNG TIỆN GIAO THÔNG ĐƢỜNG BỘ

GVHD: ThS. Nguyễn Ngọc Sơn 50 SVTH: Đặng Ngọc Hải

8 TCN 88:2005

Trạm nạp nhiên liệu LPG cho các phương tiện giao thông đường bộ - Yêu cầu thiết kế, lắp đặt và vận hành 20 05 Bộ thương mại BÌNH GAS

9 TCVN 6153 Bình chịu áp lực yêu cầu kỹ thuật an toàn về thiết kế, kết cấu, chế tạo 19 96 Bộ KHCN & Mơi trường 1 0 TCVN 6154

Bình chịu áp lực yêu cầu kỹ thuật an toàn về thiết kế, kết cấu, phương pháp thử 19 96 Bộ KHCN & Môi trường 1 1 TCVN 6155

Bình chịu áp lực yêu cầu kỹ thuật an toàn về lắp đặt, sử dụng, sửa chữa 19 96 Bộ KHCN & Môi trường 1 2 TCVN 6156

Bình chịu áp lực yêu cầu kỹ thuật an toàn về tắp đặt, sử dụng, sửa chữa, phương pháp thử

19 96 Bộ KHCN & Môi trường 1 3 TCVN 6290 - ISO 10463

Chai chứa khí - Chai chứa khí vĩnh cữu - kiểm tra tại thời điểm nạp khí

19 97 Bộ KHCN & Môi trường 1 4 TCVN 6291 - ISO 448

Chai chứa khí - Chai chứa khí dùng trong cơng nghiệp - Ghi nhãn để nhận biết khí chứa

19 97 Bộ KHCN & Môi trường 1 5 TCVN 6292 - ISO 4706

Chai chứa khí - Chai chứa khí bằng thép hàn có thể nạp lại 19 97 Bộ KHCN & Môi trường 1 6 TCVN 6294 - ISO 14060

Chai chứa khí - Chai chứa khí bằng thép cacbon hàn - kiểm tra & thử định kỳ

19 97 Bộ KHCN & Môi trường 1 7 TCVN 6485

Khí đốt hóa lỏng (LPG) - Nạp khí vào chai có dung tích đến 150lít - u cầu an tồn 19 99 Bộ KHCN & Môi trường

GVHD: ThS. Nguyễn Ngọc Sơn 51 SVTH: Đặng Ngọc Hải

Phụ lục 4: Chƣơng trình Visual Basic

Option Explicit

Private Sub Cmd_kn_Click() On Error GoTo baoloi

If MSComm1.PortOpen = False Then With MSComm1 .Settings = "9600,N,8,1" .RThreshold = 1 .SThreshold = 0 .CommPort = Combo1.ListIndex + 1 End With MSComm1.PortOpen = True End If

If MSComm1.PortOpen = True Then Cmd_kn.Enabled = False

cmd_ngat.Enabled = True ledkn.Active = True

Text1.Text = "Da ket noi." Combo1.Enabled = False Timer2.Enabled = True End If

Exit Sub baoloi:

Text1.Text = "Thiet bi chua san sang, xin kiem tra lai ket noi."

GVHD: ThS. Nguyễn Ngọc Sơn 52 SVTH: Đặng Ngọc Hải

Private Sub cmd_ngat_Click()

If MSComm1.PortOpen = True Then MSComm1.PortOpen = False If MSComm1.PortOpen = False Then

Cmd_kn.Enabled = True cmd_ngat.Enabled = False ledkn.Active = False Combo1.Enabled = True

Text1.Text = "Da ngat ket noi." End If

End Sub

Private Sub Cmd_thoat_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End If

Unload Me End Sub

Private Sub cmd_xn_Click()

If MSComm1.PortOpen = True Then MSComm1.Output = "0" Label6.Caption = DateTime.Now

If ledxanh.Active = True Then

Text1.Text = "He thong gas an toan." If ledvang.Active = True Then

Text1.Text = "He thong gas vuot nguong an toan. Vui long kiem tra." If leddo.Active = True Then

GVHD: ThS. Nguyễn Ngọc Sơn 53 SVTH: Đặng Ngọc Hải

End If End If End If

If cmd_ngat.Enabled = False Then

Text1.Text = "He thong da ngat ket noi. Vui long ket noi lai." End If

End Sub

Private Sub cmd_xoa_Click() Text1.Text = ""

End Sub

Private Sub Form_Load() Timer2.Enabled = False Cmd_kn.Enabled = True cmd_ngat.Enabled = False cmd_xn.Enabled = True End Sub

Private Sub MSComm1_OnComm() Dim BUFFER As String

If MSComm1.InBufferCount >= 4 Then BUFFER = MSComm1.Input If Val(BUFFER) > 4096 Then Text2.Text = "1000" Else Text2.Text = BUFFER End If

GVHD: ThS. Nguyễn Ngọc Sơn 54 SVTH: Đặng Ngọc Hải

End If End Sub

Private Sub Timer1_Timer() Dim h, m, s As Integer Dim ng, th, na As Integer h = Hour(Now) m = Minute(Now) s = Second(Now) ng = Day(Now) th = Month(Now) na = Year(Now)

Label12.Caption = ng & "-" & th & "-" & na & " " & h & ":" & m & ":" & s End Sub

Private Sub Timer2_Timer()

If Val(Text2.Text) >= 1000 And Val(Text2.Text) <= 2000 Then ledxanh.Active = True

ledvang.Active = False leddo.Active = False

ElseIf Val(Text2.Text) > 2000 And Val(Text2.Text) <= 3000 Then ledxanh.Active = False

ledvang.Active = True leddo.Active = False

Text1.Text = "He thong gas vuot nguong an toan. Vui long kiem tra." Else

leddo.Active = True ledxanh.Active = False

GVHD: ThS. Nguyễn Ngọc Sơn 55 SVTH: Đặng Ngọc Hải

ledvang.Active = False

Text1.Text = "Gas ro ri, canh bao muc nguy hiem. Vui long kiem tra he thong gas." End If

End Sub

Phụ lục 5: Chƣơng trình C cho AVR

#include "stdio.h" #include "stdint.h" #include "stdbool.h" #include "avr_compiler.h" #include "port_driver.h" #include "usart_driver.h" #include "adc_driver.h" #include "string.h"

#define USART USARTD0 #define HIGH_OPTIMATION #define SAMPLE_COUNT 10 uint16_t adcSamples; USART_data_t USART_data; uint16_t receiveArray; uint8_t i=1; char str[5];

static int uart_putchar(char c, FILE *stream);

static FILE mystdout = FDEV_SETUP_STREAM (uart_putchar, NULL, _FDEV_SETUP_WRITE);

GVHD: ThS. Nguyễn Ngọc Sơn 56 SVTH: Đặng Ngọc Hải

{

if (c == '\n')

uart_putchar('\r', stream);

// Wait for the transmit buffer to be empty

while ( !( USARTD0.STATUS & USART_DREIF_bm) ); // Put our character into the transmit buffer

USARTD0.DATA = c; return 0;

}

int main( void ) { stdout = &mystdout; uint8_t offset; offset = ADC_Offset_Get(&ADCA); ADC_ConvMode_and_Resolution_Config(&ADCA,false,ADC_RESOLUTION_12BI T_gc); ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV8_gc); ADC_Referance_Config(&ADCA, ADC_REFSEL_VCC_gc); ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH0, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc); ADC_Enable(&ADCA); ADC_Ch_Conversion_Start(&ADCA.CH0); ADC_FreeRunning_Enable(&ADCA); PORT_ConfigurePins( &PORTF, 0x01,

GVHD: ThS. Nguyễn Ngọc Sơn 57 SVTH: Đặng Ngọc Hải false, false, PORT_OPC_TOTEM_gc, PORT_ISC_RISING_gc ); PORT_SetPinsAsOutput( &PORTF, 0x03); PORTD.DIRSET = PIN3_bm; PORTD.DIRCLR = PIN2_bm; USART_InterruptDriver_Initialize(&USART_data,&USART, USART_DREINTLVL_LO_gc); USART_Format_Set(USART_data.usart,USART_CHSIZE_8BIT_gc,USART_PMO DE_DISABLED_gc, false); USART_RxdInterruptLevel_Set(USART_data.usart, USART_RXCINTLVL_LO_gc); USART_Baudrate_Set(&USART, 12 , 0); USART_Rx_Enable(USART_data.usart); USART_Tx_Enable(USART_data.usart); PMIC.CTRL |= PMIC_LOLVLEX_bm; sei(); // PORT_SetOutputValue( &PORTF, 0x00); while(true){ adcSamples = ADC_ResultCh_GetWord(&ADCA.CH0,offset);

if(receiveArray > 5){PORT_SetOutputValue( &PORTF, 0x02); receiveArray=0; i=2;} else{

if(adcSamples > 3500){

GVHD: ThS. Nguyễn Ngọc Sơn 58 SVTH: Đặng Ngọc Hải

else{PORT_SetOutputValue( &PORTF, 0x02); receiveArray=0;} }

else{PORT_SetOutputValue( &PORTF, 0x00); i=1;} } printf("%d",adcSamples); _delay_ms(200); } } ISR(USARTD0_RXC_vect) { USART_RXComplete(&USART_data); receiveArray = USART_RXBuffer_GetByte(&USART_data); receiveArray = receiveArray+2; } ISR(USARTD0_DRE_vect) { USART_DataRegEmpty(&USART_data); }

Một phần của tài liệu bao ro ri khi gas su dung avr atxmega128a1 (Trang 47)

Tải bản đầy đủ (PDF)

(67 trang)