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

Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3

61 0 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 đề Nghiên Cứu Đo Thể Tích Và Lưu Lượng Nước Hiển Thị Lên Màn Hình LCD Sử Dụng Cảm Biến Và Arduino Uno R3
Tác giả Trần Trọng Ánh, Lê Trọng Minh, Phạm Thế Hùng
Người hướng dẫn TS. Bùi Đức Trình
Trường học Học viện Kỹ thuật Mật Mã
Chuyên ngành Điện Tử Viễn Thông
Thể loại báo cáo
Năm xuất bản 2025
Thành phố Hà Nội
Định dạng
Số trang 61
Dung lượng 4 MB

Cấu trúc

  • Chương 1: Công nghệ thiết kế (9)
    • 1.1 Arduino (9)
    • 1.2 Màn Hình LCD1602 (12)
      • 1.2.1 Giới thiệu (12)
      • 1.2.2 Chức năng các chân (14)
      • 1.2.3 Các thanh ghi (17)
      • 1.2.4 Tập lệnh của LCD (23)
    • 1.3 Cảm biến siêu âm (UltraSonic Sensor) (33)
    • 1.4 Cảm biến lưu lượng ( Flow Sensor ) (34)
    • 1.5 Keypad 4x4 (39)
  • Chương 2. Thiết kế (41)
    • 2.1 Sơ đồ khối (41)
    • 2.2 Lưu đồ thuật toán (43)
    • 2.4 Công nghệ phần mềm (46)
  • Chương 3: Kết quả và phương hướng phát triển (51)
    • 3.1 Ưu, nhược điểm (60)
    • 3.2 Phương hướng phát triển (61)
  • TÀI LIỆU THAM KHẢO (61)

Nội dung

Với mong muốn đóng góp vào xu hướng phát triển này, nhóm chúng em đã quyết định lựa chọn đề tài: “Nghiên cứu đo thể tích và lưu lượng hiển thị lênmàn hình LCD sử dụng cảm biến và Arduino

Công nghệ thiết kế

Arduino

 Giới thiệu về Arduino Uno R3

Arduino Uno R3 là một bảng mạch vi điều khiển nguồn mở dựa trên vi điều khiển

Microchip ATmega328, được phát triển bởi Arduino.cc, là một bảng mạch lý tưởng cho những ai mới bắt đầu tìm hiểu về điện tử và lập trình Bảng mạch này được trang bị các chân đầu vào/đầu ra Digital và Analog, cho phép giao tiếp với nhiều bảng mạch mở rộng khác nhau Nhờ vào nền tảng mở của Arduino.cc, người dùng có thể dễ dàng xây dựng các dự án như lập trình Robot, xe tự hành, và điều khiển bật tắt LED một cách nhanh chóng và hiệu quả.

+) Thông số kỹ thuật Arduino UNO R3

Chip điều khiển ATmega328P Điện áp hoạt động 5V Điện áp đầu vào (khuyên dùng) 7-12V Điện áp đầu vào (giới hạn) 6-20V

Số chân Digital 14 (of which 6 provide PWM output)

Dòng điện DC trên mỗi chân I/O 20 mA

Dòng điện DC trên chân 3.3V 50 mA

Flash Memory 32 KB (ATmega328P) of which 0.5

Tốc độ thạch anh 16 MHz

Arduino Uno R3 có thể được cấp nguồn 5V thông qua cáp USB hoặc từ nguồn ngoài qua adaptor chuyển đổi, với điện áp khuyên dùng từ 6-9V Ngoài ra, người dùng cũng có thể cung cấp nguồn từ máy tính qua cổng USB.

 Các chân 5V, 3.3V là chân dùng để cấp nguồn đầu ra cho các thiết bị chứ không phải chân cấp nguồn vào.

 Vin (Voltage Input): Dùng để cấp nguồn ngoài cho Arduino Uno, nối dương cực vào chân nà và cực âm vào chân GND.

GND (Ground) là cực âm của nguồn điện cung cấp cho Arduino Uno Khi sử dụng các thiết bị có nguồn điện riêng biệt, cần phải kết nối các chân GND này để đảm bảo hoạt động ổn định và chính xác.

 IOREF: Điện áp hoạt động của Arduino, có mức điện áp là 5V Không được sử dụng để lấy nguồn từ chân này.

 RESET: Việc nhấn nút RESET trên mạch arduino tương tự như khi nối chân RESET với GND qua điện trở 10KΩ.

 32 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB.

