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 2 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 đề Đề á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
Tác giả Nhóm 6, 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 Đại Học Đà Nẵng - Trường Đại Học Sư Phạm Kỹ Thuật
Chuyên ngành Kỹ Thuật Điện - Điện Tử
Thể loại Đề án
Năm xuất bản 2022
Thành phố Đà Nẵng
Định dạng
Số trang 55
Dung lượng 1,5 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

KHOA Đ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 “Mô Hình Đếm Và Phân Loại Vật Gỗ

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à giao thức 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 Được phát triển bởi Philips Semiconductors, I2C sử dụng chỉ hai đường truyền tín hiệu để giúp truyền dữ liệu hiệu quả và dễ dàng trong các hệ thống điện tử Giao thức này phổ biến trong các ứng dụng yêu cầu kết nối linh hoạt và tiết kiệm không gian.

Giao thức I2C nhờ vào tính đơn giản của nó nên được sử dụng rộng rãi trong kết nối giữa vi điều khiển với mảng cảm biến, thiết bị hiển thị, thiết bị IoT, EEPROM và nhiều thiết bị khác Đây là loại giao thức giao tiếp nối tiếp đồng bộ, trong đó các bit dữ liệu được truyền từng bit một theo các khoảng thời gian đều đặn nhờ vào tín hiệu đồng hồ tham chiếu Điểm nổi bật của giao thức I2C bao gồm khả năng giao tiếp đa điểm, dễ cấu hình, tiết kiệm chân cắm và phù hợp cho các hệ thống cần truyền dữ liệu nhanh và ổn định.

 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 giao tiếp không cần thỏa thuận trước về tốc độ truyền dữ liệu như UART, giúp linh hoạt điều chỉnh tốc độ truyền khi cần thiết, tối ưu hóa hiệu quả truyền tải thông tin.

 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ự động hoạt động dựa trên nguyên lý điện dung, dùng để đo và phát hiện các bức xạ hồng ngoại trong môi trường Bức xạ hồng ngoại là các nguồn sáng mà mắt người không thể nhìn thấy do bước sóng rộng hơn ánh sáng khả biến, giúp cảm biến xác định chính xác các vật thể phát ra nhiệt lượng Bất kỳ vật thể nào có nhiệt độ cao hơn 5 độ C đều phát ra bức xạ hồng ngoại, từ đó cảm biến IR có thể phát hiện và theo dõi các vật thể này một cách hiệu quả.

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 LCD2004 xanh dương/xanh lá sử dụng driver HD44780, cho phép hiển thị 4 dòng, mỗi dòng 20 ký tự, giúp người dùng dễ dàng tạo ra các dự án hiển thị thông tin rõ ràng Với độ bền cao và tính phổ biến rộng rãi, màn hình này phù hợp cho người mới học lập trình và phát triển dự án điện tử Ngoài ra, các mã mẫu và tài liệu hướng dẫn đa dạng giúp việc tích hợp và sử dụng trở nên đơn giản và nhanh chóng.

LCD 20x4 là loại màn hình tinh thể lỏng nhỏ gọn, thường được sử dụng để hiển thị chữ hoặc số trong bảng mã ASCII Mỗi ô của màn hình Text LCD chứa các chấm tinh thể lỏng, chúng kết hợp theo trình tự “ẩn” hoặc “hiện” để tạo thành các ký tự cần hiển thị Mỗi ô chỉ có thể hiển thị một ký tự duy nhất, giúp dễ dàng hiển thị thông tin rõ ràng và chính xác.

