1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thiết kế mạch đo nhiệt độ, độ ẩm sử dụng FPGA, gửi dữ liệu hiển thị lên máy tính và điều khiển tốc độ động cơ theo nhiệt độ hoặc nhập từ máy tính bằng phương pháp PWM

26 52 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế mạch đo nhiệt độ, độ ẩm sử dụng FPGA, gửi dữ liệu hiển thị lên máy tính và điều khiển tốc độ động cơ theo nhiệt độ hoặc nhập từ máy tính bằng phương pháp PWM
Tác giả Nhóm 5 Nguyễn Đăng Tuấn, Bùi Thọ Thiện, Nguyễn Trung Kiên, Nguyễn Đức Huy
Người hướng dẫn TS. Nguyễn Đại Dương
Trường học Trường Đại học Bách Khoa Hà Nội
Chuyên ngành Điện tử viễn thông và Điều khiển
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 26
Dung lượng 1,61 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN  BÁO CÁO BÀI TẬP LỚN Đề tài Thiết kế mạch đo nhiệt độ, độ ẩm sử dụng FPGA, gửi dữ liệu hiển thị lên máy tính và điều khiển tốc độ động cơ theo nhiệt độ hoặc[.]

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN

- -

BÁO CÁO BÀI TẬP LỚN

Đề tài: Thiết kế mạch đo nhiệt độ, độ ẩm sử dụng FPGA, gửi

dữ liệu hiển thị lên máy tính và điều khiển tốc độ động cơ theo nhiệt độ hoặc nhập từ máy tính bằng phương pháp PWM

Giảng viên hướng dẫn TS Nguyễn Đại Dương

Nhóm sinh viên thực hiện Nhóm 5

Nguyễn Đăng Tuấn Bùi Thọ Thiện Nguyễn Trung Kiên Nguyễn Đức Huy

Trang 2

MỤC LỤC

PHÂN CÔNG CÔNG VIỆC 4

DANH MỤC HÌNH ẢNH 5

CHƯƠNG 1 YÊU CẦU THIẾT KẾ 6

ĐẶT VẤN ĐỀ 6

CƠ SỞ LÝ THUYẾT 6

Tổng quan về FPGA 6

Ngôn ngữ VHDL 7

Cấu trúc chương trình VHDL 8

MỤC TIÊU THIẾT KẾ 8

CHƯƠNG 2 THIẾT KẾ MẠCH ĐO 9

SƠ ĐỒ KHỐI VÀ NGUYÊN LÝ HOẠT ĐỘNG 9

LỰA CHỌN PHẦN CỨNG 9

Kit FPGA EPM240 9

Module cảm biến nhiệt độ, độ ẩm DHT11 10

Quạt 5V Q5015-5 11

Module USB-TTL UART CP2102 11

CHƯƠNG 3 LẬP TRÌNH 12

KHỐI GIAO TIẾP DHT11 12

Nguyên lý hoạt động 12

Chương trình giao tiếp DHT11 14

LẬP TRÌNH KHỐI TRUYỀN NHẬN UART 15

Giới thiệu về giao tiếp UART 15

Chương trình giao tiếp UART 16

KHỐI ĐIỀU CHẾ XUNG PWM 19

KHỐI TOP ENTITY 19

CHƯƠNG 4 THỰC NGHIỆM VÀ KẾT LUẬN 22

THỬ NGHIỆM 22

KẾT LUẬN 24

Trang 3

TÀI LIỆU THAM KHẢO 26

Trang 4

PHÂN CÔNG CÔNG VIỆC

• Tìm hiểu và viết code khối DHT11

• Thiết kế PowerPoint, viết báo cáo

Nguyễn Trung Kiên

Trang 5

DANH MỤC HÌNH ẢNH

Hình 1 Các thành phần mạch FPGA 6

Hình 2 Quy trình thiết kế mạch bằng VHDL 7

Hình 3 Sơ đồ khối mạch đo 9

Hình 4 KIT ALTERA EPM240 V1 9

Hình 5 Module DHT11 10

Hình 6 Quạt 5V Q5015-5 11

Hình 7 Module CP2102 11

Hình 8 Kết nối module DHT11 với MCU 12

Hình 9 Biểu diễn mức logic 0 13

Hình 10 Biểu diễn mức logic 1 13

Hình 11 Sơ đồ máy trạng thái 14

Hình 12 Lưu đồ thuật toán điều khiển LED 14

Hình 13 Lưu đồ thuật toán điều khiển quạt 15

Hình 14 Giao tiếp UART giữa hai thiết bị 16

Hình 15 Lưu đồ thuật toán khối TxD 17