SRAM (Bộ nhớ truy cập ngẫu nhiên tĩnh) có dung lượng 2 KB, nơi lưu trữ giá trị của các biến được khai báo Số lượng biến càng nhiều thì bộ nhớ RAM sẽ càng bị tiêu tốn Lưu ý rằng khi mất nguồn, dữ liệu trên SRAM sẽ bị mất.

 1 KB cho EEPROM: (Electrically Eraseble Programmable Read Only Memory): Là nơi có thể đọc và ghi dữ liệu vào đây và không bị mất dữ liệu khi mất nguồn.

- Các chân đầu vào và đầu ra:

Board Arduino Uno R3 có 14 chân Digital cho phép sử dụng làm đầu vào và đầu ra, với các hàm pinMode(), digitalWrite() và digitalRead() Mỗi chân có điện áp 5V và dòng tối đa là 20mA, đi kèm với điện trở kéo lên từ 20-50 ohm Để bảo vệ board mạch, dòng tối đa trên mỗi chân I/O không được vượt quá 40mA.

Ngoài ra, một số chân Digital có chức năng đặt biệt:

 Serial: 0 (RX) và 1 (TX): Được sử dụng để nhận dữ liệu (RX) và truyền dữ liệu (TX) TTL.

 PWM: 3, 5, 6, 9 và 11 Cung cấp đầu ra xung PWM với độ phân giải 8 bit bằng hàm analogWrite ().

 SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Các chân này hỗ trợ giao tiếp SPI bằng thư viện SPI.

Bảng mạch tích hợp một LED được kết nối với chân D13 Khi chân D13 có giá trị mức cao (HIGH), LED sẽ phát sáng, và khi chân ở mức thấp (LOW), LED sẽ tắt.

 TWI/I2C: A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.

Arduino Uno R3 có 6 chân Analog từ A0 đến A5, đầu vào cung cấp độ phân giải là

Hình 2 Các chân của Arduino thực tế

Arduino đã trở thành lựa chọn phổ biến cho hàng nghìn dự án nhờ vào tính đơn giản và dễ tiếp cận của nó Phần mềm Arduino thân thiện với người mới bắt đầu nhưng cũng linh hoạt cho những người dùng nâng cao Khác với nhiều bo mạch lập trình trước đây, Arduino cho phép tải mã mới lên bo mạch chỉ qua cáp USB mà không cần phần cứng riêng Hơn nữa, Arduino IDE sử dụng phiên bản đơn giản của C++, giúp việc học lập trình trở nên dễ dàng hơn.

Màn Hình LCD1602

Ngày nay, màn hình LCD (Liquid Crystal Display) được ứng dụng rộng rãi trong nhiều lĩnh vực của vi điều khiển (VĐK) LCD nổi bật với khả năng hiển thị đa dạng các ký tự như chữ, số và đồ họa, đồng thời dễ dàng tích hợp vào mạch ứng dụng thông qua nhiều giao thức giao tiếp khác nhau Hơn nữa, thiết bị này tiêu tốn rất ít tài nguyên hệ thống và có giá thành phải chăng, làm cho nó trở thành lựa chọn lý tưởng cho nhiều dự án.

Hình dáng và kích thước:

Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên hình 1 là loại LCD thông dụng.

Hình 3 Màn hình lcd HD44780

Trong quá trình sản xuất màn hình LCD, các nhà sản xuất đã tích hợp chip điều khiển HD44780 bên trong lớp vỏ, chỉ để lộ ra các chân giao tiếp cần thiết Những chân này được đánh số thứ tự và được đặt tên theo hình 1.6.

Bảng 1.2 Chức năng chân màn hình LCD

1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với

GND của mạch điều khiển

2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với

VCC=5V của mạch điều khiển

3 VEE Điều chỉnh độ tương phản của LCD.

4 RS Chân chọn thanh ghi (Register select) Nối chân RS với logic “0”

(GND) hoặc logic “1” (VCC) để chọn thanh ghi.

Logic “0” kết nối Bus DB0-DB7 với thanh ghi lệnh IR của LCD trong chế độ ghi, hoặc với bộ đếm địa chỉ của LCD trong chế độ đọc.

+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.

5 R/W Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic

“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc.

6 E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus

DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E.

