You are on page 1of 55

ĐẠI HỌC ĐÀ NẴNG

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


KHOA ĐIỆN – ĐIỆN TỬ

ĐỒ ÁN TRUYỀN ĐỘNG ĐIỆN


THIẾT KẾ HỆ THỐNG ĐẾM VÀ PHÂN LOẠI ỚT
NGỌT ĐÀ LẠT

GVHD : THS. ĐỖ HOÀNG NGÂN MI

SVTH : PHAN HOÀNG HẢI


LÊ CAO CƯỜNG
NGUYỄN TRỌNG HUẤN
NÔNG VĂN TÙNG
NGUYỄN CHÍ THIỆN

Đà Nẵng, ngày 24 tháng 3 năm 2022


MỤC LỤC
MỤC LỤC.................................................................................................................. 1
TÓM TẮT.................................................................................................................. 1
LỜI CAM ĐOAN.......................................................................................................2
LỜI CẢM ƠN............................................................................................................3
TÀI LIỆU THAM KHẢO..........................................................................................4
CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI........................................................................7
1.1. THỰC TRẠNG HIỆN NAY.............................................................................7
1.2. NGUYÊN NHÂN CHỌN ĐỀ TÀI...................................................................7
1.3. MỤC TIÊU VÀ YÊU CẦU ĐẶT RA..............................................................7
1.4. NGUYÊN LÝ CHUNG....................................................................................8
1.5. CHỌN THIẾT BỊ CHO ĐỀ TÀI.......................................................................8
CHƯƠNG 2: TÌM HIỂU VỀ CẤU TRÚC ARDUINO UNO VÀ CÁC THIẾT BỊ
TRONG ĐỀ TÀI..........................................................................................................9
2.1. ARDUINO UNO R3.........................................................................................9
2.2. CẢM BIẾN MÀU TCS 34725........................................................................12
2.3. CẢM BIÊN HỒNG NGOẠI E3F DS10C4....................................................14
2.4. ĐỘNG CƠ SERVO MG90S...........................................................................16
2.5. ĐỘNG CƠ MOTOR LK0195.........................................................................18
2.6. MODULE RELAY 1 KÊNH 5V....................................................................20
2.7. MÀN HÌNH LCD1602....................................................................................21
CHƯƠNG 3: TÍNH TOÁN, THIẾT KẾ VÀ THI CÔNG........................................25
3.1. SƠ ĐỒ KHỐI..................................................................................................25
3.2. LƯU ĐỒ THUẬT TOÁN...............................................................................26
3.3. NGUYÊN LÝ HOẠT ĐỘNG.........................................................................26
3.4. GIỚI THIỆU , THIẾT KẾ HỆ THỐNG.........................................................27
3.5. MÔ PHỎNG MATLAB.................................................................................32
3.6. MÔ PHỎNG TRÊN PROTEUS.....................................................................33
CHƯƠNG 4: TỔNG KẾT........................................................................................34
4.1. KẾT LUẬN.....................................................................................................34
4.2. HƯỚNG KHẮC PHỤC VÀ PHÁT TRIỂN...................................................35
PHỤ LỤC 1: CHƯƠNG TRÌNH PROTEUS:..........................................................36
PHỤ LỤC 2: CHƯƠNG TRÌNH MATLAB............................................................41
PHỤ LỤC 3: CHƯƠNG TRÌNH CHẠY MÔ HÌNH THỰC TẾ..............................46
TÓM TẮT
Ngày nay cùng với sự phát triển của các ngành khoa học kỹ thuật , điện tử mà trong đó tự
động hoá đóng vai trò hết sức quan trọng . Nắm bắt và vận dụng tự động hoá là điều tất yếu .
Truyền động điện là một trong các môn học cơ sở kỹ thuật của các chuyên ngành
điện công nghiệp, tự động hóa, cơ điện…Nhằm cung cấp cho người học những kiến thức cơ bản
về các phương pháp điều khiển tốc độ của hệ truyền động điện, tính chọn được động cơ điện cho
các hệ truyền động, phân tích được cấu tạo, nguyên lý của một số thiết bị điển hình như:
inverter, các bộ biến đổi, cũng như lựa chọn được các bộ biến đổi phù hợp với yêu cầu hệ truyền
động.
Sau khi tìm hiểu và nghiên cứu về các đề tài cũng như công trình trước đây nhóm đã quyết
định chọn đề tài “ THIẾT KẾ HỆ THỐNG ĐẾM VÀ PHÂN LOẠI ỚT NGỌT ĐÀ LẠT THEO
MÀU SẮC “ . Với đề tài nhóm hy vọng sẽ làm cơ sở nghiên cứu cho những ứng dụng hay mở
rộng sau này .
Trong quá trình thực hiện đề tài do khả năng và kiến thức thực tế có hạn nên không thể tránh
khỏi sai sót, kính mong cô đóng góp ý kiến để tài nhóm em hoàn thiện hơn.
Chúng em xin chân thành cảm ơn.
Nhóm 4:
Phan Hoàng Hải
Lê Cao Cường
Nguyễn Trọng Huấn
Nông Văn Tùng
Nguyễn Chí Thiện
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

LỜI CAM ĐOAN


Đề tài này là do nhóm tự thực hiện dựa vào việc tham khảo một số tài liệu và không sao chép
từ tài liệu hay công trình đã có trước đó. Nếu có bất kỳ sự lận nào chúng tôi xin chịu trách nhiệm
về nội dung đồ án của mình.

Thực hiện
PHAN HOÀNG HẢI

Trang 2
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
LỜI CẢM ƠN

Lời đầu tiên em xin chân thành cảm ơn các thầy cô giáo trong Trường Đại Học Sư Phạm Kỹ
Thuật ĐÀ NẴNG nói chung, các thầy cô trong khoa Điện – Điện Tử nói riêng đã dạy dỗ cho em
kiến thức về các môn đại cương đặc biệt là thầy Thiện và cô Ngân Mi với học phần “truyền động
điện“ .
Điều đó tạo điều kiện cho nhóm có được cơ sở lý thuyết vững vàng và giúp đỡ các thành
viên trong nhóm xuyên suốt quá trình học tập.

Trang 3
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

TÀI LIỆU THAM KHẢO


Internet:

[1] http://arduino.vn

[2] http://arduino.cc

[3] http://html.alldatasheet.com/html-pdf/454462/TAOS/TCS3200/96/1/TCS3200.html

Sách:

[1] Truyền động điện thông minh – Nguyễn Phùng Quang


[2] Vi điều khiển và ứng dụng Arduino -  Phạm Quang Huy - Nguyễn Trọng Hiếu

