Tải bản đầy đủ (.docx) (33 trang)

Đồ án điều khiển nhiệt độ hiển thị lên module led matrix Max7219 sử dụng Arduino

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.86 MB, 33 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP. HỒ CHÍ MINH

KHOA CÔNG NGHỆ ĐIỆN – ĐIỆN TỬ
--------

BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH

ĐỀ TÀI: ĐIỀU KHIỂN NHIỆT ĐỘ HIỂN THỊ TRÊN LED MA TRẬN
NỐI TIẾP

GVHD: NGUYỄN PHÚ CÔNG
SINH VIÊN THỰC HIỆN

MSSV

DƯƠNG HÀO QUANG

2032170077

TP. HỒ CHÍ MINH, 14 tháng 07, năm 2020

TRƯỜNG ĐH CÔNG NGHIỆP THỰC PHẨM TP. HCM

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM


KHOA CÔNG NGHỆ ĐIỆN – ĐIỆN TỬ

Độc lập - Tự do - Hạnh phúc


TP. HCM, ngày….tháng…..năm……..

ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỒ ÁN: ĐIỀU KHIỂN NHIỆT ĐỘ HIỂN THỊ TRÊN LED MA TRẬN NỐI
TIẾP
Giảng viên hướng dẫn: Nguyễn Phú Công
Thời gian thực hiện: Từ ngày 01/05/2020 đến ngày 15/07/2020
Sinh viên thực hiện: Dương Hào Quang
Nội dung đề tài:
-

Tìm hiểu tổng quan lý thuyết.
Xây dựng mục tiêu đề tài.
Thiết kế và thi công mô hình hiển thị nhiệt độ trên led ma trận
Thực nghiệm và đánh giá đề tài

Kế hoạch thực hiện:
- Từ ngày 01/05/2020 đến ngày 31/05/2020: Nhận đề tài
- Từ ngày 01/06/2020 đến ngày 23/06/2020: Nghiên cứu đề tài
- Từ ngày 24/06/2020 đến ngày 30/06/2020: Tiến hành thi công lắp ráp và thử
nghiệm
- Từ ngày 01/07/2020 đến ngày 14/07/2020: Viết báo cáo
Xác nhận của giảng viên hướng dẫn

TP. HCM, ngày….tháng …..năm…..
Sinh viên


TRƯỜNG ĐH CÔNG NGHIỆP THỰC PHẨM TP. HCM
KHOA CÔNG NGHỆ ĐIỆN – ĐIỆN TỬ


CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc

TP. HCM, ngày….tháng…..năm……..

NHẬN XÉT ĐỒ ÁN CHUYÊN NGÀNH
CỦA GIẢNG VIÊN HƯỚNG DẪN
Tên đồ án:
ĐIỀU KHIỂN NHIỆT ĐỘ HIỂN THỊ TRÊN LED MA TRẬN NỐI TIẾP

Sinh viên thực hiện:

Giảng viên hướng dẫn:

Dương Hào Quang

Nguyễn Phú Công

2032170077

Đánh giá Đồ án
1. Về cuốn báo cáo:
Số trang

_________

Số chương

_________


Số bảng số liệu

_________

Số hình vẽ

_________

Số tài liệu tham khảo

_________

Sản phẩm

_________

Một số nhận xét về hình thức cuốn báo cáo:
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
2. Về nội dung đồ án:
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………

3. Về tính ứng dụng:
……………………………………………………………………………………………………
……………………………………………………………………………………………………


……………………………………………………………………………………………………
……………………………………………………………………………………………………
4. Về thái độ làm việc của sinh viên:
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
Đánh giá chung:
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
Điểm sinh viên:
Dương Hào Quang: …../10

Người nhận
(Ký tên và ghi rõ họ tên)


LỜI CẢM ƠN
Để hoàn thành chuyên đề báo cáo đồ án chuyên ngành điều khiển – tự động hóa
trước hết em xin gửi đến quý thầy, cô giáo trong Khoa Công nghệ Điện-Điện tử,
trường Đại học Công nghiệp thực phẩm Thành phố Hồ Chí Minh lời cảm ơn chân
thành. Đặc biệt, em xin gửi đến thầy Nguyễn Phú Công, người đã tận tình hướng dẫn,