Trong chế độ ghi, dữ liệu trên bus sẽ được chuyển vào thanh ghi nội bộ của LCD khi phát hiện một xung chuyển từ cao xuống thấp (high-to-low transition) trên chân E.

Ghi chú : Ở chế độ “đọc”, nghĩa là MCU sẽ đọc thông tin từ LCD thông qua các chân DBx.

Còn khi ở chế độ “ghi”, nghĩa là MCU xuất thông tin điều khiển cho LCD thông qua các chân DBx

Sơ đồ khối của chip HD44780 giúp chúng ta hiểu rõ chức năng và hoạt động của các chân trên chip này Việc tìm hiểu các khối cơ bản của HD44780 sẽ cung cấp cái nhìn tổng quan về cách thức hoạt động của nó.

Khi ở chế độ đọc, dữ liệu từ LCD sẽ được xuất ra các chân DB0-DB7 khi phát hiện sự chuyển đổi từ mức thấp sang mức cao (low-to-high transition) tại chân E Dữ liệu này sẽ được giữ trên bus cho đến khi chân E trở về mức thấp.

Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU.

Có 2 chế độ sử dụng 8 đường bus này :

+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7.

+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7

15 - Nguồn dương cho đèn nền

Hình 5 Sơ đồ khối của HD44780

Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR (Instructor Register) và thanh ghi dữ liệu DR (Data Register)

Để điều khiển màn hình LCD, người dùng cần gửi lệnh qua tám đường bus DB0-DB7, với mỗi lệnh được đánh địa chỉ rõ ràng bởi nhà sản xuất Người dùng chỉ cần nạp địa chỉ lệnh vào thanh ghi IR, và khi nạp một chuỗi 8 bit vào thanh ghi này, chip HD44780 sẽ tra cứu bảng mã lệnh tại địa chỉ được cung cấp và thực hiện lệnh tương ứng.

VD : Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7…DB0) Lệnh “hiển thị màn hình và con trỏ” có mã lệnh là 00001110

Thanh ghi DR là thành phần lưu trữ dữ liệu 8 bit, có chức năng ghi vào vùng RAM DDRAM hoặc CGRAM khi ở chế độ ghi, và truyền dữ liệu từ hai vùng RAM này đến MPU khi ở chế độ đọc Khi MPU thực hiện ghi thông tin, thanh ghi DR sẽ đảm bảo quá trình truyền tải dữ liệu diễn ra hiệu quả.

Trong chip HD44780, mạch nội sẽ tự động ghi thông tin vào DDRAM hoặc CGRAM Khi địa chỉ được ghi vào IR, dữ liệu tại địa chỉ đó trong RAM nội sẽ được chuyển ra DR để gửi đến MPU.

Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ

2 thanh ghi này khi giao tiếp với MPU Bảng sau đây tóm tắt lại các thiết lập đối với hai chân RS và R/W theo mục đích giao tiếp.

0 0 Ghi vào thanh ghi IR để ra lệnh cho LCD

0 1 Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6

1 0 Ghi vào thanh ghi DR

1 1 Đọc dữ liệu từ DR

Bảng 1.3: Chức năng chân RS và R/W theo mục đích sử dụng

Cờ báo bận BF: (Busy Flag)

Khi chip thực hiện các hoạt động nội bộ, mạch bên trong cần thời gian để hoàn tất Trong quá trình này, LCD sẽ không giao tiếp với bên ngoài và bật cờ BF thông qua chân DB7 khi thiết lập RS=0.

R/W=1) lên để báo cho MPU biết nó đang “bận” Dĩ nhiên, khi xong việc, nó sẽ đặt cờ BF lại mức 0.

Bộ đếm địa chỉ AC : (Address Counter)

Trong sơ đồ khối, thanh ghi IR không kết nối trực tiếp với vùng RAM (DDRAM và CGRAM), mà thông qua bộ đếm địa chỉ AC Bộ đếm địa chỉ này đóng vai trò quan trọng trong việc kết nối giữa thanh ghi IR và các vùng nhớ.

Khi địa chỉ lệnh được nạp vào thanh ghi IR, thông tin sẽ được kết nối trực tiếp với hai vùng RAM Tuy nhiên, việc lựa chọn vùng RAM nào để tương tác đã được xác định trong mã lệnh.

Sau khi dữ liệu được ghi vào RAM, bộ đếm AC sẽ tự động tăng hoặc giảm 1 đơn vị Nội dung của bộ đếm AC sẽ được xuất ra cho MPU thông qua các chân DB0-DB6 khi tín hiệu RS được thiết lập là 0 và R/W là 1.

