You are on page 1of 45

SỐ PHÁCH:……………….

TRƯỜNG ĐẠI HỌC KHOA HỌC

KHOA ĐIỆN, ĐIỆN TỬ VÀ CÔNG NGHỆ VẬT LIỆU

CẢM BIẾN NHIỆT ĐỘ HIỂN THỊ LÊN


MÀN HÌNH LCD VÀ ĐIỀU KHIỂN TỐC
ĐỘ QUẠT TRONG PHÒNG NGỦ

VI XỬ LÝ VÀ VI ĐIỀU KHIỂN TRONG ĐO LƯỜNG TỰ ĐỘNG

- DTV3022

GIẢNG VIÊN HƯỚNG DẪN: THS. NGUYỄN ĐỨC NHẬT QUANG

HUẾ, THÁNG 12 NĂM 2021


TRƯỜNG ĐẠI HỌC KHOA HỌC

KHOA ĐIỆN, ĐIỆN TỬ VÀ CÔNG NGHỆ VẬT LIỆU

CẢM BIẾN NHIỆT ĐỘ HIỂN THỊ LÊN


MÀN HÌNH LCD VÀ ĐIỀU KHIỂN TỐC
ĐỘ QUẠT TRONG PHÒNG NGỦ

VI XỬ LÝ VÀ VI ĐIỀU KHIỂN TRONG ĐO LƯỜNG TỰ ĐỘNG

- DTV3022

Giảng viên hướng dẫn : ThS. Nguyễn Đức Nhật Quang

Sinh viên thực hiện : Hồ Văn Nhật

Mã sinh viên : 19T1051013

HUẾ, THÁNG 12 NĂM 2021


SỐ PHÁCH:……………….

MỤC LỤC
DANH MỤC HÌNH ẢNH

DANH MỤC BẢNG BIỂU Trang


CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI 1

1.1.ĐẶT VẤN ĐỀ 1

1.2.GIẢI QUYẾT VẤN ĐỀ 1

CHƯƠNG 2. TỔNG QUAN VỀ LINH KIỆN 3


2.1. GIỚI THIỆU ARDUINO 3

2.1.1. Arduino là gì? 3

2.1.2. Cấu tạo của Arduino 3

2.1.3. Thông số cơ bản của Arduino Uno R3 3

2.1.4. Các loại Board Arduino phổ biến 4

2.1.5. Ứng dụng Arduino 5

2.2. PHẦN MỀM LẬP TRÌNH ARDUINO IDE 5

2.2.1. Giao diện phần mềm IDE 6

2.2.2. Cấu trúc một chương trình trong phần mềm IDE 8

2.3. GIỚI THIỆU VỀ ARDUINO NANO 10

2.4. GIỚI THIỆU VỀ LCD I2C 15

2.4.1. Giới thiệu LCD 16x2 15

2.4.2. Thông số kỹ thuật LCD 16x2 15

2.4.3. Module LCD I2C 17

2.5. GIỚI THIỆU IC THỜI GIAN THỰC DS1307 18

2.6. GIAO TIẾP ARDUINO VỚI IC THỜI GIAN THỰC DS1307 19

2.7. GIAO TIẾP ARDUINO VỚI CẢM BIẾN NHIỆT ĐỘ, ĐỘ ẨM DHT11 19

CHƯƠNG 3. THI CÔNG VÀ THIẾT KẾ MẠCH 21


3.1. QUÁ TRÌNH ĐO NHIỆT ĐỘ, ĐỘ ẨM, ĐỌC GIÁ TRỊ THỜI GIAN 21

3.2. SƠ ĐỒ KHỐI CỦA MẠCH 21


3.3. LƯU ĐỒ THUẬT TOÁN 22

3.4. SƠ ĐỒ NGUYÊN LÝ (MÔ PHỎNG TRÊN PROTEUS) 22

3.5. KẾT QUẢ MÔ PHỎNG TRÊN PROTEUS 23

3.6. KẾT QUẢ TRÊN MẠCH THỰC TẾ 23

CHƯƠNG 4. ĐIỀU KHIỂN MOTOR, SERVO VÀ LED PHẦN MỀM


VISUAL STUDIO24
4.1. YÊU CẦU KIẾN THỨC CẦN NẮM KHI LẬP TRÌNH 24

4.2. THIẾT BỊ VÀ PHẦN MỀM CẦN THIẾT 24

4.3. TỔNG QUAN LÝ THUYẾT 24

4.3.1. Led đơn 24

4.3.2. Kỹ thuật điều chế độ rộng xung 24

4.3.3. Giới thiệu về động cơ DC 25

4.3.4. Giới thiệu về động cơ bước SERVO 25

4.4. THIẾT KẾ VÀ LẬP TRÌNH GIAO DIỆN ĐIỀU KHIỂN LED – MOTOR 27

4.4.1. Sơ đồ nguyên lý mạch điều khiển LED – MOTOR – SERVO27

4.4.2. Giao diện điều khiển LED – MOTOR – SERVO bằng C# 27

4.5. KẾT QUẢ 28

CHƯƠNG 5. KẾT LUẬN 29


PHỤ LỤC

TÀI LIỆU THAM KHẢM

PHIẾU ĐÁNH GIÁ TIỂU LUẬN


DANH MỤC HÌNH ẢNH Trang
Hình 1. Thế kỷ XXI – Thời đại của khoa học công nghê ̣................................................1
Hình 2. Cấu tạo của Arduino Uno.................................................................................3
Hình 3. Minh họa giao diện lập trình Arduino IDE.......................................................6
Hình 4. Minh họa vùng Toolbar trên giao diện Arduino IDE........................................7
Hình 5. Minh họa chọn board Arduino và cổng COM giao tiếp phù hợp.....................7
Hình 6. Minh họa vùng viết chương trình......................................................................8
Hình 7. Tổng quan quá trình xử lý chương trình Arduino.............................................8
Hình 8. Arduino Nano.................................................................................................11
Hình 9. Sơ đồ chân Arduino Nano...............................................................................12
Hình 10. ICSP.............................................................................................................. 13
Hình 11. Màn hình LCD 16x2.....................................................................................15
Hình 12. Module LCD I2C..........................................................................................17
Hình 13. Sơ đồ đấu nối giao tiếp IC2 với LCD 16×2..................................................17
Hình 14. Module DS1307............................................................................................18
Hình 15. Sơ đồ chân DS1307.......................................................................................18
Hình 16. Sơ đồ nguyên lý DS1307 với Arduino...........................................................19
Hình 17. Module DHT11............................................................................................20
Hình 18. Sơ đồ nguyên lý DHT11 với Arduino............................................................20
Hình 19. SƠ ĐỒ NGUYÊN LÝ TOÀN MẠCH.............................................................22
Hình 20. Kết quả mô phỏng trên phần mềm proteus...................................................23
Hình 21. Minh họa kết quả thực nghiê ̣m......................................................................23
Hình 22. Minh họa phần trăm điều chế xung PWM.....................................................25
Hình 23. Minh họa cấu tạo động cơ điện một chiều....................................................25
Hình 24. Minh họa động cơ bước và sơ đồ nguyên lý bên trong động cơ....................26
Hình 25. Phương pháp điều khiển bước đủ.................................................................26
Hình 26. Minh họa mạch điều khiển LED – MOTOR – SERVO..................................27
Hình 27. Giao diê ̣n điều khiển LED – MOTOR – SERVO...........................................28
Hình 28. Kết quả mô phỏng.........................................................................................28
DANH MỤC BẢNG BIỂU
Bảng 1. Thông số cơ bản của Arduino Uno R3..............................................................3
Bảng 2. Một số ký hiê ̣u và câu lê ̣nh thường gặp............................................................9
Bảng 3. Đặc điểm kỹ thuật Arduino Nano....................................................................11
Bảng 4. Chức năng các chân Arduino Nano................................................................12
Bảng 5. Chân ICSP......................................................................................................13
Bảng 6. Chức năng của các chân LCD........................................................................15
Bảng 7. Giao tiếp I2C LCD Arduino............................................................................17
Bảng 8. Sơ đồ chân Module thời gian thực DS1307....................................................18
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI

1.1. ĐẶT VẤN ĐỀ

Thế giới XXI – Thời đại của khoa học công nghệ, thời đại của những con

chip, vi mạch, những thiết bị đột phá của tương lai. Kéo theo đó là sự phát

triển vượt bậc của khoa học kỹ thuật đã cho ra đời nhiều sản phẩm mang tính

đột phá và có sức mạnh vượt trội. Các sản phẩm này ngày càng hoàn thiện và

càng được sử dụng rộng rãi trong đời sống. Kể từ đây thời đại của tự động

hóa, các thiết bị số đang dần thống trị trong cuộc sống cách mạng khoa học kỹ

thuật.

Hì nh 1. Thế kỷ XXI – Thờ i đạ i củ a khoa họ c công nghệ

Được biết đến là một board mạch nhỏ gọn, tiện lợi nhưng đầy sức

mạnh. ARDUINO NANO là một trong những sản phẩm đột phá của công

nghệ vi mạch điện tử. Đặc biệt ứng dụng trong các hệ thống tự động hóa, là

một sản phẩm mã nguồn mở nên ARDUINO dễ dàng tương tác và thân thiện

với người sử dụng. Bất cứ ai cũng có thể học nó, vận hành nó một cách trơn

tru. Chúng ta sẽ cảm thấy thật thú vị khi một sản phẩm do chính mình tạo ra,

rất đơn giản nhưng hiệu quả thiết thực. Chỉ cần một cú click trên điện thoại là

có thể dễ dàng điều khiển các thiết bị trong nhà, hay một chú robot tự động,

một máy đo nhiệt độ cầm tay…Tất cả không gì là không thể với chúng ta. Quả

là một điều tuyệt vời! Các nhà nghiên cứu đã mang đến cho chúng ta một món

quà, một sản phẩm công nghệ giá rẻ nhưng đầy sức mạnh và thân thiện với

người sử dụng.


1
Hiện nay việc đo nhiệt độ, đọc thời gian thực và điều khiển các thiết bị

tự động là một yêu cầu cần thiết và quan trọng. Điều tối ưu để hệ thống này

hoạt động tốt là sử dụng vi điều khiển tính toán chính xác và hoạt động tin

cậy, một cảm biến nhạy với sự thay đổi của nhiệt độ, độ ẩm. Vậy hệ thống đó

là gì? Cấu tạo hoạt động như thế nào? Và làm thế nào để thiết kế hệ thống đó

chúng ta sẽ tìm hiểu trong bài tiểu luận này.

1.2. GIẢI QUYẾT VẤN ĐỀ


Để đáp ứng được nhu cầu đo nhiệt độ, độ ẩm, hiển thị thời gian thực tự

động thì có nhiều phương pháp để thực hiện, nghiên cứu khảo sát board mạch

ARDUINO NANO em nhận thấy rằng: ứng dụng ARDUINO và việc đo lường

tự động là phương pháp tối ưu. Em đã tiến hành thực hiện đề tài “MẠCH

ARDUINO ĐO VÀ HIỂN THỊ NHIỆT ĐỘ, ĐỘ ẨM, THỜI GIAN THỰC LÊN

LCD – ĐIỀU KHIỂN MOTOR, SERVO VÀ LED BẰNG PHẦN MỀM VISUAL

STUDIO”.

Với đề tài trên em đã thực hiện và tìm hiểu các vấn đề sau:

 Tìm hiểu về linh kiện

 Tìm hiểu về board mạch ARDUINO NANO.

 Tìm hiểu về cảm biến nhiệt độ, độ ẩm DHT11.

 Tìm hiểu về cảm biến thời gian thực DS1307.

 Tìm hiểu về LED đơn, động cơ điện DC, động cơ SERVO.

 Tìm hiểu về module LCD I2C.

 Tìm hiểu về sơ đồ khối hệ thống và nguyên lí hoạt động của mạch

 Tìm hiểu về lưu đồ thuật toán.

 Lập trình và mô phỏng.

 Thi công thiết kế hệ thống trên

 Thiết kế mạch nguyên lí.

 Thiết kế giao diện giao tiếp với PC.

 Hoàn thiện hệ thống


2
CHƯƠNG 2. TỔNG QUAN VỀ LINH KIỆN

2.1. GIỚI THIỆU ARDUINO

2.1.1. Arduino là gì?


 Arduino là một bo mạch vi điều khiển do một nhóm giáo sư và sinh

viên nước Ý thiết kế và đưa ra đầu tiên vào năm 2005. Mạch Arduino được sử

dụng để cảm nhận và điều khiển nhiều đối tượng khác nhau. Nó có thể thực

hiện nhiều nhiệm vụ lấy tín hiệu từ cảm biến đến điều khiển đèn, động cơ, và

nhiều đối tượng khác. Ngoài ra mạch còn có khả năng liên kết với nhiều

module khác nhau như module đọc thẻ từ, ethernet shield, sim900A,… để

tăng khả ứng dụng của mạch.

Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền

tảng vi xử lý AVR Atmel 8bit, hoặc ARM, Atmel 32-bit,… Hiện phần cứng của

Arduino có tất cả 6 phiên bản, Tuy nhiên phiên bản thường được sử dụng

nhiều nhất là Arduino Uno và Arduino Mega.

Phần mềm để lập trình cho mạch Arduino là phần mềm IDE

2.1.2. Cấu tạo của Arduino

Hì nh 2. Cấ u tạ o củ a Arduino Uno


3
2.1.3. Thông số cơ bản của Arduino Uno R3

Bả ng 1 . Thông số cơ bả n củ a Arduino Uno R3


