1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án TRUYỀN ĐỘNG điện đề tài mô HÌNH đếm và PHÂN LOẠI vật gỗ THEO CHIỀU CAO DÙNG TRONG điêu KHẮC sử DỤNG ARDUINO r3

55 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mô Hình Đếm Và Phân Loại Vật Gỗ Theo Chiều Cao Dùng Trong Điêu Khắc Sử Dụng Arduino R3
Tác giả Nguyễn Tiến Bằng, Đỗ Thành Thiên Ân, Trần Văn Tư, Nguyễn Thanh Quang, Lương Toàn Thịnh
Người hướng dẫn ThS. Đỗ Hoàng Ngân Mi
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Đà Nẵng
Chuyên ngành Kỹ Thuật Điện Tử, Truyền Động Điện, Điều Khiển Tự Động
Thể loại Đồ án truyền động điện
Năm xuất bản 2022
Thành phố Đà Nẵng
Định dạng
Số trang 55
Dung lượng 1,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI (10)
    • 1.1 Tổng quan về các dây chuyền phân loại sản phẩm (10)
      • 1.1.1 Khái niệm và các kiểu dây chuyền phân loại sản phẩm (10)
        • 1.1.1.1 Khái niệm (10)
        • 1.1.1.2 Các kiểu dây chuyền phân loại sản phẩm (10)
      • 1.1.2 Dây chuyền phân loại sản phẩm theo chiều cao (10)
        • 1.1.2.1 Giới thiệu chung (10)
        • 1.1.2.2 Cấu tạo của dây chyền phân loại sản phẩm theo chiều cao (11)
      • 1.1.3 Dây chuyền sản xuất gỗ trong công nghiệp (12)
        • 1.1.3.1 Quy trình sản xuất (12)
        • 1.1.3.2 Lựa chọn khâu (12)
    • 1.2 Lý do chọn đề tài (12)
    • 1.3 Mục tiêu đề tài (13)
    • 1.4 Nội dung nghiên cứu (13)
    • 1.5 Yêu cầu dặt ra (13)
  • CHƯƠNG 2: TÌM HIỂU VỀ CẤU TRÚC ARDUINO UNO VÀ CÁC THIẾT BỊ TRONG ĐỀ TÀI (15)
    • 2.1 Tổng quan về Adruino Uno R3 (0)
      • 2.1.1 Giới thiệu về Arduino R3 (15)
      • 2.1.2 Cấu tạo của Arduino (15)
      • 2.1.3 Ứng Dụng (17)
    • 2.2 Tổng quan các linh kiện trong đề tài (17)
      • 2.2.1 IC LCM2004 (17)
        • 2.2.1.1 Giới thiệu (18)
        • 2.2.1.2 Thông số kĩ thuật (19)
      • 2.2.2 Cảm biến hồng ngoại (19)
        • 2.2.2.1 Giới thiệu (19)
        • 2.2.2.2 Thông số kĩ thuật (20)
      • 2.2.3 LCD 20x4 (22)
        • 2.2.3.1 Giới thiệu (22)
        • 2.2.3.2 Thông số kĩ thuật (22)
      • 2.2.4 Động cơ Servo MG90S (23)
        • 2.2.4.1 Giới thiệu (23)
        • 2.2.4.2 Thông số kĩ thuật (23)
      • 2.2.5 Nút nhấn (23)
        • 2.2.5.1 Giới thiệu (23)
        • 2.2.5.2 Thông số kĩ thuật (25)
      • 2.2.6 Bộ nạp cấp nguồn cho Arduino (25)
        • 2.2.6.1 Giới thiệu (25)
        • 2.2.6.2 Thông số kĩ thuật (25)
      • 2.2.7 Động cơ motor LK0195 (26)
        • 2.2.7.1 Giới thiệu (26)
        • 2.2.7.2 Thông số kĩ thuật (27)
      • 2.2.8 Mạch nguồn (27)
        • 2.2.8.1 Giới thiệu (27)
        • 2.2.8.2 Thông số kĩ thuật (28)
  • CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG (29)
    • 3.1 Giới thiệu (29)
    • 3.2 Các phần mềm thiết kế (29)
    • 3.3 Sơ đồ khối (33)
    • 3.4 Lưu đồ thuật toán (34)
    • 3.5 Xây dựng và khởi chạy chương trình mô phỏng Matlab (35)
    • 3.6 Xây dựng và khởi chạy chương trình mô phỏng Protues (35)
  • CHƯƠNG 4: TỔNG KẾT (36)
    • 4.1 Kết quả đạt được (36)
    • 4.2 Kết quả chưa đạt được (36)
    • 4.3 Ưu điểm của sản phẩm (36)
    • 4.4 Nhược điểm của sản phẩm (36)
    • 4.5 Đánh giá mô hình (36)
    • 4.6 Hướng khắc phục và phát triển (36)
    • 4.7 Kết luận (37)