Trang 4
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI
1.1. THỰC TRẠNG HIỆN NAY
Hiện nay trong tình hình đại dịch COVID đang có diễn biến khó lường , việc nguồn nhân lực
ít và thị trường tiêu thụ bị thu hẹp do ảnh hưởng của dịch bệnh thì tình hính sản xuất đặc biệt là
sản xuất về nông nghiệp gặp không ít thách thức . Ớt ngọt Đà Lạt cũng không nằm ngoài sự ảnh
hưởng đó ,
Ớt ngọt Đà Lạt có 3 loại chính , đó là ớt đỏ , xanh và vàng . Đây là loại thực phẩm có tác
dụng rất tốt cho sức khoẻ : giúp tăng cường thị lực , ngăn ngừa tình trạng thiếu máu , bảo vệ trái
tim khoẻ mạnh , giúp tiêu hoá tốt , bảo vệ giấc ngủ , giúp tóc chắc khoẻ và cải thiện da … Với
có quá nhiều công dụng thì ớt ngọt Đà Lạt đang rất được sự quan tâm của người tiêu dùng . Điều
này thúc đẩy việc sản xuất và phân phối một cách mạnh mẽ . Hiện nay các công ty trong lĩnh
vực vẫn chưa tự động hoá hoàn toàn trong quá trình phân loại và đóng gói sản phẩm giúp tối ưu
hoá năng suất nên cần có một giải pháp về vấn đề trên .
1.2. NGUYÊN NHÂN CHỌN ĐỀ TÀI
Khoa học kỹ thuật đặc biệt là tự động hoá luôn phát triển trong tất cả các lĩnh vực, nhất là
nghành sản xuất . Việc đòi hỏi cải tiến và nâng cấp hệ thống sản xuất luôn là ưu tiên hàng đầu .
Do đó chúng ta cần nắm bắt và vận dụng điều khiển tự động hoá một cách hiệu quả .Có rất nhiều
khâu tự động trong quá trình sản xuất , một trong số đó là khâu phân loại sản phẩm .
Có nhiều mô hình phân loại sản phẩm như theo chiều cao , cân nặng kích thước , nhưng với
nông sản có khối lượng và kích thước tương tự nhau như ớt ngọt Đà Lạt thì các mô hình kia
thực sự không phù hợp . Vì vậy hướng phù hợp hơn cả là phân loại theo màu sắc , do đó nhóm
quyết định thực hiện đề tài.
“THIẾT KẾ HỆ THỐNG ĐẾM VÀ PHÂN LOẠI ỚT NGỌT ĐÀ LẠT THEO MÀU SẮC “
1.3. MỤC TIÊU VÀ YÊU CẦU ĐẶT RA
1.3.1. Mục tiêu
Giảm sức lao động, cải thiện được điều kiện làm việc của con người, tạo cho con người
tiếp cận với sự tiến bộ của khoa học kỹ thuật và được làm việc trong môi trường ngày càng văn
minh hơn.
Nâng cao năng suất lao động, tạo tiền đề cho việc giảm giá thành sản phẩm .
Giúp cho việc quản lý và giám sát trở nên rất đơn giản, bởi vì nó không những thay đổi điều
kiện làm việc của công nhân mà còn có thể giảm số lượng công nhân đến mức tối đa.
1.3.2. Yêu cầu
Phân loại ớt ngọt dựa trên màu sắc thông qua ba màu cơ bản là: Đỏ vàng và tím.

Trang 5
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
Tiện lợi, dễ bảo trì mà ít cần thay đổi phần cứng.
Tự động nhận diện , đếm và phân loại được một cách hiệu quả khi có sản phẩm chạy qua.

1.4.NGUYÊN LÝ CHUNG
Khi ớt đi vào cảm biến màu sắc TCS34725 sẽ nhận diện màu cùng lúc với việc đếm số
lượng ớt. Động cơ kéo băng tải hoạt động , sau đó cảm biến vật cản hồng ngoại sẽ kiểm tra xem
có vật cản hay không . Nếu trái màu đỏ động cơ servo sẽ đẩy trái vào thùng đựng đỏ , nếu trái
màu vàng thì đẩy vào thùng vàng và cuối cùng màu tím thì sẽ chạy thẳng vào thùng tím ở cuối
băng tải.

Hình 1 Mô phỏng mô hình


1.5.CHỌN THIẾT BỊ CHO ĐỀ TÀI
 ARDUINO UNO R3.
 Cảm biến màu TCS 34725.
 2 Cảm biến hồng ngoại E3F DS10C4.
 2 Động cơ servo MG90S.
 Động cơ motor LK0195.
 Module relay 5V.
 Màn hình LCD 16x2.
 Module I2C.
 2 Module hạ áp LM2956.

Trang 6
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
CHƯƠNG 2: TÌM HIỂU VỀ CẤU TRÚC ARDUINO UNO VÀ
CÁC THIẾT BỊ TRONG ĐỀ TÀI
2.1.ARDUINO UNO R3
2.1.1. Khái niệm
Arduino  một nền tảng mã nguồn mở phần cứng và phần mềm. Phần cứng Arduino (các
board mạch vi xử lý) được sinh ra tại thị trấn Ivrea ở Ý, nhằm xây dựng các ứng dụng tương
tá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ộ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.
Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 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.

Hình 2. 1 Arduino Uno R3

Trang 7
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

Hình 2. 2 Cấu tạo Arduino Uno R3


2.1.2. Cấu tạo
Gồm: Nguồn (USB / Đầu cắm nguồn cái) .

- Chân (5V, 3.3V, GND, Analog, Kỹ thuật số, PWM, AREF).


- Nút reset .
- Đèn LED báo nguồn ,đèn LED RX, TX .
- Mạch tích hợp – IC

- Điều chỉnh điện áp

Vi điều khiển ATMEGA họ 8 bit

Điện áp hoạt động 5VDC (Chỉ được cấp qua cổng USB)

Tần số hoạt động 16 MHZ

Dòng tiêu thụ Khoảng 30mA

Trang 8
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

Đ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(6 chân hardware PWM)

Số chân Analog 6(Độ phân giải 10 bit)

Dòng tối đa trên mỗi chân I/O 30mA

Dòng ra tối đa (5V) 500mA

Dòng ra tối đa (3.3 V) 50mA

32KB(ATMEGA328) với 0.5KB dùng


Bộ nhớ Flash
bởi bootloader

SRAM 2KB(ATMEGA328)

EEPROM 1KB(ATMEGA328)

Bảng 2.1 : Thông số kỹ thuật ARDUINO UNO R3 MEGA328P


2.1.3. Ưu điểm
Arduino là một nền tảng thông dụng với một số tiện lợi như:

- Ít tốn kém.
- Các mẫu có sẵn phổ biến trong thị trường.
- Đa nền tảng (chạy trên các hệ điều hành Windows, Macintosh OSX và Linux).
- Cộng đồng arduino lớn dễ dàng trao đổi kiến thức.
- Các chức năng giúp đơn giản hóa công việc.
- Môi trường lập trình đơn giản, rõ ràng.
2.1.4. Ứng dụng
- Aruino Uno R3 được sử dụng phổ biến trong việc tự thiết kế ra các mạch điện tử như điều
khiển led, gửi dữ liệu lên lcd, điều khiển motor,... hay được gắn thêm các Shield để kết nối
nhiều module cảm biến khác để thực hiện thêm nhiều chức năng mở rộng như gửi dữ liệu
qua wifi.

Trang 9
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
- Ngoài ra, trên thị trường còn có nhiều biến thể của Arduino Uno để thực hiện thêm các tính
năng chuyên dụng, ví dụ như mCore, Orion trên mBot được chuyên dụng với việc dễ dàng
phân biệt các loại module nào có thể sử dụng cắm vào trên các cổng để trẻ dễ dàng sử dụng.

- Làm Robot. Arduino có khả năng đọc các thiết bị cảm biến, điều khiển động cơ, …nên nó
thường được dùng để làm bộ xử lý trung tâm của rất nhiều loại robot.
- Điều khiển đèn tín hiệu giao thông, làm hiệu ứng đèn Led nhấp nháy trên các biển quảng
cáo…
- Điều khiển các thiết bị cảm biến ánh sáng, âm thanh.
- Làm máy in 3D .

Hình 2. 3 Robot dò đường sử dụng Arduino Uno R3