Màn hình LCD 20x4 là loại màn hình hiển thị gồm 4 dòng, mỗi dòng có thể hiển thị tối đa 20 ký tự, giúp truyền tải thông tin rõ ràng Đây là loại LCD phổ biến và được sử dụng rộng rãi trong các mạch điện, nhờ vào khả năng hiển thị đa dòng cùng độ phân giải phù hợp với nhiều ứng dụng LCD 20x4 thường được sử dụng trong các dự án điện tử, tự động hóa và các thiết bị điều khiển, mang lại giải pháp hiển thị hiệu quả và tiện lợi.

 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 SG90 (góc quay 180 độ) là một trong những loại servo phổ biến được sử dụng trong các mô hình điều khiển nhỏ và đơn giản như cánh tay robot Với tốc độ phản ứng nhanh, động cơ này tích hợp sẵn driver điều khiển, giúp dễ dàng điều chỉnh góc quay thông qua phương pháp điều độ rộng xung PWM Hình 1.7: Động cơ Servo MG90S minh họa loại servo này trong các ứng dụng thực tế.

 Đ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 hoặc công tắc là thiết bị điều khiển để đóng hoặc ngắt nguồn điện của các thiết bị, máy móc hoặc quá trình vận hành trong hệ thống điều khiển công nghiệp Thường được làm từ nhựa hoặc kim loại chắc chắn, các nút ấn có hình dạng và kích thước đa dạng, được thiết kế phù hợp với kích thước bàn tay và ngón tay của người dùng để đảm bảo thao tác dễ dàng và chính xác Việc lựa chọn nút nhấn phù hợp không chỉ đảm bảo an toàn vận hành mà còn nâng cao hiệu quả trong quá trình kiểm soát thiết bị, góp phần tối ưu hóa hoạt động sản xuất.

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

Nút nhấn nhả hoạt động bằng cách chuyển đổi trạng thái của các tiếp điểm khi có lực tác động Khi nhấn nút, các tiếp điểm sẽ đóng hoặc mở để thực hiện chức năng mong muốn Khi thả nút, các tiếp điểm sẽ trở về trạng thái ban đầu, ngắt hoặc mở mạch theo thiết kế của công tắc Thiết bị này thường được sử dụng trong các hệ thống điều khiển để thao tác dễ dàng và chính xác.

Nút nhấn giữ hoạt động dựa trên cơ chế chuyển đổi trạng thái của tiếp điểm khi có lực tác động Khi nhấn, các tiếp điểm sẽ thay đổi trạng thái để báo hiệu đã được kích hoạt, và trạng thái này sẽ duy trì ngay cả khi lực tác động đã mất Để đưa tiếp điểm trở lại trạng thái ban đầu, cần tác động lực thêm lần nữa vào nút nhấn, giúp hệ thống vận hành chính xác và ổn định trong các ứng dụng điện tử.

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à module điều chỉnh dòng ra lên đến 3A, giúp giảm điện áp đầu vào hiệu quả Khi cấp nguồn 9V vào module, bạn có thể điều chỉnh để tạo ra nguồn điện 5V hoặc 3.3V phù hợp cho các thiết bị điện tử Đây là giải pháp lý tưởng cho các dự án yêu cầu nguồn điện ổn định và công suất cao.

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 (viết tắt của "Direct Current Motors") là loại động cơ chạy bằng nguồn điện áp DC – điện áp 1 chiều, được điều khiển bằng dòng có hướng xác định để hoạt động chính xác và ổn định.

 Độ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) đóng vai trò quan trọng trong việc tiếp xúc và chia nhỏ nguồn điện cho các cuộn dây trên rotor, đảm bảo quá trình truyền tải điện năng hiệu quả Số lượng các điểm tiếp xúc trên cổ góp tương ứng với số cuộn dây trên rotor, giúp duy trì hoạt động ổn định của máy điện Việc thiết kế và duy trì cổ góp đúng tiêu chuẩn là yếu tố then chốt để nâng cao hiệu suất làm việc của máy.

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 từ 5V đến 9V DC, đi kèm quạt tản nhiệt để giữ nhiệt hiệu quả Động cơ này yêu cầu nguồn cung cấp dòng điện lớn, khoảng 1.4A, để đảm bảo hoạt động ổn định Do đó, nguồn pin là sự lựa chọn tối ưu nhất để cung cấp đủ dòng điện cho động cơ hoạt động liên tục và vượt trội.

 Đ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