Nội dung

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬTKHOA ĐIỆN – ĐIỆN TỬ BÁO CÁO ĐỒ ÁN TRUYỀN ĐỘNG ĐIỆN ĐỀ TÀI: MÔ HÌNH ĐẾM VÀ PHÂN LOẠI VẬT GỖ THEO CHIỀU CAO DÙNG TRONG ĐIÊU KHẮC... quyết định chọn đề tài “

TÌM HIỂU VỀ CẤU TRÚC ARDUINO UNO VÀ CÁC THIẾT BỊ TRONG ĐỀ TÀI

Tổng quan các linh kiện trong đề tài

I2C, viết tắt của Inter-Integrated Circuit, là một giao thức giao tiếp do Philips Semiconductors phát triển, dùng để truyền dữ liệu giữa bộ xử lý trung tâm và nhiều IC trên cùng một bảng mạch chỉ với hai đường truyền tín hiệu.

Giao thức I2C có tính đơn giản nên được sử dụng rộng rãi cho giao tiếp giữa vi điều khiển và mảng cảm biến, các thiết bị hiển thị, thiết bị IoT, EEPROMs và nhiều thiết bị khác Đây là một loại giao thức giao tiếp nối tiếp đồng bộ, nghĩa là các bit dữ liệu được truyền từng bit một theo các khoảng thời gian đều đặn được thiết lập bởi một tín hiệu đồng hồ tham chiếu Đặc điểm quan trọng của I2C là tính đồng bộ và khả năng kết nối với nhiều thiết bị trên cùng một bus, giúp tối ưu hóa thiết kế hệ thống và giảm thiểu số lượng dây dẫn cần thiết.

 Chỉ cần có hai đường bus (dây) chung để điều khiển bất kỳ thiết bị / IC nào trên mạng I2C

Trong hệ thống giao tiếp hiện đại, không cần thỏa thuận trước về tốc độ truyền dữ liệu như trong giao tiếp UART, do đó tốc độ truyền dữ liệu có thể được điều chỉnh linh hoạt bất cứ khi nào cần thiết để tối ưu hiệu suất và phù hợp với điều kiện kênh truyền biến động.

 Cơ chế đơn giản để xác thực dữ liệu được truyền

 Sử dụng hệ thống địa chỉ 7 bit để xác định một thiết bị / IC cụ thể trên bus I2C

 Các mạng I2C dễ dàng mở rộng Các thiết bị mới có thể được kết nối đơn giản với hai đườngbus chung I2C

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

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

 Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2)

 Kích thước: 41.5mm(L)x19mm(W)x15.3mm(H)T

 Trọng lượng: 5g 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

Cảm biến hồng ngoại (IR sensor) là thiết bị điện tử tự động hoạt động theo nguyên lý điện dung, dùng để đo và phát hiện bức xạ hồng ngoại Bức xạ hồng ngoại là loại ánh sáng mắt người không thể nhìn thấy được vì bước sóng của nó vượt quá khả biến của mắt khả biến Vì thế, mọi vật thể phát ra nhiệt có mức nhiệt khác biệt so với môi trường xung quanh sẽ sinh ra bức xạ hồng ngoại, giúp cảm biến IR nhận diện sự hiện diện hoặc sự thay đổi nhiệt độ.

Hình 1.4: Cảm biến hồng ngoại

 IC so sánh: LM393.Điện áp: 3.3V - 6VDC.

 Dòng tiêu thụ: Vcc = 3.3V: 23 mA Vcc = 5.0V: 43 mA.

 Khoảng cách phát hiện: 2 ~ 30 cm.

 LED báo nguồn và LED báo tín hiệu ngõ ra.

 Mức logic ngõ ra: Mức thấp - 0V: khi có vật cản.

 Mức cao - 5V: khi không có vật cản.

Hình 1.5: Sơ đồ cảm biến hồng ngoai

Màn hình text LCD2004 xanh dương/xanh lá sử dụng driver HD44780, hiển thị 4 dòng, mỗi dòng 20 ký tự; độ bền cao, rất phổ biến và có nhiều mẫu code sẵn, dễ sử dụng cho người mới học và cho các dự án.

LCD 20x4 là loại màn hình tinh thể lỏng nhỏ dùng để hiển thị chữ hoặc số trong bảng mã ASCII Mỗi ô của Text LCD bao gồm các chấm tinh thể lỏng, các chấm này kết hợp với nhau theo trình tự “ẩn” hoặc “hiện” sẽ tạo nên các kí tự cần hiển thị và mỗi ô chỉ hiển thị được một kí tự duy nhất.