2.2.CẢM BIẾN MÀU TCS 34725
2.2.1. Khái niệm
Cảm biến màu sắc TCS34725 được dùng để nhận biết màu sắc  thông qua việc đo phản xạ 3
màu cơ bản là đỏ, xanh lá, xanh dương của vật thể. Sau đó được xử lý và truyền đi thông số đo
được của các màu sắc này thông qua giao tiếp I2C hoặc UART, tổng hợp thông tin của 3 màu
trên ta có được màu sắc của vật thể cần đo.
TCS34725 là phiên bản nâng cấp của TCS3200. Cảm biến màu sắc TCS34725 sử dụng giao
tiếp I2C và UART được tích hợp MCU trên mạch để chuyển đổi từ giao tiếp I2C của TCS34725
sang giao tiếp UART hoặc I2C của MCU giúp bạn dể dàng lập trình và giao tiếp

Trang 10
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

Hình 2. 4 Cảm biến màu sắc TCS 34725


2.2.2. Thống số kĩ thuật

- Chip: TCS34725
- Điện áp: 3~5VDC
- Dòng tiêu thụ: 15mA
- Giải đo: RGB 0~255
- Tần số: 10Hz
- Tích hợp MCU xử lý và chuyển đổi giao tiếp.
- Giao tiếp:
o I2C của TCS34725.
o I2C của MCU.
o UART của MCU.
- Kích thước: 24x27mm
- Trọng lượng: 31g

2.2.3. Cách sử dụng

- Thư viện tham khảo: https://github.com/adafruit/Adafruit_TCS34725


- Cách thiết lập giao tiếp dựa vào Jumper S0 và S1:
- S1 để trống (default): Disable chân SCL và SDA, hai chân giao tiếp trực tiếp I2C với
TCS34725, chỉ có thể giao tiếp qua hai chân CT / DR của MCU.
- S1 nối với G: Enable chân SCL và SDA, sử dụng để giao tiếp trực tiếp với I2C của
TCS34725 không thông qua MCU.
- S0 để trống (default): Lựa chọn giao tiếp của MCU trên hai chân CT / DR là UART, CT là
UART_TX, DR là UART_RX baudrate mặc định 9600bps / Parity: N / Data bits: 8 / Stop
bits: 1

Trang 11
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
- S0 nối với G: Lựa chọn giao tiếp của MCU trên hai chân CT / DR là I2C, CT là I2C_SCL,
DR là I2C_SDA.
2.2.4. Ứng dụng
Một cảm biến màu sắc là một thiết bị rất hữu ích. Hiện nay các xe tự động đang được phát
triển, có thể chạy tự động, xe hơi không người lái, và cảm biến là một cách để có thể phát hiện
màu sắc ở những nơi như dấu hiệu dừng lại màu đỏ và đèn giao thông, màu xanh lá cây để đi và
đỏ dừng lại.
Một thiết bị cảm biến màu sắc có thể được tích hợp vào là robot. Càng nhiều khả năng mà một
robot có và thông minh hơn. Nếu một robot có thể phân biệt màu sắc, nó có nhiều khả năng. Hãy
tưởng tượng nếu bạn có một robot có thể nói sự khác biệt giữa một chiếc khăn màu xanh lá cây
và một chiếc khăn màu đỏ. Nếu bạn biết bạn có một chiếc khăn màu xanh lá cây và một người
khác có một chiếc khăn màu đỏ, các robot có thể sắp xếp nó một cách thích hợp
Các ứng dụng khác bao gồm đọc truyện, cảm biến ánh sáng xung quanh và hiệu chuẩn, và
màu sắc phù hợp.
Vì vậy cảm biến màu sắc sẽ được ứng dụng nhiều trong tương lai.
2.3. CẢM BIÊN HỒNG NGOẠI E3F DS10C4
2.3.1. Khái niệm
Cảm biến vật cản hồng ngoại E3F-DS10C4 Adjustable IR Infrared Proximity Sensor là loại
chất lượng tốt với độ bền và độ ổn định cao, cảm biến sử dụng ánh sáng hồng ngoại để xác định
vật cản phía trước cảm biến, cảm biến phát ra tia hồng ngoại với dải tần số chuyên biệt cho khả
năng chống nhiễu tốt kể cả ở điều khiện ánh sáng ngoài trời.

Hình 2. 5 Cảm biến vật cản hồng ngoại E3F-DS10C4

Trang 12
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
2.3.2. Thông số kỹ thuật
Model: E3F-DS10C4:
 Số dây tín hiệu: 3 dây (2 dây cấp nguồn DC và 1 dây tín hiệu). 
 Chân tín hiệu ngõ ra: dạng Transistor NPN đã được kéo nội trở 10k lên VCC, khi có vật
cản sẽ ở mức thấp (Low-GND), khi không có vật cản sẽ xuất ra mức cao (High-VCC).
 Nguồn điện cung cấp: 6 ~ 36VDC
 Dòng tiêu thụ: 20~35mA
 Khoảng cách điều chỉnh cảm biến: 2~10cm
 Khoảng cách phát hiện vật cản: 0~10cm
 Góc khuếch tán (góc chiếu): 3~5 độ
 Có thể điều chỉnh khoảng cách nhận của cảm biến bằng biến trở tinh chỉnh.
 Dòng kích ngõ ra: 300mA.
 Có led hiển thị ngõ ra màu đỏ.
 Chất liệu sản phẩm: vỏ ngoài nhựa ABS, phía trong đổ keo chống nước, chống va đập.
 Kích thước: 18 x 68mm

Hình 2. 6 Sơ đồ chân cảm biến E3F-DS10C4


Lưu ý: Tín hiệu ra có dòng rất nhỏ nên KHÔNG ĐƯỢC kích trực tiếp vào relay (rơ le) sẽ gây
CHÁY cảm biến.
2.3.3. Kết nối và sử dụng

Vì cảm biến đã được kéo trở nội 10k lên VCC nên điện áp mức cao của chân tín hiệu (Vout)
của cảm biến cũng chính là điện áp VCC, có hai trường hợp như sau:

- Nếu mạch cần giao tiếp sử dụng mức tín hiệu có điện áp bằng với điện áp VCC của cảm biến
(Ví dụ cảm biến và Arduino cùng cấp nguồn chung là VCC=5VDC, điện áp giao tiếp của

Trang 13
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
Arduino cũng là 5VDC và Vout của cảm biến cũng là 5VDC) thì không cần nối trở Rx mà
nối trực tiếp chân tín hiệu của cảm biến với chân tín hiệu của Arduino.
- Nếu mạch cần giao tiếp sử dụng mức tín hiệu có điện áp khác với điện áp VCC của cảm biến
(Ví dụ cảm biến cấp VCC=10VDC, điện áp giao tiếp của Arduino=5VDC) thì cần nối thêm
trở Rx như hình dưới để giá trị của Vout=5VDC không làm cháy mạch Arduino, giá trị của
Rx được tính theo công thức cầu phân áp là: 
Rx= (Vout*R1) / (VCC-Vout) = (5*10) / (10-5) = 10k.

Hình 2. 7 Kết nối cảm biến E3F-DS10C4


2.3.4. Ứng dụng :
- Sử dụng làm cảm biến khoảng cách.
- Làm mạch chống trộm hồng ngoại.
- Làm Robot dò đường.
- Mạch đếm sản phẩm.

2.4. ĐỘNG CƠ SERVO MG90S


2.4.1. Khái niệm

Động cơ Servo MG90S bánh răng kim loại là phiên bản nâng cấp của động cơ RC Servo 9G với
các bánh răng được làm bằng kim loại cho lực khéo khỏe và độ bền cao, động cơ có kích thước
nhỏ gọn, cách điều khiển giống như các động cơ RC Servo phổ biến trên thị trường hiện nay:
MG996, MG995, 9G,… Phù hợp cho nhiều ứng dụng khác nhau: Robot cánh tay máy, robot
nhện, cơ cấu chuyển hướng, cơ cấu quay góc,…