Khi lập trình hiển thị, cần lưu ý rằng thời gian cập nhật AC không được tính vào thời gian thực thi lệnh Thời gian này sẽ được cập nhật sau khi cờ BF đạt mức cao (not busy) Do đó, bạn phải tạo một độ trễ tADD khoảng 4uS-5uS ngay sau khi BF=1 trước khi nạp dữ liệu mới Xem thêm hình minh họa bên dưới.

Hình 6 Giản đồ xung cập nhật AC

Vùng RAM hiển thị DDRAM (Display Data RAM) là bộ nhớ RAM chuyên dụng để hiển thị thông tin trên màn hình Mỗi địa chỉ trong DDRAM tương ứng với một ô ký tự, cho phép người dùng ghi mã 8 bit vào vùng này Khi mã 8 bit được ghi, màn hình LCD sẽ hiển thị ký tự tương ứng tại vị trí đã chỉ định.

Hình 7 Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD

Cảm biến siêu âm (UltraSonic Sensor)

Hình 13 Cảm biến siêu âm HC – SR04

Cảm biến siêu âm HC-SR04 là một thiết bị phổ biến để đo khoảng cách nhờ vào tính năng RẺ và ĐỘ CHÍNH XÁC Sử dụng sóng siêu âm, cảm biến này có khả năng đo khoảng cách từ 2 đến 300cm, với độ chính xác chủ yếu phụ thuộc vào cách lập trình.

VCC (5V), trig (chân điều khiển phát), echo (chân nhận tín hiệu phản hồi), GND (nối đất)

Cảm biến siêu âm SR04 sử dụng nguyên lý phản xạ sóng siêu âm Cảm biến gồm

Bài viết mô tả một hệ thống cảm biến gồm 2 module: 1 module phát sóng siêu âm và 1 module thu sóng phản xạ Cảm biến phát ra sóng siêu âm với tần số 40kHz, và nếu có vật cản, sóng sẽ phản xạ trở lại Bằng cách đo thời gian từ khi phát đến khi nhận sóng, chúng ta có thể xác định khoảng cách từ cảm biến đến vật cản.