LCD 20x4 là loại màn hình LCD có 4 dòng, mỗi dòng hiển thị tối đa 20 ký tự Loại màn hình LCD 20x4 này được sử dụng phổ biến trong nhiều loại mạch điện và vi điều khiển nhờ kích thước nhỏ gọn, dễ đọc và khả năng trình bày thông tin ở bốn dòng song song.

 Màu sắc: xanh lá hoặc xanh dương

 Module hỗ trợ giao tiếp với vi điều khiển: LCD I2C 16x2

Động cơ Servo MG90S và Servo SG90 (góc quay 180°) là những loại servo phổ biến được dùng trong các mô hình điều khiển nhỏ và các ứng dụng như cánh tay robot Chúng có tốc độ phản ứng nhanh, được tích hợp sẵn driver điều khiển động cơ, và dễ dàng điều khiển góc quay bằng phương pháp PWM (Pulse Width Modulation) để đạt độ chính xác cao trong điều khiển vị trí.

 Điện áp hoạt động: 4.8V ~ 6V DC

 Tốc độ quay: 0.12 giây/60° (4.8V) , 0.1 giây/60° (6V)

 Mômen xoắn: 1.8kg/cm (4.8V) , 2.5kg/cm (6V)

 Góc quay: 180°Bánh răng: nhựaKích thước: 22.5 * 11.8 * 30 mm

 Chiều dài dây điện: 175mmTrọng lượng: 9g

 Dây cam: XungDây đỏ: Vcc (4.8V ~ 6V)

Nút nhấn/công tắc là một loại khí cụ dùng để đóng hoặc ngắt các thiết bị điện, máy móc hoặc một số quá trình trong điều khiển Hầu hết nút ấn được làm từ nhựa hoặc kim loại, và hình dạng cũng như kích thước của nút được thiết kế để phù hợp với ngón tay và bàn tay của người vận hành, giúp thao tác dễ dàng và chính xác.

Cấu tạo của nút ấn gồm: hệ thống lò xo, hệ thống các tiếp điểm thường hở (NO) – thường đóng (NC) và vỏ bảo vệ.

Đối với nút nhấn nhả, các tiếp điểm sẽ chuyển trạng thái khi chịu tác động lực vào nút nhấn và quay về trạng thái ban đầu ngay khi lực tác động bị ngắt.

Đối với nút nhấn giữ, các tiếp điểm sẽ chuyển trạng thái mỗi khi có lực tác động lên nút nhấn Khi lực tác động bị ngừng, trạng thái tiếp điểm vẫn được duy trì ở trạng thái hiện tại; để đưa tiếp điểm trở về trạng thái ban đầu, người dùng nhấn nút thêm một lần nữa.

Nguyên lý hoạt động của nút ấn là một quy trình gồm các bước nối tiếp nhau, cụ thể như sau:

+ Khi người dùng nhấn nút, tiếp điểm động sẽ chạm vào tiếp điểm tĩnh và làm thay đổi trạng thái của tiếp điểm.

+ Trong một số trường hợp nhất định, người sử dụng sẽ cần giữ nút hoặc nhấn liên tục vào nút ấn để kích hoạt cho thiết bị hoạt động.

+ Một số loại nút nhấn khác sẽ có chốt giữ nút bật cho đến khi người sử dụng nhấn thêm lần nữa.

Hình 1.8: Hình ảnh nút nhấn

 Điện trở tiếp điểm: Nhỏ hơn 50 mohm.

 Hành trình: 5.8mm.Cách điện: 660VAC/DC.

 Điện áp đèn: 24VAC/DC, 220VAC.

2.2.6 Bộ nạp cấp nguồn cho Arduino

Mạch Giảm Áp LM2596 là một module giảm áp (buck converter) có khả năng điều chỉnh điện áp đầu ra và cung cấp dòng tối đa lên tới 3A Khi cấp nguồn 9V vào module, sau khi giảm áp có thể cấp nguồn cho tải ở mức 5V hoặc 3.3V, phù hợp cho nhiều thiết bị điện tử cần nguồn DC ổn định LM2596 là lựa chọn phổ biến cho các dự án nhúng nhờ kích thước nhỏ gọn, hiệu quả cao và chi phí phải chăng, giúp tối ưu hóa nguồn điện từ 9V xuống các mức 5V, 3.3V hoặc các điện áp khác theo nhu cầu.

Hình 1.9: Bộ nạp cấp nguồn cho Arduno

 Modune nguồn không sử dụng cách ly

 Khích thước mạch 53mm x 26mm

 Đầu ra OUPUT+, OUPUT UT-