Vi điều khiển Atmega 328 (họ 8 bit)
Điện áp hoạt động 5V – DC (cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ 30mA
Điện áp vào khuyên dùng 7 – 12V – DC
Điện áp vào giới hạn 6 – 20V – DC
Số chân Digital I/O 14 chân (6 chân PWM)
Số chân Analog 6 (độ phân giải 10 bit)
Dòng tối đa trên mỗi chân
30mA
I/O
Dòng ra tối đa (5V) 500mA
Dòng ra tối đa (3.3V) 50mA
32 KB (Atmega328) với 0.5KB dùng bởi
Bộ nhớ flash
bootloader
SRAM 2KB (Atmega328)
EEPROM 1KB (Atmega328)

2.1.4. Các loại Board Arduino phổ biến

Không giống như hầu hết các board mạch lập trình trước đó, Arduino

không yêu cầu một phần cứng riêng để lập trình mã mới lên board mà bạn chỉ

cần sử dụng cáp USB. Đồng thời, phần mềm Arduino IDE sử dụng phiên bản

cơ bản của C ++, giúp việc học chương trình trở nên đơn giản hơn. Chúng ta có

thể tổng hợp một số loại Arduino phổ biến như sau:

 Arduino Uno: Đây chính là loại board đơn giản nhất nên rất phù hợp với

những người mới bắt đầu tìm hiểu về lĩnh vực này. Dữ liệu số bao gồm 14

chân, đầu vào gồm 6 chân 5V, khả năng phân giải là 1024 mức, tốc độ

16MHz, điện áp từ 7V đến 12V. Kích thước của Board này là 5,5x7cm.

 Arduino Micro: Bao gồm có đến 20 chân, trong đó có 7 chân có thể phát

PWM. Loại này có thiết kế khá nhỏ gọn, kích thước chỉ 5x2cm.

4
 Arduino Nano: Có thể nói đây chính là loại board có kích thước nhỏ nhất

chỉ 2x4cm, việc lắp đặt được thực hiện dễ dàng.

 Arduino Pro: Đây là một thiết kế mới mẻ khi chân số không có sẵn, tùy vào

số chân bạn sử dụng để gắn trực tiếp và giúp tiết kiệm được khoảng không

lớn, ta thường thấy hai loại có nguồn 3.3V và 5V.

 Arduino Mega: Chân số lên đến 64, 14 chân có thể phát PWM, 4 cổng

truyền tiếp cùng kích thước khá lớn 5x10cm.

 Arduino Leonardo: Là board không có cổng nối USB dùng lập trình. Được

thiết kế tại một chip nhỏ điều khiển. Kết nối qua COM ảo và có thể kết nối

với chuột và bàn phím.

 Arduino LilyPad: Board mạch Lily Pad Arduino là một công nghệ dệt điện

tử có thể đeo được được mở rộng bởi Leah Sang Buechley, và được thiết kế

một cách cẩn thận bởi dòng Lea Leah và SparkFun. Mỗi board được thiết kế

một cách tưởng tượng với các miếng kết nối khổng lồ & một mặt sau mịn

màng để cho chúng được khâu vào quần áo bằng chỉ . Arduino này cũng

bao gồm I / O, nguồn và cả board cảm biến được chế tạo đặc biệt cho hàng

dệt may điện tử.

 Arduino RedBoard: Board mạch RedBoard Arduino có thể được lập trình

bằng cáp USB Mini-B bằng Arduino IDE. Nó sẽ hoạt động trên Windows 8

mà không phải sửa đổi cài đặt bảo mật của bạn. Nó không đổi do chip USB

hoặc FTDI chúng tôi sử dụng và nó hoàn toàn phẳng ở mặt sau. Tạo nó rất

đơn giản để sử dụng trong thiết kế dự án. Chỉ cần cắm board, chọn tùy

chọn menu để chọn Arduino UNO và bạn đã sẵn sàng để tải lên chương

trình. Bạn có thể điều khiển RedBoard qua cáp USB bằng giắc cắm thùng.

Ngoài ra, còn có thể kể đến: Arduino Diecimila, Arduino Duemilanove,

Arduino Due, v.v.

5
2.1.5. Ứng dụng Arduino

Arduino có nhiều ứng dụng trong đời sống, trong việc chế tạo các thiết bị

điện tử chất lượng cao. Một số ứng dụng có thể kể đến như:

 Lập trình robot: Arduino chính là một phần quan trọng trong trung tâm xử

lí giúp điều khiển được hoạt động của robot.

 Lập trình máy bay không người lái. Có thể nói đây là ứng dụng có nhiều kì

vọng trong tương lai.

 Game tương tác: chúng ta có thể dùng Arduino để tương tác với Joystick,

màn hình,… để chơi các trò như Tetrix, phá gạch, Mario… và nhiều game

rất sáng tạo nữa.

 Arduino điều khiển thiết bị ánh sáng cảm biến tốt. Là một trong những bộ

phần quan trọng trong cây đèn giao thông, các hiệu ứng đèn nháy được cài

đặt làm nổi bật các biển quảng cáo.

 Arduino cũng được ứng dụng trong máy in 3D và nhiều ứng dụng khác tùy

thuộc vào khả năng sáng tạo của người sử dụng.

2.2. PHẦN MỀM LẬP TRÌNH ARDUINO IDE

Arduino cung cấp đến môi trường lập trình tích hợp mã nguồn mở hỗ

trợ người dùng viết code và tải nó lên bo mạch Arduino. Đây là môi trường đa

nền tảng, hỗ trợ một loạt các bo mạch Arduino cùng rất nhiều tính năng độc

đáo. Ứng dụng lập trình này có giao diện được sắp xếp hợp lý, phù hợp với cả

những người dùng chuyên nghiệp lẫn không chuyên.

Arduino có môi trường lập trình được viết bằng java, hiện đang được sử

dụng cho các bo mạch Arduino và Genuido, được nhiều công ty trên thế giới

sử dụng để lập trình cho các thiết bị của họ. Java 2 Platform Standard Edition

cũng là một IDE hỗ trợ Java. Hiện Java 2 Platform Standard Edition được rất

nhiều người sử dụng.

6
Arduino là môi trường phát triển tích hợp đa nền tảng, hỗ trợ cho một

loạt các bo mạch Arduino như Arduino Uno, Nano, Mega, Esplora, Ethernet,

Fio, Pro hay Pro Mini cũng như LilyPad Arduino. Phần mềm này cũng phù

hợp cho những lập trình viên C và C ++ là thay thế hoàn hảo cho các IDE

khác. Với những ai muốn học lập trình PHP, thì PHP Designer 2007 Personal

là lựa chọn tốt. Phần mềm PHP Designer 2007 Personal cung cấp các giải pháp

hiệu quả trong thiết kế website.

Chúng ta truy cập vào trang web http://arduino.cc/en/Main/Software và

tải về chương trình Arduino IDE phù hợp với hệ điều hành của máy mình bao

gồm Windown, Mac OS hay Linux. Đối với Windown có bản cài đặt (.exe) và

bản Zip, đối với Zip thì chỉ cần giải nén và chạy chương trình không cần cài

đặt. Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng đa

nền tảng được viết bằng Java.Nó được thiết kế để dành cho các nhà phát triển

và những người mới tập tành làm quen với lĩnh vực phát triển phần mềm. Nó

bao gồm một trình biên tập mã nguồn (code editor) với các chức năng như

đánh dấu cú pháp, tự động kiểm tra phù hợp dấu ngoặc và tự động canh lề,

cũng như biên dịch (complie) và tải (upload) chương trình lên bo. Một chương

trình hoặc mã nguồn viết cho Arduino được gọi là một sketch.

Các tính năng chính của Arduino IDE:

 Viết code cho bo mạch Arduino

 Hỗ trợ nhiều loại bo mạch Arduino

 Giao diện được sắp xếp hợp lý

 Bộ sưu tập các ví dụ mẫu


 Mảng thư viện hỗ trợ phong phú
 .v.v

7
2.2.1. Giao diện phần mềm IDE

Hì nh 3. Minh họa giao diện lập trình Arduino IDE

Các chương trình Arduino được viết bằng C hoặc C++. Arduino IDE đi

kèm với một thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc,

có thể giúp các thao tác input/output được dễ dàng hơn. Người dùng chỉ cần

định nghĩa 2 hàm để tạo ra một chương trình vòng thực thi (cyclic executive)

có thể chạy được.

Arduino IDE là nơi để soạn thảo chương trình, kiểm tra lỗi và nạp

chương trình cho Arduino. Giao diện này gồm có 3 vùng rõ ràng

- Vùng Toolbar có chứa các phím lệnh như kiểm tra chương trình, nạp

chương trình, lưu, mở hay tạo mới chương trình.

Hì nh 4. Minh họa vùng Toolbar trên giao diện Arduino IDE

8
Các nút chức năng có nhiệm vụ như sau.

- Kiểm tra chương trình viết có đúng cú pháp hay không- Verify Sketch

- Biên dịch chương trình và nạp vào board Arduino- Complie and upload

sketch to arduino.

- Tạo một sketch mới- New Sketch

- Mở một sketch đã lưu trước đó- Open Sketch

- Lưu chương trình lại- Save Sketch

- Mở màn hình hiển thị Serial Monitor sử dụng cài này khi trong Sketch có

lệnh in ra màn hình hay gửi ký tự thông qua chuẩn RS232- Open Serial

Monitor.

- Current tab: Sketch đang được mở hiện tại, có thể đồng thời có nhiều tab

tương ứng với nhiều sketch hiện trên thanh tab.

- Tab menu: Vào menu để chọn các chỉ dẫn.

Ngoài ra, trong Tool menu ta quan tâm các mục mạch và cổng nối tiếp

như mục Board. Ở đây việc lựa chọn bo mạch cho phù hợp với loại bo mà

chúng ta đang sử dụng đóng vai trò hết sức quan trọng. Nếu sử dụng loại bo

mạch khác thì phải chọn đúng loại bo mạch, nếu chọn sai thì nạp chương trình

vào chip sẽ bị báo lỗi.

Hì nh 5. Minh họa chọn board Arduino và cổng COM giao tiếp phù hợp

9
Cổng giao tiếp giữa máy tính và Board được thiết lập thông qua tab Serial

Port: đây là nơi lựa chọn cổng COM của Arduino. Khi chúng ta cài đặt driver

thì máy tính sẽ hiện thông báo tên cổng COM của Arduino là bao nhiêu( xem

ở phần Device Manager), ta chỉ việc vào Serial Port chọn đúng cổng COM để

nạp chương trình, nếu chọn sai thì không thể nạp chương trình cho Arduino

được.

- Vùng viết chương trình được đánh số dòng như hình vẽ. Đây là nơi để

viết các dòng lệnh điều khiển hoạt động của VĐK.

Hì nh 6. Minh họa vùng viết chương trình.

2.2.2. Cấu trúc một chương trình trong phần mềm IDE

Hì nh 7. Tổ ng quan quá trì nh xử lý chương trì nh Arduino

10
Phần 1: Khai báo biến

Đây là phần khai báo kiểu biến, tên các biến, định nghĩa các chân trên board

một số kiểu khai báo biến thông dụng: #define

Nghĩa của từ “define” là định nghĩa, hàm #define có tác dụng định nghĩa, hay

còn gọi là gán, tức là gán một chân, một ngõ ra nào đó với 1 cái tên.

Ví dụ: #define led 13

Chú ý: sau #define thì không có dấu “,” (dấy phẩy)

Khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…

Phần 2: Thiết lập (void setup())

void setup() {

…………

Cấu trúc của nó có dấu ngoặc nhọn ở đầu và ở cuối, nếu thiếu phần này khi

kiểm tra chương trình thì chương trình sẽ báo lỗi.


Phần này dùng để thiết lập các tốc độ truyền dữ liệu, kiểu chân là chân ra hay chân vào. Trong đó:

Dùng để truyền dữ liệu từ board


Serial.begin(9600);
Arduino lên máy tính
Dùng để xác định kiểu chân là đầu vào
pinMode(biến, kiểu và hoặc ra)
hay đầu ra
Ví dụ: pinMode(ChanDO, INPUT);

Phần 3: Vòng lặp

Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các

nhiệm vụ mà chúng ta mong muốn, thường bắt đầu bằng:

void loop() {

…………

Bảng 2. Một số ký hiệu và câu lệnh thường gặp
Ký hiệu, câu lệnh Ý nghĩa

11
Dấu // dùng để giải thích, khi nội dung giải thích nằm
// trên 1 dòng, khi kiểm tra chương trình thì phần kiểm tra
sẽ bỏ qua phần này, không kiểm tra
/*
Ký hiệu này cũng dùng để giải thích, nhưng giải thích
….
dành cho 1 đoạn, tức có thể xuống dòng được
*/
Define nghĩa là định nghĩa, xác định. Câu lệnh này nhằm
#define biến chân
gán tên 1 biến vào 1 chân nào đó. Ví dụ #define led 13

Dùng để tắt, mở 1 chân ra. Cú pháp của nó là


digitalWrite(chân,trạng thái chân); Ở đây trạng thái chân
digitalWrite(chân,
có thể là HIGH hoặc LOW.
trạng thái);
Ví dụ: digital(led,HIGH); hoặc digital(led,LOW);
Chú ý dấu chấm phẩy đằng sau câu lệnh.

analogWrite(chân, Có ý nghĩa dùng để băm xung (PWM), thường dùng để


giá trị); điều khiển tốc độ động cơ, độ sáng led,..

Read nghĩa là đọc, lệnh này dùng để đọc giá trị digital tại
digitalRead(chân);
chân muốn đọc

Read nghĩa là đọc, lệnh này dùng để đọc giá trị analog
analogRead(chân);
tại chân muốn đọc

Delay nghĩa là chờ, trì hoãn, duy trì. Lệnh này dùng để
duy trì trạng thái đang thực hiện chờ một thời gian. Thời
delay(thời gian);
gian ở đây được tính bằng mili giây, 1 giây bằng 1 ngàn
mili giây.
if nghĩa là nếu, sau if là dấu (), bên trong dấu ngoặc là
một biểu thứ so sánh.
Ví dụ trong bài về cảm biến độ ẩm đất (phần 5) thì:
if() {Các câu lệnh}
if (giatriAnalog>500)
else (){Các câu
{
lệnh}
digitalWrite(Led,HIGH);
delay(1000);
} else nghĩa là ngược lại
Serial.print() In ra màn hình máy tính, lệnh này in không xuống dòng
12
In ra màn hình máy tính, in xong xuống dòng, giá trị tiếp
Serial.println()
theo sẽ được in ở dòng kế tiếp

2.3. GIỚI THIỆU VỀ ARDUINO NANO

Arduino Nano là một bảng vi điều khiển thân thiện, nhỏ gọn, đầy

đủ. Arduino Nano nặng khoảng 7g với kích thước từ 1,8cm - 4,5cm. Bài viết

này trình bày về các thông số kỹ thuật quan trọng, nhất là sơ đồ chân và chức

năng của mỗi chân trong bảng Arduino Nano.

Arduino Nano có chức năng tương tự như Arduino Duemilanove

nhưng khác nhau về dạng mạch. Nano được tích hợp vi điều khiển

ATmega328P, giống như Arduino UNO. Sự khác biệt chính giữa chúng là

bảng UNO có dạng PDIP (Plastic Dual-In-line Package) với 30 chân còn Nano

có sẵn trong TQFP (plastic quad flat pack) với 32 chân. Trong khi UNO có 6

cổng ADC thì Nano có 8 cổng ADC. Bảng Nano không có giắc nguồn DC như

các bo mạch Arduino khác, mà thay vào đó có cổng mini-USB. Cổng này được

sử dụng cho cả việc lập trình và bộ giám sát nối tiếp. Tính năng hấp dẫn của

arduino Nano là nó sẽ chọn công xuất lớn nhất với hiệu điện thế của nó.

Bảng 3. Đặc điểm kỹ thuật Arduino Nano

Arduino Nano Thông số kỹ thuật


Số chân analog I/O 8
Cấu trúc AVR
Tốc độ xung 16 MHz
Dòng tiêu thụ I/O 40mA
Số chân digital I/O 22
Bộ nhớ EEPROM 1 KB
Bộ nhớ Flash 32 KB of which 2 KB used by Bootloader

13
Điện áp ngõ vào (7 – 12) Volts
Vi điều khiển ATmega328P
Điện áp hoạt động 5V
Kích thước bo mạch 18 x 45 mm
Nguồn tiêu thụ 19mA
Ngõ ra PWM 6
SRAM 2KB
Cân nặng 7g

Hì nh 8. Arduino Nano

Hì nh 9. Sơ đồ chân Arduino Nano


Bảng 4. Chức năng các chân Arduino Nano

14
Thứ tự
Tên chân Kiểu Chức năng
chân
Ngõ vào/ra số Chân TX-truyền dữ
1 D1 / TX I/O
liệu
Ngõ vào/ra số Chân Rx-nhận dữ
2 D0 / RX I/O
liệu
3 RESET Đầu vào Chân reset, hoạt động ở mức thấp
4 GND Nguồn Chân nối mass
5 D2 I/O Ngõ vào/ra digital
6 D3 I/O Ngõ vào/ra digital
7 D4 I/O Ngõ vào/ra digital
8 D5 I/O Ngõ vào/ra digital
9 D6 I/O Ngõ vào/ra digital
10 D7 I/O Ngõ vào/ra digital
11 D8 I/O Ngõ vào/ra digital
12 D9 I/O Ngõ vào/ra digital
13 D10 I/O Ngõ vào/ra digital
14 D11 I/O Ngõ vào/ra digital
15 D12 I/O Ngõ vào/ra digital
16 D13 I/O Ngõ vào/ra digital
17 3V3 Đầu ra Đầu ra 3.3V (từ FTDI)
18 AREF Đầu vào Tham chiếu ADC
19 A0 Đầu vào Kênh đầu vào tương tự kênh 0
20 A1 Đầu vào Kênh đầu vào tương tự kênh 1
21 A2 Đầu vào Kênh đầu vào tương tự kênh 2
22 A3 Đầu vào Kênh đầu vào tương tự kênh 3
23 A4 Đầu vào Kênh đầu vào tương tự kênh 4
24 A5 Đầu vào Kênh đầu vào tương tự kênh 5
25 A6 Đầu vào Kênh đầu vào tương tự kênh 6
26 A7 Đầu vào Kênh đầu vào tương tự kênh 7
Đầu ra + 5V (từ bộ điều chỉnh On
Đầu ra hoặc đầu
27 +5V board) hoặc  + 5V (đầu vào từ
vào
nguồn điện bên ngoài)
28 RESET Đầu vào Chân đặt lại, hoạt động ở mức thấp
29 GND Nguồn Chân nối mass
30 VIN Nguồn Chân nối với nguồn vào

15
Hì nh 10. ICSP

Bảng 5. Chân ICSP


Tên pin Arduino Nano
Kiểu Chức năng
ICSP
MISO Đầu vào hoặc đầu ra Master In Slave Out
VCC Đầu ra Cấp nguồn
SCK Đầu ra Tạo xung cho
MOSI Đầu ra hoặc đầu vào Master In Slave In
Đặt lại, Hoạt động ở mức
RST Đầu vào
thấp
GND Nguồn Chân nối đất

 Các chân: 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 và 16. Như đã đề cập trước

đó, Arduino Nano có 14 ngõ vào/ra digital. Các chân làm việc với điện áp

tối đa là 5V. Mỗi chân có thể cung cấp hoặc nhận dòng điện 40mA và có

điện trở kéo lên khoảng 20-50kΩ. Các chân có thể được sử dụng làm đầu

16
vào hoặc đầu ra, sử dụng các hàm pinMode (), digitalWrite () và digitalRead

(). Ngoài các chức năng đầu vào và đầu ra số, các chân này cũng có một số

chức năng bổ sung.

 Chân 1, 2: Chân nối đất. Hai chân nhận RX và truyền TX này được sử dụng

để truyền dữ liệu nối tiếp TTL. Các chân RX và TX được kết nối với các

chân tương ứng của chip nối tiếp USB tới TTL.

 Chân 6, 8, 9, 12, 13 và 14: Chân xung PWM. Mỗi chân số này cung cấp tín

hiệu điều chế độ rộng xung 8 bit. Tín hiệu PWM có thể được tạo ra bằng

cách sử dụng hàm analogWrite ().

 Chân 5, 6: Ngắt. Khi chúng ta cần cung cấp một ngắt ngoài cho bộ xử lý

hoặc bộ điều khiển khác, chúng ta có thể sử dụng các chân này. Các chân

này có thể được sử dụng để cho phép ngắt INT0 và INT1 tương ứng bằng

cách sử dụng hàm attachInterrupt (). Các chân có thể được sử dụng để kích

hoạt ba loại ngắt như ngắt trên giá trị thấp, tăng hoặc giảm mức ngắt và

thay đổi giá trị ngắt.

 Chân 13, 14, 15 và 16: Giao tiếp SPI. Khi bạn không muốn dữ liệu được

truyền đi không đồng bộ, bạn có thể sử dụng các chân ngoại vi nối tiếp này.

Các chân này hỗ trợ giao tiếp đồng bộ với SCK. Mặc dù phần cứng có tính

năng này nhưng phần mềm Arduino lại không có. Vì vậy, bạn phải sử dụng

thư viện SPI để sử dụng tính năng này.

 Chân 16: Led. Khi bạn sử dụng chân 16, đèn led trên bo mạch sẽ sáng.

 Chân 18, 19, 20, 21, 22, 23, 24, 25 và 26 : Ngõ vào/ra tương tự. Như đã đề cập

trước đó UNO có 6 chân đầu vào tương tự nhưng Arduino Nano có 8 đầu

vào tương tự (19 đến 26), được đánh dấu A0 đến A7. Điều này có nghĩa là

bạn có thể kết nối 8 kênh đầu vào tương tự để xử lý. Mỗi chân tương tự này

có một ADC có độ phân giải 1024 bit (do đó nó sẽ cho giá trị 1024). Theo

mặc định, các chân được đo từ mặt đất đến 5V. Nếu bạn muốn điện áp

17
tham chiếu là 0V đến 3.3V, có thể nối với nguồn 3.3V cho chân AREF (pin

thứ 18) bằng cách sử dụng chức năng analogReference (). Tương tự như các

chân digital trong Nano, các chân analog cũng có một số chức năng khác.

 Chân 23, 24 như A4 và A5: chuẩn giao tiếp I2C. Khi giao tiếp SPI cũng có

những nhược điểm của nó như cần 4 chân và giới hạn trong một thiết bị.

Đối với truyền thông đường dài, cần sử dụng giao thức I2C. I2C hỗ trợ chỉ

với hai dây. Một cho xung (SCL) và một cho dữ liệu (SDA). Để sử dụng tính

năng I2C này, chúng ta cần phải nhập một thư viện có tên là Thư viện Wire.

 Chân 18: AREF. Điện áp tham chiếu cho đầu vào dùng cho việc chuyển đổi

ADC.

 Chân 28: RESET. Đây là chân reset mạch khi chúng ta nhấn nút rên bo.

Thường được sử dụng để được kết nối với thiết bị chuyển mạch để sử dụng

làm nút reset.

ICSP là viết tắt của In Circuit Serial Programming , đại diện cho một

trong những phương pháp có sẵn để lập trình bảng Arduino. Thông thường,

một chương trình bộ nạp khởi động Arduino được sử dụng để lập trình một

bảng Arduino, nhưng nếu bộ nạp khởi động bị thiếu hoặc bị hỏng, ICSP có thể

được sử dụng thay thế. ICSP có thể được sử dụng để khôi phục bộ nạp khởi

động bị thiếu hoặc bị hỏng.

Mỗi chân ICSP thường được kết nối với một chân Arduino khác có cùng

tên hoặc chức năng. Ví dụ: MISO của Nano nối với MISO / D12 (Pin 15). Lưu ý,

các chân MISO, MOSI và SCK được ghép lại với nhau tạo nên hầu hết giao diện

SPI.

2.4. GIỚI THIỆU VỀ LCD I2C

2.4.1. Giới thiệu LCD 16x2

18
Hì nh 11. Mà n hì nh LCD 16x2

2.4.2. Thông số kỹ thuật LCD 16x2


LCD 16x2 được sử dụng để hiển thị trạng thái hoặc các thông số.

 LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển

(RS, RW, EN).

 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.

 Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế

độ dữ liệu.

 Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.

LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang

làm.

Bả ng 6 . Chức năng của các chân LCD


Chân Ký hiệu Mô tả
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
1 Vss
GND của mạch điều khiển.
Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
2 VDD
VCC=5V của mạch điều khiển.
3 VEE Điều chỉnh độ tương phản của LCD.

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.
4 RS  Logic “0”: bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của
19
LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ
của LCD (ở chế độ “đọc” - read).
 Logic “1”: bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR
bên trong LCD.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
5 R/W “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để
LCD ở chế độ đọc.
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.
 Ở chế độ ghi: dữ liệu ở bus sẽ được LCD chuyển vào(chấp
nhận) thanh ghi bên trong nó khi phát hiện một xung
6 E
(high-to-low transition) của tín hiệu chân E.
 Ở chế độ đọc: dữ liệu sẽ được LCD xuất ra DB0-DB7 khi
phát hiện cạnh lên (low-to-high transition) ở chân E và
được LCD giữ ở bus đến khi nào chân E xuống 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
DB0 đến
7 - 14 MSB là bit DB7.
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.
16 - GND cho đèn nền.

Hoạt động của LCD được điều khiển thông qua 3 tín hiệu E, RS, R/W.

- Tín hiệu E là tín hiệu cho phép gửi dữ liệu. Để gửi dữ liệu đến LCD, chương

trình phải thiết lập E=1, sau đó đặt các trạng thái điều khiển thích hợp lên RS,

R/W và bus dữ liệu, cuối cùng là đưa E về 0. Hoạt động chuyển đổi từ cao-

xuống-thấp cho phép LCD nhận dữ liệu hiện thời trên các đường điều khiển

cũng như trên bus dữ liệu.

- Tín hiệu RS là tín hiệu cho phép chọn thanh ghi (Register Select). Khi RS=0,

dữ liệu được coi như là một lệnh hay một chỉ thị đặc biệt (như là xóa màn

20
hình, đặt vị trí con trỏ…). Khi RS=1, dữ liệu được coi là dữ liệu dạng văn bản

và sẽ được hiển thị trên màn hình.

- Tín hiệu R/W là tín hiệu “Đọc/Ghi”. Khi R/W=1, thông tin trên bus dữ liệu

được ghi vào LCD. Khi R/W=0, chương trình sẽ đọc LCD.

- Bus dữ liệu gồm 4 hoặc 8 đường tùy thuộc vào chế độ hoạt động mà người

sử dụng lựa chọn.

2.4.3. Module LCD I2C

LCD có quá nhiều nhiều chân gây khó khăn

trong quá trình đấu nối và chiếm dụng nhiều

chân trên vi điều khiển. 

Module I2C LCD ra đời và giải quyết vấn để

này cho bạn.

Thay vì phải mất 6 chân vi điều khiển để kết Hì nh 12. Module LCD I2C

nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2

chân (SCL, SDA) để kết nối.

Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD

20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay.

Ưu điểm:

- Tiết kiệm chân cho vi điều khiển

- Dễ dàng kết nối với LCD.

Thông số kĩ thuật:

- Điện áp hoạt động: 2.5 – 6V DC.

- Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).

- Giao tiếp: I2C.

- Địa chỉ mặc định: 0x27 (có thể điều chỉnh bằng ngắn mạch chân

A0/A1/A2).

- Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.

21
- Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.

SƠ ĐỒ ĐẤU NỐI


-

Hì nh 13. Sơ đồ đấu nối giao tiếp IC2 với LCD 16×2.
Bảng 7. Giao tiếp I2C LCD Arduino

Module I2C LCD 16×2  Arduino Nano/Uno

GND GND
VCC 5V
SDA A4/SDA
SCL A5/SCL

2.5. GIỚI THIỆU IC THỜI GIAN THỰC DS1307

IC thời gian thực (RTC) DS1307 có

chức năng cung cấp thông tin thời

gian hiện tại (thời gian thực): giờ,

phút, giây, thứ, ngày tháng, năm một

cách chính xác ngay cả khi thiết bị đã Hì nh 14. Module DS1307
bị tắt (ngắt điện ngoài). Giao tiếp với vi điều khiển thông qua chuẩn I2C, và

đóng vai trò là slave khi kết nối đến bus I2C này. Có thể đếm thời gian theo

định dạng 24 giờ hoặc 12 giờ với chỉ thị AM/PM. Ngoài ra bên trong chíp có

bộ dò phát hiện mất nguồn và tự động chuyển sang sử dụng nguồn pin dự

phòng. Một số tính năng nổi bật của IC RTC DS1307 được đề cập dưới đây.
22
 Lưu trữ và cung cấp các thông tin thời gian thực: ngày, tháng, năm, giờ,

phút, giây,…

 Khả năng thiết lập ngày đến năm 2100.

 Tiêu thụ điện năng thấp: dòng tiêu thụ dưới 500nA khi hoạt động bằng

pin.

 Tự động chuyển sang nguồn pin trong trường hợp mất điện.

 Đồng hồ 24 giờ hoặc 12 giờ với chỉ báo AM/PM.

 Sử dụng chuẩn giao tiếp I2C.

Link datasheet DS1307: https://bom.to/54otVe

SƠ ĐỒ CHÂN DS1307

Hì nh 15. Sơ đồ chân DS1307

Bảng 8. Sơ đồ chân Module thời gian thực DS1307


Chân Tên Chức năng
1 X1 Đây là các chân kết nối với thạch anh tần số 32.768
2 X2 KHz để kích hoạt bộ dao động nội.
Chân này được kết với cực dương pin Lithium 3V để
3 VBAT
cấp nguồn nuôi dự phòng
4 GND Chân nối đất
Chân dữ liệu nối tiếp (Serial Data). Đây là chân dữ
5 SDA liệu vào/ra của giao thức I2C. Chân này cần đưa lên
nguồn 5V thông qua điện trở 10kΩ
Chân đầu vào xung đồng hồ nối tiếp (Serial Clock).
Đây là chân ngõ vào xung nhịp của giao thức I2C.
6 SCL
Chân này cũng phải được kéo đến 5V thông qua một
điện trở 10kΩ.

23
Ngõ xuất ra xung vuông, tần số có thể lập trình để
7 SQW/OUT thay đổi từ 1Hz, 4Khz, 8Khz, 32Khz. Nếu không được
sử dụng, chân này có thể được thả nổi.

Chân cấp nguồn chính, khoảng 5VDC. Nếu VCC không


8 VCC có mà VBAT có thì DS1307 vẫn hoạt động bình thường
nhưng không ghi và đọc được dữ liệu.

2.6. GIAO TIẾP ARDUINO VỚI IC THỜI GIAN THỰC DS1307

Hì nh 16. Sơ đồ nguyên lý DS1307 vớ i Arduino

2.7. GIAO TIẾP ARDUINO VỚI CẢM BIẾN NHIỆT ĐỘ, ĐỘ ẨM DHT11

Cảm biến nhiệt độ và độ ẩm DHT11 ra đời sau và được sử dụng thay

thế cho dòng SHT1x ở những nơi không cần độ chính xác cao về nhiệt độ và

độ ẩm. Cảm biến sử dụng giao tiếp số theo chuẩn 1 dây.

24
Hì nh 17. Module DHT11

ỨNG DỤNG:

- Dùng để đo nhiệt độ , độ ẩm

- Các ứng dụng đo nhiệt độ , độ ẩm khác.

THÔNG SỐ KỸ THUẬT

- Nguồn: 3 -> 5 VDC.

- Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).

- Đo tốt ở độ ẩm 20-80%RH với sai số 5%.

- Đo tốt ở nhiệt độ 0 to 50°C sai số ±2°C.

- Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần)