Trang 14
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

Hình 2. 8 Động cơ servo 996G


2.4.2. Thông số kỹ thuật
 Model: MG90S servo
 Điện áp hoạt động: 4.8 ~ 6VDC
 Stall Torque: 1.8kg/cm(4.8V), 2.2kg/cm(6V)
 Operating Speed: 0.1sec/60degree(4.8V), 0.08sec/60degree(6V)
 Bánh răng: Kim loại.
 Độ dài dây nối: 175mm
 Trọng lượng: about 13.4g
 Kích thước: 22.8 x 12.2 x 28.5mm

Phương pháp điều khiển PWM

 Độ rộng xung 0.5ms ~ 2.5ms tương ứng 0-180 độ


 Tần số 50Hz, chu kỳ 20ms

Hình 2. 9 Kích thước servo MG90S

Trang 15
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
2.5.ĐỘNG CƠ MOTOR LK0195

2.5.1. Khái niệm

Động cơ một chiều DC (DC là từ viết tắt của "Direct Current Motors") là Động cơ điều khiển
bằng dòng có hướng xác định hay nói dễ hiểu hơn thì đây là loại động cơ chạy bằng nguồn điện
áp DC- điện áp 1 chiều (khác với điện áp AC xoay chiều). Đầu dây ra của đông cơ thường gồm
hai dây (dây nguồn - VCC và dây tiếp đất - GND). DC motor là một động cơ một chiều với cơ
năng quay liên tục.

2.5.2. Phân loại

Động cơ điện 1 chiều phân loại theo kích từ thành những loại sau:

- Kích từ độc lập.


- Kích từ song song.
- Kích từ nối tiếp.
- Kích từ hỗn hợp.

Với mỗi 1 loại động cơ điện 1 chiều như trên thì có các ứng dụng khác nhau. Nhưng trên thực
tế, ta chủ yếu tiếp xúc với loại động cơ DC công suất thấp có phần Stator sử dụng nam châm
vĩnh cửu nên thông thường là không cần đến phần kích từ cho động cơ. Vì vậy việc phân loại
trên mang tính chất tham khảo để các bác có thể tìm hiểu thêm và sâu rộng hơn. Ta nói đến và
quan tâm tới kích từ cho động cơ DC khi nói đến các loại động cơ DC công suất lớn, Stator của
động cơ không phải là nam châm vĩnh cửu mà là nam châm điện. Phần nam châm điện này cũng
gồm lõi thép kỹ thuật và các bó dây. Để Stator biến thành nam châm điện ta cần phải cấp điện
cho phần Startor của nó, khi đó ta gọi nó là kích từ. Như vậy với những loại động cơ DC chúng
ta tiếp cận không cần phải quan tâm tới "kích từ" của nó.

Trang 16
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
2.5.3. Cấu tạo

Hình 2. 10 Động cơ motor LK0195


Gồm có 3 phần chính stator (phần cảm), rotor (phần ứng), và phần cổ góp - chỉnh lưu.
- Stator của động cơ điện 1 chiều thường là 1 hay nhiều cặp nam châm vĩnh cửu, hay nam
châm điện.
- Rotor có các cuộn dây quấn và được nối với nguồn điện một chiều.
- Bộ phận chỉnh lưu, nó có nhiệm vụ là đổi chiều dòng điện trong khi chuyển động quay
của rotor là liên tục. Thông thường bộ phận này gồm có một bộ cổ góp và một bộ chổi
than tiếp xúc với cổ góp.
2.5.4. Nguyên lý hoạt động
Pha 1: Từ trường của rotor cùng cực với stator, sẽ đẩy nhau tạo ra chuyển động quay của rotor.
Pha 2: Rotor tiếp tục quay
Pha 3: Bộ phận chỉnh điện sẽ đổi cực sao cho từ trường giữa stator và rotor cùng dấu, trở lại
pha 1
Nếu trục của một động cơ điện một chiều được kéo bằng 1 lực ngoài, động cơ sẽ hoạt động
như một máy phát điện một chiều, và tạo ra một sức điện động cảm ứng Electromotive force
(EMF). Khi vận hành bình thường, rotor khi quay sẽ phát ra một điện áp gọi là sức phản điện
động counter-EMF (CEMF) hoặc sức điện độngđối kháng, vì nó đối kháng lại điện áp bên ngoài
đặt vào động cơ. Sức điện động này tương tự như sức điện động phát ra khi động cơ được sử
dụng như một máy phát điện (như lúc ta nối một điện trở tải vào đầu ra của động cơ, và kéo trục
động cơ bằng một ngẫu lực bên ngoài). Như vậy điện áp đặt trên động cơ bao gồm 2 thành phần:
sức phản điện động, và điện áp giáng tạo ra do điện trở nội của các cuộn dây phần ứng.
2.5.5. Ứng dụng
Motor có trong những vật dụng hàng ngày như quạt điện, máy bơm, máy ép nước mía. Motor
được sử dụng trong ngành chế tạo robotics. Và thường được sử dụng cho động cơ có mật độ

Trang 17
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
năng lượng cao. Sử dụng trong thiết bị cơ khí để di chuyển hoặc kiểm soát một cơ chế hay hệ
thống (Actuator) Dùng trong động cơ thủy lực, có chức năng chuyển đổi năng lượng của dòng
chất lỏng áp lực vào trong chuyển động cơ học. Motor trong các máy tời, kéo vật nặng theo
phương thẳng đứng. Motor dùng trong dây chuyền chế tạo máy nghiền đá Motor dùng làm máy
cắt các vật liệu cứng như sắt, thép…hoặc dùng trong máy cưa gỗ dày.
2.6. MODULE RELAY 1 KÊNH 5V
2.6.1. Ưu điểm
Module sử dụng Relay tốt, đảm bảo hoạt động ổn định, lâu dài.
Trên module có opto để cách ly dòng ngược về, hiệu suất ổn định.
Có thể set các mức cao thấp bằng cách thiết lập jumper trên module
Có Led báo nguồn màu xanh, Led báo trạng thái Relay màu đỏ.
Kết nối module với mạch điều khiển đơn giản.
2.6.2. Thông số kỹ thuật
Thông số Giá trị
Điện áp tải tối đa AC 250V-10A / DC 30V-10A
Điện áp điều khiển 5 VDC
Dòng kích Relay 5mA
Trạng thái kích Mức thấp (0V)
Đường kính Lỗ ốc 3.1 mm
-Kích thước 50 * 26 * 18.5 mm
Bảng 2.5 : Thông số Module relay 1 kênh 5V

Hình 2. 11 Module relay 1 kênh 5V

Trang 18
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
2.7.MÀN HÌNH LCD1602
2.7.1. Khái niệm
LCD1602 là một màn hình tinh thể lỏng đặc trưng mà nhiều người đam mê vi điều khiển tiếp
xúc với trước đó. Chip điều khiển chính của nó là HD44780 hoặc các chip tương thích khác, có
khả năng hiển thị 2 dòng với mỗi dòng 16 ký tự, màn hình có độ bền cao, rất phổ biến. Hầu hết
những người mới bắt đầu tiếp xúc với nó, dễ sử dụng thích hợp cho làm dự án.
2.7.2. Cấu tạo
- Đ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á
- Khoảng cách giữa hai chân kết nối là 0.1inch tiện dụng khi kết nối với Breadboard.
- 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, đi dâ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

Chân Mô tả Giá trị
hiệu

1 VSS GND 0V

2 VCC 5V

3 V0 Độ tương phản