Động cơ một chiều DC (Direct Current Motors) là loại động cơ chạy bằng nguồn điện áp một chiều và được điều khiển bằng dòng điện có hướng xác định, giúp kiểm soát tốc độ và mô-men xoắn một cách dễ dàng, phù hợp cho các ứng dụng yêu cầu điều khiển chính xác bằng nguồn điện áp DC.

 Động cơ một chiều (DC) là động cơ biến năng lượng từ dòng điện một chiều và thành cơ năng.

 Cấu tạo của động cơ điện 1 chiều thường gồm những bộ phận chính như sau:

+ Stator: là 1 hay nhiều cặp nam châm vĩnh cửu hoặc nam châm điện

+ Rotor: phần lõi được quấn các cuộn dây để tạo thành nam châm điện

+ Chổi than (brushes): giữ nhiệm vụ tiếp xúc và tiếp điện cho cổ góp

Cổ góp (commutator) là bộ phận chịu trách nhiệm tiếp xúc và chia nhỏ nguồn điện cho các cuộn dây trên rotor, cho phép dòng điện được cấp đúng cho từng cuộn dây khi rotor quay Chức năng này giúp chuyển đổi nguồn điện thành dòng điện chạy qua các cuộn dây rotor, từ đó tạo ra mô-men xoắn và vận hành động cơ một cách liên tục và ổn định Số lượng điểm tiếp xúc của cổ góp sẽ tương ứng với số cuộn dây trên rotor, đảm bảo sự đồng bộ hóa giữa nguồn điện và các cuộn dây để tối ưu hóa hiệu suất làm việc.

Hình 1.10:Phần stator của động cơ mô tơ

Hình 1.11: Phần rotor của động cơ motor

Động cơ 545 công suất cao hoạt động ở điện áp 5V-9VDC, đi kèm quạt tản nhiệt và tiêu thụ dòng điện khoảng 1.4A; để vận hành được động cơ này, bạn cần một nguồn cấp có dòng lớn để đảm bảo hoạt động ổn định, trong đó nguồn pin là lựa chọn tối ưu nhất.

 Điện áp 5V tốc độ 14000 vòng/phú

 Điện áp 6V dòng không tải 1.4A tốc độ không tải 17000 vòng/phút

 Điện áp 9V tốc độ 25000 vòng/phút

 Trọng lượng động cơ: 160 gam

Sử dụng nguồn 24V điều khiển phần động lực và 5V cho phần điều khiển Việc sử dụng nguồn riêng biệt để giúp hệ thống hoạt động ổn định hơn.

 Điện áp đầu vào: 220V AC.

 Điện áp đầu ra: 24 V DC 5A.

 Công suất: 120W.Điện áp điều chỉnh: +/-10%.

 Khả năng chống sốc: Từ 10 đến khoảng 500Hz, 2G 10 min.

 Nhiệt độ họat động: Từ -10 độ C đến 60 độ C.

THIẾT KẾ VÀ THI CÔNG

Giới thiệu

Trong Hình 1.13, mô hình hệ thống của đồ án mang tên "Mô hình đếm và phân loại vật gỗ theo chiều cao dùng trong điêu khắc bằng Arduino Uno R3" được hiện thực hóa thông qua thiết kế một mô hình phân loại sản phẩm và lập trình Arduino Việc tích hợp chức năng đếm và phân loại vật gỗ theo chiều cao bằng Arduino cho thấy ý tưởng ứng dụng Arduino trong công nghiệp sản xuất đang trở nên sáng rõ và khả thi hơn, đồng thời nâng cao hiệu quả quy trình điêu khắc và chất lượng sản phẩm.

Khi sản phẩm trên băng tải đi qua cảm biến E18-D80NK, hệ thống được thiết kế với động cơ Servo để phân loại sản phẩm và đi kèm màn hình LCD hiển thị số lượng sản phẩm đã được phân loại Thông tin này giúp hình dung rõ dây chuyền phân loại trong thực tế và hỗ trợ tối ưu hóa quy trình sản xuất.

Các phần mềm thiết kế

Arduino là môi trường phát triển tích hợp (IDE) mã nguồn mở, cho phép người dùng dễ dàng viết mã và tải chương trình lên bo mạch Arduino IDE này được viết bằng Java và dựa trên các công cụ phần mềm mã nguồn mở khác để hỗ trợ lập trình bằng C/C++ cho người dùng, đồng thời thúc đẩy sự linh hoạt và dễ tiếp cận trong phát triển ứng dụng điện tử.

Kể từ tháng 3 năm 2015, Arduino IDE (Intergrated Devalopment Editor – môi trường phát triển thích hợp) đã được phổ biến tại rất nhiều nơi với giao diện trực quan.

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 tích hợp hệ thống thư viện phong phú gồm EEPROM, Firmata, GSM, Servo, TFT và Wifi, cho phép người dùng mở rộng chức năng và dễ dàng tích hợp vào các dự án Arduino Nhờ sự đóng góp rộng rãi của cộng đồng Arduino trên toàn thế giới, ngày càng có thêm nhiều thư viện mới đa dạng và mạnh mẽ, nâng cao khả năng ứng dụng cho người dùng.