giúp đỡ em hoàn thành chuyên đề báo cáo đồ án chuyên ngành điều khiển – tự động
hóa này lời cảm ơn sâu sắc nhất.
Mặc dù nhóm em đã cố gắng hết sức mình, nhưng do lượng kiến thức eo hẹp
nên không tránh khỏi những thiếu sót. Do vậy, chúng em rất mong nhận được sự góp ý
quý báu của thầy, cô để nhóm có thể hoàn thiện và tốt hơn nữa cũng như tích lũy kinh
nghiệm để hoàn thành tốt báo cáo đồ án tốt nghiệp sao ngày.
Sau cùng, em kính chúc quý thầy cô thật dồi dào sức khỏe, luôn tràn đầy nhiệt
huyết cùng với thành công trong sự nghiệp cao quý.
TP. HCM, ngày 14 tháng 07 năm 2020
Sinh viên thực hiện
Dương Hào Quang


LỜI NÓI ĐÀU
Như chúng ta biết, nhiệt độ là một trong những thành phần vật lý rất quan
trọng. Việc thay đổi nhiệt độ của một vật chất ảnh hưởng rất nhiều đến cấu tạo, tính
chất, và các đại lượng vật lý khác của vật chất. Ví dụ, sự thay đổi nhiệt độ của 1 chất
khí sẽ làm thay đổi thể tích, áp suất của chất khí trong bình. Vì vậy, trong nghiên cứu
khoa học, trong công nghiệp và trong đời sống sinh hoạt, thu thập các thông số và
điều khiển nhiệt độ là điều rất cần thiết.
Trong các lò nhiệt, máy điều hoà, máy lạnh hay cả trong lò viba, điều khiển
nhiệt độ là tính chất quyết định cho sản phảm ấy. Trong ngành luyện kim, cần phải
đạt đến một nhiệt độ nào đó để kim loại nóng chảy, và cũng cần đạt một nhiệt độ nào
đó để ủ kim loại nhằm đạt được tốt các đặc tính cơ học như độ bền, độ dẻo, độ chống
gỉ sét, … . Trong ngành thực phẩm, cần duy trì một nhiệt độ nào đó để nướng bánh,
để nấu, để bảo quản, … . Việc thay đổi thất thường nhiệt độ, không chỉ gây hư hại
đến chính thiết bị đang hoạt động, còn ảnh hưởng đến quá trình sản xuất, ngay cả trên
chính sản phẩm ấy.
Sự ra đời của mạch Arduino đã thúc đẩy sự yêu thích, tìm tòi nghiên cứu, ứng
dụng thành tựu khoa học kỹ thuật của lĩnh vực tự động hóa vào đời sống và công

nghiệp. Với những ưu điểm riêng của mình, Arduino dần khẳng định được vị thế, vai
trò của mình trên trường quốc tế, được giới học sinh, sinh viên và cả giới nghiên cứu
sử dụng một cách rộng rãi.
Chính vì thấy được những ưu điểm của Arduino cùng với kiến thức sau một thời gian
học tập và tìm hiểu tài liệu về Arduino, em đã chọn dùng Arduino chọn đồ án 2 với đề
tài: “Điều khiển nhiệt độ hiển thị trên led ma trận nối tiếp”


MỤC LỤC

DANH MỤC HÌNH ẢNH

CHƯƠNG 1: TỔNG QUAN VỀ ĐÈ TÀI
1.1. Đặt vấn đề
Ngày nay, với sự phát triển của khoa học kỹ thuật, trong cuộc sống hằng ngày
việc đo và đặt nhiệt độ theo mong muốn trong một không gian giới hạn nào đó như:
trong nhà máy, xí nghiệp, trong bệnh viện, trong công ty, nhà ở,…là rất cần thiết theo
nhu cầu của con người. Điều đó chứng tỏ con người ngày càng muốn giao tiếp nhiều
hơn với môi trường. Vì vậy điều khiển nhiệt độ là điều rất cần thiết và với sự phát
triển của khoa học kỹ thuật, việc thực hiện một mô hình điều khiển nhiệt độ hiển thi
trên led ma trận với độ chính xác cao mà không mất nhiều chi phí.

Hình 1. 1: Điều khiển nhiệt độ máy lạnh

Giúp sinh viên củng cố lý thuyết môn học Vi xử lý trong điều khiển. Hiểu
thêm về cấu trúc của các dòng vi điều khiển nói chung và ARDUINO nói riêng. Biết
về cách lập trình cho vi điều khiển và thực hiện được một số bài toán điều khiển cơ
bản.
Giúp sinh viên có thêm kỹ năng giải quyết một số bài toán điều khiển đơn
giản ứng dụng các dòng vi điều khiển. Có khả năng phân tích bài toán điều khiển để