Lựa chọn thanh - RS=0(Mức thấp) chọn thanh ghi lệnh.


4 RS
ghi - RS=1(Mức cao) chọn thanh ghi dữ liệu.

Chọn thanh ghi - R/W=0 Thanh ghi viết.


5 R/W
đọc/viết dữ liệu - R/W=1 Thanh ghi đọc.

6 E Enable

7 DB0 Chân truyền dữ 8 Bit


liệu DB0  DB7
8 DB1

9 DB2

10 DB3

Trang 19
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
11 DB4

12 DB5

13 DB6

14 DB7

Cực dương led


15 A 0V  5V
nền

16 K Cực âm led nền 0V

Bảng 2.6: Thông số kỹ thuật của LCD1602

Hình 2. 12 Màn hình LCD 1602


2.7.3. Nguyên lý hoạt động
LCD_R/W: Tín hiệu quy định chiều trao đổi thông tin trên kênh dữ liệu DB [7:0], nếu R/W
=1 thì thiết bị điều khiển dọc thông tin từ LCD, nếu R/W =0 thì thiết bị điều khiển ghi thông tin
lên LCD. Thông thường thông tin được ghi lên LCD là chính nên R/W =0.
LCD_E (Enable): Chân cho phép chốt dữ liệu trên kênh dữ liệu. Để chốt dữ liệu xung này
phải dữ tích cực trong khoảng thời gian tối thiểu Tw>=450 (ns). Hình vẽ dưới đây thể hiện giãn
đồ dùng cho quá trình đọc và ghi dữ liệu trên LCD, với các tham số thời gian.
2.7.4. Ứng dụng
LCD1602 Xanh Lá 5V ứng dụng để hiển thị chữ, số, đoạn tin….
Thiết kế nhỏ gọn, cứng cáp, độ bền cao.
Được sử dụng rộng rãi và ứng dụng trong các dự án: Nhà thông minh, vườn rau thông minh,
dây chuyền sản xuất, các thiết bị thông minh….

Trang 20
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
2.8. MODULE I2C

2.8.1. Khái niệm

Hình 2. 13 Module 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. Thay vì mất 6 chân vi điều khiển để kết
nối với LCD 16x2 ( RS, EN, D7, D6, D5 và D4 ) thì module I2C giúp 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 16x2, LCD
20x4,...) và tương thích với hầu hết các vi điều khiển hiện nay

2.8.2. 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.
Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.

2.8.3. Ư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.

2.8.4. Nhược điểm , các lỗi thường gặp

Trang 21
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
Hiển thị một dãy ô vuông.
Màn hình chỉ in ra một ký tự đầu.
Màn hình nhấp nháy.

Module I2C LCD 16×2 Arduino UNO

GND GND

VCC 5V

SDA A4/SDA

SCL A5/SCL

Bảng 2.7 : Giao tiếp I2C ICD với Arduino

2.9 MẠCH HẠ ÁP DC LM2596

2.9.1 Thông số kỹ thuật

Điện áp đầu vào: Từ 3V đến 30V.


Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V.
Dòng đáp ứng tối đa là 3A.
Hiệu suất: 92%
Công suất: 15W
Kích thước: 45 (dài) * 20 (rộng) * 14 (cao) mm

Hình 2. 14 Mạch hạ áp DC LM2596

Trang 22
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
CHƯƠNG 3: TÍNH TOÁN, THIẾT KẾ VÀ THI CÔNG
3.1. SƠ ĐỒ KHỐI

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


Chi tiết các khối:
- Khối nguồn: Gồm các linh kiện tác động đến công suất, dòng điện (Adapter, Module
nguồn…) nhằm mục đích cung cấp năng lượng thích hợp cho mô hình hệ thống.
- Khối xử lý trung tâm:
 Arduino Uno R3
- Khối xử lý màu sắc :
 Cảm biến màu TCS 34725
- Khối cảm biến :
 Cảm biến hồng ngoại E3F DS10C4
- Khối động cơ:
 Động cơ Servo MG90G
- Khối băng chuyền :
 Động cơ Motor LK0195

Trang 23
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
3.2. LƯU ĐỒ THUẬT TOÁN
Lưu đồ là một loại sơ đồ biểu diễn một thuật toán hoặc một quá trình, biểu hiện các bước
công việc dưới dạng các loại hình hộp khác nhau theo thứ tự được biểu diễn bởi các mũi tên. Sơ
đồ này thể hiện giải pháp cho vấn đề cần giải quyết từng bước từng bước một.

Hình 3. 2 lưu đồ thuật toán


3.3. NGUYÊN LÝ HOẠT ĐỘNG
Khi được cấp năng lượng mạch sẽ hoạt động theo chương trình được thiết lập sẵn trên
Arduino Uno R3 .
Chu trình hoạt động của hệ thống này sẽ bắt đầu từ sư thu nhận tín hiệu của các cảm biến , tín
hiệu sẽ truyền về trung tâm xử lý . Các tín hiệu sau khi được trung tâm xử lý thì xuất các lệch tương
thích cho Servo thực hiện theo đúng yêu cầu đề ra .
Trang 24
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

3.4.GIỚI THIỆU , THIẾT KẾ HỆ THỐNG


3.4.1. Giới thiệu
Việc áp dụng Arduino trong môi trường công nghiệp sản xuất là hết sức khả thi nhất là trong thời
đại hội nhập công nghiệp hoá hiện đại hoá hiện nay .
Khi sản phẩm trên băng tải đi qua các loại cảm biến được thiết kế với động cơ Servo để phân
loại sản phẩm theo màu sắc, điều này giúp chúng ta hiểu được phần nào dây chuyền phân loại sản
phẩm trong thực tế cụ thể là các khu chế xuất, sản xuất công nghiệp.
3.4.2. Thiết kế hệ thống
3.4.2.1. Khối xử lý trung tâm
Khối xử lý trung tâm hay chính là Arduino Uno R3 với vi điều khiển atmega328P đi kèm với giao
diện USB.

Hình 3. 3 Sơ đồ chân của Atmega832P trong Arduino Uno R3


Phần mềm nạp code cho Arduino:
Trang 25
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
Arduino là môi trường phát triển tích hợp mã nguồn mở, cho phép người dùng dễ dàng viết
code và tải nó lên board mạch, được viết bằng Java dựa trên ngôn ngữ lập trình và phần mềm mã
nguồn mở khác.

Hình 3. 4 Phần mềm Arduino


Ngôn ngữ phổ quát cho Arduino là C và C++. Do đó phần mềm phù hợp với những người dùng
quen thuộc các ngôn ngữ này.
Phần mềm gồm những mảng thư viện phong phú như: EEPROM, Firmata, GSM, Servo, TFT,
Wifi… Và các mảng thư viện ngày càng đa dạng nhờ sự đóng góp của cộng đồng Arduino trên
toàn thế giới.
Hướng dẫn sử dụng Arduino IDE:
Bước 1: Nên tạo một thư mục để lưu các chương trình lập trình cho Arduino.
Bước 2: Mở chương trình Arduino IDE có giao diện như sau:

Hình 3. 5 Giao diện chính Aruino IDE


Bước 3: Tiến hành chọn File rồi Open để tạo File chương trình mới

Trang 26
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
Bước 4: Sau khi điều chỉnh xong thông tin cho File mới thì tiến hành biên soạn chương
trình

Hình 3. 6 Bảng điều khiển trong phần mềm Khối cảm biến
3.4.2.2. Sờ đồ kết nối:

Hình 3. 7 Sơ đồ kết nối Arduino với servo MG90S

Trang 27
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

Hình 3. 8 Sơ đồ kết nối Arduino với cảm biến E3F