Hình 16 Lưu đồ thuật toán khối RxD 18

Hình 17 Lưu đồ thuật toán khối điều chế xung PWM 19

Hình 18 Sơ đồ nối các khối phần truyền dữ liệu lên máy tính để hiển thị 20

Hình 19 Sơ đồ nối các khối phần nhận dữ liệu nhập từ máy tính để điều khiển động cơ quạt 20

Trang 6

CHƯƠNG 1 YÊU CẦU THIẾT KẾ

Đặt vấn đề

Khi tìm hiểu về công nghệ, chúng ta sẽ thắc mắc tại sao lại phải sử dụng FPGA trong khi

đã có MCU/CPU/DSP rất mạnh, những ứng dụng/trường hợp nào phải cần đến FPGA mới giải quyết được Để trả lời được những câu hỏi này, chúng ta cần tìm hiểu sâu hơn về cấu tạo kiến trúc FPGA, quy trình thiết kế và kiến thức thực tế về các ứng dụng của nó Trong khuôn khổ bài tập lớn môn học FPGA, nhóm chúng em đã tìm hiểu về FPGA, ngôn ngữ VHDL và thiết kế ứng dụng sử dụng kit FPGA EPM240 trên cơ sở lý thuyết đã học

Chúng em xin cảm ơn thầy Nguyễn Đại Dương đã hướng dẫn chúng em nhiệt tình trong suốt quá trình học và thực hiện project, đề tài chúng em còn nhiều sai sót và khiếm khuyết mong thầy góp ý và chỉnh sửa để chúng em tiến bộ hơn Chúng em xin chân thành cảm ơn!

1 https://cse.usf.edu/~haozheng/teach/cda4253/doc/fpga-arch-overview.pdf

Trang 7

• FPGA có kiến trúc mảng phần tử logic nên có thể thực thi lệnh song song trong khi vi điều khiển hay CPU phải thực thi mã lệnh theo dạng tuần tự

• Vì có thể cấu hình, lập trình lại được nên FPGA dễ dàng mở rộng các ngoại vi cũng như giao tiếp với nhiều thiết bị hơn mà các MCU hoặc ASIC lại hạn chế về điều này

• ASIC/ASSP có hiệu suất cao hơn nếu xét về mặt tiêu thụ công suất và số lượng cổng Nhưng nếu chỉ cần thực thi một chức năng nhỏ nào đó, một chip ASIC/ASSP có thể đòi hỏi công suất tiêu thụ lớn hơn và nhiều cổng hơn thực tế yêu cầu Với FPGA, firmware

có thể xác định được “kích cỡ” của ứng dụng, từ đó giảm số cổng và công suất cần tiêu thụ

• Nếu xét về giá thành, FPGA không thể nào so sánh được với ASIC hay SoC, nhưng bù lại, với khả năng tái cấu hình kiến trúc, FPGA đóng vài trò vô cùng to lớn trong việc giảm giá thành và thời gian chế tạo ASIC

Ngôn ngữ VHDL

Là ngôn ngữ mô phỏng và tổng hợp phần cứng Progamming language được dịch ra mã lệnh thực hiện tuần tự bởi CPU HDL được dịch ra thành các kiến trúc ở mức cổng logic và flip flop