tìm biện pháp giải quyết vấn đề, biết lựa chọn giải pháp hợp lý và biết cách chọn lựa
thiết bị vật tư sử dụng cho công việc.
Rèn thêm tư duy thực hiện và cách thức trình bày để sinh viên tiếp cận dễ
7


dàng hơn đối với các đồ án môn học khác và đặc biệt là đồ án tốt nghiệp sau này khi
sinh viên làm Khóa luận tốt nghiệp.

1.2. Yêu cầu và kết cấu đồ án
Điều khiển được nhiệt độ thông qua cảm biến và vi sử lý hiển thị lên led ma
trận mắc nối tiếp và thực hiện theo đúng tiến độ đã đặt ra.
Kết cấu đồ án được trình bày theo 4 phần chính :
• Chương 1: Tổng quan về đề tài
• Chương 2: Cơ sở lý thuyết
• Chương 3: Thiết kế và thi công
• Chương 4: Đánh giá và kết luận

8


CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. Giới thiệu về cảm biến nhiệt độ DS18B20
2.1.1 Tổng quan
DS18B20 là IC cảm biến nhiệt độ, chỉ bao gồm 3 chân,hình ảnh thức tế như
hình dưới.

Hình 2. 1: Cảm biến DS18B20

Hình 2. 2: Sơ đồ chân cảm biến DS18B20.


2.1.2 Đặc điểm DS18B20
Các đặc điểm kỹ thuật của cảm biến DS18B20 có thể kể ra một cách tóm tắt
như sau:
• Sử dụng giao diện một dây nên chỉ cần có một chân ra để truyền thông.
• Độ phân giải khi đo nhiệt độ từ 9 bit tới 12bit. Dải đo nhiệt độ 55°C đến 125°C, từng bậc 0.5°C, có thể đạt độ chính xác đến 0.1°C
9


bằng việc hiệu chỉnh qua phần mềm.
• Rất thích hợp với các ứng dụng đo lường đa điểm vì nhiều đầu đo có
thể được nối trên một bus, bus này được gọi là bus một dây (1-wire).
• Không cần thêm linh kiện bên ngoài.
• Điện áp nguồn nuôi có thể thay đổi trong khoảng rộng, từ 3.0 V đến
5.5 V DC và có thể được cấp thông qua đường dẫn dữ liệu.
• Dòng tiêu thụ tại chế độ nghỉ cực nhỏ.
• Thời gian lấy mẫu và biến đổi ra digital 12 bit không lớn quá 750ms.
• Mỗi cảm biến có một mã định danh duy nhất 64 bit chứa trong
bộ nhớ ROM trên chip (on chip), giá trị nhị phân được khắc bằng tia
laze.
Sơ đồ khối bên trong của cảm biến:

Hình 2. 3: Sơ đồ khối DS18B20.

2.1.3 Giao tiếp với DS18B20
Đầu đo nhiệt độ số DS18B20 đưa ra số liệu để biểu thị nhiệt độ đo được dưới
dạng mã nhị phân 12 bit. Các thông tin được gửi đến và nhận về từ DS18B20 trên
giao diện 1-wire, do đó chỉ cần hai đường dẫn gồm một đường cho tín hiệu và
một đường làm dây GND là đủ để kết nối vi điều khiển đến điểm đo. Nguồn nuôi cho
các thao tác ghi/đọc/chuyển đổi có thể được trích từ đường tín hiệu, không cần có

thêm đường dây riêng để cấp điện áp nguồn.
Mỗi vi mạch đo nhiệt độ DS18B20 có một mã số định danh duy nhất, được
khắc bằng laser trong quá trình chế tạo vi mạch nên nhiều vi mạch DS18B20 có
thể cùng kết nối vào một bus 1-wire mà không có sự nhầm lẫn.
Đặc điểm này làm cho việc lắp đặt nhiều cảm biến nhiệt độ tại nhiều vị trí
khác nhau trở nên dễ dàng và với chi phí thấp. Số lượng các cảm biến nối vào bus
không hạn chế.
Mỗi cảm biến nhiệt độ DS18B20 có một dãy mã 64 bit duy nhất được lưu
trữ trong bộ nhớ ROM từ khi sản xuất bằng kỹ thuật laze.
Cấu trúc vùng nhớ mã ROM 64 bit của DS18B20:

Hình 2. 4: Cấu trúc vùng nhớ mã ROM của DS18B20

Như vậy dãy mã được chia ra thành 3 nhóm, trong đó:
10


• Tám bit đầu tiên là mã định danh họ một dây, mã của DS18B20 là 28h.
• 48 bit tiếp theo là mã số xuất xưởng duy nhất, nghĩa là mỗi cảm biến
DS1820 chỉ có một số mã.
• Tám bit có ý nghĩa nhất là byte mã kiểm tra CRC (cyclic redundancy
check), byte này được tính toán từ 56 bit đầu tiên của dãy mã trên
ROM
Để truy cập lên cảm biến một dây DS18B20 ta phải sử dụng hai nhóm lệnh:
các lệnh ROM và các lệnh chức năng (function commands) bộ nhớ.
Sơ đồ vùng nhớ DS18B20:

Hình 2. 5: Cấu trúc vùng nhớ DS18B20

Việc đo nhiệt độ của DS18B20 được thực hiện theo từng lần lấy mẫu. Mỗi lần

lấy mẫu được ngăn cách bởi 1 tín hiệu reset và 1 presence pulse. Reset được xem như
quá trình ngăn cách và khởi động lại quá trình đo nhiệt độ mới, presence pulse giống
như tín hiệu báo hiệu cho VDK biết là DS18B20 đang có mặt.
Các bước của 1 lần lấy mẫu:
• Khởi tạo xung reset và nhận tín hiệu hiện diện từ DS18B20.
• Gửi các lệnh ROM.
• Gửi các lệnh chức năng bộ nhớ.
Lưu đồ lệnh ROM DS18B20 được trình bày bên dưới:

11


Hình 2. 6: Lưu đồ lệnh ROM

Lưu đồ lệnh chức năng DS18B20 được trình bày bên dưới:

12


Hình 2. 7: Lưu đồ lệnh chức năng DS18B20

Thời gian khởi tạo:

13


Hình 2. 8: Khe thời gian khởi tạo

Giản đồ khe thời gian đọc viết:


Hình 2. 9: Khe thời gian đọc,viết

2.2. Arduino Uno R3
2.2.1 Tổng quan về Arduino
Arduino thật ra là một bo mạch vi xử lý được dùng để lập trình tương tác với
các thiết bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác. Đặc điểm
nổi bật của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, với một
ngôn ngữ lập trình có thể học một cách nhanh chóng ngay cả với người ít am hiểu về
điện tử và lập trình. Và điều làm nên hiện tượng Arduino chính là mức giá rất thấp và
tính chất nguồn mở từ phần cứng tới phần mềm.

Hình 2. 10: Arduino Uno R3

2.2.2 Một vài thông số của Arduino Uno R3
14


Vi điều khiển
Điện áp hoạt động
Tần số hoạt động
Dòng tiêu thụ
Điện áp vào khuyên
dùng
Điện áp vào giới hạn
Số chân Digital I/O
Số chân Analog
Dòng tối đa trên mỗi
chân I/O
Dòng ra tối đa (5V)
Dòng ra tối đa (3.3V)

Bộ nhớ flash
SRAM
EEPROM

ATmega328 họ 8bit
5V DC (chỉ được cấp qua cổng USB)
16 MHz
khoảng 30mA
7-12V DC
6-20V DC
14 (6 chân hardware PWM)
6 (độ phân giải 10bit)
30 mA
500 mA
50 mA
32 KB (ATmega328) với 0.5KB dùng bởi
bootloader
2 KB (ATmega328)
1 KB (ATmega328)

Bảng 2. 1: Một vài thông số của Arduino UNO

Hình 2. 11: Vi điều khiển

Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8,
ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản như điều
khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo
nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,…

2.2.3 Nguồn

Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp
nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì
cấp nguồn bằng pin vuông 9V là hợp lí nhất nếu không có sẵn nguồn từ cổng USB.
Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, sẽ làm hỏng Arduino UNO.
Các chân năng lượng
• ND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn
dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân
này phải được nối với nhau.
• 5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
15