Proteus là phần mềm mô phỏng mạch điện tử do Labcenter Electronics phát triển, cho phép thiết kế và kiểm tra mạch điện một cách tiện lợi mà không cần prototyping thực tế Phần mềm mô phỏng hầu hết các linh kiện điện tử phổ biến và đặc biệt hỗ trợ cho các MCU như PIC, 8051, AVR và nhiều dòng vi điều khiển khác Với giao diện trực quan và các công cụ mô phỏng tích hợp, Proteus giúp tối ưu quá trình phát triển, giảm thiểu sai sót và tiết kiệm thời gian cho kỹ sư điện tử, nhà phát triển và sinh viên.

Phần mềm bao gồm 2 mảng chính là ISIS cho phép mô phỏng mạch điện tử và ARES dùng để vẽ mạch in.

MATLAB là phần mềm cung cấp môi trường tính toán số và lập trình do MathWorks thiết kế Nền tảng này cho phép tính toán số với ma trận, vẽ đồ thị các hàm số và biểu đồ thông tin, thực hiện các thuật toán, tạo giao diện người dùng và liên kết với các chương trình máy tính được viết bằng nhiều ngôn ngữ lập trình khác nhau.

Với thư viện Toolbox, MATLAB cho phép mô phỏng tính toán, thực nghiệm nhiều mô hình trong thực tế và kỹ thuật.

Matlab là viết tắt từ "MATrix LABoratory", được Cleve Moler phát minh vào cuối thập niên

1970, và sau đó là chủ nhiệm khoa máy tính tại Đại học New Mexico.

MATLAB, nguyên sơ được viết bởi ngôn ngữ Fortran, cho đến 1980 nó vẫn chỉ là một bộ phận được dùng nội bộ của Đại học Stanford.

Vào năm 1983, Jack Little, người từng học tại MIT và Stanford, đã viết lại MATLAB bằng ngôn ngữ C và bổ sung các thư viện phục vụ thiết kế hệ thống điều khiển, toolbox (hệ thống hộp công cụ) và mô phỏng Nhờ sự tái lập trình này, MATLAB được xây dựng thành một ngôn ngữ lập trình dựa trên ma trận (matrix-based programming language) Các cải tiến này biến MATLAB thành công cụ mạnh cho phân tích, mô phỏng và thiết kế hệ thống trong kỹ thuật và khoa học.

Một trong những người đóng vai trò chủ chốt là Steve Bangert với việc viết trình thông dịch cho MATLAB, công việc này kéo dài gần một năm Sau giai đoạn phát triển ban đầu, Jack Little kết hợp với Moler và Steve Bangert quyết định biến MATLAB thành một dự án thương mại, và The MathWorks được thành lập vào năm 1984.

Phiên bản MATLAB 1.0 ra đời vào năm 1984, được viết bằng ngôn ngữ C cho máy tính MS-DOS và được giới thiệu lần đầu tại IEEE Conference on Design and Control ở Las Vegas, Nevada Ban đầu MATLAB được phát triển nhằm hỗ trợ sinh viên trong việc sử dụng hai thư viện LINPACK và EISPACK cho đại số tuyến tính (được viết bằng Fortran) mà không cần biết lập trình Fortran.

Năm 1986, MATLAB 2 ra đời trong đó hỗ trợ UNIX.

Năm 1990 Simulink 1.0 được phát hành gói chung với MATLAB.

Vào năm 1992, MATLAB 4 đã bổ sung hỗ trợ đồ họa 2D và 3D có màu sắc và khả năng làm việc với ma trận thưa (sparse matrices) Năm đó cũng cho ra mắt MATLAB Student Edition, phiên bản MATLAB dành cho học sinh và sinh viên.

Năm 1993 MATLAB cho MS Windows ra đời Đồng thời công ty này có trang web là www.mathworks.com

Năm 1995 MATLAB cho Linux ra đời Trình dịch MATLAB có khả năng chuyển dịch từ ngôn ngữ MATLAB sang ngôn ngữ C cũng được phát hành trong dịp này.

Năm 1996 MATLAB 5 bao gồm thêm các kiểu dữ liệu, hình ảnh hóa, bộ truy sửa lỗi (debugger), và bộ tạo dựng GUI.

Năm 2000 MATLAB 6 cho đổi mới môi trường làm việc MATLAB, thay thế LINPACK và EISPACK bằng LAPACK và BLAS [2]