Hình 1.13 trình bày mô hình hệ thống của Đồ án “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”, trong đó thiết kế mô hình phân loại sản phẩm và lập trình Arduino nhằm ứng dụng thực tế trong công nghiệp sản xuất Dự án cho thấy khả năng áp dụng Arduino để tự động hóa quá trình phân loại vật liệu gỗ, nâng cao hiệu quả và chính xác trong quá trình sản xuất Việc sử dụng Arduino Uno R3 giúp tạo ra hệ thống điều khiển nhẹ nhàng, tiết kiệm chi phí và dễ dàng tích hợp vào dây chuyền công nghiệp Đây là một ý tưởng sáng tạo, góp phần nâng cao năng suất và độ chính xác trong ngành điêu khắc và chế biến gỗ, đồng thời chứng minh tính khả thi của công nghệ Arduino trong ứng dụng công nghiệp.

Khi sản phẩm trên băng tải đi qua cảm biến E18-D80NK, hệ thống sẽ ghi nhận và phân loại dựa trên dữ liệu cảm biến chính xác Động cơ Servo hoạt động linh hoạt để điều chỉnh quá trình phân loại sản phẩm một cách hiệu quả Màn hình LCD hiển thị rõ số lượng sản phẩm đã qua xử lý, giúp giám sát và quản lý dây chuyền sản xuất dễ dàng hơn Hệ thống kết hợp cảm biến, động cơ Servo và màn hình hiển thị tạo thành giải pháp tối ưu cho quy trình phân loại tự động, nâng cao năng suất và độ chính xác trong sản xuất.

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

Arduino là môi trường phát triển mã nguồn mở giúp người dùng dễ dàng viết và tải code lên board mạch Được xây dựng dựa trên ngôn ngữ lập trình Java, Arduino hỗ trợ lập trình linh hoạt và dễ sử dụng Nhờ vào phần mềm mã nguồn mở, nền tảng này thúc đẩy sự sáng tạo và khả năng tùy chỉnh cao cho các dự án điện tử và tự động hóa.

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 Arduino tích hợp nhiều thư viện phong phú như EEPROM, Firmata, GSM, Servo, TFT, Wifi, đáp ứng đa dạng nhu cầu lập trình Các thư viện này liên tục được mở rộng và hoàn thiện nhờ sự đóng góp tích cực của cộng đồng Arduino toàn cầu Việc sử dụng các thư viện này giúp người dùng dễ dàng thao tác, tạo ra các dự án điện tử đa dạng và chất lượng Đặc biệt, cộng đồng Arduino không ngừng phát triển thư viện mới, nâng cao khả năng sáng tạo và ứng dụng của người dùng.

Proteus là phần mềm mô phỏng mạch điện tử hàng đầu của Labcenter Electronics, hỗ trợ mô phỏng đa dạng các linh kiện điện tử phổ biến hiện nay Phần mềm này đặc biệt nổi bật về khả năng hỗ trợ các vi điều khiển (MCU) như PIC, 8051, AVR và nhiều loại khác, giúp giúp kỹ sư và nhà phát triển thiết kế, kiểm thử mạch một cách dễ dàng và hiệu quả Với proteus, người dùng có thể mô phỏng toàn diện các mạch điện tử phức tạp, nâng cao năng suất thiết kế và đảm bảo tính chính xác trong quá trình phát triển sản phẩm.

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 công ty MathWorks phát triển, giúp người dùng thực hiện các phép tính ma trận phức tạp và phân tích dữ liệu hiệu quả Với khả năng vẽ đồ thị hàm số, biểu đồ thông tin và trực quan hóa dữ liệu, MATLAB là công cụ đắc lực cho các nhà khoa học và kỹ sư Ngoài ra, phần mềm này còn hỗ trợ thực hiện thuật toán, tạo giao diện người dùng tùy chỉnh và liên kết với các chương trình viết trên nhiều ngôn ngữ lập trình khác nhau, thúc đẩy quy trình nghiên cứu và phát triển phần mềm.

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.