• 3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là
50mA.
• Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối
cực dương của nguồn với chân này và cực âm của nguồn với chân
GND.
• IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể
được đo ở chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy bạn không
được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không
phải là cấp nguồn.
• RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương
đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ.
Lưu ý:
• Arduino UNO không có bảo vệ cắm ngược nguồn vào. Do đó phải hết
sức cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho
Arduino UNO. Việc làm chập mạch nguồn vào của Arduino UNO sẽ
biến nó thành một miếng nhựa chặn giấy. Nên dùng nguồn từ cổng
USB nếu có thể.
• Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra

cho các thiết bị khác, không phải là các chân cấp nguồn vào. Việc cấp
nguồn sai vị trí có thể làm hỏng board. Điều này không được nhà sản
xuất khuyến khích.
• Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp
dưới 6V có thể làm hỏng board.
• Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi
điều khiển ATmega328.
• Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của
Arduino UNO nếu vượt quá 200mA sẽ làm hỏng vi điều khiển.
• Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino
UNO sẽ làm hỏng vi điều khiển.
• Cường độ dòng điện qua một chân Digital hoặc Analog bất kì của
Arduino UNO vượt quá 40mA sẽ làm hỏng vi điều khiển. Do đó nếu
không dùng để truyền nhận dữ liệu phải mắc một điện trở hạn dòng.

2.2.4 Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
• 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ
trong bộ nhớ Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB
trong số này sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi
nào cần quá 20KB bộ nhớ này đâu.
• 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn
khai báo khi lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì
càng cần nhiều bộ nhớ RAM. Tuy vậy, thực sự thì cũng hiếm khi nào
bộ nhớ RAM lại trở thành thứ mà bạn phải bận tâm. Khi mất điện, dữ
liệu trên SRAM sẽ bị mất.
• 1Kb cho EEPROM( Electrically Eraseble Programmable Read Only
Memory): đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc
16



và ghi dữ liệu của mình vào đây mà không phải lo bị mất khi cúp điện
giống như dữ liệu trên SRAM.

2.2.5 Các cổng vào ra

Hình 2. 12: Các cổng vào ra

Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có
2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi
chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328
(mặc định thì các điện trở này không được kết nối).
Một số chân digital có các chức năng đặc biệt như sau:
• 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với
thiết bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói
nôm na chính là kết nối Serial không dây. Nếu không cần giao tiếp
Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
• Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM
với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V)
bằng hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh
được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở
mức 0V và 5V như những chân khác.
• Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài
các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ
liệu bằng giao thức SPI với các thiết bị khác.
• LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi
bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được
nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ
sáng.


2.2.6 Ngôn ngữ lập trình cho Arduino
17


Hình 2.
diện
Arduino

13: Giao
phần mềm
IDE.

Thiết kế
mạch nhỏ
trang bị
tính năng
dụng
lại nhiều
cho
Arduino,
tuy
nhiên sức
mạnh
thực
sự
của Arduino nằm ở phần mềm. Môi trường lập trình đơn giản dễ sử dụng, ngôn ngữ
lập trình Wiring dễ hiểu và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ
thuật. Và quan trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng
đồng nguồn mở là cực kỳ lớn

Arduino IDE là phần mềm dùng để lập trình cho Arduino. Môi trường lập
trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows,
Macintosh osx và Linux. Do có tính chất nguồn mở nên môi trường lập trình này
hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm.
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++. Và do
ngôn ngữ lập trình này dựa trên nền tảng ngôn ngữ c của AVR nẽn người dùng hoàn
toàn có thể nhúng thêm code viết bằng AVR vào chương trình nếu muốn.Hiện tại,
Arduino IDE có thể download từ trang chủ bao gồm các phiên bản
sau:
• Arduino 1.0.5
• Arduinol.5.5 BETA (Hỗ trợ cho 2 board Arduino mới nhất là: Arduino
Yun và Arduino Due).
• Arduino IDE cho Intel Galileo
bo
gọn,
nhiều
thông
mang
lợi thế

2.3. Led ma trận
2.3.1 Giới thiệu về led ma trận
Led ma trận bao gồm các led đơn được xếp thành hàng và cột . Các led đơn
trong cùngmột hàng thì được nối chung anot (catot) còn trong cùng một cột thì được
nối chung catot(anot). Do đó để các led có thể sáng ta phải cấp nguồn cho led như
sau : cấp mức cao(thấp) cho hàng và mức thấp (cao) cho cột.

18



Hình 2. 14: Sơ đồ cấu tạo led ma trận

