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

Đồ án môn học hệ thống nhúng tên Đề tài thiết kế hệ thống nhúng Đồng hồ thời gian thực

24 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 đề Thiết kế hệ thống nhúng đồng hồ thời gian thực
Tác giả Phạm Xuân Cường, Lê Tuấn Đạt, Trần Tiến Đạt
Người hướng dẫn Trần Xuân Tiến
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Chuyên ngành Hệ Thống Nhúng
Thể loại Đồ án môn học
Năm xuất bản Năm học 2023-2024
Thành phố Hưng Yên
Định dạng
Số trang 24
Dung lượng 483,25 KB

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

Nội dung

Về cấu tạo, RTS thường được chia làm các phần chính sau: - Đồng hồ thời gian thực: Cung cấp thông tin thời gian thực.. 1.2.3 Xác định bài toán và giới hạn đề tàiHệ thống đồng hồ thời gia

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

KHOA ĐIỆN ĐIỆN TỬ -  -

Trang 2

ĐỒ ÁN MÔN HỌC

HỆ THỐNG NHÚNG

TÊN ĐỀ TÀI THIẾT KẾ HỆ THỐNG NHÚNG ĐỒNG HỒ THỜI GIAN THỰC

Giảng viên hướng dẫn: Trần Xuân Tiến

Lê Tuấn Đạt Trần Tiến Đạt Lớp: 122221.3KS

Trang 3

Mục lục

CHƯƠNG 1 3

PHÂN TÍCH HỆ THỐNG 3

1.1 Khảo sát và phân tích bài toán 3

1.1.1 Khái niệm về hệ thống thời gian thực 3

1.1.2 Các loại hệ thống thời gian thực 3

1.2 Lựa chọn giải pháp 4

1.2.1 Giải pháp công nghệ 4

1.2.3 Xác định bài toán và giới hạn đề tài 4

CHƯƠNG 2 6

THIẾT KẾ HỆ THỐNG 6

2.1 Sơ đồ khối tổng quát của hệ thống 6

2.2 Các module trong hệ thống 7

2.2.1 Module khối nguồn 7

2.2.2 Module điều khiển 7

2.2.3 Module hiển thị 7

2.2.4 Module tạo thời gian thực 8

2.2.5 Module xử lí 8

2.3 Lựa chọn linh kiện 8

2.3.1 Adruino Uno 8

2.3.2 IC DS1307 9

Trang 4

2.3.3 Màn hình LCD 11

2.4 Sơ đồ nguyên lí 12

2.5 Lưu đồ thuật toán 14

2.6 Điều khiển hệ thống 15

CHƯƠNG 3 21

KẾT LUẬN 21

3.1 Hoàn thiện sản phẩm 21

3.1.1 In mạch 21

3.1.2 Sản phẩm hoàn thiện 21

3.2 Kết luận 22

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

Trang 5

CHƯƠNG 1 PHÂN TÍCH HỆ THỐNG

1.1 Khảo sát và phân tích bài toán

1.1.1 Khái niệm về hệ thống thời gian thực

Hệ thống thời gian thực (Real-Time System) là một hệ thống máy tính được thiết

kế để xử lý dữ liệu đầu vào và phản hồi trong một khoảng thời gian xác định, thường làrất ngắn Điều quan trọng là tính đúng thời hạn của phản hồi: hệ thống không chỉ cần hoạtđộng chính xác, mà còn phải đảm bảo thực hiện các tác vụ đúng lúc

Về cấu tạo, RTS thường được chia làm các phần chính sau:

- Đồng hồ thời gian thực: Cung cấp thông tin thời gian thực

- Bộ điều khiển ngắt: Quản lý các biến cố không theo chu kỳ

- Bộ định hiểu: Quản lý các quá trình thực hiện

- Bộ quản lý tài nguyên: Cung cấp các tài nguyên máy tính

- Bộ điều khiển thực hiện: Khởi động các tiến trình

1.1.2 Các loại hệ thống thời gian thực

Các RTS thường được chia làm hệ thống thời gian thực cứng và hệ thống thời gianthực mềm:

Hệ thống thời gian thực cứng là hệ thống trong đó mọi tác vụ đều phải hoàn thànhtrong một khoảng thời gian giới hạn nghiêm ngặt đã định trước (deadline) Việc bỏ lỡthời hạn xử lý dù chỉ một lần có thể dẫn đến hậu quả nghiêm trọng, thậm chí thảm họacho con người, tài sản hoặc môi trường