Năm 2002 MATLAB 6.5 phát hành đã cải thiện tốc độ tính toán, sử dụng phương pháp dịch JIT (Just in Time) và tái hỗ trợ MAC.

Năm 2004, MATLAB 7 được phát hành, mang lại khả năng làm việc với số thực đơn vị (single precision) và kiểu nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm và môi trường phân tích số liệu tương tác Đến tháng 12 năm 2008, phiên bản MATLAB 7.7 ra mắt với SP3, cải thiện Simulink và đi kèm với hơn 75 sản phẩm khác.

Năm 2009 cho ra đời 2 phiên bản 7.8 (R2009a) và 7.9 (R2009b).

Năm 2010 phiên bản 7.10 (R2010a) cũng đã được phát hành.

Matlab được sử dụng rộng rãi trong giáo dục và đào tạo kỹ thuật, nổi bật với khả năng giải các bài toán số trị, bao gồm cả đại số tuyến tính và giải tích Ứng dụng này được nhìn thấy ở nhiều lĩnh vực kỹ thuật và nghiên cứu, nơi Matlab hỗ trợ mô hình hóa, phân tích và giải quyết các bài toán phức tạp một cách hiệu quả.

Sơ đồ khối

Lưu đồ thuật toán

Hình 1.18: Lưu đồ thuật toán

Xây dựng và khởi chạy chương trình mô phỏng Protues

Hình 1.19: Mô phỏng trên protues

TỔNG KẾT

Kết quả đạt được

Sau một thời gian nghiên cứu và tìm hiểu đề tài này, “Mô hình đếm và phân loại vật gỗ theo chiều cao dùng trong điêu khắc sử dụng Arduino UNO R3” đã được thiết kế và chế tạo thành công Mô hình này cho phép đếm và phân loại vật gỗ theo chiều cao, phục vụ các hoạt động điêu khắc và chế tác gỗ Việc tích hợp Arduino UNO R3 với các yếu tố đo lường mang lại một giải pháp công nghệ hữu ích, tối ưu hóa tiến trình làm việc và hỗ trợ người làm nghề trong quá trình sản xuất.

Kết quả chưa đạt được

 Khó khăn trong việc suy nghĩ và thiết kế đề tài

 Chưa có giao diện giám sát trên máy tính

 Độ ổn định chưa tối ưu

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

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.

Đánh giá mô hình

 Mô hình đã chạy ổn định nhưng đôi lúc còn bị nhiễm cảm biến

 Đạt được yêu cầu lúc đầu đề ra

Hướng khắc phục và phát triển

 Áp dụng cho các dây chuyền sản xuất nhỏ.

 Thay đổi cảm biến để tạo ra dây chuyền phân loại dựa trên các tiêu chí khác nhau của sản phẩm.

 Khắc phục được nhược điểm để đề tài hoàn thiện hơn

 Mở rộng quy mô cũng như tốc độ, số lượng chiều cao 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.

Kết luận

Trong khoảng thời gian có hạn để hoàn thành đề án, nhóm đã đối mặt với nhiều giới hạn về kiến thức nhưng nhờ sự nỗ lực tìm hiểu đề tài và sự hướng dẫn tận tâm của ThS Đỗ Hoàng Ngân Mi, nhóm đã hoàn thiện đề tài một cách thuyết phục Sự kết hợp giữa ý chí tự lực và sự hỗ trợ của người hướng dẫn đã tạo nền tảng cho quá trình nghiên cứu và kết quả cuối cùng của dự án.

Trong quá trình thực hiện đề tài, nhóm đã tích lũy được nhiều kiến thức và kinh nghiệm quý báu từ quá trình học tập và nghiên cứu Sau khi hoàn thành đồ án, nhóm xin rút ra những nhận xét sau: công tác phối hợp và phân công nhiệm vụ hiệu quả đã nâng cao chất lượng công việc; áp dụng các phương pháp nghiên cứu và quản lý thời gian hợp lý giúp trình bày kết quả một cách rõ ràng và thuyết phục; những bài học này sẽ là nền tảng cho các dự án tương lai và đóng góp vào quá trình học tập của nhóm.

 Phần cứng là phần tương đối khó chọn vì khá nhiều chi tiết

 Phần mềm là chương trình đã được chạy mô phỏng tương đối kỹ nhưng khi chạy thực tế sẽ còn phát sinh một số lỗi không lường trước

Quá trình nghiên cứu và làm đồ án đã giúp nhóm nắm vững và củng cố các cơ sở lý thuyết đã được học ở các năm trước, đồng thời nâng cao khả năng phân tích và áp dụng kiến thức vào bài toán thực tế Quá trình này cũng cho thấy sự liên kết chặt chẽ giữa các môn học, giúp nhóm nhận ra cách thức các khía cạnh lý thuyết và kỹ năng thực hành bổ sung cho nhau Nhờ đó, nhóm có cái nhìn tổng thể về lĩnh vực nghiên cứu, tăng cường sự tự tin và chuẩn bị tốt hơn cho các dự án tương lai.

