Trong đề tài này nhóm em hướng tới giải quyết những vấn đề sau: Đo nồng độ khí gas qua Arduino Uno và truyền dữ liệu từ Arduino lên FPGA do ban đầu dự kiến là dữ liệu đọc được từ cảm bi
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-oOo -VIỆN ĐIỆN
BÁO CÁO MÔN HỌC FPGA
Đề tài: “Thiết kế mạch cảnh báo khí gas và hiển thị nhiệt độ sử
dụng FPGA.”
Giảng viên hướng dẫn: TS Nguyễn Đại Dương
Nhóm 16:
Ngô Hữu Hoàng 20173911 Nguyễn Thị Khởi 20173988
Vũ Thị Thanh Mai 20174040 Nguyễn Văn Quang 20174138
Hà Nội, 6/2021
Trang 2MỤC LỤC
CHƯƠNG 1: CƠ SỞ LÍ THUYẾT 4
1.1 Tổng quan 4
1.2 Sơ đồ mạch đo và các linh kiện trong mạch 4
1.2.1 Kit FPGA 4
1.2.2 Cảm biến khói MQ6 5
1.2.3 Cảm biến nhiệt độ LM35 6
1.2.4 Arduino Uno 6
CHƯƠNG 2: THIẾT KẾ MẠCH ĐO 10
2.1 Sơ đồ thuật toán 10
2.1.1 Khối tạo xung 10
2.1.2 Khối Receiver 10
2.1.3 Khối so sánh 11
2.1.4 Khối chuyển đổi số BCD sang mã led 7 thanh (Code) 11
2.1.5 Khối hiển thị khí gas 12
2.1.6 Khối hiển thị nhiệt độ 12
2.1.7 Khối còi báo động 12
2.1.8 Các khối nhớ 13
2.2 Mạch mô phỏng 13
CHƯƠNG 3: KẾT LUẬN 14
3.1 Đánh giá, phân tích 14
3.2 Định hướng phát triển đề tài 14
TÀI LIỆU THAM KHẢO 15
Trang 3DANH SÁCH HÌNH Ả
Hình 1 1 Sơ đồ mạch đo 4
Hình 1 2 Kit FPGA 4
Hình 1 3 Cảm biến khí Gas MQ6 5
Hình 1 4 Cảm biến nhiệt độ LM35 6
Hình 1 5 Các chân của Arduino Uno 7
Hình 1 6 Giao tiếp UART 8
Hình 1 7 Frame truyền UART 8
YHình 2 1 Sơ đồ khối tổng quát 10
Hình 2 2 Khối tạo xung 10
Hình 2 3 Khối nhận 10
Hình 2 4 Khối so sánh 11
Hình 2 5 Khối chuyển đổi BCD sang led 7 thanh 11
Hình 2 6 Khối hiển thị khí Gas 12
Hình 2 7 Khối hiển thị nhiệt độ 12
Hình 2 8 Khối còi báo động 13
Hình 2 9 Các khối nhớ 13
Hình 2 10 Mạch mô phỏng 13
Trang 4DANH SÁCH BẢNG
Bảng 1 Đặc điểm của Arduino Uno 7
Trang 5CHƯƠNG 1: CƠ SỞ LÍ THUYẾT
1.1Tổng quan
Ngày nay khoa học kỹ thuật phát triển rất nhanh đặc biệt là điện-điện tử Gắn liền với
sự phát triển của điện tử là sự phát triển của các vi xử lý, vi điều khiển vi mạch điện tử Và trong vi điều khiển cũng có sự nhảy vọt được đánh dấu bằng sự ra đời của các vi điều khiển như PIC, AVR, FPGA
Các vi điều khiển ngày càng đươc ứng dụng rộng rãi và phổ biến Để nghiên cứu về FPGA nhóm em lựa chọn đề tài “Đo nồng độ khí Gas và đo nhiệt độ ” Đây là một đề tài không mới nhưng đề tài này giúp chúng em có thể hiểu biết thêm về cấu trúc bên trong, cách hoạt động của các cảm biến cũng như cách lập trình FPGA
Trong đề tài này nhóm em hướng tới giải quyết những vấn đề sau:
Đo nồng độ khí gas qua Arduino Uno và truyền dữ liệu từ Arduino lên FPGA ( do ban đầu
dự kiến là dữ liệu đọc được từ cảm biến sẽ được xử lý qua ADC rồi truyền lên FPGA nhưng
do quá trình vạn chuyển, ADC bị gãy mất 1 chân nên nhóm em chuyển qua hướng này) Các linh kiện sử dụng trong đề tài:
Kit FPGA Altera EPM240
Arduino Uno
Cảm biến khí gas MQ6
Cảm biến nhiệt độ LM35
1.2 Sơ đồ mạch đo và các linh kiện trong mạch
Hình 1 1 Sơ đồ mạch đo
1.2.1 Kit FPGA
Hình 1 2 Kit FPGA
Trang 6FPGA là viết tắt của thuật ngữ tiếng anh “Field Programmable Gate Array” nếu được dịch sang tiếng việt là một loại vi mạch dùng cấu trúc mảng phần tử logic có thể lập trình được Hay có thể hiểu nôm na nó là một loại chip trắng cho phép người dùng có thể tái cấu hình lại kiến trúc theo ý người dùng để thực thi một chức năng cụ thể
Để dễ hình dung hơn, nếu như những ai đã biết về lập trình vi điều khiển hoặc ARM, thì những vi điều khiển này như (AT89/PIC/MSP430, …) hoặc ARM SoC (STM32, …) đều
là loại chip được thiết kế trên công nghệ ASIC, tức kiến trúc phần cứng do nhà sản xuất thiết kế được cố định trong quá trình sản xuất, người dùng không thể nào thay đổi hoặc chỉnh sửa được Người kĩ sư lập trình ứng dụng hoặc lập trình firmware đều phải nghiên cứu nắm vững kiến trúc của từng loại VĐK trên để phát triển phần mềm, giải thuật tương ứng Do đó, lập trình vi điều khiển còn được hiểu là lập trình phần mềm dựa trên phần cứng
có sẵn Còn đối với FPGA, người dùng có thể tự thiết kế lại kiến trúc phần cứng theo ý mình muốn, kèm theo xây dựng các driver tương ứng để phát triển các phần mềm ứng dụng
và giải thuất tối ưu hơn
Như vậy, ưu điểm thứ nhất của FPGA là tính linh động đối với người dùng, giúp phát triển các giải pháp tốt hơn mà không phụ thuộc vào phần cứng của nhà sản xuất Chúng ta
có thể sử dụng FPGA để thiết kế cũng như lập trình được hầu hết các chức năng của bất kì mạng số nào Việc so sánh ưu điểm, khuyết điểm giữa công nghệ FPGA và ASIC sẽ được thảo luận trong các chuyên mục sau
Cũng giống như vi điều khiển, số lần nạp FPGA hầu như không giới hạn Dữ liệu (chương trình) nạp cho FPGA sẽ bị mất khi mất nguồn (điện) giống như RAM trong máy tính Nếu muốn lưu giữ lại file nạp này thì cần phải có một bộ nhớ ngoài Flash/ ROM (do đặc tính của loại bộ nhớ này là lưu dữ liệu cho dù có mất nguồn) để mỗi lần bật nguồn, file dạng binary
sẽ tự động nạp lại vào FPGA
1.2.2 Cảm biến khói MQ6
Cảm biến khói MQ-6 [ CITATION HAN \l 1033 ]được ứng dụng trong các thiết bị phát hiện sự rò rỉ khí gas Trong dân dụng cũng như trong công nghiệp cảm biến này có khả năng phát hiện khí thiên nhiên, khí than Tránh các tác nhân gây nhiễu là rượu, khói nấu
ăn và khói thuốc lá Độ nhạy cảm biến có thể được điều chỉnh bằng biến trở tinh chỉnh
Hình 1 3 Cảm biến khí Gas MQ6
Đặc tính:
-Nguồn cung cấp: 2.5V ~ 5V
Trang 7-Tích hợp MQ –6 gas Sensor
-Kích thước: 40mm * 21mm
-Led báo hiệu -Đáp ứng nhanh
-Cảm biến hoạt động ổn định và bền
-Sử dụng đơn giản
1.2.3 Cảm biến nhiệt độ LM35
Hình 1 4 Cảm biến nhiệt độ LM35
LM35 là một cảm biến nhiệt độ giá rẻ thường được tiêu dùng mang thể được sử dụng
để đo nhiệt độ (theo ℃) Nó có thể đo nhiệt độ chính xác hơn so với một điện trở nhiệt (thermistor) cùng tầm giá Cảm biến này tạo ra điện áp có đầu ra cao hơn các cặp nhiệt điện
và có thể không cần điện áp đầu ra được khuếch đại LM35 có điện áp đầu ra tỉ lệ thuận có nhiệt độ Celsius Hệ số tỉ lệ là 0.01V/℃
LM35 có độ chuẩn xác hơn kém 0,4 ° C ở nhiệt độ phòng bình thường và hơn kém 0,8 ° C trong khoảng 0 ° C đến + 100 ° C Một đặc tính quan trọng hơn của cảm biến này là rằng nó chỉ thu được 60 microamps từ nguồn cung ứng và có khả năng tự sưởi ấm thấp
Một số tính chất của cảm biến LM35:
-Đầu ra của cảm biến nhiệt độ lm35 thay đổi diễn tả tuyến tính
-Điện áp o / p của cảm biến IC này tỉ lệ với nhiệt độ Celsius
-Điện áp hoạt động từ -55˚ đến + 150˚C
-Được vận hành dưới 4 tới 30 vôn
1.2.4 Arduino Uno
-Một số đặc điểm của Arduino Uno:
Trang 8Hình 1 5 Các chân của Arduino Uno
Bảng 1 Đặc điểm của Arduino Uno
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Điện áp vào khuyên dùng 7-12V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Dòng tối đa trên mỗi chân I/O 30 mA
bởi bootloader
-Giao tiếp UART:
Các tên đầy đủ UART là “Universal Asynchronous Receiver / Transmitter”, và nó là một vi mạch sẵn có trong một vi điều khiển nhưng không giống như một giao thức truyền thông (I2C & SPI) Chức năng chính của UART là truyền dữ liệu nối tiếp Trong UART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai cách là giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song
Trang 9Hình 1 6 Giao tiếp UART
Trong giao tiếp này, có hai loại UART có sẵn là truyền UART và nhận UART và giao tiếp giữa hai loại này có thể được thực hiện trực tiếp với nhau Đối với điều này, chỉ cần hai cáp để giao tiếp giữa hai UART Luồng dữ liệu sẽ từ cả hai chân truyền (Tx) và nhận (Rx) của UARTs Trong UART, việc truyền dữ liệu từ Tx UART sang Rx UART có thể được thực hiện không đồng bộ (không có tín hiệu CLK để đồng bộ hóa các bit o / p)
Việc truyền dữ liệu của UART có thể được thực hiện bằng cách sử dụng bus dữ liệu ở dạng song song bởi các thiết bị khác như vi điều khiển, bộ nhớ, CPU, v.v Sau khi nhận được dữ liệu song song từ bus, nó tạo thành gói dữ liệu bằng cách thêm ba bit như bắt đầu, dừng lại và trung bình Nó đọc từng bit gói dữ liệu và chuyển đổi dữ liệu nhận được thành dạng song song để loại bỏ ba bit của gói dữ liệu Tóm lại, gói dữ liệu nhận được bởi UART chuyển song song về phía bus dữ liệu ở đầu nhận
Hình 1 7 Frame truyền UART
Start bit
Start-bit còn được gọi là bit đồng bộ hóa được đặt trước dữ liệu thực tế Nói chung, một đường truyền dữ liệu không hoạt động được điều khiển ở mức điện áp cao Để bắt đầu truyền dữ liệu, truyền UART kéo đường dữ liệu từ mức điện áp cao (1) xuống mức điện áp thấp (0) UART thu được thông báo sự chuyển đổi này từ mức cao sang mức thấp qua đường dữ liệu cũng như bắt đầu hiểu dữ liệu thực Nói chung, chỉ có một start-bit
Bit dừng
Bit dừng được đặt ở phần cuối của gói dữ liệu Thông thường, bit này dài 2bit nhưng thường chỉ sử dụng 1 bit Để dừng sóng, UART giữ đường dữ liệu ở mức điện áp cao
Trang 10Bit chẵn lẻ
Bit chẵn lẻ cho phép người nhận đảm bảo liệu dữ liệu được thu thập có đúng hay không Đây là một hệ thống kiểm tra lỗi cấp thấp & bit chẵn lẻ có sẵn trong hai phạm vi như Chẵn lẻ – chẵn lẻ cũng như Chẵn lẻ – lẻ Trên thực tế, bit này không được sử dụng rộng rãi nên không bắt buộc
Dữ liệu bit hoặc khung dữ liệu
Các bit dữ liệu bao gồm dữ liệu thực được truyền từ người gửi đến người nhận Độ dài khung dữ liệu có thể nằm trong khoảng 5 & 8 Nếu bit chẵn lẻ không được sử dụng thì chiều dài khung dữ liệu có thể dài 9 bit Nói chung, LSB của dữ liệu được truyền trước tiên sau đó nó rất hữu ích cho việc truyền
Trang 11CHƯƠNG 2: THIẾT KẾ MẠCH ĐO
2.1 Sơ đồ thuật toán
Hình 2 1 Sơ đồ khối tổng quát
2.1.1 Khối tạo xung
Hình 2 2 Khối tạo xung
Chức năng: Điều chế xung thời gian phục vụ hoạt động của các khối chức năng khác -Đầu vào: Xung “clk” với ���� = 2.5 ms (50MHz)
-Đầu ra:
• Xung “clock” với ���oc� = 2,5 ms
• Xung “clk_400Hz”: tín hiệu clock với tần số 400Hz
2.1.2 Khối Receiver
Hình 2 3 Khối nhận
Trang 12Chức năng: Nhận tín hiệu từ khung truyền bản tin tới
-Đầu vào:
• RX: Nhận dữ liệu truyền vào từ Arduino
• Clock : Xung cấp với tần số 400 Hz
-Đầu ra:
• Control: Tín hiệu điều khiển khối so sánh khí gas và khối hiển thị led 7 thanh
• Dta1, dta2, dta3, dta4: lần lượt là số thứ 1,2,3,4 nhận được để hiển thị lên 4 led 7 thanh
2.1.3 Khối so sánh
Hình 2 4 Khối so sánh
Chức năng: So sánh giá trị nhận với giá trị đặt ban đầu (400) để đưa ra tín hiệu cảnh báo
-Đầu vào:
• Digit1: dữ liệu hàng nghìn của khí gas
• Digit2: dữ liệu hàng trăm của khí gas
• Digit3: dữ liệu hàng chục của khí gas
• Digit4: dữ liệu hàng đơn vị của khí gas
-Đầu ra: Alarm: tín hiệu cảnh báo khi alarm =’0’
2.1.4 Khối chuyển đổi số BCD sang mã led 7 thanh (Code)
Hình 2 5 Khối chuyển đổi BCD sang led 7 thanh.
-Đầu vào: Dữ liệu hiển thị
• Hexa1: Chữ số hàng nghìn của khí gas, hàng trăm của nhiệt độ
• Hexa2: Chữ số hàng trăm của khí gas, hàng chục của nhiệt độ
• Hexa3: Chữ số hàng chục của khí gas, hang đơn vị của nhiệt độ
• Hexa4: Chữ số hàng đơn vị của khí gas, phần lẻ của nhiệt độ
Trang 13-Đầu ra: Code1, code2, code3, code 4: mã hiển thị led 7 thanh tương ứng với các mã hexa 1, hexa2, hexa3, hexa4
2.1.5 Khối hiển thị khí gas
Hình 2 6 Khối hiển thị khí Gas
Chức năng: Hiển thị dữ liệu khí gas trên Led 7 thanh
-Đầu vào:
• Data1, data2, data3, data4: mã 8bit hiển thị led 7 thanh của dữ liệu về khí gas
- Đầu ra:
• Data: dữ liệu 8bit hiển thị led 7 thanh vào thời điểm được xét tương ứng với led được bật sáng
• Led: tín hiệu 4bit cho phép chọn led 7 thanh tương ứng được sáng vào thời điểm nào đó
2.1.6 Khối hiển thị nhiệt độ
Hình 2 7 Khối hiển thị nhiệt độ
Chức năng: Hiển thị giá trị nhiệt độ lên Led 7 thanh
-Đầu vào:
• Data1, data2, data3, data4: các mã 8bit hiển thị led 7 thanh của dữ liệu về nhiệt độ
• Clk: xung có tần số 400Hz để thực hiện quét led 7 thanh
-Đầu ra:
• Data: dữ liệu 8 bit hiển thị led 7 thanh vào thời điểm được xét tương ứng với led được bật sáng
• Led: tín hiệu 4bit cho phép chọn led 7 thanh tương ứng được sáng vào thời điểm nào đó
2.1.7 Khối còi báo động
Trang 14Hình 2 8 Khối còi báo động
Chức năng: Phát ra tin hiệu âm thanh khi nhận được tín hiệu cảnh báo
-Đầu vào:
• Act: Nhận tín hiệu từ khối cảnh báo alarm trước đó
• Clk: Xung 400 Hz cấp cho còi chíp hoạt động
-Đầu ra: Bell: Tín hiệu ra nối đến còi chíp
2.1.8 Các khối nhớ
Hình 2 9 Các khối nhớ
-Cấu tạo: Bao gồm các D-FlipFlop
-Chức năng:
Bộ đệm dùng để tạo trễ cho tín hiệu điều khiển và dữ liệu cần hiển thị
Khối memory V5 thì dữ liệu chỉ được thay đổi khi có tín hiệu điều khiển xung sườn lên Tín hiệu control từ receiver đưa vào chân ena của V5
Khối memory V6 thì dữ liệu chỉ được thay đổi khi có tín hiệu điều khiển xung sườn xuống
2.2 Mạch mô phỏng
Hình 2 10 Mạch mô phỏng
Trang 16CHƯƠNG 3: KẾT LUẬN
3.1 Đánh giá, phân tích
-Mô phỏng đáp ứng được yêu cầu đề ra
-Mạch hoạt động tương đối tốt ổn định
3.2 Định hướng phát triển đề tài
Hướng tới hệ thống cảnh báo cháy vào rỉ khí gas có thể truyền thông không dây
Khắc phục xử lý dữ liệu truyền từ các cảm biến bằng ADC thay vì dùng Arduino truyền tin UART
Trang 17TÀI LIỆU THAM KHẢO
[1] MQ6 DATASHEET, "https://www.sparkfun.com," [Online] Available: https://www.sparkfun.com/datasheets/Sensors/Biometric/MQ-6.pdf
[2] Giao tiếp UART [Trực tuyến] Available: https://advancecad.edu.vn/khai-niem-co-ban-ve-truyen-thong-uart-so-do-khoi-ung-dung/
[3] LM35 DATASHEET, "https://www.ti.com," [Online] Available:
https://www.ti.com/lit/ds/symlink/lm35.pdf
[4] Nguyễn Đại Dương,Giáo trình FPGA và ứng dụng,2019