Ngược lại, hệ thống thời gian thực mềm là hệ thống trong đó các tác vụ nên đượchoàn thành đúng thời hạn (deadline), nhưng việc trễ hạn không gây hậu quả nghiêm trọng

Trang 6

đến hệ thống Hiệu suất hệ thống có thể giảm sút, nhưng hệ thống vẫn tiếp tục hoạt độngbình thường.

Trong hai loại này, máy tính thường can thiệp trực tiếp hoặc gián tiếp đến các thiết

bị vật lý để kiểm soát cũng như đièu khiển sự hoạt động của thiết bị này Đứng trên góc

độ này người ta chia các RTS ra làm hai loại sau:

- Hệ thống nhúng: Bộ xử lý điều khiển là một phần trong toàn bộ thiết bị , nó đượcsản xuất trọn gói từ yếu tố cứng từ nhà máy , người ta sử dụng không biết về chi tiết của

nó mà thông qua các nút điều khiển, các bảng số

- Loại thứ hai là bao gồm những hệ thống có sự can thiệp của máy tính thôngthường Thông qua máy tính ta hoàn toàn có thể kiểm soát cũng như điều khiển mọi hoạtđộng của thiết bị phần cứng trên hệ thống này

Trang 7

1.2.3 Xác định bài toán và giới hạn đề tài

Hệ thống đồng hồ thời gian thực hiển thị thời gian, ngày tháng:

- Đầu vào dữ liệu lấy từ DS1307, là IC thời gian nhằm cung cấp giờ cho hệ thống.Đầu ra được hiển thị trên màn LCD

- Hiển thị chính xác thực, ngày tháng

- Làm việc lâu dài ổn định

- Dễ dàng quan sát, sử dụng

Trang 8

CHƯƠNG 2 THIẾT KẾ HỆ THỐNG

2.1 Sơ đồ khối tổng quát của hệ thống

Hình 2.1 Sơ đồ tổng quất của hệ thống đồng hồ thời gian thực

Khối nguồn: Cung cấp nguồn cho hệ thống

Khối hiển thị: Lấy tín hiệu từ chân IC để hiện thị thời gian, ngày tháng

Trang 9

Khối tạo thời gian thực: Cung cấp thông tin về thời gian, ngày tháng

Khối xử lí: Dùng Adruino để lấy tín hiệu từ khối điều khiển, tạo xung giao động,tạo thời gian thực,… và đưa ra khối hiển thị

Khối điều khiển: Gồm các nút ấn có tác dụng điều chỉnh thời gian, ngày thángtrong mạch

2.2 Các module trong hệ thống

2.2.1 Module khối nguồn

Đây là module cấp nguồn cho hệ thống nhằm cung cấp điện áp chuẩn 5V

- Yêu cầu đối với khối này:

+ Có thể lấy nguồn từ điện áp xoay chiều (hoặc pin ) để cấp nguồn cho hệ thống+ Điện áp ra của khối luôn ổn định tại mọi thời điểm

Với các yêu cầu như trên ta lựa chọn sử dụng pin để cung cấp nguồn cho hệ thống

2.2.2 Module điều khiển

Module dùng để điều khiển hệ thống Yêu cầu:

+ Thiết lập được cho vi điều khiển là có thể làm việc bình thường hoặc chuyểnsang chế độ cài đặt thời gian

+ Điều chỉnh tăng(giảm) thời gian, ngày tháng

Vây ta lựa chọn bộ điều khiển gồm 2 nút nhấn

Trang 10

Lựa chọn hiển thị qua màn LCD

2.2.4 Module tạo thời gian thực

IC thời gian thực cần hoạt động với nguồn cung cấp nhỏ, dùng để cập nhật thờigian và ngày tháng

Khi mất nguồn IC thời gian thực vẫn duy trì hoạt động không cần điều chỉnh lạithời gian

Lựa chọn IC thời gian thực là IC DS1307

2.2.5 Module xử lí

Dùng vi điều khiển để lấy tín hiệu từ khối điều khiển, tạo thời gian thực,… và đưa

ra khối hiển thị Yêu cầu:

Trang 11

+ Vi điều khiển (MCU): Là "bộ não" của Arduino, ví dụ: ATmega328P trênArduino Uno Nó xử lý lệnh và điều khiển hoạt động của toàn bộ bo mạch.

+ Chân Digital I/O: Dùng để đọc hoặc xuất tín hiệu số (0 hoặc 1) Một số chân hỗtrợ PWM (giả lập tín hiệu analog)