Dù trình độ và kiến thức làm đồ án còn hạn chế nên đồ án khó tránh khỏi một số sai sót, nên nhóm mong nhận được đánh giá, phản hồi và các góp ý từ thầy cô cùng các bạn để rút kinh nghiệm, bổ sung và chỉnh sửa, nhằm nâng cao tính hoàn thiện của đồ án.

Một lần nữa chúng em chân thành xin được cảm ơn sử hướng dẫn tận tình của cô “ThS Đỗ

Hoàng Ngân Mi” đã giúp đỡ chúng em hoàn thành đồ án này

These references bring together essential resources for Arduino-based projects and robotics, including the official Arduino site for foundational tutorials, and practical guidance on selecting and using 5V 5A power supplies They cover I2C LCD interfacing with Arduino, provide overviews of motor control concepts, and detail components such as MG90S servo motors and high-speed DC motors (e.g., 545-size units) powered by 5V or 9V batteries The collection also includes real-world motor specifications, performance ranges, and driving techniques to optimize speed, torque, and efficiency For software, MATLAB documentation and product pages offer timing, delay, and computational tools that complement hardware development, simulation, and control design Taken together, these references support end-to-end development—from hardware selection and circuit wiring to firmware control and performance tuning in embedded systems and hobbyist robotics.

Sách: Lập trình điều khiển với Arduino của Phạm Quang Huy - Lê Cảnh Trung

Sách: Lập trình Matlab và Ứng dụng của ThS Nguyễn Hoàng Hải, TS Nguyễn Việt Anh

Phụ lục 1: Code chương trình Matlab. function varargout = dmm(varargin)

% DMM MATLAB code for dmm.fig

% DMM, by itself, creates a new DMM or raises the existing

% H = DMM returns the handle to a new DMM or the handle to

% DMM('CALLBACK',hObject,eventData,handles, ) calls the local

% function named CALLBACK in DMM.M with the given input arguments.

% DMM('Property','Value', ) creates a new DMM or raises the

% existing singleton* Starting from the left, property value pairs are

% applied to the GUI before dmm_OpeningFcn gets called An

% unrecognized property name or invalid value makes property application

% stop All inputs are passed to dmm_OpeningFcn via varargin.

% *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one

% See also: GUIDE, GUIDATA, GUIHANDLES

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

% Last Modified by GUIDE v2.5 11-Dec-2022 11:30:47

% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename,

'gui_Callback', []); 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 dmm is made visible. function dmm_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% 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 dmm (see VARARGIN) axes (handles.anh1); imshow ('D:\1_png.jpg'); axes (handles.anh2); imshow ('D:\logo_khoa.jfif');

% Choose default command line output for dmm handles.output = hObject;

To initialize the GUI-driven Arduino servo project, the code updates the GUI handles structure with guidata(hObject, handles) and declares global control and state variables (dthap, dtb, dcao, dem, thap, tb, cao, batdau) along with the hardware handles (anu, sv1, sv2) It opens an Arduino UNO on COM3, creates two Servo objects on pins D9 and D10, and sets both servos to position 0 using writePosition All state variables are reset to zero (batdau, dem, dthap, dtb, dcao, thap, tb, cao) Finally, the GUI is updated by setting the db1 display to 'Dung' and initializing spthap, sptb, spcao, and tong to '0'.

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

% - Outputs from this function are returned to the command line. function varargout = dmm_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% 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; function edit3_Callback(hObject, eventdata, handles)

% hObject handle to edit3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit3 as text

% str2double(get(hObject,'String')) returns contents of edit3 as a double

% - Executes during object creation, after setting all properties. function edit3_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit4_Callback(hObject, eventdata, handles)

% hObject handle to edit4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit4 as text

% str2double(get(hObject,'String')) returns contents of edit4 as a double

% - Executes during object creation, after setting all properties. function edit4_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% - Executes on button press in chay. function chay_Callback(hObject, eventdata, handles)

% hObject handle to chay (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) global batdau; batdau=1; set(handles.db1,'string','Chay');

% - Executes on button press in reset. function reset_Callback(hObject, eventdata, handles)