Hình 3. 9 Sơ đồ kết nối Arduino với Module relay

Trang 28
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

Hình 3. 10 Sơ đồ kết nối Arduino với I2CLCD

Hình 3. 11 Kết nối cảm biến màu sắc

Trang 29
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

Hình 3.12: Kết nối mạch hạ áp LM2596

MÔ PHỎNG MATLAB

Hình 3. 13 Mô phỏng Matlab

Trang 30
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
3.5.MÔ PHỎNG TRÊN PROTEUS

Hình 3. 14 Mô phỏng hệ thông trên Proteus


Do không có thư viện cảm biến màu sắc và vật cản nên nhóm em đã thay đổi chương trình để
mô phỏng sát với thực tế nhất. thay thế cảm biến màu bằng 3 nút nhấn, và cảm biến vật cản bằng
nút nhấn.

Trang 31
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
CHƯƠNG 4: TỔNG KẾT
4.
4.1.KẾT LUẬN
4.1.1. Kết quả đạt được
Mô hình phân loại sản phẩm theo màu sắc.
Chương trình matlab mô phỏng.

Hinh 4 1 Mô hình sản phẩm.


4.1.2. Đánh giá mô hình
Hệ thống xử lý tốt yêu cầu của đồ án.

Trang 32
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
Tạo được một mô hình phân loại sản phẩm theo màu sắc khá ổn định và mang tính thực tế .
Hiện nay số lượng sản phẩm cần phân loại khá nhiều.
Phạm vi sử dụng có thể thay đổi tùy theo nhu cầu thực tế . Không chỉ phân loại ớt ngọt mà còn
có thể dùng phân loại cho các loại nông sản khác ( theo màu sắc như táo, cà chua …)
4.1.3. Ưu điểm của sản phẩm
Kích thước vừa phải, gọn nhẹ nên vận chuyển khá dễ dàng, có tính thẩm mỹ trong quá trình
đi dây cũng như thiết kế mô hình.
Kinh phí ở mức phù hợp để thực hiện một đề tài học tập và nghiên cứu trong môi trường
học sinh, sinh viên.
Nghiên cứu dễ dàng và có thể mở rộng thêm.
4.1.4. Nhược điểm của sản phẩm
Tốc độ xử lý tạm ổn định tuy nhiên vẫn còn sai số.
Chỉ xử lý tuần tự mỗi lần một sản phẩm.
Quy trình thủ công vẫn còn xuất hiện ở một số bước trong quá trình phân loại sản phẩm.
4.2. HƯỚNG KHẮC PHỤC VÀ PHÁT TRIỂN
Khắc phục các hạn chế còn tồn tại của mô hình.
Mở rộng quy mô cũng như tốc độ, số lượng màu sắc cần phân loại.
Sử dụng thư viện AI để tăng khả năng và tốc độ nhận diện sản phẩm.
Phát triển xử lý nhiều tín hiệu cùng một lúc thay vì chỉ xử lý một cách tuần tự lần một sản
phẩm.
Thiết kế hệ thống điều khiển thông minh, tiện dụng hơn.
Mở rộng thêm các khâu đa nhiệm trong hệ thống hơn trước và sau khi phân loại sản phẩm
xong.
Tăng hiệu suất làm việc cũng như tốc độ của hệ thống.
Thiết kế bộ phận đưa sản phẩm tới thay vì sử dụng tay.
Sử dụng khí nén, cánh tay robot để gắp hay đẩy sản phẩm ra khỏi băng tải thay vì điều khiển
động cơ servo theo góc quay.

Trang 33
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi

Phụ lục 1: chương trình proteus:


Chương trình nạp mô phỏng:

#include <Servo.h>
#include <Wire.h> // Gọi thư viện I2C để sử dụng các thư viện I2C
#include <LiquidCrystal_I2C.h> // Thư viện LCD I2C
LiquidCrystal_I2C lcd(0x27,16,2); // Khai báo địa chỉ I2C (0x27 or 0x3F) và LCD
16x02
int nn1=2,nn2=3,nn3=4; // nút nhấn
int tt1,tt2,tt3; // lấy trạng thái nút nhấn
int doo=0,tim=0,vang=0,tong=0,st=0 ; //so do tim vang, tong, bat dau
int tgdo=0,tgti=0,tgva=0; // các biến trung gian nhận biết màu gì được đưa vào
int cbd=5,cbv=6; // chân cảm biến nhận diện vật
int bt=13; // chân điều khiển băng tải
int cbdo,cbva; // lấy tín hiệu cảm biến vang đỏ
int ndo=7,nvang=8,ntim=9;

Servo svdo;
Servo svva;

