4.1. Thi cơng mơ hình
4.1.3. Thi công phần điều khiển
a. Xây dựng bộ điều khiển PID
Trong q trình hoạt động nướng bánh, nhóm cần có một bộ thơng số điều khiển cho arduino để ổn định nhiệt độ, tránh cho việc nhiệt độ bị thay đổi quá nhiều làm bánh bị hư hỏng, gây tổn thất ngun liệu. Vì vậy, nhóm đã cho chạy thử để vẽ đồ thị cho điện trở sấy để tìm được hàm truyền của nó trên giao diện phần mềm Matlab.
Hình 4.30: Sơ đồ nối dây cho Arduino Mega
Hình 4.31: Sơ đồ khối Simulink cho vẽ đồ thị hàm truyền
Vì tín hiệu analog của arduino đọc là 0 - 5V nên nhóm đã thiết kế điện trở để chuyển tín hiệu từ 4 - 20mA thành 0 – 5V. Giá trị điện trở phải nhỏ hơn 𝑈
𝐼 = 5
0.02 = 250Ω. Nhóm đã chọn điện trở 220 Ω nên tín hiệu trả về sẽ từ 0,88V đến 4,4V.
Tín hiệu chuyển đổi analog của Arduino là 0 – 5V thành khoảng từ 0 – 1024 nên ta có phương trình chuyển đổi là y = 1024
5 𝑥 (với y là tín hiệu chuyển đổi, x là trị số áp đọc về
61 0,88 – 4,4V nên ta có phương trình chuyển đổi y = 133,6x – 100 (với y là nhiệt độ, x là trị số áp đọc về).
Tổng hợp hai phương trình có được phương trình chuyển đổi giá trị số analog của Arduino sang nhiệt độ là y = 6250
11253𝑥 − 100.
● Tìm thơng số PID cho khuôn trên và khuôn dưới bằng phương pháp lý thuyết
- Tìm thơng số PID cho khn trên
Hình 4.32: Đồ thị hàm truyền của điện trở sấy ở lò trên với trục tung là nhiệt độ và trục hoành là thời gian
Từ đồ thị, nhóm thu được nhiệt độ cao nhất đạt được ở điện trở sấy là 337℃. Nhóm đã tìm được:
Độ lợi K = ∆𝑦
∆𝑥 = 337−53
5−0 = 56,8.
Điểm bắt đầu có tọa độ (3; 53).
Nhóm đã dùng phương pháp 2 điểm tìm 2 điểm đạt giá trị:
⸻ (0,632.284)+53 = 232,5 ⇒Thời gian đạt được nhiệt độ này là 𝑡2 = 567.
⸻ (0,283.284)+53 = 133,4 ⇒Thời gian đạt được nhiệt độ này là 𝑡1 = 206. ⇒ {𝜏 = 1.5(𝑡2− 𝑡1) = 1.5(567 − 206) = 541.5 𝜃 = 𝑡2− 𝜏 = 567 − 541.5 = 25.5 ⇒ 𝐺(𝑠) =𝐾. 𝑒 −𝜃𝑠 𝜏𝑠 + 1 = 56,8. 𝑒−25,5𝑠 541,5𝑠 + 1
Từ công thức điều chỉnh PID từ phương pháp IMC (Internal Model Control), bộ điều khiển PI, nhóm được các hệ số Kp, Ti cho bộ điều khiển nhiệt độ điện trở sấy (với chọn 𝜏𝑐 = 𝜃).
62 𝐾𝑝 = 1 𝐾. 𝜏 (𝜏𝑐+𝜃)2 = 1 56,8. 541,5 (25,5+25,5)2 = 3,665𝑥10−3 ⟹ Chọn Kp = 0,01. 𝑇𝑖 = 𝜏 = 541,5.
Biểu đồ nhiệt độ có bộ điều khiển PID
Hình 4.33: Biểu đồ dao động nhiệt độ khn trên Nhận xét: POT= 214−205
210 .100 = 4,23%. Thời gian xác lập 8,23 phút. Thời gian tăng trưởng 4,65 phút.
- Tìm thơng số PID cho khn dưới
Hình 4.34: Đồ thị hàm truyền của điện trở sấy ở lò dưới với trục tung là nhiệt độ và trục hoành là thời gian
Từ đồ thị, nhóm thu được nhiệt độ cao nhất đạt được ở điện trở sấy là 370℃. Nhóm đã tìm được:
63 Độ lợi K = ∆𝑦
∆𝑥 = 370−65
5−0 = 61.
Điểm bắt đầu có tọa độ (20; 65).
Nhóm đã dùng phương pháp 2 điểm tìm 2 điểm đạt giá trị:
⸻ (0,632.305)+65 = 257,76 ⇒Thời gian đạt được nhiệt độ này là 𝑡2 = 413
⸻ (0,283.305)+65 = 151,3 ⇒Thời gian đạt được nhiệt độ này là 𝑡1 = 191. ⇒ {𝜏 = 1.5(𝑡2− 𝑡1) = 1.5(413 − 191) = 333 𝜃 = 𝑡2− 𝜏 = 413 − 333 = 80 ⇒ 𝐺(𝑠) =𝐾. 𝑒 −𝜃𝑠 𝜏𝑠 + 1 = 61. 𝑒−80𝑠 333𝑠 + 1
Từ công thức điều chỉnh PID từ phương pháp IMC (Internal Model Control), bộ điều khiển PI, nhóm được các hệ số Kp, Ti cho bộ điều khiển nhiệt độ điện trở sấy (với chọn 𝜏𝑐 = 𝜃). 𝐾𝑝 = 1 𝐾. 𝜏 (𝜏𝑐+ 𝜃)2 = 1 61. 333 (80 + 80)2 = 2,133𝑥10−4 𝑇𝑖 = 𝜏 = 333.
Biểu đồ nhiệt độ có bộ điều khiển PID:
Hình 4.35: Biểu đồ dao động nhiệt độ khuôn dưới Nhận xét: POT=231−199 Nhận xét: POT=231−199
210 .100 = 15,2% . Thời gian tăng trưởng 4,4 phút. Thời gian xác lập 14,25 phút.
64 Vì thời gian xác lập quá lâu và độ vọt lố quá lớn nên nhóm quyết định chuyển sang phương pháp thực nghiệm Ziegler-Nicholes cho khuôn dưới.
Dựa vào phương pháp Ziegler-Nichols ta tìm được 𝐾𝑢=65, 𝑇𝑢=150.
Hình 4.36: Biểu đồ dao động nhiệt độ khn dưới theo phương pháp thực nghiệm Chọn loại điều khiển PI với 𝐾𝑢, 𝑇𝑢tìm được, ta tính được 𝐾𝑝=29,25 , 𝐾𝑖=0,23 Chọn loại điều khiển PI với 𝐾𝑢, 𝑇𝑢tìm được, ta tính được 𝐾𝑝=29,25 , 𝐾𝑖=0,23
Hình 4.37: Biều đồ nhiệt với Kp=29.25, Ki=0.23 ở khuôn dưới Nhận xét: POT=232−202 Nhận xét: POT=232−202
210 .100 = 14,28%. Thời gian tăng trưởng 4,7 phút. Thời gian xác lập 7,8 phút.
65
b. Xây dựng hệ thống cơ sở dữ liệu và website
● Thiết kế giao diện tương tác và giao tiếp với cơ sở dữ liệu
Nhóm đã sử dụng Raspberry Pi, Apache2 tạo nên nên web server để giám sát và điều khiển máy từ xa và sử dụng MySQL để quán lý cơ sở dữ liệu của web.
- Khối cài đặt thông số.
Khối cài đặt thống số gồm 3 phần chính:
+ Chọn vị trí cài đặt: chọn vị trí cài đặt các thơng sơ là khuôn dướt hay khuôn trên. Với ngôn ngữ HTML ta sử dụng input
+ Thông số cài đặt: nhập các thông số cài đặt như Kp, Ki, Kd, nhiệt độ cài. Với ngôn ngữ HTML ta sử dụng “input” loại “number”.
+ Nút nhấn “Cài đặt”: nhấn nút sẽ ghi các thông số cài đặt vào cơ sở dũ liệu ở vị trí cài đặt. Với ngơn ngữ HTML ta sử dụng “input” loại “submit”.
Hình 4.38: Giao diện khối cài đặt trên web
Khi nhấn nút “cài đặt” file php sẽ chạy lấy các dữ liệu từ các ô input ghi vào bảng “PID” trong cơ sơ dữ liệu.
Hình 4.39: Bảng PID điều khiển lị - Khối điều khiển:
Khối Cài đặt gồm 2 phần:
+ Nút nhấn “ON/OFF” lò: nhấn nút lò sẽ thay đổi trạng thái. + Nút nhấn “ra” (“vào”): Xylanh sẽ đi ra (vào).
66 +
Hình 4.40: Giao diện khối điều khiển trên web
Khi nhấn nút “ON/OFF” thì file php sẽ chạy đọc trạng thái hiện tại của lò từ bảng “TTht” trong cơ sở dữ liệu. Nếu trạng thái của lò hiện tại là đăng tắt (TT_ht = 0), thì sẽ ghi vào bảng “DIEUKHIEN” với giá trị TT = 1. Ngược lại nếu trạng thái của lò hiện tại là đăng mở (TT_ht = 1), thì sẽ ghi TT = 0.
Hình 4.41: Bảng điều khiển lò và xy lanh
Khi nhấn nút “ra” (“vào”) thì file php chạy ghi vào bảng “DIEUKHIEN”. Nếu nhấn nút “ra” thì ghi XLA=1. Nếu nhấn nút “vào” thì ghi XLA = 0.
- Khối hiển thị:
Hình 4.42: Giao diện khối hiển thị trên web
HTML sẽ quét với chù kì 1s chạy file php lấy giá trị mới nhất từ trong bẳng “nhietdo” hiển thị lên web.
67 - Khối biểu đồ:
Hình 4.44: Giao diện khối biểu đồ trên web
HTML sẽ quét với chu kì 1s chạy file php lấy 50 giá trị mới nhất từ trong bảng “nhietdo” hiển thị lên web.
-Giao diện web tổng thể:
68
● Thiết kế giao tiếp giữa bộ điều khiển và cơ sở dữ liệu
Ở đây nhóm đã sử dụng module wifi NodeMCU 8266 để bộ điều khiển có thể kết nối wifi và truy cập vào web
Hình 4.46: Module NodeMCU 8266 Thông số kĩ thuật: Thông số kĩ thuật:
+ IC chính: ESP8266
+ Phiên bản firmware: NodeMCU Lua + Chip nạp và giao tiếp UART: CP2102.
+ GPIO tương thích hồn tồn với firmware Node MCU. + Cấp nguồn: 5VDC MicroUSB hoặc Vin.
+ GIPO giao tiếp mức 3.3VDC
+ Tích hợp Led báo trạng thái, nút Reset, Flash. + Tương thích hồn tồn với trình biên dịch Arduino. + Kích thước: 25 x 50 mm
- Trao đổi liệu giữa cơ sở dữ liệu và Arduino
+ Trao đổi dữ liệu giữa cơ sở dữ liệu và NodeMCU 8266.
Nhóm sử dụng file php lấy tồn bộ những giá trị cần thiết để điều khiển máy. Sau đó module wifi sẽ truy cập vào trang HTTP này để đọc tồn bộ văn bản trên trang này.
Hình 4.47: Trang HTTP giao tiếp dữ liệu
Sau khi đọc xong sẽ lưu về 1 biến dưới dạnh chuỗi. Sau đó sử dụng “DynamicJsonDocument” để tách chuỗi dữ liệu này thành từng biến để sử dụng.
+ Trao đổi dữ liệu giữa NodeMCU 8266 và arduino.
Để trao dữ liệu giữa NodeMCU 8266 và arduino nhóm sử dụng giao tiếp UART. Để đảm bảo toàn bộ dữ liệu được gửi đi thì nhóm đã ghép tồn bộ các dự liệu thành một chuỗi với cấu trúc: “a” + dữ liệu 1 + “b” + dữ liệu 2 + “c” +…. Mục đích cho việc chèn những chữ cái ở giữa để dễ dàng phân biệt từng dữ liệu cũng như dễ dàng tách chúng ra sau khi dữ liệu gửi xuống arduino.
69 Hình 4.48: Dữ liệu gửi từ NodeMCU 8266
Sau khi arduino đọc được chuỗi dữ liệu sẽ tiến hành tách. Sau khi tách dữ liệu đạt được.
Hình 4.49: Thơng số Arduino đọc
c.Thi công xử lý ảnh
● Thu thập ảnh đầu vào
Tiến hành thu thập ảnh đầu vào để training. Nhóm đã sử dựng 300 ảnh ly hồn thiện và 300 ảnh ly hỏng chia theo tỷ lện 80% để đào tạo, 20% để đánh giá.
70
● Gắn nhãn cho hình ảnh
Để gắn nhãn cho ảnh, nhóm sử dụng cơng cụ LabelImg để tiến hành gắn nhãn cho hình
Hình 4.51: Sử dụng LabelImg để tạo nhãn cho hình
Sau khi gắn nhãn xong sẽ nhận được file text gồm các thơng số được chuẩn hóa từ 0 đến 1 với:
Hình 4.52: File nhãn của hình
- 1: nhận dạng hình ảnh thuộc lớp ly lỗi (0) hay ly hoàn thiện (1) - 0.594044, 0.509799: toạ độ của vật trong hình
- 0.487053, 0.348694: chiều dài và rộng của vật thể
● Train mơ hình
Cấu hình của Raspberry Pi 3 khá thấp nên nhóm đã chọn mạng tiny-YOLOv3 để train mơ hình vì tính chất mạng này nhẹ, tốc độ FPS cao, độ chính xác vừa phải, phù hợp với máy tính có cấu hình thấp.
Dưạ trên tài liệu [21] của tác giả Dong Xiao, nhóm đã tìm hiểu được cơ bản về mơ hình mạng tiny-YOLOv3 với thuật tốn K-Means để tính tốn dữ liệu mẫu YOLO:
Thuật tốn K-Means là một thuật tốn khơng giám sát các mẫu khơng tập hợp, mang tính chất dễ sử dụng với khả năng tập hợp mẫu với năng suất cao, nên thuật toán này đang được sử dụng rất rộng rãi. Thuật toán này sẽ dùng các khoảng cách (distance) như dữ liệu mẫu để tính tốn sự tương đồng giữa các vật thể. Các vật thể có khoảng cách tương đồng càng thấp, sự tương đồng càng cao, thì càng có khả năng cao vật mẫu của các dữ liệu lấy mẫu là một. Các bước thực hiện tầng tính toán của thuật toán K-Means là:
71 (2) Gán các mẫu thành một tập hợp theo các mẫu tương đồng dựa trên nguyên tắc độ tương đồng thấp (minimum distance) như đã nói ở trên.
(3) Thực hiện các tính tốn theo dữ liệu mẫu trung tâm bằng phương pháp xét độ tương đồng cho từng mẫu.
(4) Lặp lại bước (2) và (3) cho đến khi dữ liệu mẫu trung tâm khơng cịn thay đổi nữa. (5) Xuất ra dữ liệu mẫu trung tâm hoàn chỉnh và hệ số k cho từng mẫu.
Thuật toán K-Means thường dùng giải thuật Euclidean Distance để tính tốn độ tương đồng cho từng mẫu dữ liệu. Intersection over Union (IOU) là một tiêu chuẩn dùng để tính tốn độ chuẩn xác của việc nhận diện các vật thể tương tác trong một tập hợp dữ liệu mẫu nhất định:
IOU = 𝑇𝑃 𝐹𝑃+𝑇𝑃+𝐹𝑁
Mà TP, FP, FN lần lượt là các thông số lượt true positive, false positive và false negative. [21]
Hình 4.53: Cấu trúc mạng tiny-YOLOv3
Tiếp theo, nhóm đã sử dụng cơng cụ Google Colab là một ứng dụng máy áo của Google. Công cụ này sẽ cho người dùng sử dụng máy có GPU để làm việc dễ dàng hơn.
Các bước tiến hành đào tạo:
Bước 1: Kết nối google colab với Google Drive để có thể giao tiếp dữ liệu giữa chúng. Bước 2: Đưa tất cả cấu trúc mạng, hình ảnh đào tạo, ảnh đánh giá và nhãn của chúng lên google drive.
Bước 3: Điều hướng để colab đến đi đến thư mục chứa tất cả các thư mạc trên.
Bước 4: Sử dụng câu lệnh tiến hành đạo tạo mơ hình với cấu trúc mạng tiny-YOLOv3. File sau khi đào tạo xong sẽ được lưu vào drive để có thể sử dụng.
72 Sau khi train 1700 vịng:
Hình 4.54: Biểu đồ AVG loss
Nhận xét: Ở 200 vịng đầu tiên, thơng số AVG loss giảm rất nhanh. Từ 200 vịng trở đi thơng số này giảm rất chậm. Thông số AVG loss càng thấp thì độ chính xác của mơ hình càng cao. Ở vòng train 1700, AVG loss cịn 0.05.
Với những mơ hình có kích thước lớn, nhiều đối tượng nhận dạng thì thơng số AVG loss giảm xuống từ 1 đến 3 là đạt yêu cầu. Với những mơ hình có kích thước nhỏ thì thơng số này giảm xuống dưới 0.07 là đạt yêu cầu.
● Chạy và đánh giá mơ hình
Tiến hành đưa mơ hình xuống Raspberry Pi3 chạy và đánh giá mơ hình
Hình 4.55: Mơ hình nhận dạng ly
Nhận xét: Tốc độ nhận dạng khoảng 10 FPS, độ chính xác đạt 75%. Với cấu hình thấp như Raspberry Pi 3 thì các thơng số trên được xem là chấp nhận được.
73