% hObject handle to reset (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

This MATLAB GUI code uses the handles structure and GUIDATA to manage the interface’s data, declaring a set of global counters: batdau (start flag), dem (counter), dthap, dtb, dcao, thap, tb, cao, and initializes them all to zero The GUI then updates visual elements by setting the db1 text to 'Dung' and initializing the numeric displays spthap, sptb, spcao, and tong to '0' In short, the snippet initializes the application's data state and UI displays to a clean, zeroed baseline, ready for user interaction and further calculation.

% - Executes on button press in nncb1. function nncb1_Callback(hObject, eventdata, handles)

% hObject handle to nncb1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

The code uses global GUI handles and controls a brief operation sequence: it checks whether cao and batdau are both 1, and if so it sends a position of 0.5 to sv1, attempts to increment the counters dem and dcao, resets cao to 0, updates the on-screen displays spcao and tong to show the current dcao and dem values, pauses for two seconds, and finally sends a position of 0 to sv1 before finishing.

% - Executes on button press in nncb3. function nncb3_Callback(hObject, eventdata, handles)

% hObject handle to nncb3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

This MATLAB GUI snippet uses a global state with variables thap, batdau, dem, and dthap along with the GUI handles structure (GUIDATA) to manage user data When thap equals 1 and batdau equals 1, the code increments the event counter dem and the sub‑counter dthap, then resets thap to 0 It finally updates the interface by setting the spthap display to the current dthap value and the tong display to the total dem value, ensuring the user sees the latest counts after each qualifying action. -**Support Pollinations.AI:**🌸 **Ad** 🌸 Optimize your MATLAB GUI project with Pollinations.AI free text APIs—[support our mission](https://pollinations.ai/redirect/kofi) for seamless integration and smarter user data management.

% - Executes on button press in nncb2. function nncb2_Callback(hObject, eventdata, handles)

% hObject handle to nncb2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

This MATLAB GUI code uses a GUIDATA-stored handles structure and global state variables (tb, batdau, dem, dtb) to coordinate a simple position-sequencing routine When tb equals 1 and batdau equals 1, it sends a command to device sv2 to move to position 0.5, increments the counters (dem and dtb), resets tb to 0, and updates the interface by displaying the new values in sptb and tong After a two-second pause, it sends another command to sv2 to return to position 0, completing the cycle.

% - Executes on button press in nntb. function nntb_Callback(hObject, eventdata, handles)

% hObject handle to nntb (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) global tb batdau; if batdau==1; tb=1; end

% - Executes on button press in nnthap. function nnthap_Callback(hObject, eventdata, handles)

% hObject handle to nnthap (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) global thap batdau; if batdau==1; thap=1; end

% - Executes on button press in nncao. function nncao_Callback(hObject, eventdata, handles)

% hObject handle to nncao (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) global cao batdau if batdau == 1 cao= 1; end

% - Executes on button press in dung. function dung_Callback(hObject, eventdata, handles)

% hObject handle to dung (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) global batdau; batdau=0; set(handles.db1,'string','Dung');

% - Executes during object creation, after setting all properties. function anh1_CreateFcn(hObject, eventdata, handles)

% hObject handle to anh1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: place code in OpeningFcn to populate anh1

% - Executes during object creation, after setting all properties. function anh2_CreateFcn(hObject, eventdata, handles)

% hObject handle to anh2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: place code in OpeningFcn to populate anh2

Phụ lục 2: Chương trình code Arduino

This article describes an Arduino-like sensor classification module that defines Sensor3 as 6 and tracks states for three sensors (SensorState1–SensorState3) along with their previous values (LastSensorState1–LastSensorState3) It declares several auxiliary variables (b1, b2, b3, c1, c2, c3) and three product counters (SP1, SP2, SP3), all initialized to zero, plus two timing variables (time1, time2) The core routine, Display(), clears the LCD, prints the header "HT DEM PHAN LOAI SP" on the first line, and shows the values of SP1, SP2, and SP3 on subsequent lines at fixed cursor positions, providing real-time visibility of the three classification results on a multi-line LCD.

Serial.begin(9600); pinMode(BTN, INPUT_PULLUP); pinMode(resetPin, INPUT_PULLUP); pinMode(Sensor1, INPUT); pinMode(Sensor2, INPUT); pinMode(Sensor3, INPUT);

// Chân servo servo1.attach(9); servo2.attach(10);

// Điều hướng chân động cơ là đầu ra pinMode(MOTOR, OUTPUT);

// Tắt băng tải digitalWrite(MOTOR, LOW); servo1.write(0); servo2.write(0); lcd.init(); lcd.backlight();

SensorState3 = digitalRead(Sensor3); if (digitalRead(resetPin)!=1) { reset();} else{ if (SensorState1 != LastSensorState1)

{ if (SensorState1 == 0){ if ( (unsigned long) (millis() - time1) > 300 ){ servo1.write(90);

} else if ((SensorState2 != LastSensorState2)){ if (SensorState2 == 0){ if ( (unsigned long) (millis() - time2) > 300 ) { servo2.write(90);

Ngày đăng: 20/12/2022, 05:13

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w