Năm 1983, Jack Little, một kỹ sư có học tại MIT và Stanford, đã phát triển lại MATLAB bằng ngôn ngữ lập trình C, mở rộng các thư viện hỗ trợ thiết kế hệ thống điều khiển, mô phỏng và các công cụ (toolbox) Ông đã biến MATLAB trở thành một ngôn ngữ lập trình dựa trên ma trận (matrix-based programming language), giúp nâng cao khả năng tính toán và phân tích dữ liệu trong các lĩnh vực kỹ thuật và khoa học.

Steve Bangert là người viết trình thông dịch cho MATLAB trong gần một năm, góp phần quan trọng vào sự phát triển của phần mềm này Sau đó, Jack Little hợp tác cùng với Moler và Steve Bangert đã quyết định thương mại hóa MATLAB, dẫn đến việc thành lập công ty The MathWorks vào năm 1984.

MATLAB 1.0 lần đầu ra mắt vào năm 1984, được viết bằng ngôn ngữ C và dành cho máy tính MS-DOS PC Phần mềm này lần đầu tiên được giới thiệu tại Hội nghị IEEE về thiết kế và điều khiển tại Las Vegas, Nevada Ban đầu, Matlab được phát triển nhằm hỗ trợ sinh viên sử dụng hai thư viện mạnh mẽ là LINPACK và EISPACK, chuyên về đại số tuyến tính, mà không yêu cầu người dùng phải 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.

Năm 1992, MATLAB 4 đã mở rộng khả năng với hỗ trợ đồ họa màu 2D và 3D, cùng với các tính năng truy tìm ma trận nâng cao Đồng thời, phiên bản MATLAB Student Edition được ra mắt để phục vụ nhu cầu học tập của học sinh và sinh viên, giúp tiếp cận công cụ mã nguồn mở mạnh mẽ này dễ dàng hơ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

Năm 2004, MATLAB 7 chính thức ra mắt, tích hợp khả năng xử lý chính xác đơn và kiểu nguyên, hỗ trợ hàm lồng nhau, tính năng 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, MATLAB đã cập nhật lên phiên bản 7.7 (SP3), nâng cao hiệu suất của Simulink và mở rộng 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 là phần mềm được sử dụng phổ biến trong lĩnh vực giáo dục, đặc biệt trong giải các bài toán số trị như đại số tuyến tính và giải tích Nó là công cụ quan trọng giúp sinh viên và chuyên gia kỹ thuật thực hiện các phép tính phức tạp một cách dễ dàng và chính xác Matlab hỗ trợ hiệu quả trong giảng dạy và nghiên cứu kỹ thuật, góp phần nâng cao hiệu quả học tập và làm việc.

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, dự án “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 giúp tự động đếm và phân loại các vật gỗ dựa trên chiều cao, ứng dụng trong lĩnh vực điêu khắc và chế tác gỗ Việc sử dụng Arduino UNO R3 là giải pháp tiên tiến, giúp nâng cao hiệu quả và độ chính xác trong quá trình đo lường và phân loại vật liệu gỗ Đây là nghiên cứu có ý nghĩa thúc đẩy tự động hóa trong ngành thủ công mỹ nghệ và chế biến gỗ.

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 hạn chế để hoàn thành đề án, nhóm đã gặp khó khăn về mặt kiến thức nhưng nhờ vào sự nỗ lực tìm hiểu đề tài và hướng dẫn tận tình của ThS Đỗ Hoàng Ngân Mi, nhóm đã thành công hoàn thiện đề tài.

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ừ việc học tập và nghiên cứu Qua quá trình làm đồ án nhóm, chúng tôi nhận thấy rõ những bài học quan trọng về phối hợp làm việc nhóm, quản lý thời gian và giải quyết vấn đề Những trải nghiệm này đã góp phần nâng cao kỹ năng chuyên môn cũng như khả năng làm việc nhóm hiệu quả Đồng thời, dự án cũng giúp chúng tôi hiểu rõ hơn về quy trình nghiên cứu và ứng dụng kiến thức vào thực tiễn.

 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