void setup()
{
svdo.attach(11);
svdo.write (180);
svva.attach(12);
svva.write (180);
lcd.init(); //Khởi tạo màn hình LCD
lcd.backlight(); //Bật đèn màn hình lCD
pinMode(nn1, INPUT_PULLUP);
pinMode(nn2, INPUT_PULLUP);
pinMode(nn3, INPUT_PULLUP);
pinMode(ndo, INPUT_PULLUP);
pinMode(nvang, INPUT_PULLUP);
pinMode(ntim, INPUT_PULLUP);
pinMode(cbd, INPUT_PULLUP);

Trang 34
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
pinMode(cbv, INPUT_PULLUP);
pinMode(bt, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("r:");
lcd.setCursor(2, 0);
lcd.print(doo);
lcd.setCursor(6,0 );
lcd.print("y:");
lcd.setCursor(8, 0);
lcd.print(vang);
lcd.setCursor(0,1);
lcd.print("p:");
lcd.setCursor(2, 1);
lcd.print(tim);
lcd.setCursor(6, 1);
lcd.print("t:");
lcd.setCursor(8, 1);
lcd.print(tong);
lcd.setCursor(13, 0);
lcd.print("STO");

Serial.begin(9600);
}

void loop()
{

tt1 = digitalRead(nn1); // đọc nút nhấn


tt2 = digitalRead(nn2);
tt3 = digitalRead(nn3);
cbdo = digitalRead(cbd); // đọc cảm biến vật cản
cbva = digitalRead(cbv);

Trang 35
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
if( digitalRead(ndo) == 0 )
{
tgdo = 1;
Serial.print(" Do ");
Serial.println(tgdo);
}

if( digitalRead(nvang) == 0 )
{
tgva=1;
Serial.print(" vang ");
Serial.println(tgva);
}

if( digitalRead(ntim) == 0 )
{
tgti=1;
Serial.print(" vtim ");
Serial.println(tgti);
}

if ( tt3==0 ) //reset
{
tong=0;
vang=0;
doo=0;
tim=0;
lcd.setCursor(2, 0);
lcd.print(" ");
lcd.setCursor(2, 0);
lcd.print("0");
lcd.setCursor(8, 0);
lcd.print(" ");
lcd.setCursor(8, 0);
lcd.print("0");

Trang 36
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
lcd.setCursor(2, 1);
lcd.print(" ");
lcd.setCursor(2, 1);
lcd.print("0");
lcd.setCursor(8, 1);
lcd.print(" ");
lcd.setCursor(8, 1);
lcd.print("0");

if ( tt1 == 0 ) // start
{
st=1;
lcd.setCursor(13, 0);
lcd.print("STA");
digitalWrite(bt,HIGH);
}

if ( tt2 == 0 ) // stop
{
st=0;
lcd.setCursor(13, 0);
lcd.print("STO");
digitalWrite(bt,LOW);
}

if ( st == 1)
{

if ( tgdo == 1 )
{
if (cbdo == 0)
{
doo++;

Trang 37
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
tong++;
lcd.setCursor(2, 0);
lcd.print(doo);
lcd.setCursor(8, 1);
lcd.print(tong);
tgdo=0;
svdo.write (145);
delay(500);
svdo.write (180);
}
}
if ( tgva == 1 )
{
if (cbva == 0)
{
vang++;
tong++;
lcd.setCursor(8, 0);
lcd.print(vang);
lcd.setCursor(8, 1);
lcd.print(tong);
tgva=0;
svva.write (145);
delay(500);
svva.write (180);
}
}
if ( tgti == 1 )
{
if (cbva == 0)
{
tim++;
tong++;
lcd.setCursor(2, 1);
lcd.print(tim);
lcd.setCursor(8, 1);

Trang 38
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
lcd.print(tong);
tgti=0;
}
}
}
}

Phụ lục 2: chương trình matlab


function varargout = ML(varargin)
% ML MATLAB code for ML.fig
% ML, by itself, creates a new ML or raises the existing
% singleton*.
%
% H = ML returns the handle to a new ML or the handle to
% the existing singleton*.
%
% ML('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in ML.M with the given input arguments.
%
% ML('Property','Value',...) creates a new ML or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before ML_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to ML_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help ML

% Last Modified by GUIDE v2.5 17-Jun-2022 23:00:03

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @ML_OpeningFcn, ...
'gui_OutputFcn', @ML_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);

Trang 39
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before ML is made visible.


function ML_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to ML (see VARARGIN)

% Choose default command line output for ML


handles.output = hObject;

% Update handles structure


guidata(hObject, handles);
global ddo dvang dxanh tong tgdo tgvang tgxanh batdau anu sv1 sv2;
anu=arduino('com3','uno');
writeDigitalPin(anu,'D13',0);
sv1=servo(anu,'D11');
sv2=servo(anu,'D12');
writePosition(sv1,1);
writePosition(sv2,1);
ddo = 0 ;
dvang = 0 ;
dxanh = 0 ;
tong = 0 ;
tgdo = 0 ;
tgvang = 0 ;
tgxanh = 0 ;
batdau = 0 ;
set(handles.db1,'string','Dung');

% UIWAIT makes ML wait for user response (see UIRESUME)


% uiwait(handles.figure1);

Trang 40
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
% --- Outputs from this function are returned to the command line.
function varargout = ML_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


varargout{1} = handles.output;

% --- Executes on button press in sta.


function sta_Callback(hObject, eventdata, handles)
% hObject handle to sta (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

global batdau anu;


batdau = 1 ;
set(handles.db1,'string','Chay');
writeDigitalPin(anu,'D13',1);

% --- Executes on button press in ret.


function ret_Callback(hObject, eventdata, handles)
% hObject handle to ret (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global ddo dvang dxanh tong;
ddo = 0 ;
dvang = 0 ;
dxanh = 0 ;
tong = 0 ;
set(handles.do1,'string',num2str(ddo));
set(handles.vang1,'string',num2str(dvang));
set(handles.xanh1,'string',num2str(dxanh));
set(handles.tong1,'string',num2str(tong));

% --- Executes on button press in sto.


function sto_Callback(hObject, eventdata, handles)
% hObject handle to sto (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global batdau anu;
batdau = 0 ;

Trang 41
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
set(handles.db1,'string','Dung');
writeDigitalPin(anu,'D13',0);

% --- Executes on button press in do0.


function do0_Callback(hObject, eventdata, handles)
% hObject handle to do0 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global tgdo batdau tgvang tgxanh;
if batdau == 1 && tgvang == 0 && tgxanh == 0
set(handles.tdo,'string','1');
tgdo = 1;
end

% --- Executes on button press in xanh0.


function xanh0_Callback(hObject, eventdata, handles)
% hObject handle to xanh0 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global tgxanh batdau tgdo tgvang;
if batdau == 1 && tgdo == 0 && tgvang == 0
set(handles.txanh,'string','1');
tgxanh = 1;
end

% --- Executes on button press in vang0.


function vang0_Callback(hObject, eventdata, handles)
% hObject handle to vang0 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global tgvang batdau tgdo tgxanh ;
if batdau == 1 && tgdo == 0 && tgxanh == 0
set(handles.tvang,'string','1');
tgvang = 1;
end

% --- Executes on button press in cb1.


function cb1_Callback(hObject, eventdata, handles)
% hObject handle to cb1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global ddo dvang dxanh tong tgdo batdau sv1;

Trang 42
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
if batdau == 1 && tgdo == 1
tgdo = 0;
ddo = ddo + 1;
tong= ddo + dvang +dxanh;
set(handles.tdo,'string',' ');
set(handles.do1,'string',num2str(ddo));
set(handles.tong1,'string',num2str(tong));
writePosition(sv1,0.85);
pause(0.1);
writePosition(sv1,0.80);
pause(0.1);
writePosition(sv1,0.78);
pause(0.1);
writePosition(sv1,0.75);
pause(1.5);
writePosition(sv1,1);
end

% --- Executes on button press in cb2.


function cb2_Callback(hObject, eventdata, handles)
% hObject handle to cb2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global ddo dvang dxanh tong tgvang tgxanh batdau sv2;
if batdau == 1 && tgvang == 1
tgvang = 0;
dvang = dvang + 1;
tong= ddo + dvang +dxanh;
set(handles.tvang,'string',' ');
set(handles.vang1,'string',num2str(dvang));
set(handles.tong1,'string',num2str(tong));
writePosition(sv2,0.85);
pause(0.1);
writePosition(sv2,0.80);
pause(0.1);
writePosition(sv2,0.78);
pause(0.1);
writePosition(sv2,0.75);
pause(1.5);
writePosition(sv2,1);
end
if batdau == 1 && tgxanh == 1
tgxanh = 0;
dxanh = dxanh + 1;
tong= ddo + dvang + dxanh;

Trang 43
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
set(handles.txanh,'string',' ');
set(handles.xanh1,'string',num2str(dxanh));
set(handles.tong1,'string',num2str(tong));
end

% --- Executes during object creation, after setting all properties.


function db1_CreateFcn(hObject, eventdata, handles)
% hObject handle to db1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% --- Executes during object creation, after setting all properties.


function do0_CreateFcn(hObject, eventdata, handles)
% hObject handle to do0 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% --- Executes on button press in retall.


function retall_Callback(hObject, eventdata, handles)
% hObject handle to retall (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global ddo dvang dxanh tong tgdo tgvang tgxanh batdau ;
ddo = 0 ;
dvang = 0 ;
dxanh = 0 ;
tong = 0 ;
tgdo = 0 ;
tgvang = 0 ;
tgxanh = 0 ;
batdau = 0 ;
set(handles.db1,'string','Dung');
set(handles.do1,'string',num2str(ddo));
set(handles.vang1,'string',num2str(dvang));
set(handles.xanh1,'string',num2str(dxanh));
set(handles.tong1,'string',num2str(tong));
set(handles.txanh,'string',' ');
set(handles.tdo,'string',' ');
set(handles.tvang,'string',' ');

Phụ lục 3: chương trình chạy mô hình thực tế


#include <Adafruit_TCS34725.h>

Trang 44
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
Adafruit_TCS34725 tcs =
Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS,
TCS34725_GAIN_4X);
#include <Servo.h>
#include <Wire.h> // Gọi thư viện I2C để sử dụng các thư viện
I2C
#include <LiquidCrystal_I2C.h> // Thư viện LCD I2C
LiquidCrystal_I2C lcd(0x27,16,2); // Khai báo địa chỉ I2C (0x27 or
0x3F) và LCD 16x02
int nn1=2,nn2=3,nn3=4; // nút nhấn
int tt1,tt2,tt3; // lấy trạng thái nút nhấn
int doo=0,xanh=0,vang=0,tong=0,st=0 ; //so do tim vang, tong, bat dau
int tgdo=0,tgxa=0,tgva=0; // các biến trung gian nhận biết màu gì
được đưa vào
int cbd=5,cbv=6; // chân cảm biến nhận diện vật
int bt=13; // chân điều khiển băng tải
int cbdo,cbva; // lấy tín hiệu cảm biến vang đỏ

Servo svdo;
Servo svva;

void setup()
{
svdo.attach(11);
svdo.write (180);
svva.attach(12);
svva.write (180);
lcd.init(); //Khởi tạo màn hình LCD
lcd.backlight(); //Bật đèn màn hình lCD
pinMode(nn1, INPUT_PULLUP);
Trang 45
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
pinMode(nn2, INPUT_PULLUP);
pinMode(nn3, INPUT_PULLUP);
pinMode(cbd, INPUT);
pinMode(cbv, INPUT);
pinMode(bt, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("r:");
lcd.setCursor(2, 0);
lcd.print(doo);
lcd.setCursor(6,0 );
lcd.print("y:");
lcd.setCursor(8, 0);
lcd.print(vang);
lcd.setCursor(0,1);
lcd.print("g:");
lcd.setCursor(2, 1);
lcd.print(xanh);
lcd.setCursor(6, 1);
lcd.print("t:");
lcd.setCursor(8, 1);
lcd.print(tong);
lcd.setCursor(13, 0);
lcd.print("STO");

Serial.begin(9600);
}

void loop()
{
uint16_t r, g, b, c, colorTemp, lux;
tcs.getRawData(&r, &g, &b, &c);
Trang 46
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
colorTemp = tcs.calculateColorTemperature_dn40(r, g, b, c);
lux = tcs.calculateLux(r, g, b);

tt1 = digitalRead(nn1); // đọc nút nhấn


tt2 = digitalRead(nn2);
tt3 = digitalRead(nn3);
cbdo = digitalRead(cbd); // đọc cảm biến vật cản
cbva = digitalRead(cbv);

if( r > 15 && r < g && g < b && lux < r)


{
tgdo = 1;
Serial.print(" Do ");
Serial.println(tgdo);
}

if( r < b && b < g && colorTemp > 8000 && colorTemp < 10996 )
{
tgxa=1;
Serial.print(" xanh ");
Serial.println(tgxa);
}
if( r < lux && b < 59 && colorTemp < 7000 )
{
tgva=1;
Serial.print(" vang ");
Serial.println(tgva);
tgxa=0;
}
Trang 47
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
if ( tgva == 1) tgxa=0;

if ( tt3==0 ) //reset
{
tong=0;
vang=0;
doo=0;
xanh=0;
lcd.setCursor(2, 0);
lcd.print(" ");
lcd.setCursor(2, 0);
lcd.print("0");
lcd.setCursor(8, 0);
lcd.print(" ");
lcd.setCursor(8, 0);
lcd.print("0");
lcd.setCursor(2, 1);
lcd.print(" ");
lcd.setCursor(2, 1);
lcd.print("0");
lcd.setCursor(8, 1);
lcd.print(" ");
lcd.setCursor(8, 1);
lcd.print("0");

if ( tt1 == 0 ) // start
{
st=1;
lcd.setCursor(13, 0);
Trang 48
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
lcd.print("STA");
digitalWrite(bt,HIGH);
}

if ( tt2 == 0 ) // stop
{
st=0;
lcd.setCursor(13, 0);
lcd.print("STO");
digitalWrite(bt,LOW);
}

if ( st == 1)
{

if ( tgdo == 1 )
{
if (cbdo == 0)
{
doo++;
tong++;
lcd.setCursor(2, 0);
lcd.print(doo);
lcd.setCursor(8, 1);
lcd.print(tong);
tgdo=0;
svdo.write (160);
delay(50);
svdo.write (155);
delay(100);
svdo.write (150);
Trang 49
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
delay(100);
svdo.write (145);
delay(100);
svdo.write (143);
delay(1500);
svdo.write (180);
}
}
if ( tgva == 1 )
{
if (cbva == 0)
{
vang++;
tong++;
lcd.setCursor(8, 0);
lcd.print(vang);
lcd.setCursor(8, 1);
lcd.print(tong);
tgva=0;
svva.write (160);
delay(50);
svva.write (155);
delay(100);
svva.write (150);
delay(100);
svva.write (145);
delay(100);
svva.write (143);
delay(100);
svva.write (140);
delay(1500);
Trang 50
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
svva.write (180);
}
}
if ( tgxa == 1 )
{
if (cbva == 0)
{
delay(2000);
xanh++;
tong++;
lcd.setCursor(2, 1);
lcd.print(xanh);
lcd.setCursor(8, 1);
lcd.print(tong);
tgxa=0;
}
}
}
}
PHỤ LỤC HÌNH ẢNH
Hình 1 Mô phỏng mô hình...........................................................................................................6

Hình 2. 1 Arduino Uno R3............................................................................................................7


Hình 2. 2 Cấu tạo Arduino Uno R3...............................................................................................8
Hình 2. 3 Robot dò đường sử dụng Arduino Uno R3.................................................................10
Hình 2. 4 Cảm biến màu sắc TCS 34725....................................................................................11
Hình 2. 5 Cảm biến vật cản hồng ngoại E3F-DS10C4...............................................................12
Hình 2. 6 Sơ đồ chân cảm biến E3F-DS10C4.............................................................................13
Hình 2. 7 Kết nối cảm biến E3F-DS10C4...................................................................................14
Hình 2. 8 Động cơ servo 996G....................................................................................................15
Hình 2. 9 Kích thước servo MG90S............................................................................................15
Hình 2. 10 Động cơ motor LK0195............................................................................................17

Trang 51
Nhóm 4 GVHD:Đỗ Hoàng Ngân Mi
Hình 2. 11 Module relay 1 kênh 5V............................................................................................18
Hình 2. 12 Màn hình LCD 1602.................................................................................................20
Hình 2. 13 Module I2C...............................................................................................................21
Hình 2. 14 Mạch hạ áp DC LM2596...........................................................................................22

Hình 3. 1 Sơ đồ các khối………………………………………………………………….…..


23
Hình 3. 2 lưu đồ thuật toán…………………………………………………………………… 24
Hình 3. 3 Sơ đồ chân của Atmega832P trong Arduino Uno R3………………………………..25
Hình 3. 4 Phần mềm Arduino…………………………………………………………………...26
Hình 3. 5 Giao diện chính Aruino IDE.............................................................................................26
Hình 3. 6 Bảng điều khiển trong phần mềm Khối cảm biến............................................................27
Hình 3. 7 Sơ đồ kết nối Arduino với servo MG90S.........................................................................27
Hình 3. 8 Sơ đồ kết nối Arduino với cảm biến E3F.........................................................................28
Hình 3. 9 Sơ đồ kết nối Arduino với Module relay..........................................................................28
Hình 3. 10 Sơ đồ kết nối Arduino với I2CLCD...............................................................................29
Hình 3. 11 Kết nối cảm biến màu sắc...............................................................................................29
Hình 3.12: Kết nối mạch hạ áp LM2596…………………………………………………………...30
Hình 3.13: Mô phỏng matlab ……………………………………………………………………30
Hình 3. 14 Mô phỏng hệ thông trên Proteus……………………………………………………….31

Hinh 4 1 Mô hình sản phẩm…………………………………………………………………...


…...34

Trang 52

You might also like