2.3.2 Hiển thị với IC MAX7219
Led Matrix 8x8 là một bảng Led gồm 8 hàng và 8 cột (tổng cộng 64 con led).
Nếu điều khiển trực tiếp bằng Arduino, đó là một điều không khả thi. Thế nên, IC
MAX7219 đã ra đời để có thể điều khiển vô vàn con Led chỉ với 5 chân.
IC MAX7219 được hãng MAXIM thiết kế và sản xuất, thuận tiện sử dụng để
điều khiển LED ma trận và LED 7 thanh (1 chip có thể điều khiển LED ma trận 8x8
hoặc LED 7 thanh 8 chữ số) và chỉ cần 1 điện trở để hạn dòng cho tất cả các led (so
với các IC khác hầu như phải có 1 điện trở cho mỗi led). Trên mỗi chip đã được tích
hợp bộ giải mã BCD, mạch quét dồn kênh, thanh ghi dịch, ...
Giống như với 74HC595, để điều khiển LED ma trận ta sử dụng MAX7219
hoạt động giống như một thanh ghi dịch khi bạn cần nhập dữ liệu vào nối tiếp theo
từng bit. Tổng cộng có 16 bit được nhập vào tại một thời điểm. MAX7219 chỉ cần 3
chân từ Arduino để kết nối với các chân DIN, LOAD và CLK của IC.
Sơ đồ chân của MAX7219 được mô tả như hình dưới:

Hình 2. 15: MAX7219

Chân LOAD được kéo xuống LOW và bit đầu tiên của dữ liệu được đưa vào
chân DIN, trên sườn lên của xung CLK, các bit tại chân DIN được đưa vào thanh ghi
bên trong chip. Sau đó xung CLK xuống LOW và các bit tiếp theo được thiết lập tại
chân DIN trước khi lặp lại quá trình. Sau khi 16 bit được đưa vào thanh ghi, chân
19


LOAD được đưa lên HIGH để chốt dữ liệu vào. Chân DOUT (24) được sử dụng nếu
có từ 2 chip MAX7219 trở lên. DOUT của chip thứ nhất kết nối DIN của chip thứ hai
và cứ như vậy. Dữ liệu được đưa ra khỏi chân DOUT trên sườn xuống của xung
CLK.


20


CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG PHẦN CỨNG
3.1. Tìm hiểu về đề tài
3.1.1 Nhiệm vụ đặt ra
Điều khiển quạt DC và đèn AC. Nếu nhiệt độ đặt lớn hơn nhiệt độ đo thì mở
đèn và tắt quạt. Ngược lại, nếu nhiệt độ đặt nhỏ hơn nhiệt độ đo thì vi điều khiển kích
Relay tắt đèn và mở quạt làm mát.
Khối hiển thị nhiệt độ

Khối cảm biến

Arduino
Uno

Khối nút nhấn

Điều khiển quạt DC

Điều khiển đèn AC

Hình 3. 1: Sơ đồ khối

Hiển thị nhiệt độ đặt và nhiệt độ đo trên led ma tận.
Các cơ cấu thi hành phải hoạt động ổn định khi nhiệt độ đo dao động quanh
nhiệt độ chuẩn (nhiệt độ đặt).

3.1.2 Hướng giải quyết

Dùng đèn AC để tăng nhiệt độ và quạt DC để giảm nhiệt độ. Hiển thị nhiệt độ
bằng module led ma trận 8x32 sử dụng IC MAX7219.
Dùng 2 nút nhấn để nhập nhiệt độ chuẩn (nhiệt độ đặt) và bắt đầu xử lý.
Dùng phần mềm Arduino IDE để viết chương trình

3.2. Nguyên lý hoạt động của các khối
3.2.1 Khối cảm biến
Để đọc nhiệt độ từ cảm biến DS18B20, chúng ta cần sử dụng các thư viện hỗ
trợ sau:
• Thư viện OneWire.h
• Thư viện DallasTemperature.h
Sơ đồ kết nối chân với Arduino:

21


DS18B20

ARDUINO

GND

GND

DATA

2

VCC


5V

Bảng 3. 1: Sơ đồ kết nối chân DS18B20 với Arduino

Sơ đồ kết nối dây:

Hình 3. 2: Kết nối DS18B20 với Arduino

