TRƯỜNG ĐẠI HỌC CÔNG NGHỆ KHOA CƠ HỌC KỸ THUẬT TỰ ĐỘNG HÓA MÔN HỌC VI XỬ LÝ VI ĐIỀU KHIỂN Đề tài nghiên cứu Thiết kế bộ đếm sản phẩm bằng cảm biến hồng ngoại (LCD) Đề tài mở rộng Nhà để xe thông mi. TRƯỜNG ĐẠI HỌC CÔNG NGHỆ KHOA CƠ HỌC KỸ THUẬT TỰ ĐỘNG HÓA MÔN HỌC VI XỬ LÝ VI ĐIỀU KHIỂN Đề tài nghiên cứu Thiết kế bộ đếm sản phẩm bằng cảm biến hồng ngoại (LCD) Đề tài mở rộng Nhà để xe thông mi.TRƯỜNG ĐẠI HỌC CÔNG NGHỆ KHOA CƠ HỌC KỸ THUẬT TỰ ĐỘNG HÓA MÔN HỌC VI XỬ LÝ VI ĐIỀU KHIỂN Đề tài nghiên cứu Thiết kế bộ đếm sản phẩm bằng cảm biến hồng ngoại (LCD) Đề tài mở rộng Nhà để xe thông mi.TRƯỜNG ĐẠI HỌC CÔNG NGHỆ KHOA CƠ HỌC KỸ THUẬT TỰ ĐỘNG HÓA MÔN HỌC VI XỬ LÝ VI ĐIỀU KHIỂN Đề tài nghiên cứu Thiết kế bộ đếm sản phẩm bằng cảm biến hồng ngoại (LCD) Đề tài mở rộng Nhà để xe thông mi.
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ KHOA CƠ HỌC KỸ THUẬT & TỰ ĐỘNG HÓA
MÔN HỌC: VI XỬ LÝ & VI ĐIỀU KHIỂN
Đề tài nghiên cứu: Thiết kế bộ đếm sản phẩm bằng
cảm biến hồng ngoại (LCD)
Đề tài mở rộng : Nhà để xe thông minh
Giảng viên hướng dẫn : Thầy Phạm Mạnh Thắng
Sinh viên thực hiện : Vũ Đình Tùng (19021132)
Đỗ Mạnh Tuấn (19021129) Trần Thế Sơn (19021104)
Hà Nội, tháng 3 năm 2022
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 1
PHẦN 1: CƠ SỞ LÝ THUYẾT 2
1.1 Nội dung nghiên cứu 2
1.1.1 Tổng quan về giao tiếp IC2 2
1.1.2 Giới thiệu vi điều khiển PCF8574 2
1.1.3 Tổng quan về vi điều khiển Arduino 3
1.1.4 Màn hình Text LCD kích thước 16x2 5
1.1.5 Cảm biến hồng ngoại IR Infrared Obstacle Avoidance Sensor 5
PHẦN 2: THIẾT KẾ VÀ LẬP TRÌNH HỆ THỐNG 7
2.1 Thiết kế hệ thống 7
2.1.1 Sơ đồ khối của hệ thống 7
2.1.2 Sơ đồ nguyên lý hệ thống 8
2.2 Lập trình hệ thống 8
2.3 Thiết kế phần mềm 9
2.4 Kết quả chế tạo và kiểm thử 9
2.4.1 Kết quả chế tạo 9
2.4.2 Kiểm thử 11
PHẦN 3: KẾT LUẬN VÀ MỞ RỘNG Ý TƯỞNG 13
3.1 Kết luận 13
3.2 Phát triển ý tưởng với nhà để xe thông minh 14
3.2.1 Tóm tắt ý tưởng 14
3.2.1 Cách thức hoạt động kết quả kiểm thử 14
TÀI LIỆU THAM KHẢO 18
Trang 3LỜI MỞ ĐẦU
Ngày nay cùng với sự phát triển của các ngành khoa học kỹ thuật, kỹ thuật điện
từ mà trong đó là kỹ thuật số đóng vai trò quan trọng trong mọi lĩnh vực khoa học kỹ thuật, quản lí, công nghiệp tự động hóa, cung cấp thông tin Do đó chúng ta phải nắm bắt và vận dụng nó một cách có hiệu quả nhằm góp phần vào sự phát triển nền khoa học kỹ thuật thế giới nói chung và trong sự phát triển kỹ thuật điện tử nói riêng
Xuất phát từ những bài học thực tập trên lớp và tham quan các doanh nghiệp sản xuất, chúng em đã được thấy nhiều khâu được tự động hóa trong quá trình sản xuất Một trong những khâu đơn giản trong dây chuyển sản xuất tự động hóa đó là số lượng sản phẩm làm ra được đếm một cách tự động
Tuy nhiên đối với những doanh nghiệp vừa và nhỏ thì việc tự động hóa hoàn toản chưa được áp dụng trong những khâu đếm sản phẩm, đóng bao bì mà vẫn còn sử dụng nhân công
Từ những điều đã được thấy và khả năng của chúng em, chúng em muốn làm một điều gì nhỏ để góp phần vào giúp người lao động bớt phần mệt nhọc chân tay mà cho phép tăng hiệu suất lao động lên gấp nhiều lần, đồng thời đảm bảo được độ chính xác Nên chúng em quyết định thiết kế một mạch đếm sản phẩm vì nó rất gần gũi với thực tế Đề làm được mạch này cần thiết kế được hai phần chính là: bộ phận cảm biến
và bộ phận đếm
Bộ phận cảm biến: bộ cảm biến phát và bộ cảm biến thu Thông thường người
ta sử dụng phần phát là LED hồng ngoại đễ phát ra ánh sáng hồng ngoại mục đích để chống nhiễu so với các loại ánh sáng khác, còn phần thu là transistor quang để thu ánh sáng hồng ngoại
Bộ phận đếm có nhiều phương pháp thực thi đó là:
Lắp mạch dùng kỹ thuật số với các IC đếm, chốt, so sánh ghép lại.
Lắp mạch dùng kỹ thuật vi xử lý.
Lắp mạch dùng kỹ thuật vi điều khiển.
Và để mở rộng ý tưởng này, chúng em đã thiết kế một hệ thống nhà xe thông minh tự động đóng mở cửa, đếm số lượng xe, nếu đầy thì sẽ dừng việc mở cửa đón xe mới cho đến khi có xe đi ra khỏi nhà xe
Trang 4PHẦN 1: CƠ SỞ LÝ THUYẾT
1.1 Nội dung nghiên cứu
1.1.1 Tổng quan về giao tiếp IC2
Đầu năm 1980 Phillips đã phát triển một chuẩn giao tiếp nối tiếp 2 dây được gọi là
I2C I2C là tên viết tắt của cụm từ Inter-Intergrated Circuit Đây là đường Bus giao
tiếp giữa các IC với nhau.
I2C kết hợp các tính năng tốt nhất của SPI và UART Với I2C, bạn có thể kết nối nhiều slave với một master duy nhất (như SPI) và bạn có thể có nhiều master điều
khiển một hoặc nhiều slave Điều này thực sự hữu ích khi ta muốn có nhiều hơn một vi điều khiển ghi dữ liệu vào một thẻ nhớ duy nhất hoặc hiển thị văn bản trên một màn hình LCD
1.1.2 Giới thiệu vi điều khiển PCF8574.
Hình 1 Module PCF8574
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 Chính vì vậy module PCF8574 ra đời Thay vì
phải mất 6 chân vi điều khiển để kết 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, …), nói chung là hầu hết các loại LCD character hiện nay.
Trang 5Module PCF8574 cũng đươc thiết kế để hàn một cách nhanh chóng vào các loại LCD16x2, 20×4… Khiến việc đấu nối trở nên dễ dàng hơn rất nhiều
1.1.3 Tổng quan về vi điều khiển Arduino.
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, 1 ….để 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.
Cấu tạo Arduino:
1 Arduino Workshop: A Hands-On Introduction with 65 Projects - Box John
Trang 6Hình 2 Cấu tạo Arduino Uno R3
Chi tiết phần cứng của Arduino:
Cổng USB: là chân cắm để tải mã lập trình từ PC lên chip điều khiển Đồng
thời đây cũng là cổng giao tiếp serial giúp truyền dữ liệu từ chip điều khiển vào máy tính
Jack nguồn: để chạy Arduino, bạn hoàn toàn có thể nạp nguồn từ cổng USB ở
trên Tuy nhiên không phải lúc nào cũng kết nối với máy tính được Có những
dự án cần thực hiện ngoài trời sẽ cần một nguồn điện khác với mức điện áp từ 9V -12V
Hàng Header: những chân đánh số từ 0 – 12 là hàng digital pin Đây là nơ
truyền – nhận các tín hiệu số Bên cạnh đó sẽ có một pin đất (GND) và pin điện
áp tham chiếu (AREF)
Hàng header thứ 2: chủ yếu liên quan tới điện áp đất, nguồn.
Hàng header thứ 3: đây là các chân để nhập – xuất các tín hiệu analog
Trang 7Chip điều khiển AVR: bộ phận xử lý trung tâm của toàn bo mạch Với mỗi
mẫu Arduino khác nhau, con chip này sẽ khác nhau Ví dụ trên Arduino Uno thì
sẽ sử dụng ATMega328
1.1.4 Màn hình Text LCD kích thước 16x2
Hình 3 Text LCD 16x2
Màn hình Text LCD 16×2 được chia sẵn thành từng ô và ứng với mỗi ô chỉ có thể hiển thị một ký tự ASCII Mỗi ô của Text LCD bao gồm các “chấm” tinh thể lỏng,
việc kết hợp “ẩn” và “hiện” các chấm này sẽ tạo thành một ký tự cần hiển thị Trong
các Text LCD, các mẫu ký tự được định nghĩa sẵn Kích thước của Text LCD được
định nghĩa bằng số ký tự có thể hiển thị trên 1 dòng và tổng số dòng mà LCD có Màn hình LCD 16×2 là loại có 2 dòng và mỗi dòng có thể hiển thị tối đa 16 ký tự.
Các chân điều khiển việc đọc và ghi dữ liệu của Text LCD bao gồm: RS, R/W
và EN Trong đó:
R/W (chân số 4) là chân lựa chọn giữa việc đọc và ghi
RS (chân số 3) là chân lựa chọn thanh ghi
EN (chân số 5) là chân cho phép LCD hoạt động (Enable)
1.1.5 Cảm biến hồng ngoại IR Infrared Obstacle Avoidance Sensor.
Cảm biến hồng ngoại hay còn được gọi là IR Sensor, chúng là một thiết bị điện tử
Trang 8có khả năng đo và phát hiện bức xạ hồng ngoại trong môi trường xung quanh Thực ra,
tên tiếng anh của cảm biến hồng ngoại là Passive Infrared, viết tắt là PIR dịch sát nghĩa là “hồng ngoại thụ động” Cảm biến hồng ngoại (IR Sensor) phát ra các tia vô
hình đối với mắt người, vì bước sóng của nó dài hơn ánh sáng khả kiến (mặc dù nó vẫn nằm trên cùng một phổ điện từ) Bất cứ thứ gì phát ra nhiệt (mọi thứ có nhiệt độ trên năm độ Kelvin) đều phát ra bức xạ hồng ngoại
Hình 4 Cảm biến hồng ngoại IR Sensor
Cảm biến vật cản hồng ngoại có khả năng thích nghi với môi trường, có một
cặp truyền và nhận tia hồng ngoại Tia hồng ngoại phát ra một tần số nhất định, khi phát hiện hướng truyền có vật cản (mặt phản xạ), 2
Khoảng cách làm việc hiệu quả 2 ~ 5cm, điện áp làm việc là 3.3 V đến 5V Độ nhạy sáng của cảm biến vật cản hồng ngoại được điều chỉnh bằng chiết áp, cảm biến
dễ lắp ráp, dễ sử dụng,…
Có thể được sử dụng rộng rãi trong robot tránh chướng ngại vật, xe tránh chướng ngại vật và dò đường…
PHẦN 2: THIẾT KẾ VÀ LẬP TRÌNH HỆ THỐNG
2 Thermal Infrared Sensors: Theory, Optimisation and Practice - Helmut Buzier
Trang 92.1 Thiết kế hệ thống
2.1.1 Sơ đồ khối của hệ thống
Sử dụng vi điều khiển ATmega328P của Arduino làm xử lý trung tâm, mạch hệ
thống có nguyên lý hoạt động như sau:
- Vi điều khiển đọc giá trị từ bộ cảm biến hồng ngoại, xử lý để nhận dạng có
vật cản (vật cản ở đây có thể là người hoặc sản phẩm) hay không có vật cản từ đó tăng
số đếm khi có vật cản đi qua
- Xuất hiển thị màn hình LCD (hoặc màn hình máy tính) giá trị đếm được.
Khối hiển thị LCD Khối vi điều khiển
Khối cảm biến
Khối nguồn
Trang 102.1.2 Sơ đồ nguyên lý hệ thống
Hình 5 Mô phỏng sơ đồ nối chân cụ thể giữa các khối của hệ thống trên thực tế bằng phần
mềm Proteus 8 Professional
2.2 Lập trình hệ thống
Lập trình Arduino Uno bằng phần mềm Arduino Software IDE (Intergrated Development Environment) Hệ thống được lập trình lưu giá trị đếm ngay cả khi mất điện
Trang 112.3 Thiết kế phần mềm
Code Arduino (Bọn em để trong file Arduino đính kèm)
2.4 Kết quả chế tạo và kiểm thử
2.4.1 Kết quả chế tạo
Sử dụng phần mềm Proteus 8, bọn em đã lắp rắp các thành phần và được kết quả như hình:
ĐỌC GIÁ TRỊ ĐẾM LƯU TRONG EEPROM
KHỞI TẠO
HIỂN THỊ LCD GIÁ TRỊ ĐẾM
TĂNG GIÁ TRỊ ĐẾM
GHI GIÁ TRỊ ĐẾM VÀO EEPROM
SAI
ĐÚNG
Trang 12Hình 6 Hệ thống đếm sản phẩm Màn hình LCD sẽ hiển thị số lượng ở mức mặc định là 0
Giá trị cảm biến khi không có vật cản để mặc định ở mức cao ứng với giá trị bằng 1, giá trị cảm biến sẽ bằng 0 khi có vật cản đi qua ứng với mức thấp Nút reset để làm mới chương trình.
Nguyên lý hoạt động
Khi chưa có vật cản đi qua, cảm biến hồng ngoại không nhận được tín hiệu do
đó không có tín hiệu đưa đến vi điều khiển ATmega328P Màn hình LCD trong trường hợp này hiển thị giá trị đếm nhớ trước đó
Khi có vật cản đi qua, LED thu nhận được tín hiệu từ LED phát, mạch cảm biến cấp tín hiệu cho vi điều khiển ATmega328P, vi điều khiển thực hiện tác vụ tăng giá trị đếm và xuất hiển thị giá trị đếm lên mà hình LCD
Trang 132.4.2 Kiểm thử
Kết nối nguồn, nạp chương trình, tiến hành chạy kiểm thử hệ thống:
Màn hình LCD hiển thị số đếm ở mức 0
Khi có vật cản đi qua khối cảm biến (Ứng với giá trị 1 tại cảm biến chuyển thành 0) thì màn hình LCD hiển thị số đếm tăng thêm.
Khi đếm số sản phẩm tới số lượng mong muốn (ở đây bọn em đặt là 10) thì hệ thống sẽ dừng đếm sản phẩm và hiện số sản phẩm đã đầy màn hình LCD báo là
“….FULL….”.
Trang 14Khi muốn làm mới chương trình ta nhấn nút reset khi đó giá trị trên màn hình LCD sẽ trở lại về 0.
Trang 15PHẦN 3: KẾT LUẬN VÀ MỞ RỘNG Ý TƯỞNG
3.1 Kết luận
Chúng em đã thiết kế và chế tạo thành công bộ đếm kết hợp với cảm biến thực hiện các tác vụ đặt ra ở mục tiêu bài báo Hệ thống đếm có thể được ứng dụng trong các dây chuyền sản xuất vừa và nhỏ, các nhà máy hay các siêu thị, cửa hàng … cần quản lý số lượng sản phẩm, số lượng nhân công, khách hàng… một cách khoa học và
tự động
Tuy nhiên, để nâng cao hơn nữa khả năng triển khai hệ thống trong thực tế, trong thời gian tới chúng em mong muốn có thể tiếp tục một số hướng nghiên cứu tối
ưu như sau:
Nghiên cứu điều chỉnh các khối giao tiếp nhằm tăng độ nhạy cũng như độ gọn
về mặt kích thước cho hệ thống đếm
Nghiên cứu, tối ưu phạm vi làm việc của bộ cảm biến hồng ngoại trong các môi trường và khoảng cách khác nhau.
Nghiên cứu ảnh hưởng của nhiệt độ, ánh sáng đến độ chính xác của bộ cảm biến hồng ngoại
Qua đây chúng ta nhận ra được rằng, so với việc thiết kế hệ thống điều khiển với vi điều khiển thông thường thì sử dụng module Arduino tiện lợi hơn rất nhiều bởi các lý do sau:
Nguồn tài liệu mở hướng dẫn sử dụng Arduino bằng tiếng Anh cũng như tiếng Việt rất phong phú
Module Arduino đã có tích hợp sẵn vi điều khiển với ngôn ngữ lập trình thân thiện với người dùng, sử dụng mã nguồn mở nên thư viện code đa dạng được chia sẻ rộng rãi bởi cộng đồng người dùng Arduino.
Giá thành rẻ (module Arduino Uno R3 hiện có giá khoảng 120.000 đồng).
Trang 16Hỗ trợ nhiều module mở rộng giúp người thiết kế lắp ráp và kiểm tra mạch nhanh chóng.
3.2 Phát triển ý tưởng với nhà để xe thông minh
3.2.1 Tóm tắt ý tưởng
Bọn em sẽ thiết kế một hệ thống đếm số lượng ra vào nhà xe tự động đơn giản, kèm theo đó là cửa nhà xe tự động đóng mở, hệ thống dễ sử dụng đồng thời vẫn đảm
bảo độ chính xác Hệ thống sử dụng module Arduino Uno R3 tích hợp vi điều khiển
ATmega328P kết hợp với bộ cảm biến hồng ngoại IR1 thực hiện các tác vụ: nhận tín
hiệu khi có vật cản (xe) đi qua cảm biến để đóng mở cửa và hiển thị số lượng (xe) lên màn hình LCD, thông báo và ngừng nhận xe khi nhà xe đã đầy và tự động khóa cửa
3.2.1 Cách thức hoạt động kết quả kiểm thử.
- Mô phỏng Proteus hệ thống nhà để xe thông minh:
Trang 17Hình 7 Nhà để xe thông minh sau khi lắp ráp các thành phần
Cách thức hoạt động:
Khi chưa có vật cản đi qua lối ra và lối vào , cảm biến hồng ngoại không nhận được tín hiệu do đó không có tín hiệu đưa đến vi điều khiển ATmega328P Màn hình LCD trong trường hợp này hiển thị giá trị đếm nhớ trước đó, động cơ SERVOR chưa được kích hoạt và cửa vẫn đóng
Khi có vật cản đi qua lối vào , LED thu nhận được tín hiệu từ LED phát, mạch cảm biến cấp tín hiệu cho vi điều khiển ATmega328P, vi điều khiển thực hiện tác vụ tăng giá trị đếm và xuất hiển thị giá trị đếm lên mà hình LCD, vi điều khiển kích hoạt động cơ SERVOR làm cửa mở ở lối vào
Tương tự với lối ra, khi có xe ra thì LED phát ở cảm biến bắt tín hiệu gửi cho vi điều khiển Atmega328P, vi điều khiển sẽ giảm giá trị đếm và kích hoạt động cở SERVOR làm mở cửa lối ra
Trang 18Khi nhà xe đã đầy, mà hình sẽ báo đầy xe và vi điều khiển thực hiện tác vụ không cho xe vào nữa
Kết quả kiểm thử:
Màn hình LCD chạy câu chào và hiển thị số đếm ở mức 0, lúc này cửa nhà xe đóng.
Khi có xe đi qua cảm biến thì màn hình LCD hiển thị số đếm tăng thêm, cửa tự động mở đón xe vào (Hình 8).
Hình 8 Khi có xe vào Khi có xe đi ra cảm biến ở lối ra quét được lúc này thì màn hình LCD hiện số đếm giảm đi, cửa tự động mở ra cho xe đi.
Khi nhà xe đã đầy, màn hình LCD thông báo nhà xe đã đầy (Hình 9) và các cửa tự động khóa lại cho đến khi có xe ra thì mới nhận xe mới.
Trang 19Hình 9 Nhà xe khi đầy Bên cạnh khi muốn làm mới hệ thống ta nhấn nút RESET BUTTON (Hình 10).
Trang 20Hình 10 Làm mới nhà xe
TÀI LIỆU THAM KHẢO
1, Boxall, John Arduino Workshop: A Hands-On Introduction with 65 Projects 1st Edition
2 Buzier, Helmut Thermal Infrared Sensors: Theory, Optimisation and Practice