+ Chân Analog Input: Dùng để đọc tín hiệu analog (từ cảm biến) và chuyển thànhgiá trị số

+ Nguồn điện: Cung cấp điện cho Arduino (qua cổng USB hoặc jack nguồn ngoài7–12V)

+ GND (Ground): Chân nối đất – cần thiết để hoàn thiện mạch điện

+ Chân 5V và 3.3V: Cung cấp nguồn cho các thiết bị ngoại vi

+ Crystal Oscillator (Thạch anh): Tạo xung nhịp ổn định để vi điều khiển hoạtđộng chính xác

+ Cổng USB: Kết nối Arduino với máy tính để lập trình và cấp nguồn

+ IC Giao tiếp USB–Serial: Chuyển đổi tín hiệu USB thành UART để vi điềukhiển hiểu được

+ Nút Reset: Đặt lại chương trình đang chạy trên Arduino

Chức năng của Adruino:

+ Nhận dữ liệu từ cảm biến (nhiệt độ, ánh sáng, cử động, v.v.)

+ Điều khiển LED, động cơ, relay, màn hình,

+ Có thể giao tiếp qua UART, I2C, SPI, với các thiết bị khác

+ Tạo ra các hệ thống như nhà thông minh, điều khiển nhiệt độ, robot,

+ Kết hợp với module WiFi (như ESP8266, ESP32) để truyền dữ liệu lên mạng

2.3.2 IC DS1307

a) Giới thiệu về IC DS1307

Trang 12

Hình 2.3 IC DS1307

IC thời gian thực là họ vi điều khiển của hãng Dalat DS1307 có một số đặc trưng

cơ bản như sau:

+ DS1307 là IC thời gian thực với nguồn cung cấp nhỏ để cập nhật thời gian vàngày tháng

+ SRAM: 56 bytes

+ Dữ liệu và địa chỉ được truyền nối tiếp qua 2 đường bus 2 chiều

+ DS1307 có 7 byte dữ liệu nằm từ địa chỉ 0x00 đến 0x06, 1 byte điều khiển và 56byte lưu trữ

+ Khi xử lí dữ liệu từ DS1307, họ đã tự chuyển cho ta về dạng số BCD, ví dụ như

ta đọc được dữ liệu từ địa chi 0x04( tương ứng với Day- ngày trong tháng) và tại 0x05 là0x15,0x11

b) Cơ chế hoạt động và chức năng

Ghi nhớ thời gian thực:

- DS1307 duy trì thời gian (giây, phút, giờ, ngày, tháng, năm, thứ) theo chuẩn lịchdương lịch (Gregorian)

- Có cơ chế bù năm nhuận, giúp giữ thời gian chính xác

Nguồn nuôi dự phòng:

- DS1307 có pin CMOS (thường là pin CR2032) để duy trì thời gian ngay cả khimất nguồn chính

Trang 13

- Khi mất điện, nó tự động chuyển sang dùng nguồn từ pin dự phòng.

Giao tiếp I2C:

- IC này giao tiếp với vi điều khiển qua bus I2C (TWI)

- Địa chỉ I2C mặc định: 0x68 (hoặc 0xD0 với 8 bit)

- Tốc độ giao tiếp thông thường là 100kHz

- Lớp tinh thể lỏng (Liquid Crystal Layer)

- Lớp điện cực trong suốt (Transparent Electrodes)

- Bộ lọc phân cực (Polarizer)

- Mạch điều khiển (Controller)

- Backlight (đèn nền)

- Bo mạch và các chân kết nối

Trang 14

Chức năng của LCD

Hiển thị ký tự và số:

- LCD như 16x2 có thể hiển thị 2 dòng, mỗi dòng 16 ký tự (tổng 32 ký tự)

- Thích hợp để hiển thị văn bản, số liệu cảm biến, trạng thái hệ thống,

Hiển thị thông tin theo thời gian thực:

- Thường dùng để hiển thị thời gian, nhiệt độ, độ ẩm, thông điệp điều khiển, Giao tiếp với vi điều khiển:

- LCD nhận lệnh từ vi điều khiển để hiển thị dữ liệu cụ thể Có thể dùng giao tiếpsong song hoặc I2C (tiết kiệm chân)

2.4 Sơ đồ nguyên lí

Sau khi lựa chọn linh kiện và nghiên cứu nhóm đưa ra được sơ đồ nguyên lí nhưsau:

Hình 2.5 Sơ đồ nguyên lí của đồng hồ thời gian thực hiển thị thời gian, ngày tháng

Cơ chế hoạt động của mạch:

Trang 15

Khi cấp nguồn, Arduino khởi tạo các thiết bị ngoại vi: RTC, LCD, và cài đặtI2C.Arduino đọc thời gian hiện tại từ DS1307 thông qua giao tiếp I2C.Thời gian đọcđược sẽ được hiển thị lên LCD.LCD luôn hiển thị thời gian được cập nhật liên tục từRTC:Dòng 1: Hiển thị giờ, phút, giây.Dòng 2: Hiển thị ngày, tháng, năm.Việc hiển thịkhông gây trễ vì thời gian được cập nhật theo chu kỳ lặp.Người dùng có thể điều chỉnhthời gian.Nhấn SET:Mỗi lần nhấn sẽ chuyển sang chỉnh: Giờ → Phút → Giây → Ngày

→ Tháng → Năm → Thoát.Arduino ghi nhận trạng thái hiện tại để biết đang chỉnh phầnnào.Nhấn TĂNG hoặc GIẢM:Tăng/giảm giá trị thời gian tại phần đang được chỉnh (VD:giờ lên 1 đơn vị).Arduino cập nhật giá trị tạm thời trong bộ nhớ.Khi thoát chế độ chỉnh,Arduino ghi toàn bộ thời gian mới vào RTC, cập nhật dữ liệu để lưu trữ lâu dài (dù mấtđiện vẫn giữ được)

Trang 16

2.5 Lưu đồ thuật toán

Hình 2.6 Lưu đồ thuật toán của đồng hồ thời gian thực

Trang 17

const int btnSet = 2;

const int btnUp = 3;

const int btnDown = 4;

int mode = 0; // 0: hiển thị, 1~6: cài đặt

int hourSet, minuteSet, secondSet, daySet, monthSet, yearSet;

Trang 19

if (mode == 1) hourSet = (hourSet + 1) % 24;

else if (mode == 2) minuteSet = (minuteSet + 1) % 60; else if (mode == 3) secondSet = (secondSet + 1) % 60; else if (mode == 4) daySet = (daySet % 31) + 1;

else if (mode == 5) monthSet = (monthSet % 12) + 1; else if (mode == 6) yearSet++;

}