Nguyên lý hoạt động của cảm biến DS18B20:
DS18B20 gồm 2 byte:
• + 4 bit thấp là phần lẻ sau dấu phẩy: Bít 0, bít 1, bít 2, bít 3.
• + 7 bit tiếp theo là phần nguyên: Bit 4, bít 5, bít 6, bít 7, bít 8, bít 9, bít
10.
• + 5 bít cao nhất là dấu của nhiệt độ (0 = “+”; 1 = “-”).
• + Dữ liệu đến và đi khỏi DS18B20 đều truyền từ bit LSB đầu tiên và
cuối cùng là bit MSB (từ phải sang trái).
Cách đọc nhiệt độ của DS18B20:
Nhiệt độ đọc về dạng hex nên ta phải đổi ra thập phân khi hiển thị. Giả sử ta
đọc được 2 byte nhiệt độ:
Bước 1: So sánh bit MSB, nếu= 0 thì in ra dấu “+” rồi nhảy sang bước 3. Nếu
= 1 thì in ra dấu “-” rồi tiếp tục đến bước 2.
Bước 2: Chuyển 2 byte vừa nhận được sang dạng bù 2 của chính nó.
Bước 3: Chuyển 7 bit phần nguyên vào thanh ghi A và in ra giá trị thanh ghi
nàydưới dạng thập phân (chính là in ra 3 số phần nguyên của nhiệt độ).
Bước 4: In ra dấu “,”.
Bước 5: In ra 4 số sau dấu “,” dạng thập phân (4 bít thấp nhất).
VD: +10.125˚C là FF5Eh
22



3.2.2 Khối hiển thị nhiệt độ
Để hiển thị hình ảnh lên led ma trận ta sử dụng module 4 led ma trận với IC
MAX7219
Hiển thị Module led ma trận thông qua Arduino, chúng ta cần sử dụng các thư
viện sau:
• Thư viện MD_Parola.h
• Thư viện MD_MAX72xx.h
Sơ đồ kết nối với Arduino:
MODULE LED MA TRẬN
ARDUINO
VCC

5V

GND

GND

DIN_PIN

11

CLK_PIN

13

CS_PIN

10


Bảng 3. 2: Sơ đồ kết nối chân Led ma trận với Arduino

Nguyên lý hoạt động của IC MAX7219 với led ma trận:
64 đèn LED được điều khiển bởi 16 chân đầu ra của IC. Số lượng tối đa của
đèn LED sáng lên cùng một lúc là tám. Các đèn LED được sắp xếp thành 8 × 8 gồm
hàng và cột. Vì vậy, MAX7219 kích hoạt mỗi cột trong một khoảng thời gian rất
ngắn và đồng thời nó cũng điều khiển từng hàng. Vì vậy, bằng cách nhanh chóng
chuyển qua các cột và hàng, mắt người sẽ chỉ nhận thấy một ánh sáng liên tục.

Hình 3. 3: Sơ đồ kết nối giữa MAX7219 với led ma trận

Lưu ý các chân của Ma trận LED 8 × 8 phổ biến được sắp xếp bên trong, vì
23


vậy nếu bạn tự xây dựng một ma trận, bạn nên tìm hiểu nó. Cũng lưu ý rằng một
bảng ngắt phổ biến cho MAX7219 đi kèm với một điện trở giữa 5V và chân IC 18.
Điện trở được sử dụng để cài đặt độ sáng hoặc dòng điện cho đèn LED.

Hình 3. 4: Điện trở điều chỉnh dòng điện

Bảng dưới đây là dữ liệu của IC cho thấy giá trị của điện trở mà chúng ta nên
sử dụng theo mức giảm điện áp chuyển tiếp của đèn LED.

Hình 3. 5: Phân đoạn dòng điện so với bảng giảm điện áp chuyển tiếp từ dữ liệu

Sơ đồ kết nối dây giữa module với Arduino:

24



Hình 3. 6: Kết nối dây giữa module led ma trận với Arduino

3.2.3 Khối nút nhấn
Sơ đồ kết nối dây với Arduino:

Hình 3. 7: Kết nối nút nhấn với Arduino

Sơ đồ kết nối chân :
NÚT NHẤN

ARDUINO

VCC

5V

GND

GND

Button1

3

Button2

4

Bảng 3. 3: Sơ đồ kết nối nút nhấn với Arduino


Nguyên lý hoạt động:
Sử dụng 2 nút nhấn (Button1 và Button 2) dùng để tăng, giảm và nhập nhiệt
25


×