Khoảng cách = (thời gian * vận tốc âm thanh (340 m/s) / 2

THÔNG SỐ KỸ THUẬT CẢM BIẾN SIÊU ÂM HC-SR04

Cảm biến siêu âm bao gồm ba thành phần chính: bộ phát, có chức năng phát tín hiệu sóng âm; bộ thu, dùng để nhận âm thanh sau khi tín hiệu được truyền đi; và bộ xử lý sóng âm, đảm nhiệm việc xử lý tín hiệu nhận được.

Bộ xử lý sóng tích hợp trong cảm biến sẽ phân tích tín hiệu phản hồi để xác định khoảng cách giữa các điểm phát sóng và vật thể thông qua thời gian sóng truyền và vận tốc của sóng siêu âm Thông tin này được chuyển hóa thành tín hiệu Analog và gửi về mạch đọc để chuyển đổi thành tín hiệu logic, hiển thị thông tin cho người sử dụng Ứng dụng của công nghệ siêu âm rất đa dạng và hữu ích trong nhiều lĩnh vực.

Ngày nay, cảm biến siêu âm được ứng dụng rộng rãi trong nhiều lĩnh vực như y tế và công nghiệp, đóng vai trò quan trọng trong việc đo lường và phát hiện Hầu hết các loại cảm biến này hoạt động dựa trên nguyên lý phát và nhận sóng siêu âm, với việc xác định vận tốc và thời gian Từ đó, quãng đường mà sóng siêu âm đi được có thể dễ dàng tính toán Kết quả từ quá trình này được xử lý để tạo ra tín hiệu Analog hoặc Relay cho các cảm biến ON/OFF.

Cảm biến lưu lượng ( Flow Sensor )

Cảm biến lưu lượng nước là gì?

Cảm biến lưu lượng nước là thiết bị quan trọng để đo tốc độ dòng chảy và theo dõi lượng nước cung cấp cũng như sử dụng Nó bao gồm một cụm roto xoay quanh trục và một cảm biến từ Hall Tín hiệu từ cảm biến Hall được gửi đến bộ điều khiển, nơi sẽ tính toán kích thước lưu lượng nước để điều chỉnh cho phù hợp.

Hình 14 Cảm biến lưu lượng nước hall sensor Ứng dụng của cảm biến lưu lượng nước

Cảm biến lưu lượng nước được sử dụng để đo tốc độ dòng chảy và theo dõi lượng nước cung cấp và tiêu thụ Chúng có ứng dụng đa dạng trong việc kiểm soát dòng chảy của nhiều loại chất lỏng như nước cafe, nước ngọt và nước sinh hoạt, đặc biệt trong ngành công nghiệp sữa Một số cảm biến với cấp bảo vệ cao hơn còn được sử dụng để kiểm soát dầu nhớt và các dung dịch ăn mòn, độc hại Ngoài ra, các loại cảm biến nhỏ gọn cũng được ứng dụng phổ biến trong các thiết bị như máy pha cafe, máy nóng lạnh, máy chiết rót, máy lọc nước và bơm bể cá mini.

Hình 15 Ứng dụng của cảm biến lưu lượng nước

Nguyên lý hoạt động của cảm biến lưu lượng nước Hall Sensor

Trong số nhiều loại cảm biến lưu lượng nước thì cảm biến loại Hall sensor là được sử dụng rộng rãi trong đời sống hơn cả

Cảm biến lưu lượng nước Hall sensor bao gồm một van cho phép dòng nước lưu thông, một roto (wheel turbin) và cảm biến từ Hall Thiết bị này còn được trang bị bộ chỉ thị để hiển thị chiều vào ra của dòng nước và lưu lượng nước.

Hình 16 Tổng quan về một cảm biến lưu lượng nước dùng Sensor Hall

Khi nước chảy qua van, nó làm quay roto, và lưu lượng nước lớn hay nhỏ sẽ ảnh hưởng đến tốc độ quay của roto Sự thay đổi này được ghi nhận thông qua tín hiệu dạng xung tại đầu ra của cảm biến Hall, cụ thể là chu kỳ làm việc (Duty Cycle).

Duty Cycle = on time / ( ontime + off time)

Một trong những linh kiện quan trọng trong cảm biến lưu lượng nước là cảm biến từ Hall

Hình 17 Cảm biến từ Hall

Cảm biến lưu lượng nước hoạt động dựa trên nguyên lý của nam châm gắn với cánh quạt Khi nước chảy vào ống, cánh quạt quay và kéo theo nam châm, dẫn đến sự thay đổi từ trường Sự thay đổi này tạo ra tín hiệu biến đổi từ cảm biến Hall, cho phép đo lường lưu lượng nước chính xác.

Hình 18 Cấu tạo bên thực tế bên trong cảm biến

Keypad 4x4

Bàn phím ma trận mềm 4×4 nút có thiết kế giao diện đơn giản, dễ dàng tương tác với mọi vi điều khiển Với mặt sau có dính, sản phẩm thuận tiện cho việc gắn kết trong nhiều ứng dụng dự án khác nhau.

Bàn phím 4×4 là loại bàn phím màng với 16 nút được sắp xếp theo dạng ma trận, không có bộ phận chuyển động Thiết kế của nó tương tự như bàn phím điện thoại, bao gồm bốn nút chức năng bổ sung Bàn phím này đi kèm với một đầu nối nổi 8 chân để dễ dàng kết nối với các mạch điều khiển microcontroller.

Thông số bàn phím ma trận 4x4

 Module bàn phím ma trận 4×4 loại phím mềm.

 Nhiệt độ hoạt động 0 ~ 70oC.

 Kích thước bàn phím 77 x 69mm.

Thiết kế

Sơ đồ khối

 Chức năng: Cung cấp năng lượng cho toàn bộ hệ thống.

Vai trò của khối nguồn là đảm bảo tất cả các linh kiện như Arduino Uno R3, cảm biến, LCD và keypad hoạt động ổn định Khối nguồn có thể được cung cấp từ pin, adapter hoặc nguồn DC từ bên ngoài.

Chức năng của hệ thống là trung tâm xử lý, nơi tiếp nhận dữ liệu từ các cảm biến, thực hiện các phép tính và xử lý logic, đồng thời điều khiển các thiết bị ngoại vi.

 Vai trò: Điều phối toàn bộ hoạt động của hệ thống Kết nối giữa các cảm biến và các thiết bị hiển thị/điều khiển.

Thiết bị này đóng vai trò là công cụ nhập liệu, cho phép người dùng dễ dàng nhập thông tin hoặc thiết lập các thông số cần thiết, bao gồm việc cài đặt ngưỡng cảnh báo và khởi động hoặc tắt hệ thống.

 Vai trò: Tương tác giữa người dùng và hệ thống.

 Chức năng: o Đo khoảng cách từ cảm biến đến bề mặt chất lỏng (mức nước). o Chuyển đổi thông tin khoảng cách này thành dữ liệu mức nước.

 Vai trò: Giám sát mức nước trong bồn, bể hoặc môi trường cần đo.

 Chức năng: o Đo lưu lượng nước chảy qua đường ống. o Xuất tín hiệu dạng xung hoặc tương tự, phản ánh tốc độ dòng chảy.

 Vai trò: Cung cấp thông tin về tốc độ hoặc tổng lưu lượng nước qua hệ thống.

 Chức năng: o Hiển thị các thông tin như mức nước, lưu lượng nước, thông báo hoặc trạng thái hệ thống.

 Vai trò: Giao diện đầu ra của hệ thống, giúp người dùng theo dõi các thông số dễ dàng.

Tóm tắt vai trò chung của hệ thống

Hệ thống đo lưu lượng và mức nước này có khả năng:

 Giám sát và hiển thị thông số về mức nước và lưu lượng nước.

 Tương tác với người dùng thông qua keypad để thiết lập hoặc điều chỉnh các thông số.

 Đưa ra các thông tin cảnh báo hoặc trạng thái của hệ thống trên màn hình LCD.

Lưu đồ thuật toán

Hệ thống đo lưu lượng và thể tích khối nước sử dụng cảm biến siêu âm và cảm biến lưu lượng, với kết quả được hiển thị trên màn hình LCD Thuật toán hoạt động của hệ thống này được điều khiển bởi vi điều khiển Arduino Uno R3, đảm bảo hiệu quả và chính xác trong việc thu thập dữ liệu.

 Khởi tạo chân và các biến:

 Hệ thống khởi tạo các chân GPIO trên Arduino và các biến cần thiết cho quá trình đo và xử lý.

 Bật và hiển thị LCD 16x02:

 Kích hoạt màn hình LCD để sẵn sàng hiển thị dữ liệu.

 Đọc dữ liệu từ bàn phím:

 Hệ thống chờ người dùng nhập lệnh qua bàn phím (giả định là bàn phím ma trận).

 Kiểm tra giá trị của phím được nhấn để xác định chức năng cần thực hiện:

 Nếu không có phím phù hợp, quay lại chờ dữ liệu.

 Hàm lưu lưu lượng nước:

 Nếu chọn chức năng đo lưu lượng, hệ thống đọc dữ liệu từ cảm biến lưu lượng và thực hiện tính toán liên quan.

 Kiểm tra lưu lượng nước:

 Kiểm tra xem lưu lượng nước có bằng 0 hay không.

 Nếu bằng 0, tiếp tục theo dõi lưu lượng nước.

 Nếu khác 0, tiến hành tính toán và hiển thị kết quả trên màn hình LCD.

 Nếu chọn chức năng tính toán thể tích, hệ thống yêu cầu người dùng nhập loại hình dạng khối nước:

 Key = "1": Hình hộp chữ nhật.

 Dựa vào loại hình dạng khối nước, thực hiện các bước sau:

 Đọc dữ liệu từ cảm biến siêu âm để đo kích thước.

 Tính toán thể tích dựa trên hình dạng đã chọn.

 Hiển thị kết quả trên màn hình LCD.

 Quay lại đọc dữ liệu từ bàn phím:

 Sau khi hoàn thành hiển thị, hệ thống quay lại bước chờ lệnh từ người dùng.

 Kết thúc vòng lặp khi nhấn phím "#":

 Nếu người dùng nhấn phím "#", hệ thống kết thúc vòng lặp và dừng hoạt động.

 Hệ thống hoạt động theo chu trình lặp:

 Cho phép người dùng chọn chế độ đo lưu lượng hoặc tính thể tích.

 Dựa vào lệnh, hệ thống thực hiện các phép đo, tính toán, và hiển thị kết quả.

Công nghệ phần mềm

Công nghệ phần mềm trong dự án này sẽ bao gồm các thành phần sau:

 Ngôn ngữ Lập Trình Arduino: Việc lập trình trên nền tảng Arduino sẽ được thực hiện bằng các ngôn ngữ như C hoặc C++ Arduino IDE

(Integrated Development Environment) sẽ được sử dụng để viết và biên dịch mã nguồn.

Thư viện Arduino cung cấp nhiều thư viện được xây dựng sẵn, giúp lập trình viên thực hiện các chức năng phức tạp một cách dễ dàng Trong số đó, thư viện Servo được sử dụng để điều khiển servo motor, trong khi thư viện Wire hỗ trợ kết nối các thiết bị I2C.

 Trình biên dịch và nạp code : Dùng phần mềm Arduino IDE

Phần mềm Arduino IDE là gì

Arduino IDE là phần mềm mã nguồn mở chính thức, được thiết kế để viết và biên dịch mã cho các module Arduino Phần mềm này giúp đơn giản hóa quá trình biên dịch, cho phép ngay cả những người không có kiến thức kỹ thuật cũng có thể sử dụng dễ dàng.

Nó cung cấp phiên bản cho các hệ điều hành như MAC, Windows và Linux, hoạt động trên nền tảng Java Các chức năng và lệnh có sẵn của nó đóng vai trò quan trọng trong việc gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường lập trình.

Có rất nhiều các module Arduino như Arduino Uno, Arduino Mega, Arduino Leonardo, Arduino Micro và nhiều module khác.

Mỗi module chứa một bộ vi điều khiển trên bo mạch được lập trình và chấp nhận thông tin dưới dạng mã.

Mã chính, hay còn gọi là sketch, được phát triển trên nền tảng IDE và sẽ tạo ra một tệp Hex Tệp này sau đó được chuyển và tải lên bộ điều khiển trên bo mạch.

Môi trường phát triển tích hợp (IDE) bao gồm hai thành phần chính: Trình chỉnh sửa và Trình biên dịch Trình chỉnh sửa được sử dụng để viết mã, trong khi Trình biên dịch có nhiệm vụ biên dịch và tải mã lên module Arduino.

Môi trường này hỗ trợ cả ngôn ngữ C và C ++.

Arduino IDE hoạt động như thế nào

Khi người dùng viết mã và biên dịch trong IDE, một file Hex sẽ được tạo ra cho mã nguồn File Hex là định dạng mà Arduino có thể hiểu, và nó sẽ được truyền đến bo mạch qua cáp USB Mỗi bo Arduino được trang bị một bộ vi điều khiển, bộ vi điều khiển này sẽ nhận file Hex và thực hiện theo mã đã được lập trình.

Hình 21 Giao diện Arduino IDE

1 Soạn thảo mã nguồn (Code Editor):

Arduino IDE là một công cụ lập trình dễ sử dụng, cung cấp trình chỉnh sửa mã nguồn với các tính năng cơ bản như tô màu cú pháp, tự động thụt lề và hiển thị số dòng, giúp người dùng dễ dàng viết và quản lý mã nguồn hiệu quả.

2 Thư viện phong phú (Library Manager):

Arduino IDE tích hợp một trình quản lý thư viện, cho phép bạn cài đặt và quản lý các thư viện bổ sung từ Arduino hoặc cộng đồng Điều này giúp bạn dễ dàng thêm các thư viện cần thiết vào dự án của mình.

3 Biên dịch mã (Code Compilation):

 Arduino IDE tự động chuyển đổi mã nguồn từ ngôn ngữ Arduino (dựa trên C/C++) thành mã máy để tải lên vi điều khiển.

 Kiểm tra cú pháp và báo lỗi nếu có vấn đề trong mã nguồn.

4 Tải mã lên board (Upload to Board):

 Kết nối với board Arduino thông qua cổng USB để tải chương trình đã biên dịch vào vi điều khiển.

 Hỗ trợ nhiều loại board khác nhau như Arduino Uno, Mega, Nano,

5 Công cụ giám sát tuần tự (Serial Monitor):

 Cung cấp giao diện để giao tiếp với board Arduino qua giao thức Serial.

 Giám sát dữ liệu được gửi và nhận giữa máy tính và vi điều khiển.

 Hữu ích để kiểm tra và gỡ lỗi (debugging).

6 Công cụ quản lý board (Board Manager):

 Dễ dàng cài đặt và quản lý các cấu hình cho nhiều loại board Arduino hoặc các vi điều khiển tương thích.

 Hỗ trợ cài đặt thêm các board ngoài như ESP8266, ESP32 qua URL tùy chỉnh.

7 Hỗ trợ đa nền tảng:

 Arduino IDE có thể chạy trên nhiều hệ điều hành như Windows, macOS, và Linux.

Arduino IDE cung cấp nhiều ví dụ lập trình sẵn có, giúp người dùng dễ dàng làm quen với các tính năng cơ bản như điều khiển LED, đọc cảm biến và giao tiếp Serial.

9 Tùy chỉnh cài đặt (Preferences):

 Cho phép người dùng tùy chỉnh giao diện, cài đặt biên dịch, hoặc thêm URL cho các board và thư viện bên ngoài.

10 Gỡ lỗi và thông báo lỗi:

 Hiển thị các lỗi phát sinh trong quá trình biên dịch và tải chương trình.

 Cung cấp thông tin gỡ lỗi thông qua Serial Monitor hoặc các công cụ bên ngoài.

 Arduino IDE hỗ trợ các liên kết với cộng đồng Arduino thông qua các công cụ tìm kiếm thư viện và ví dụ từ Arduino Playground hoặc diễn đàn.

Kết quả và phương hướng phát triển

Ưu, nhược điểm

 Dễ chế tạo và sửa chữa.

 Hoạt động ổn định, sai số thấp, tiết kiệm năng lượng. Nhược điểm:

 Chưa tích hợp 2 chức năng chạy cùng một lúc

 Hệ thống chưa đạt độ thẩm mỹ cao

Phương hướng phát triển

Hệ thống tích hợp chức năng đo thể tích và lưu lượng nước, cho phép người dùng dễ dàng chuyển đổi giữa hai chức năng thông qua bàn phím Keypad 4x4.

Kết hợp với module Node MCU 8266 giúp gửi dữ liệu thu thập qua WiFi lên ứng dụng Blynk hoặc website, cho phép người dùng dễ dàng giám sát và điều khiển từ xa.

Ngày đăng: 10/01/2025, 12:29

HÌNH ẢNH LIÊN QUAN

Hình 2 Các chân của Arduino thực tế - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 2 Các chân của Arduino thực tế (Trang 12)
Hình 5 Sơ đồ khối của HD44780 - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 5 Sơ đồ khối của HD44780 (Trang 17)
Hình 7 Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 7 Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD (Trang 20)
Hình 8 Mối liên hệ giữa địa chỉ của ROM và dữ liệu tạo mẫu kí tự. - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 8 Mối liên hệ giữa địa chỉ của ROM và dữ liệu tạo mẫu kí tự (Trang 21)
Hình 10 Mối liên hệ giữa địa chỉ của CGRAM, dữ liệu của CGRAM, và mã kí tự. - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 10 Mối liên hệ giữa địa chỉ của CGRAM, dữ liệu của CGRAM, và mã kí tự (Trang 23)
Hình 11 Chế độ giao tiếp LCD - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 11 Chế độ giao tiếp LCD (Trang 31)
Hình 12 Chế độ giao tiếp LCD - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 12 Chế độ giao tiếp LCD (Trang 32)
Hình 13 Cảm biến siêu âm HC – SR04 - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 13 Cảm biến siêu âm HC – SR04 (Trang 33)
Hình 15 Ứng dụng của cảm biến lưu lượng nước - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 15 Ứng dụng của cảm biến lưu lượng nước (Trang 36)
Hình 16 Tổng quan về một cảm biến lưu lượng nước dùng Sensor Hall - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 16 Tổng quan về một cảm biến lưu lượng nước dùng Sensor Hall (Trang 37)
Hình 20 Sơ đồ khối - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 20 Sơ đồ khối (Trang 41)
Hình 21 Giao diện Arduino IDE - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 21 Giao diện Arduino IDE (Trang 48)
Hình 22 Kết quả đo lưu lượng nước - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 22 Kết quả đo lưu lượng nước (Trang 51)
Hình 23 Kết quả đo thể tích nước - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 23 Kết quả đo thể tích nước (Trang 52)
Hình 24 Tổng quan toàn cảnh hệ thống - Báo cáo môn học Đồ Án 2 Đề tài nghiên cứu Đo thể tích và lưu lượng nước hiển thị lên màn hình lcd sử dụng cảm biến và arduino uno r3
Hình 24 Tổng quan toàn cảnh hệ thống (Trang 53)

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

TÀI LIỆU LIÊN QUAN

w