Trong quá trình nghiên cứu và thực hiện đồ án, nhóm đã làm rõ các cơ sở lý thuyết đã học từ những năm trước, đồng thời nhận thấy sự liên kết chặt chẽ giữa các môn học, giúp nâng cao kiến thức chuyên môn và phát triển kỹ năng phân tích, tổng hợp thông tin hiệu quả.

Do kiến thức still hạn chế, nhóm còn gặp phải những sai sót trong đồ án Chúng tôi hy vọng nhận được ý kiến, phản hồi và góp ý từ các thầy cô và bạn bè để rút kinh nghiệm, chỉnh sửa và hoàn thiện hơn cho đồ án của mình.

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

For effective Arduino projects, referencing reliable sources such as Arduino.cc and Dientu360.com is essential for understanding power supplies like 5V, 5A power sources An overview of microcontroller control circuits and their operation can be found on OLPTiengAn.vn, while guidance on interfacing I2C LCD displays with Arduino is available at Arduinokit.vn Additionally, selecting the appropriate servo motors, such as MG90S, and high-performance motors like the 545-volt, 9V, high-power motors with speeds up to 25,000 RPM, can enhance project capabilities, as detailed on Linhkienthuduc.com and Tiki.vn Utilizing MATLAB and MathWorks tools for programming delays and simulations ensures precise control and efficient project development Proper integration of these components and tools is vital for successful Arduino-based automation and robotics projects.

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

% 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;

This code initializes the handle structure and declares global variables to control servo motors and sensor states It establishes a connection with an Arduino Uno on COM3 and configures two servos connected to digital pins D9 and D10, setting their initial positions to zero The program also initializes various control variables, such as 'batdau', 'dem', 'dthap', 'dtb', 'dcao', 'thap', 'tb', and 'cao', to zero Additionally, it updates the user interface by setting status indicators and numerical displays for weight measurements to default values, such as "Dung" and "0," ensuring the system starts in a known, safe state.

% 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

The provided code initializes and resets various variables related to handle structures and user data in a software application It sets the starting point to zero and clears count variables such as dem, dthap, dtb, dcao, thap, tb, and cao Additionally, it updates the user interface by setting the text of specific handles—such as db1 to "Dung," and spthap, sptb, spcao, and tong to "0"—to reflect the reset state, ensuring the application begins fresh for subsequent operations These steps are crucial for maintaining accurate data handling and user interface consistency in the program.

% - 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

This article discusses a process managing user data and handle structures within a control system When certain conditions are met—specifically, if variables 'cao' and 'batdau' are both set to 1—the system moves a component to a predefined position using 'writePosition' It then increments counters such as 'dem' and 'dcaoo' to track the number of activations, resets the 'cao' flag, and updates display elements to reflect the current counts A pause of two seconds ensures proper operation timing before resetting the position of the component to zero, maintaining system stability and accurate data handling.

% - 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 code manages a counting process involving user data and handles, ensuring accurate tracking of specific events When certain conditions are met—specifically, if 'thap' equals 1 and 'batdau' equals 1—the system increments the 'dem' counter and updates the total 'dthap' The variables are then reset or updated accordingly, with the interface displaying the current counts through designated handles This process facilitates efficient data handling and real-time updates within the application, optimizing user interaction and data accuracy.

% - 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 code snippet manages a handle structure with user data, specifically controlling a process that involves updating positions and counters When specific conditions are met (tb equals 1 and batdau equals 1), it writes a position value of 0.5 to a device, increments counters, and updates interface displays to reflect the current data After a brief pause of two seconds, it resets the device position to zero, ensuring precise control and synchronization within the application's workflow This process is essential for maintaining accurate data handling and user interface updates in the program.

% - 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 Arduino-based system monitors three sensors to classify products, displaying the results on an LCD screen It defines sensor pins and maintains their current and last states to detect changes accurately The program initializes counters and timing variables to manage sensor readings and processing The `Display()` function refreshes the LCD with the header "HT DEM PHAN LOAI SP" and dynamically shows the classification counts for products 1, 2, and 3, ensuring clear and real-time visualization of the classification process Using this setup, users can effectively track product categorization in a seamless and user-friendly manner.

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: 19/12/2022, 17:24

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

w