- Kích thước 15mm x 12mm x 5.5mm.

- 4 chân, khoảng cách chân 0.1mm.

SƠ ĐỒ KẾT NỐI

Hì nh 18. Sơ đồ nguyên lý DHT11 vớ i Arduino

25
CHƯƠNG 3. THI CÔNG VÀ THIẾT KẾ MẠCH

3.1. QUÁ TRÌNH ĐO NHIỆT ĐỘ, ĐỘ ẨM, ĐỌC GIÁ TRỊ THỜI GIAN

Quy trình đo:

3.2. SƠ ĐỒ KHỐI CỦA MẠCH

Nguyển lý hoạt động chung của mạch: Khối nguồn có nhiện vụ cấp nguồn 5V

chung cho toàn bộ mạch hoạt đông. Cảm biến đo nhiệt độ, độ ẩm ở đây là

DHT11 với tín hiệu vào là nhiệt độ, độ ẩm, tín hiệu ra là tín hiệu tương tự

chuyển cho khối vi điều khiển Arduino Nano .Khối vi diều khiển gồm

Arduino Nano có nhiệm vụ chuyển tín hiệu tương tự nhận được sang tín hiệu

số, đọc giá trị thời gian thực của Module DS1307 và hiển thị ra LCD.

26
3.3. LƯU ĐỒ THUẬT TOÁN