Hai ứng dụng chính của VHDL là trong lĩnh vực PLD (Programmable Logic Device – Thiết

bị logic có thể lập trình (bao gồm CPLD – Complex Programmable Logic Device và FPGA – Field Programmable Gate Array) và trong lĩnh vực ASIC (Application Specific Integrated Circuit – Mạch tích hợp dành riêng cho ứng dụng) Khi chương trình VHDL được viết, nó có thể được sử dụng để thực thi mạch trong một thiết bị có thể lập trình (của Altera, Xilinx, Atmel, v.v.) hoặc có thể được gửi đến xưởng để chế tạo chip ASIC Hiện nay, nhiều chip thương mại phức tạp (ví dụ như vi điều khiển) được thiết kế theo cách tiếp cận như vậy

2 https://dientuviet.com/gioi-thieu-ngon-ngu-vhdl/

Trang 8

Cấu trúc chương trình VHDL

Giống với ngôn ngữ Verilog, toàn bộ hệ thống thiết kế của ngôn ngữ VHDL được gọi là một module Bên trong module có những cấu trúc khác để tạo nên chương trình VHDL là phần khai báo thư viện, phần mô tả thực thể và phần mô tả kiến trúc Bây giờ mình sẽ giới thiệu về entity (thực thể) trong một chương trình VHDL

Một hệ thống module logic trên VHDL bao gồm: khai báo thư viện, entity (thực thể) và ARCHITECTURE là kiến trúc chương trình Trong đó:

• Khai báo LIBRARY (thư viện): tương tự như ngôn ngữ C, chúng ta cần khai báo thư viện cho chương trình VHDL Một số thư viện sau thường dùng cho thiết kế: IEEE, STD, WORK, … Khai báo thư viện phải ở đầu mỗi chươn trình và mỗi module đều phải có khai báo

• ENTITY (thực thể): Khai báo các chân I/O của mạch thiết kế, các tham số dùng chung (GENERIC) của một module VHDL

• ARCHITECTURE (kiến trúc): là phần mô tả chính của một module VHDL Phần này mô tả các chức năng chính của thiết kế hay còn gọi là hàm

Trang 9

CHƯƠNG 2 THIẾT KẾ MẠCH ĐO

Sơ đồ khối và nguyên lý hoạt động

Hình 3 Sơ đồ khối mạch đo

Trong đó:

• Khối cảm biến DHT11: thực hiện đo giá trị nhiệt độ, độ ẩm từ môi trường

• Khối FPGA: giao tiếp với khối DHT11 để nhận giá trị nhiệt độ, độ ẩm thu được, sau đó giao tiếp với PC qua chuẩn UART đồng thời đưa ra lệnh điều khiển quạt và led

• Khối PC: giao tiếp UART với khối FPGA, hiển thị dữ liệu đo được lên màn hình máy tính

để người sử dụng theo dõi và người dùng có thể cài đặt để điều khiển tốc độ quạt tự động theo nhiệt độ hoặc là nhập tốc độ quạt thủ công từ máy tính

• Khối chấp hành: hoạt động theo lệnh điều khiển của khối FPGA

Lựa chọn phần cứng

Kit FPGA EPM240

Thông số kỹ thuật:

• Sử dụng chip: EPM240T100C5N TQFP100

3 https://banlinhkien.com/kit-altera-epm240-v1-p6649334.html

Trang 10

• Điện áp hoạt động: 5VDC

• Tương thích mạch nạp: USB Blaster

• Hỗ trợ giao tiếp: LCD1602, LCD12864

• Hỗ trợ giao tiếp: UART

• Giao tiếp Key đơn

• Giao tiếp Led đơn

• Hỗ trợ cổng I/O

Module cảm biến nhiệt độ, độ ẩm DHT11

DHT11 là cảm biến nhiệt độ, độ ẩm rất thông dụng hiện nay vì chi phí giá rẻ và rất dễ lấy

dữ liệu thông qua giao tiếp 1-wire Cảm biến được tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận về được chính xác mà không cần phải thông qua mạch xử lý tín hiệu nào Dưới đây là một

số thông số kỹ thuật:

• Điện áp hoạt động: 3→5 VDC

• Dải đo độ ẩm: 20%→90% RH, sai số ±5% RH

• Dải đo nhiệt độ: 0℃→50℃, sai số ±2℃

• Tần số lấy mẫu tối đa: 1 Hz

• Khoảng cách truyền tối đa: 20 m

Sơ đồ chân module DHT11 gồm 2 chân cấp nguồn và 1 chân tín hiệu Hiện nay trên thị trường có hai loại thông dụng được đóng gói với 3 chân hoặc 4 chân

4 https://vngiotlab.github.io/vbluno/vi/mydoc_arduino_tut10_vi.html

Trang 11

Quạt 5V Q5015-5

Quạt sên (quạt ly tâm)-Q5015 có chức năng tản nhiệt, làm mát các thiết bị điện tử như: bảng mạch điện tử, PC, laptop, … Quạt sử dụng nguồn điện áp DC làm nguồn nuôi, tùy vào từng mục đích sử dụng cụ thể của sản phẩm mà chúng ta sẽ chọn mua loại quạt tản nhiệt với công suất phù hợp Dưới đây là một số thông số kỹ thuật của quạt sên 5V Q501505:

Module chuyển đổi USB-UART CP2102 hoạt động ở mức điện áp 3.3 VDC và 5VDC nên

có thể dùng để giao tiếp Serial với hầu hết các IC thông dụng trên thị trường Mạch sử dụng chip CP2102, là chip chuyển đổi USB-UART của Silabs CP2102 có kích thước nhỏ gọn và yêu cầu

5 https://banlinhkien.com/quat-tay-kho-5v-q50155-p6648102.html

6 https://www.thegioiic.com/products/cp2102-mach-chuyen-doi-usb-to-ttl-uart

Trang 12

rất ít thành phần bên ngoài để hoạt động được ngay CP2102 không sử dụng thạch anh bên ngoài như CP2303 Trên mạch có 5 cổng vào ra bao gồm: 3.3V, 5V, TxD, RxD, GND; bên cạnh đó được trang bị LED báo hiệu Tx/Rx LED này sẽ sáng khi module truyền hoặc nhận dữ liệu Tốc

độ truyền nhận dữ liệu tối đa là 115200 bps Driver hỗ trợ tương thích với nhiều hệ điều hành,

đã kiểm tra và hoạt động tốt trên Window, Mac OS, Linux

CHƯƠNG 3 LẬP TRÌNH

Khối giao tiếp DHT11

Nguyên lý hoạt động

Vi điều khiển giao tiếp với DHT11 theo chuẩn 1 wire với 2 bước:

• Gửi yêu cầu đo tới DHT11, sau đó đợi DHT11 phản hồi

• Khi DHT11 sẵn sàng giao tiếp, nó sẽ gửi lại 5 byte dữ liệu chứa giá trị nhiệt độ và độ ẩm

2 Vi điều khiển kéo chân DATA lên mức logic 1, sau đó cấu hình lại chế độ INPUT

3 Sau khoảng thời gian 20→40 μs, DHT11 sẽ kéo chân DATA xuống mức logic 0 Trong trường hợp quá 40 μs mà chân DATA vẫn chưa được kéo xuống mức logic 0 nghĩa là giao tiếp với DHT11 thất bại

4 Chân DATA sẽ được giữ ở mức logic 0 thời gian 80 μs sau đó nó được kéo lên mức logic

1 trong 80 μs Vi điểu khiển xác định việc giao tiếp thành công hay không với DHT11 qua chân DATA

7 https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf

Trang 13

Bước 2:

1 Giá trị nhiệt độ và độ ẩm đo được sẽ được DHT11 gửi về vi điều khiển dưới dạng 5 byte:

a Byte 1: giá trị phần nguyên của độ ẩm

b Byte 2: giá trị phần thập phân của độ ẩm

c Byte 3: giá trị phần nguyên của nhiệt độ

d Byte 4: giá trị phần thập phân của nhiệt độ

e Byte 5: byte checksum (nếu byte 5 bằng tổng giá trị 4 byte trên thì dữ liệu thu được

• Nó sẽ kéo chân DATA lên mức logic 1 và giữ trong 70 μs nếu dữ liệu truyền về vi điều khiển là bit 1

8 https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf

9 https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf

Trang 14

Chương trình giao tiếp DHT11

Để giao tiếp với DHT11, nhóm em sử dụng mô hình máy trạng thái để đọc dữ liệu đo được từ cảm biến

Hình 11 Sơ đồ máy trạng thái

Ở trong khối DHT11 bọn em thiết kế sẽ bao gồm cả điều khiển LED và động cơ quạt

Hình 12 Lưu đồ thuật toán điều khiển LED

Trang 15

Hình 13 Lưu đồ thuật toán điều khiển quạt

Lập trình khối truyền nhận UART

Giới thiệu về giao tiếp UART

Giao thức truyền thông đóng một vai trò quan trọng trong việc tổ chức giao tiếp giữa các thiết bị Nó được thiết kế theo nhiều cách khác nhau dựa trên các yêu cầu của hệ thống và các giao thức này có một quy tắc cụ thể được thống nhất giữa các thiết bị để việc truyền dữ liệu được thực hiện thành công Các hệ thống nhúng, vi điều khiển và máy tính hầu hết sử dụng UART như một dạng giao thức giao tiếp phần cứng giữa thiết bị và thiết bị Trong số các giao thức truyền thông hiện có, UART chỉ sử dụng hai dây cho bên truyền và bên nhận

Mặc dù là một phương pháp giao thức truyền thông phần cứng được sử dụng rộng rãi, nhưng nó không phải lúc nào cũng được tối ưu hóa hoàn toàn Việc thực hiện đúng giao thức khung truyền thường bị bỏ qua khi sử dụng module UART bên trong bộ vi điều khiển

Theo định nghĩa, UART là một giao thức truyền thông phần cứng sử dụng giao tiếp nối tiếp không đồng bộ với tốc độ có thể định cấu hình Không đồng bộ có nghĩa là không có tín hiệu đồng hồ để đồng bộ hóa các bit đầu ra từ thiết bị truyền đi đến bên nhận

Trong giao tiếp UART, hai UART giao tiếp trực tiếp với nhau UART truyền chuyển đổi

dữ liệu song song từ một thiết bị điều khiển như CPU thành dạng nối tiếp, truyền nó nối tiếp đến UART nhận, sau đó chuyển đổi dữ liệu nối tiếp trở lại thành dữ liệu song song cho thiết bị nhận

Trang 16

Hình 14 Giao tiếp UART giữa hai thiết bị 10

UART truyền dữ liệu không đồng bộ, có nghĩa là không có tín hiệu đồng hồ để đồng bộ hóa đầu ra của các bit từ UART truyền đến việc lấy mẫu các bit bởi UART nhận Thay vì tín hiệu đồng hồ, UART truyền thêm các bit start và stop vào gói dữ liệu được chuyển Các bit này xác định điểm bắt đầu và điểm kết thúc của gói dữ liệu để UART nhận biết khi nào bắt đầu đọc các bit Khi UART nhận phát hiện một bit start, nó bắt đầu đọc các bit đến ở một tần số cụ thể được gọi là tốc độ truyền (baud rate) Tốc độ truyền là thước đo tốc độ truyền dữ liệu, được biểu thị bằng bit trên giây (bps – bit per second) Cả hai UART đều phải hoạt động ở cùng một tốc độ truyền Tốc độ truyền giữa UART truyền và nhận chỉ có thể chênh lệch khoảng 10% trước khi thời gian của các bit bị lệch quá xa Có 5 bước để thực hiện truyền nhận UART:

1 UART truyền nhận dữ liệu song song từ bus dữ liệu

2 UART truyền thêm bit Start, bit chẵn lẻ và bit Stop vào khung dữ liệu

3 Toàn bộ dữ liệu được đóng gói theo khung và gửi nối tiếp từ bên truyền sang bên nhận Bên nhận lấy mẫu đường dữ liệu ở tốc độ truyền nhận được cấu hình trước

4 Bên nhận loại bỏ bit Start, bit chẵn lẻ và bit Stop khỏi khung dữ liệu

5 Bên nhận chuyển đổi dữ liệu nối tiếp trở lại thành song song và chuyển nó đến bus dữ liệu ở đầu nhận

Chương trình giao tiếp UART

3.2.2.1 Truyền dữ liệu (TxD)

- Để truyền dữ liệu với tốc độ 9600 Mbps, cần tạo một xung clock có tần số 9600 Hz là

clk_9600Hz

10 https://dientuviet.com/kien-thuc-co-ban-ve-giao-tiep-uart/

Trang 17

- Nhúng ENTITY clk_9600Hz vào ENTITY TxD, sau đó ta port map chân clk_out của

clk_9600Hz vào signal prescaled_clk:

- Và dùng signal đó làm biến nhạy cho Process để truyền dữ liệu:

- Khi có lệnh truyền (Start) thì tại mỗi thời điểm xung sườn lên của clk_9600Hz, một bit trong khung bản tin sẽ được đưa lên đường truyền TxD (data_line)

⇒Thứ tự các bit dữ liệu được truyền đi là: Start Bit – Data Bit (LSB) – … – Data

Bit (MSB) – Stop Bit

Hình 15 Lưu đồ thuật toán khối TxD

Trang 18

3.2.2.2 Nhận dữ liệu (RxD)

- Vì UART là giao thức truyền thông thu – phát không đồng bộ, do đó để nhận được tín hiệu, tần số xung clock bên nhận phải lớn hơn ít nhất 2 lần tần số xung clock bên truyền

 Chọn tần số clock nhận là 28,8KHz (gấp 3 lần bên truyền là 9600Hz)

- Ta tạo một Entity là clk_28800Hz, sau đó nhúng vào trong Entity RxD:

- Entity RxD không cần tín hiệu start vì việc nhận dữ liệu là thụ động Thay vào đó, khi

data_line được kéo xuống mức thấp thì khối bắt đầu thực hiện công việc nhận và xử lý

dữ liệu Trong lúc đang nhận dữ liệu, busy = 1

- Dữ liệu sau khi xử lý xong sẽ được lưu tại data

Hình 16 Lưu đồ thuật toán khối RxD

Trang 19

Khối điều chế xung PWM

Để điều khiển tốc độ quạt ta cần phải điều chế xung PWM, với số LE hạn chế thì nhóm em chỉ điều chế xung PWM với duty cycle 40% và 70%, với duty cycle 0 và 100% thì sẽ bật tắt quạt trực tiếp

Hình 17 Lưu đồ thuật toán khối điều chế xung PWM

Khối Top Entity

Do không đủ Logic Element để thực hiện cả việc truyền dữ liệu lên máy tính để hiển thị và gửi

dữ liệu nhập từ máy tính để điều khiển động cơ quạt nên chúng em tách hai phần này ra và chạy từng phần một để đảm bảo đủ Logic Element Mỗi phần em sẽ viết một khối top entity riêng

Ngày đăng: 24/11/2022, 10:10

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w