Ứng dụng của cảm biếnnhiệt độ -độ ẩm vô cùng đa dạng, có thể dùng trong xác định độ ẩm của đất, nhiệt độ trong các nhà máy, phòng thí nghiệm hay là đơn thuần để xác định nhiệt đô -độ ẩm
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM
TP.HCM KHOA CNKT ĐIỆN – ĐIỆN TỬ
Trang 2LỜI NÓI ĐẦU
Ngày nay cùng với sự phát triển nhanh chóng của khoa học kỹ thuật thì cáclĩnh vực ứng dụng kỹ thuật công nghệ cao ngày càng phát triển và kỹ thuật điện
tử đã và đang khẳng định vai trò to lớn của mình,góp phần nâng cao cải thiện đờisống vật chất và tinh thần cho con người Lĩnh vực ứng dụng điện tử số đangngày càng lớn mạnh và được ưa chuộng vì tính đa dạng, chính xác và những ưuđiểm vượt trội so với kỹ thuật tương tự Những môn học về điện tử cũng đã đượcứng dụng rất nhiều
Độ ẩm là một trong những đặc trưng quan trọng nhất của khí hậu và có ýnghĩa quan trọng đối với một số quá trình công nghệ Ứng dụng của cảm biếnnhiệt độ -độ ẩm vô cùng đa dạng, có thể dùng trong xác định độ ẩm của đất, nhiệt
độ trong các nhà máy, phòng thí nghiệm hay là đơn thuần để xác định nhiệt đô
-độ ẩm của không khí Vận dụng kiến thức đã học và để làm sáng tỏ hiệu quả củanhững ứng dụng mà cảm biến độ ẩm mang lại em quyết định chọn đề tài
“NGHIÊN CỨU THIẾT KẾ MẠCH ĐO NHIỆT ĐỘ - ĐỘ ẨM TRÊN LCDDÙNG CARD ARDUINO”
Đề tài gồm các nội dung sau:
Chương 1: Phần mở đầu
Chương 2: Giới thiệu về một số linh kiện trên mô hình nghiên cứu thiết kế
Chương 3: Thiết kế mạch và chương trình điều khiển
Chương 4: Kết luận
Dưới sự hướng dẫn ,chỉ bảo nhiệt tình của thầy Lê Minh Thanh cùng với sự
cố gắng nỗ lực của bản thân, em đã hoàn thành bài báo cáo đúng thời hạn chophép Tuy nhiên do thời gian hạn chế, cũng như lượng kiến thức rất lớn nênkhông thể tránh khỏi nhiều thiếu xót Vì vậy em rất mong nhận được nhiều ý kiếnđánh giá, góp y của quý thầy cô giáo viên để có thể phát triển và hoàn hiện đề tàinày
Tp.HCM, Ngày tháng năm
Sinh viên thực hiện
Trang 3
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ………
… …
………
………
…… ………
………
………
………
………
………
………
………
………
………
………
………
………
….……… …
………
Tp.HCM, Ngày
tháng năm
Trang 4Giáo viên hướng dẫn
(ký và ghi rõ họ tên) Mục lục LỜI NÓI ĐẦU 1
CHƯƠNG 1: PHẦN MỞ ĐẦU 5
1.1 Mục đích thực hiện đề tài 5
1.2 Đặt vấn đề 5
1.3 Giải quyết vấn đề 5
1.4 Giới hạn vấn đề 5
CHƯƠNG 2: GIỚI THIỆU VỀ MỘT SỐ LINH KIỆN TRÊN MÔ HÌNH NGHIÊN CỨU THIẾT KẾ 6
2.1 Arduino 6
2.1.1 Giới thiệu chung về Arduino 6
2.1.2 Khái quát cấu tạo của Arduino Mega 2560 7
2.1.3 Ngôn ngữ lập trình cho Arduino 10
2.1.4 Một số ứng dụng của Arduino Mega 2560 12
2.2 Cảm biến nhiệt độ - độ ẩm DHT11 12
2.2.1 Giới thiệu 12
2.2.2 Nguyên lí hoạt động 13
2.3 LCD16*2 16
2.3.1 Giới thiệu 16
2.3.2 Hình dáng và kích thước 16
2.3.3 Thông số kỹ thuật – chi tiết 18
CHƯƠNG 3:THIẾT KẾ MẠCH VÀ CHƯƠNG TRÌNH ĐIỀU KHIỂN 19
3.1 Sơ đồ khối 19
3.2 Chức năng các khối 19
3.3 Sơ đồ kết nói phần cứng 19
3.4 Mã chương trình 20
3.4.1 Giới thiệu thư viện sử dụng trong chương trình 20
3.4.2 Code lập trình 20
Trang 53.4.3 Nạp code và chạy chương trình 21
CHƯƠNG 4: KẾT LUẬN 23
4.1 Sản phẩm thực tế 23
4.2 Kết luận 23
4.2.1 Kết quả đạt được 23
4.2.2 Những khó khăn gặp phải khi làm đề tài 24
Danh mục hình Hình 2.1 Arduino Mega 2560 7
Hình 2.2 Chip ATmega 2560 7
Hình 2.3 Arduino Mega 2560 (chi tiết) 8
Hình 2.4: Giao diện Arduino IDE 10
Hình 2.5 IDE Menu Arduino Mega 2560 11
Hình 2.6 Cổng kết nối máy tính 12
Hình 2.7 Cảm biến nhiệt độ - độ ẩm DHT 11 13
Hình 2.8 Hình dáng của loại LCD thông dụng 16
Hình 2 9 Sơ đồ chân của LCD16*2 16
Hình 3.1 Hình ảnh kết quả thực tế đo nhiệt độ 21
Hình 3.2 Serial Monitor của phần mềm Arduino IDE 22
Hình 4.1 Mạch sau khi lắp ráp 23
Trang 6CHƯƠNG 1: PHẦN MỞ ĐẦU 1.1 Mục đích thực hiện đề tài
Mục đích trước hết thực hiện đề tài này là hoàn thành đồ án học phần 1 củahọc kì 1 2017-2018 Cụ thể khi chọn đề tài này là em muốn ứng dụng kiến thức
đã học để tạo ra một sản phẩm giúp người học có hứng thú đam mê trong học tậpcũng như khả năng ứng dụng và thực tế cao Mặt khác tài liệu này cũng có thểlàm tài liệu tham khảo cho các sinh viên khóa sau, giúp họ hiểu rõ hơn nhữngứng dụng của lập trình Arduino
1.2 Đặt vấn đề
Sự biến đổi nhiệt độ trong môi trường sẽ ảnh hưởng đến quá trình làm việccủa thiết bị Nhưng khi chúng ta nắm bắt được nhiệt độ làm việc của hệ thốnggiúp ta biết được tình trạng làm việc và có những xử lý kịp thời hư hỏng Việcdùng phương pháp thủ công xác định được nhiệt độ sẽ trở nên ít chính xác và tốnthời gian hơn Thay vào đó sẽ dùng cảm biến nhiệt độ - độ ẩm để có được độchính cao và ít thời gian hơn Chúng ta còn có thể áp dụng cảm biến nhiệt độ - độ
ẩm khống chế giới hạn nhiệt độ nào đó tùy vào ứng dụng thực tiễn
1.3 Giải quyết vấn đề
Mạch đo nhiêt độ - độ ẩm sử dụng DHT11 hiển thị LCD trên Arduino sẽ trởnên gần gũi với người sử dụng hơn, giao diện dễ gần thân thiện, độ chính xáctương đối cao, chúng cũng được chế tạo bởi các linh kiện điện tử , lập trình tựđộng có hoạt động tự động theo ý muốn người lập trình Do đó em chọn đề tàinày để thực hiện
1.4 Giới hạn vấn đề
Trong quá trình thực hiện đề tài này có nhiều vấn đề phát sinh như : do thờigian có hạn, tài liệu tham khảo còn ít và kiến thức còn hạn chế cũng như kinhnghiệm non kém nên không thể tránh khỏi những thiếu sót
Trang 7CHƯƠNG 2: GIỚI THIỆU VỀ MỘT SỐ LINH KIỆN TRÊN
MÔ HÌNH NGHIÊN CỨU THIẾT KẾ
GIỚI THIỆU CHUNG:
Mạch đo nhiệt đô - độ ẩm hiển thị trên LCD được sủ dụng card ArduinoMega 2560 tín hiệu này được Arduino xử lý và sau đó xuất ra tín hiệu và đượchiển thị trên LED Để thực hiện một mạch đo nhiệt đô - độ ẩm hiển thị trên LCD
ta có thể sử dụng nhiều loại Arduino khác nhau Tuy nhiên, do có sẵn boardArduino Mega 2560 ,tài liệu nghiên cứu về chúng, bộ Kit phát triển, em đã lựachọn Arduino Mega 2560 cho mạch đo nhiệt đô - độ ẩm này Ngoài ra mạch còn
sử dụng thêm cảm biến DHT11, LCD 16*2
2.1 Arduino
2.1.1 Giới thiệu chung về Arduino
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tươngtác với nhau hoặc với môi trường được thuận lợi hơn Phần cứng bao gồm mộtboard mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặcARM Atmel 32-bit Những Model hiện tại được trang bị gồm 1 cổng giao tiếpUSB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board
mở rộng khác nhau
Arduino thật ra là một bo mạch vi xử lý được dùng để lập trình tương tácvớ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ớingườ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 Arduinochí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 Chỉvới khoảng $30, người dùng đã có thể sở hữu một board Arduino có 20 ngõ I/O
có tương tác và điều khiển chừng ấy thiết bị
Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắngmang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích,sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tácvới môi trường thông qua các cảm biến và các cơ cấu chấp hành Những ví dụphổ biến cho những người yêu thích mới bắt đầu bao gồm các robot đơn giản,điều khiển nhiệt độ và phát hiện chuyển động Đi cùng với nó là một môi trườngphát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường và chophép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc C++
Trang 8
2.1.2 Khái quát cấu tạo của Arduino Mega 2560
Arduino Mega 2560 là phiên bản nâng cấp của Arduino Mega hay còn gọi
là Arduino Mega 1280 Sự khác biệt lớn nhất với Arduino Mega 1280 chính làchip nhân Ở Arduino Mega 1280 sử dụng chip ATmega1280 với flash memory128KB, SRAM 8KB và EEPROM 4 KB Nhưng do tính năng, bộ nhớ và tốc độ
xử lí đã lỗi thời không còn đáp ứng được nhu cầu của thời đại công nghệ pháttriển chóng mặt, nên Arduino Mega 1280 không còn được sử dụng nữa, thay vào
đó là Arduino Mega 2560 đã đáp ứng tốt với nhu cầu của người dùng
Hình 2.1 Arduino Mega 2560 Đây là Arduino Mega 2560 phiên bản hiện đang được sử dụng rộng rãi và ứng dụng nhiều hơn Với chip ATmega2560 có bộ nhớ flash memory 256 KB, 8KB cho bộ nhớ SRAM, 4 KB cho bộ nhớ EEPROM Giúp cho người dùng thêmkhả năng viết những chương trình phức tạp và điều khiển các thiết bị lớn hơn nhưmáy in 3D, điều khiển robot…
Hình 2.2 Chip ATmega 2560
Trang 9Hình 2.3 Arduino Mega 2560 (chi tiết)
Các thông số kỹ thuật của Ardiuno Mega 2560:
- Vi điều khiển : ATmega 2560
- Điện áp hoạt động : 5V
- Nguồn ngoài ( giắc tròn DC) 7-9V Không nên cấp nguồn 12v vì sẽ gâyhỏng IC ổn áp
- Giao tiếp UART: 4 bộ UART
- Giao tiếp SPI: 1 bộ ( chân 50 đến chân 53) dùng với thư viện SPI củaArdunio
- Giao tiếp I2C: 1 bộ
Các thông số chi tiết của Ardiuno Mega 2560:
- Số chân Digital 54 ( 15 chân PWM là từ chân số 213 và các chân44,45,46 )
- Số chân Analog 16 (từ chân A0A15)
- Bộ nhớ Flash 256KB, 8KB sử dụng cho Bootloader
- SRAM 8KB
- EEPROM 4KB
- Xung clock 16MHZ (thạch anh)
- 6 ngắt ngoài: chân 2 (interrupt 0), chân 3 (interrupt 1), chân 18 (interrupt5), chân 19 (interrupt 4), chân 20 (interrupt 3), and chân 21 (interrupt 2)
Trang 10- 4 cổng Serial giao tiếp với phần cứng:
CỔNG SERIAL CHÂN RX CHÂN TX
Đối với những ai quan tâm tới Matlab thì Arduino Mega 2560 cũng là một
sự chọn lừa tuyệt vời Vì nó còn được tích hợp sẵn thư viện dành cho MatLab.Với viện kết hợp giữa MatLab và Arduino là một sự kết hợp thú vị ArduinoMega 2560 có thể sử dụng hầu hết các shiled dành cho các mạch Arduino Unohoặc các mạch trước đây như Duemilanove hay Diecimila với cách cài đặt và nốichân tương tự như Arduino Uno
2.1.3 Ngôn ngữ lập trình cho Arduino
Trang 11 Phần mềm Arduino IDE Menu
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lạinhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phầnmề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à quantrọ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ậptrì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ườnglậ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ó kinhnghiệm
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++ Và dongô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ùnghoà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
Giao diện Arduino IDE
Trang 12 Hiện tại, Arduino IDE có thể download từ trang chủ http://arduino.cc/ baogồm các phiên bản sau:
- Arduino 1.8.5 (Mới nhất cho đến hiện tại)
- Arduinol.5.5 BETA (Hỗ trợ cho 2 board Arduino mới nhất là: ArduinoYun và Arduino Due)
- Arduino IDE cho Intel Galileo
Cách dùng phần mềm với Arduino Mega 2560
Chọn loại vi điều khiển ( Arduino Mega 2560): Vào mục tool => Board
“Arduino/Genuino Mega 2560 or Mega 2560”=> Chọn Arduino/Genuino Mega
2560 or Mega 2560
Hình 2.5 IDE Menu Arduino Mega 2560
Chọn Cổng kết nối giữa máy tính và mạch vi điều khiển:
Trang 13Hình 2.6 Cổng kết nối máy tính
2.1.4 Một số ứng dụng của Arduino Mega 2560
Ứng dụng trong công nghiệp
Arduino là trung tâm của bộ xử lí nên được dùng làm bộ nhớ trung tâmtrong các hệ thống điều khiển tự động như băng chuyền, hệ thống đếm hàng, hệthống tự động đóng chai trong các nhà máy nước ngọt…
2.2 Cảm biến nhiệt độ - độ ẩm DHT11
2.2.1 Giới thiệu
- DHT11 là cảm biến nhiệt độ - độ ẩm Nó ra đời sau và được sử dụng thaythế cho dòng SHT1x ở những nơi không cần độ chính xác cao về nhiệt độ và độẩm
- DHT11 có cấu tạo 4 chân như hình Nó sử dụng giao tiếp số theo chuẩn 1dây
Trang 15
Nguyên lý hoạt động:
Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo
2 bước:
Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại
Khi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu vànhiệt độ đo được
- Bước 1: gửi tín hiệu Start
MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trongkhoảng thời gian >18ms Trong Code mình để 25ms Khi đó DHT11 sẽ hiểuMCU muốn đo giá trị nhiệt độ và độ ẩm
MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào
Sau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp Nếu >40us
mà chân DATA ko được kéo xuống thấp nghĩa là ko giao tiếp được với DHT11
Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên caotrong 80us Bằng việc giám sát chân DATA, MCU có thể biết được có giao tiếpđược với DHT11 ko Nếu tín hiệu đo được DHT11 lên cao, khi đó hoàn thiện quátrình giao tiếp của MCU với DHT
- Bước 2: đọc giá trị trên DHT11
DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte Trong đó:
Byte 1: giá trị phần nguyên của độ ẩm (RH%)
Byte 2: giá trị phần thập phân của độ ẩm (RH%)
Byte 3: giá trị phần nguyên của nhiệt độ (TC)
Byte 4 : giá trị phần thập phân của nhiệt độ (TC)
Byte 5 : kiểm tra tổng
Trang 16=>Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm vànhiệt độ là chính xác, nếu sai thì kết quả đo không có nghĩa.
Đọc dữ liệu:
Sau khi giao tiếp được với DHT11, DHT11 sẽ gửi liên tiếp 40 bit 0 hoặc 1
về MCU, tương ứng chia thành 5 byte kết quả của Nhiệt độ và độ ẩm
§ Bit 0:
§ Bit 1:
Trang 17
Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11kéo lên 1 Nếu chân DATA là 1 trong khoảng 26-28 us thì là 0, còn nếu tồn tại70us là 1 Do đó trong lập trình ta bắt sườn lên của chân DATA, sau đó delay50us Nếu giá trị đo được là 0 thì ta đọc được bit 0, nếu giá trị đo được là 1 thìgiá trị đo được là 1 Cứ như thế ta đọc các bit tiếp theo.
2.3 LCD16*2
2.3.1 Giới thiệu
Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) được sử dụngtrong rất nhiều các ứng dụng của VĐK LCD có rất nhiều ưu điểm so với cácdạng hiển thị khác: Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và
kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giaotiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẽ …
2.3.2 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ênhình 1 là loại LCD thông dụng
Hình 2.8 Hình dáng của loại LCD thông dụng
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bêntrong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết Các chân này được đánh sốthứ tự và đặt tên như hình 2.9
chân của LCD16*2
Trang 18Thông thường, để sử dụng màn hình LCD, bạn sẽ phải mất rất nhiều chântrên Arduino để điều khiển.
Do vậy, để đơn giản hóa công việc, người ta đã tạo ra một loại mạch điềukhiển màn hình LCD sử dụng giao tiếp I2C Nói một cách đơn giản, bạn chỉ tốn 2dây để điều khiển màn hình, thay vì 8 dây như cách thông thường
Hàn mạch vào như thế này là xong
2 chân SDA và SCL là 2 chân tín hiệu dùng cho giao tiếp I2C
Trang 19
2.3.3 Thông số kỹ thuật – chi tiết
Thông số kỹ thuật:
- Điện áp hoạt động là 5 V
- Kích thước: 80 x 36 x 12.5 mm
- Chữ đen, nền xanh lá/chữ trắng, nền xanh dương
- Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối vớiBreadboard
- Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đidây điện
- Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sửdụng ít điện năng hơn
- Có thể được điều khiển với 6 dây tín hiệu
- Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật
Thông số chi tiết:
Lcd có tất cả 16 chân:
- Chân cấp nguồn: vss (nối nguồn 5V), VDD (nối 0V), V0 (điều chỉnh độ
tương phản)
- 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”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của 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
- RW: 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
- E: Chân cho phép chốt xung kí tự (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ânE
+Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào (chấp nhận) thanhghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệuchân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnhlên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân Exuống mức thấp
-D0-D7: Chân dữ liệu
-A, K: Chân điều khiển đèn nền
Lcd có thể hoạt động theo 2 chế độ: 4 bit và 8 bit Chế độ 4 bit đòi hỏi phảikết nối với 7 chân I/O của ardiuno Chế độ 8 bit đòi hỏi phải kết nối với 11 chânI/O của Ardiuo