3.4. SƠ ĐỒ NGUYÊN LÝ (MÔ PHỎNG TRÊN PROTEUS)

Hì nh 19. SƠ ĐỒ NGUYÊN LÝ TOÀ N MẠ CH

27
3.5. KẾT QUẢ MÔ PHỎNG TRÊN PROTEUS

Hì nh 20. Kế t quả mô phỏ ng trên phầ n mề m proteus

3.6. KẾT QUẢ TRÊN MẠCH THỰC TẾ

Hì nh 21. Minh họ a kế t quả thự c nghiệ m

28
CHƯƠNG 4. ĐIỀU KHIỂN MOTOR, SERVO VÀ LED BẰNG PHẦN MỀM

VISUAL STUDIO

4.1. YÊU CẦU KIẾN THỨC CẦN NẮM KHI LẬP TRÌNH

- Kiến thức về cấu trúc máy tính PC.

- Kiến thức về cấu trúc vi điều khiển (VĐK) Arduino.

- Kiến thức về cấu trúc LED, động cơ điện DC và động cơ SERVO.

- Lập trình giao diện trên PC bằng phần mềm Visual studio.

- Mô phỏng hoạt động giao tiếp giữa VĐK và PC bằng phần mềm

Proteus ISIS Professional.

4.2. THIẾT BỊ VÀ PHẦN MỀM CẦN THIẾT