if (digitalRead(btnDown) == LOW) {

delay(200);

if (mode == 1) hourSet = (hourSet + 23) % 24;

else if (mode == 2) minuteSet = (minuteSet + 59) % 60; else if (mode == 3) secondSet = (secondSet + 59) % 60; else if (mode == 4) daySet = (daySet + 29) % 31 + 1; else if (mode == 5) monthSet = (monthSet + 10) % 12 + 1; else if (mode == 6) yearSet ;

Trang 20

lcd.print("Set ");

switch (mode) {

case 1: lcd.print("Hour "); break; case 2: lcd.print("Minute "); break; case 3: lcd.print("Second "); break; case 4: lcd.print("Day "); break; case 5: lcd.print("Month "); break; case 6: lcd.print("Year "); break; }

lcd.setCursor(0, 1);

lcd.print("Val: ");

switch (mode) {

case 1: lcd.print(hourSet); break;

case 2: lcd.print(minuteSet); break;

case 3: lcd.print(secondSet); break;

case 4: lcd.print(daySet); break;

case 5: lcd.print(monthSet); break;

case 6: lcd.print(yearSet); break;

Trang 21

void displayTime(DateTime now) {

String getWeekday(int dayOfWeek) {

const char* days[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

Khi hệ thống khởi động, Arduino khởi tạo các thiết bị cần thiết như I2C, LCD vàRTC Nếu RTC chưa có dữ liệu, chương trình sẽ tự động đặt thời gian hiện tại theo thờigian biên dịch của chương trình Sau đó, Arduino bắt đầu thực hiện vòng lặp chính(loop)

Trang 22

Trong vòng lặp, nếu người dùng không nhấn nút SET, chương trình sẽ đọc thờigian từ RTC mỗi giây và hiển thị ra LCD: dòng 1 hiển thị thứ và ngày/tháng/năm, dòng 2hiển thị giờ:phút:giây Điều này giúp cập nhật thời gian liên tục giống như một chiếcđồng hồ điện tử.

Khi người dùng nhấn nút SET, chương trình sẽ chuyển sang chế độ cài đặt thờigian, bắt đầu từ giờ, sau đó lần lượt qua phút, giây, ngày, tháng, và năm Ở mỗi bước,người dùng có thể dùng nút TĂNG để tăng giá trị, hoặc GIẢM để giảm Các nút đều có

xử lý chống dội bằng delay

Sau khi chỉnh xong tất cả các giá trị, nếu người dùng nhấn nút SET thêm lần nữa,chương trình sẽ ghi lại thời gian đã chỉnh vào bộ nhớ RTC, đảm bảo lần sau khởi động lại

hệ thống vẫn giữ đúng giờ Sau đó, chương trình quay về chế độ hiển thị bình thường

Cả quá trình điều khiển, hiển thị và chỉnh giờ được vận hành trơn tru nhờ Arduinođọc các trạng thái nút nhấn, điều khiển giao tiếp I2C với RTC và LCD, và xử lý logicchuyển chế độ một cách mạch lạc

Trang 23

CHƯƠNG 3 KẾT LUẬN

3.1 Hoàn thiện sản phẩm

3.1.1 In mạch

Sau khi nghiên cứu nhóm bắt đầu làm mạch in :

Hình 3.1 Mạch in của hệ thống đồng hồ thời gian thực

Trang 24

+ Hệ thống đồng hồ thời gian thực sử dụng Arduino Uno đã được thiết kế và hoạtđộng ổn định, hiển thị đúng giờ, phút, giây và ngày tháng Việc ứng dụng module RTCgiúp đảm bảo tính chính xác và duy trì thời gian ngay cả khi mất điện.

Đánh giá:

+ Hệ thống đơn giản, dễ thực hiện và chi phí thấp

+ Phù hợp cho học tập, nghiên cứu và ứng dụng thực tế

+ Có thể mở rộng thêm các chức năng như báo thức, điều khiển thiết bị theo thờigian

Hạn chế: giao diện còn đơn giản, chưa có tính năng đồng bộ thời gian qua internet

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

• Tích hợp báo thức hoặc hẹn giờ điều khiển thiết bị tự động

• Hiển thị thời gian qua ứng dụng điện thoại bằng kết nối Bluetooth hoặc Wi-Fi

• Đồng bộ thời gian qua Internet (NTP) sử dụng module ESP8266/ESP32

• Nâng cấp giao diện hiển thị bằng màn hình màu TFT hoặc cảm ứng

Thiết kế vỏ hộp hoàn chỉnh để ứng dụng làm sản phẩm thực tế

Ngày đăng: 16/08/2025, 20:18

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Sơ đồ tổng quất của hệ thống đồng hồ thời gian thực Khối nguồn: Cung cấp nguồn cho hệ thống - Đồ án môn học hệ thống nhúng tên Đề tài thiết kế hệ thống nhúng Đồng hồ thời gian thực
Hình 2.1 Sơ đồ tổng quất của hệ thống đồng hồ thời gian thực Khối nguồn: Cung cấp nguồn cho hệ thống (Trang 8)
Hình 2.3 IC DS1307 - Đồ án môn học hệ thống nhúng tên Đề tài thiết kế hệ thống nhúng Đồng hồ thời gian thực
Hình 2.3 IC DS1307 (Trang 12)
Hình 2.4 Màn hình LCD LCD gồm các thành phần chính sau: - Đồ án môn học hệ thống nhúng tên Đề tài thiết kế hệ thống nhúng Đồng hồ thời gian thực
Hình 2.4 Màn hình LCD LCD gồm các thành phần chính sau: (Trang 13)
Hình 2.5 Sơ đồ nguyên lí của đồng hồ thời gian thực hiển thị thời gian, ngày tháng - Đồ án môn học hệ thống nhúng tên Đề tài thiết kế hệ thống nhúng Đồng hồ thời gian thực
Hình 2.5 Sơ đồ nguyên lí của đồng hồ thời gian thực hiển thị thời gian, ngày tháng (Trang 14)
Hình 2.6 Lưu đồ thuật toán của đồng hồ thời gian thực - Đồ án môn học hệ thống nhúng tên Đề tài thiết kế hệ thống nhúng Đồng hồ thời gian thực
Hình 2.6 Lưu đồ thuật toán của đồng hồ thời gian thực (Trang 16)
Hình 3.1 Mạch in của hệ thống đồng hồ thời gian thực - Đồ án môn học hệ thống nhúng tên Đề tài thiết kế hệ thống nhúng Đồng hồ thời gian thực
Hình 3.1 Mạch in của hệ thống đồng hồ thời gian thực (Trang 23)

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