Nội Dung Bài Viết
Hai bài viết trước chúng ta đã được làm quen với cách tạo GUI MATLAB điều khiển LED và LED RGB thông qua việc sử dụng công cụ button, slider. Bài viết này tôi sẽ hướng dẫn các bạn tạo giao diện GUI MATLAB điều khiển động cơ DC. Để điều khiển được động cơ DC quay thuận, quay nghịch, dừng một cách đơn giản nhất nên dùng module mạch cầu H L298D. Qua bài viết này tôi sẽ tích hợp cả button push, slider và sử dụng thêm công cụ edit text để hiển thị giá trị từ slider.
Trước tiên, chúng ta phải lắp đặt phần cứng để thuận tiện cho việc sau này chạy thử chương trình điều khiển động cơ DC qua GUI MATLAB vừa tạo.
Kết nối phần cứng
Để có thể lặp được mạch điều khiển động cơ như hình trên, các bạn cần chuẩn bị:
- Bo Arduino Uno hoặc một bo Arduino nào khác
- Module L298D
- Motor DC
- Nguồn: Nguồn pin, nguồn tổ ổng
- Một số dây dẫn
Motor DC được nối vào kênh OUT1, OUT2 trên Module L298D. L298D nối với Arduino theo bảng sau:
Module L298D | Arduino Uno |
EN1 | D3 |
IN1 | D4 |
IN2 | D5 |
GND | GND |
Bảng giá trị logic của Module L298
QUAY THUẬN | D4 (LOW) | D5 (HIGH) |
QUAY NGHỊCH | D4 (HIGH) | D5 (LOW) |
DỪNG | D4 (LOW) | D5 (LOW) |
DỪNG | D4 (HIGH) | D5 (HIGH) |
Sau khi lặp xong phần cứng, bây giờ bắt đầu tạo GUI MATLAB thôi nào.
Tạo GUI MATLAB
Mở MATLAB, tại cửa sổ Command Window gõ lệnh: >>guide –> chọn Black GUI.
Tại khu vực thiết kế GUI trong cửa sổ GUI, chúng ta tạo ra 3 button push. Một button cho chức năng quay thuận, một button cho chức năng quay nghịch và button còn lại cho chức năng dừng. Tạo một slider để điều khiển tốc độ động cơ DC và một edit text để hiển trị giá trị tốc động động cơ.
Sau khi tạo được giao diện như hình trên, ta tiến hành chỉnh thuộc tính cho từng đối tượng. Click chọn đối tượng –> Chuột phải –> Property Inspector.
Property Inspector | pushbutton1 | pushbutton2 | pushbutton3 | slider | edit text |
BackgroundColor | blue | yellow | red | default | default |
FontSize | 12 | 12 | 12 | default | 12 |
FontWeight | bold | bold | bold | default | bold |
Max | default | default | default | 5 | default |
Min | default | default | default | 1 | default |
String | QUAY THUẬN | QUAY NGHỊCH | STOP | default | |
Tag | Button_QT | Button_QN | Button_S | Slider_TD | edit_Slider |
Sau khi tùy chỉnh tất cá thuộc tính cho các đối tượng trên ta sẽ được giao diện như sau:
Sau khi hoàn thành được giao diện trên, chúng ta nhấn ctrl+S để lưu GUI vừa tạo lại. Đặt tên cho GUI và Save lại, lúc này file .m được tạo ra và được mở sẵn trên cửa sổ MATLAB. Bây giờ, chuyển sang tùy chỉnh code cho các đối tượng.
Add code trong file .m
Tìm đến dòng function varargout trong file .m và thêm dòng clear all; và khai báo thêm một biến phần cứng cho Arduino.
Tìm đến đoạn code function Button_QT_Callback, thêm đoạn code được đánh dấu trong khung màu đỏ dưới đây.
Tiếp đến là function Button_QN_Callback
Tượng tư như vậy cho function Button_S_Callback
Như vậy là chúng ta vừa add code xong cho 3 button tương ứng với 3 chức năng quay thuận, quay nghịch và dừng. Tiếp theo, add code cho slider với chức năng điều khiển tốc độ động cơ và hiển thị giá trị tốc độ trên edit text. Các bạn thêm đoạn code như hình nhé.
Trong đoạn code này, câu lệnh Get (hObject, ‘Value’) sẽ trả về giá trị hiện tại của slider, giá trị này được gán cho biến TocDo.
Câu lệnh writePWMVoltage dùng để viết function PWM trong Arduino hardware từ MATLAB. Qua đó làm thay đổi điện áp vào chân EN1 và làm thay đổi tốc độ động cơ được điều khiển qua L298D.
Câu lệnh set(handles.edit_Slider,’string’,num2str(TocDo1)); dùng để hiển thị giá trị từ biến TocDo1 ra edit text. num2str() dùng để chuyển đổi giá trị biến TocDo1 ra kiểu string.
Chạy chương trình và kiểm tra
Sau khi add code cho file .m xong và Save nó lại. Chúng ta, kết nối Arduino với máy tính và nhấn RUN chạy chương trình GUI MATLAB. Đợi vài giây (Bạn để ý chữ busy ở dưới gốc trái cửa sổ MATLAB không xuất hiện là được). Sau đó, bạn kiểm tra các button chức năng có hoạt động đúng không nhé.
Đây là kết quả giao diện GUI sau khi RUN.
Chúc các bạn thành công!
Download file
Bài viết các bạn có thể tham khảo:
- Lập trình GUI MATLAB vẽ đồ thị nhiệt độ từ LM35 với công cụ Axes
- Điều khiển tốc độ động cơ DC sử dụng MATLAB
- Tài liệu giao tiếp Arduino và Matlab (Matlab-Arduino Communication)