- Máy tính hoặc laptop.

- Phần mềm Proteus ISIS Professional.

- Trình biên dịch Arduino IDE.

- Trình thiết kế giao tiếp Visual C#.

- Phân mềm Configure Virtual Serial Port Driver tạo cổng COM ảo giao

tiếp với Proteus.

4.3. TỔNG QUAN LÝ THUYẾT

4.3.1. Led đơn

LED đơn là linh kiện phát quang dựa trên hiện tượng tái hợp lỗ

trống/eletron ở chân bán dẫn. Ngõ ra của LED gồm hai chân Anode và

Cathode có màu sắc hoàn toàn khác nhau tùy vào phương pháp chế tạo Bằng

cách ghép tổ hợp các LED nối tiếp hay song song chúng ta sẽ tạo ra mạch điện

phát ra màu sắc như ý. LED này sẽ phát sáng khi điện áp đầu Anode cao hơn

Cathode với một giá trị hoàn toàn xác định tùy theo từng loại.

29
4.3.2. Kỹ thuật điều chế độ rộng xung

Kỹ thuật điều chế độ rộng xung(PWM - Pulse Width Modulation) là kỹ

thuật cho phép điều chỉnh điện áp ra tải hay nói cách khác là phương pháp

điều chế dựa trên sự thay đổi độ rộng của chuỗi xung vuông dẫn đến sự thay

