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