đổi điện áp trung bình. Các xung PWM khi biến đổi thì có cùng 1 tần số và

khác nhau về độ rộng của sườn dương hay hoặc là sườn âm. Đồ thị dạng song

ứng với các tỷ lệ phần trăm điều chế. Cụ thể PWM là phương pháp được thực

hiện theo nguyên tắc đóng ngắt nguồn của tải và một cách có chu kì theo luật

điều chỉnh thời gian đóng cắt.

Hì nh 22. Minh họ a phầ n trăm điề u chế xung PWM

Với các đặc điểm như trên, PWM được ứng dụng nhiều trong điều

khiển hoạt động của các thiết bị. Ứng dụng điển hình nhất là điều khiển tốc độ

động cơ và các bộ xung áp, điều áp... Ở đây bằng cách điều khiển xung PWM

thích hợp chúng ta hoàn toàn có thể thực hiện phối màu LED RGB một cách

túy ý.

4.3.3. Giới thiệu về động cơ DC

Động cơ điện một chiều DC gồm hai phần chính:

- Stato (phần đứng yên) với các cực từ bằng nam châm vĩnh cửu hoặc

nam châm điện.

- Roto (phần chuyển động) với các cuộn dây quấn, cổ góp cùng chổi

điện.

30
Chức năng của chổi than – vành góp là để đưa điện áp một chiều vào

cuộn dây phần ứng và đổi chiều dòng điện một chiều trong cuộn dây phần

ứng. Số lượng chổi than bằng số lượng cực từ (một nửa có cực tính dương và

một nửa có cực tính âm).

Hì nh 23. Minh họa cấu tạo động cơ điện một chiều

4.3.4. Giới thiệu về động cơ bước SERVO

Động cơ bước được phân loại gồm động cơ nam châm vĩnh cửu, động

cơ từ trở biến thiên và động cơ hỗn hợp. Động cơ bước có nhiều loại góc quay

phân biệt từ 90 độ đến 0.72 độ hoặc nhỏ hơn.

Động cơ nam châm vĩnh cửu có cấu trúc gồm các cuộn dây quấn trên

roto, stato là các nam châm vĩnh cửu. Loại này có cấu trúc gần giống với động

cơ AC đồng bộ.

Hì nh 24. Minh họa động cơ bước và sơ đồ nguyên lý bên trong động cơ

Động cơ có từ trở biến thiên có cấu trúc là roto làm bằng sắt nhẹ, số cực

của roto ít hơn số cực của stato, mỗi cuộn dây được quấn trên hai cực của stato

đối diện nhau. Loại này còn được gọi là động cơ phản kháng, động cơ phản

kháng có góc quay giới hạn từ 1.80 đến 300 trong chế độ điều khiển bước đủ,

31
moment hãm từ 1 đến 50Ncm, tần số khởi động lớn nhất là 1 Khz và tần số

làm việc lớn nhất trong điều kiện không tải là 20Khz.

Động cơ bước hỗn hợp: Đây là loại động cơ cảm ứng, có góc bước thay

đổi trong khoảng 0.36 độ đến 15 độ trong chế độ moment đủ, moment hãm từ

3 đến 1000Ncm, tần số khởi động lớn nhất là 40Khz. Đây là loại động cơ được

sử dụng nhiều hơn cả vì nó kết hợp được ưu điểm của cả hai loại động cơ nam

châm vĩnh cửu và động cơ biến từ trở.

Phương pháp điều khiển động cơ bước gồm điều khiển ba đối tượng: Góc

quay, chiều quay và tốc độ quay.

Điều khiển góc quay: Động cơ bước có thể điều khiển được góc quay

một cách rất chính xác, góc quay nhỏ nhất mà động cơ bước quay được hiểu

như là một bước. Có hai phương pháp điều khiển phổ biến: phương pháp

điều khiển đủ bước và phương pháp điều khiển nửa bước. Điều khiển bước

đủ là phương pháp điều khiển mà số bước tối đa trong một chu kỳ bằng số

cặp cực. Phương pháp này được thực hiện bằng cách kích dẫn cùng lúc hai cực

đối xứng tạo moment quay cùng chiều.

Hì nh 25. Phương pháp điều khiển bước đủ.

Phương pháp nửa bước là phương pháp điều khiển mà số bước tối đa

trong một chu kỳ nhỏ hơn số cặp cực. Cách thức đơn giản nhất của phương

pháp này là kích dẫn lần lượt các cực từ của stator. Khi đó số bước quay bằng
32
với số cực stator. Ngoài ra, ta cũng có thể kích dẫn hai cực liên tiếp để tạo

thành bước nhỏ hơn.

Như vậy nếu sử dụng mạch điều khiển tự động, ta cần xuất một chuỗi

xung đưa đến các cuộn dây của động cơ, với tần số hợp lý thì động cơ sẽ quay

với tốc độ hợp lý và theo yêu cầu thiết kế. Qua đó ta xác định được tốc độ thực

thế của động cơ. Thông qua việc điều khiển các dãy xung đưa đến các cuộn

dây của động cơ thì ta hoàn toàn có thể điều khiển cho động cơ quay được các

góc như ý muốn và dựng lại ở vị trí mong muốn.

Điều khiển chiều quay: Việc cấp chuỗi xung vào các cực động cơ bước

giúp động cơ quay một góc xác định. Để đổi chiều quay của động cơ ta chỉ

việc đảo thứ tự các bit của xung cấp vào các cực từ của động cơ bước.

Điều khiển tốc độ quay: Điều khiển tốc độ quay của động cơ bước bằng

cách tăng hoặc giảm thời gian cách nhau giữa các lần cấp xung, hay nói cách

khác là thay đổi tần số cấp xung điện cho các cực từ của động cơ bước.

4.4. THIẾT KẾ VÀ LẬP TRÌNH GIAO DIỆN ĐIỀU KHIỂN LED – MOTOR

4.4.1. Sơ đồ nguyên lý mạch điều khiển LED – MOTOR – SERVO

Hì nh 26. Minh họ a mạ ch điề u khiể n LED – MOTOR – SERVO

33
4.4.2. Giao diện điều khiển LED – MOTOR – SERVO bằng C#

Hì nh 27. Giao diệ n điề u khiể n LED – MOTOR – SERVO

4.5. KẾT QUẢ

Hì nh 28. Kế t quả mô phỏ ng


34
CHƯƠNG 5. KẾT LUẬN

Ưu điểm:

- Phần cứng được thiết kế nhỏ gọn và được lắp ráp theo kiểu module nên dễ

dàng thay thế cũng như kiểm tra các linh kiển trong mạch

- Phần mềm chạy khá ổn định,sai lệch nhiệt độ trong khoảng cho phép.

- Có thế ứng dụng trong thực tế.

Nhược điểm:

- Phần cứng thiết kế chưa đươc đẹp.

- Sai số mạch còn lớn.

Như trên em đã trình bày về đề tài tiểu luận môn học : “MẠCH ARDUINO

ĐO VÀ HIỂN THỊ NHIỆT ĐỘ, ĐỘ ẨM, THỜI GIAN THỰC LÊN LCD –

ĐIỀU KHIỂN MOTOR, SERVO VÀ LED BẰNG PHẦN MỀM VISUAL

STUDIO”.

Sau thời gian nghiên cứu tìm hiểu và thực hiện cho đến nay đề tài của em đã

hoàn thành. Em đã nỗ lực cố gắng để hoàn thành đề tài được giao. Trong quá

trình thực hiện em đã nhận được sự giúp đỡ nhiệt tình của bạn bè trong lớp và

đặc biệt là sự hướng dẫn nhiệt tình của thầy" Nguyễn Đức Nhật Quang" giúp

em đã thực hiện được đề tài tiểu luận được giao. Em xin chân thành cảm ơn.

Tuy vậy, do kiến thức còn hạn chế, em không tránh khỏi gặp sai sót, em mong

được sự đóng góp và chỉ bảo của thầy cô và các bạn giúp cho đề tài của em

thêm hoàn thiện hơn.

Em xin chân thành cảm ơn!

Sinh viên thực hiện

Hồ Văn Nhật

35
PHỤ LỤC

1. THƯ VIỆN LCD I2C

Link tải thư viện: https://bom.to/L1LWf7

2. THƯ VIỆN ĐỒNG HỒ THỜI GIAN THỰC

Link tải thư viện: https://bom.to/I4gU1w

3. THƯ VIỆN CẢM BIẾN NHIỆT ĐỘ, ĐỘ ẨM

Link tải thư viện: https://bom.to/LVe8Nz

4. CODE ARDUINO ĐỌC NHIỆT ĐỘ, ĐỘ ẨM, THỜI GIAN THỰC

Link tải: https://bom.to/svZpOx

5. CODE ARDUINO ĐIỀU KHIỂN LED – MOTOR – SERVO

Link tải: https://bom.so/rfAZ2V

6. VIDEO ĐIỀU KHIỂN LED – MOTOR – SERVO BẰNG PHẦN MỀM

C#

Link tải: https://bom.so/9hNXrg

7. LINK TẢI GIAO DIỆN: https://bom.so/dWNC8y


TÀI LIỆU THAM KHẢO

Tiếng việt:

. Ngô Diên Tập, “Đo lường và điều khiển bằng máy tính”, NXB Khoa học và kỹ

thuật, năm 1999.

. Trần Quang Vinh, “Cấu trúc máy vi tính”, NXB Giáo dục, năm 1996.

. Trần Quang Vinh, “Nguyên lý phần cứng và kỹ thuật ghép nối máy tính”,

NXB Giáo dục, năm 2003.

. Hướng dẫn sử dụng Arduino cơ bản.

https://bom.to/4KnvFj

Truy cập ngày 18/11/2021

Tiếng Anh

. Beginning Arduino - Mike McRoberts

. Arduino cookbook – Michael Margolis


TRƯỜNG ĐẠI HỌC KHOA HỌC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN, ĐIỆN TỬ & CNVL Đô ̣c lâ ̣p – Tự do – Hạnh phúc

PHIẾU ĐÁNH GIÁ TIỂU LUẬN


Học kỳ 1 Năm học 2021 – 2022

Cán bộ chấm thi 1 Cán bộ chấm thi 2


Nhận xét: Nhận xét:
................................................................ .............................................................
.
.............................................................
.................................................................
.............................................................
.
.............................................................
.................................................................
. .............................................................
................................................................. .............................................................
. .............................................................
................................................................. .............................................................
.
.............................................................
.................................................................
.............................................................
.
.............................................................
.................................................................
. .............................................................
................................................................. Điểm đánh giá của CBChT2:
. Bằng số: .................................................
................................................................. Bằng chữ: ...............................................
.
.................................................................
.
.................................................................
.
.................................................................
.
Điểm đánh giá của CBChT1:
Bằng số: .......................................................
Bằng chữ: ....................................................

Điểm kết luận: Bằng số................................ Bằng chữ:..............................................


Thừa Thiên Huế, ngày …… tháng …… năm 20…

CBChT1 CBChT2
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)

You might also like