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

BÀI TẬP LỚN MÔN ĐO LƯỜNG VÀ ĐIỀU KHIỂN MÁY TÍNH ĐIỀU KHIỂN ĐỘNG CƠ SỬ DỤNG CÁC GIAO TIẾP NỐI TIẾP VÀ GIAO TIẾP USB BẰNG QT C++

12 70 1

Đ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

Định dạng
Số trang 12
Dung lượng 1,82 MB

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

Nội dung

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA BÀI TẬP LỚN MÔN ĐO LƯỜNG VÀ ĐIỀU KHIỂN MÁY TÍNH ĐIỀU KHIỂN ĐỘNG CƠ SỬ DỤNG CÁC GIAO TIẾP NỐI TIẾP VÀ GIAO TIẾP USB BẰNG QT C++ LỚP L01 HK 212 G.

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÀI TẬP LỚN MÔN ĐO LƯỜNG VÀ ĐIỀU KHIỂN MÁY TÍNH

ĐIỀU KHIỂN ĐỘNG CƠ SỬ DỤNG CÁC GIAO TIẾP NỐI TIẾP VÀ GIAO

TIẾP USB BẰNG QT C++

LỚP L01 - HK 212 Giảng viên hướng dẫn: Ts Nguyễn Hoàng Giáp Sinh viên thực hiện: Châu Trí Viễn MSSV: 1912434

Đánh giá mức độ hoàn thành:

BTL Mức độ

hoàn thành Link GitHub BTL1: Giao

tiếp Serial

Port

100% https://github.com/Vienchau/SerialPort_GUI_study

BTL2: Giao

tiếp Serial

Port điều

khiển động

100% https://github.com/Vienchau/MOTOR_CONTROL

BTL3: Giao

tiếp USB

điều khiển

động cơ

70%

https://github.com/Vienchau/USB-COMMUNICATION-QT

Thành phố Hồ Chí Minh – 2022

Trang 2

BTL1: Giao tiếp Serial Port với board STM32

1 Mô tả tổng quan phần cứng

Ở bài tập lớn 1, phần cứng bao gồm các module: USB UART CP2102, board STM32F103 Các Module được kết nối với nhau để giao tiếp Serial Port

Về Firmware, code được gen trên CUBEMX và lập trình trên IDE KeilC, có tham khảo nhiều từ, chủ yếu là kiến thức từ giảng viên bộ môn

Hình 1 Generate code bằng CUBEMX

Về Software, giao diện người dùng (GUI) được viết trên nền tảng QT C++ hệ điều hành Windows Giao diện này có frame truyền dựa trên một phần của firmware tham khảo của giảng viên bộ môn

Trang 3

Hình 2 Giao diện cơ bản của phầm mềm QT

2 Phần mềm trên QT C++

Thiết kế GUI được hỗ trợ mạnh trên Qt Designer, giao diện GUI cơ bản như sau:

Hình 3 Giao diện thiết kế kéo thả của QT Designer

Giao diện bao gồm các Label biểu thị chữ, các QcomboBox để chọn thông số Serial Port, các QpushButton để giao tiếp, gửi nhận Ngoài ra còn có QradioBox để chọn cấu hình led

Về phần code, ta thêm thử viện serialport vào file pro để tích hợp thư viện của QT hỗ trợ SerialPort

Trang 4

Hình 4 Thêm thư viện serialport của QT

Ở phần code của mainwindow.cpp, ta connect signal của serialport để giao tiếp serial port như sau:

Hình 5 Hàm connect để tại signal từ cổng serialport, khi có signal từ port, sẽ gọi

hàm serial_read()

Hàm serial_read():

Hình 6 Sử dụng readAll() từ class để đọc tín hiệu từ SerialPort

Ngoài ra còn có các hàm để gửi data đến port từ máy tính như hàm Writes(), các khâu xử lý nhận gửi có thể tham khảo trong src đính kèm hoặc Github

Kết quả, giao diện sau khi hoàn thành có thể giao tiếp serial port với phần cứng, video demo được đính kèm trong thư mục nộp bài (BTL1.mp4):

Trang 5

Hình 7 Giao diện sau khi hoàn thành

Trang 6

BTL2: Giao tiếp Serial Port với board STM32F407 điều khiển động cơ

1 Mô tả tổng quan phần cứng

Ở bài tập lớn này, Firmware được viết trên CubeIDE và Sofware đươc viết trên Qt 5.15 C++ Thực hiện trên hệ điều hành Ubuntu (Linux)

Tương tự như bài trước, về mặt Firmware có tham khảo từ giảng viên bộ môn Phần Software do sinh viên tự viết, framework dựa trên phần Firmware để phát triển

Hình 8 Giao diện CubeIDE trên nền tảng Ubuntu

Hình 9 Phần cứng sử dụng trong BTL2

Phần cứng sử dụng trong bài này là STM32F407, động cơ Encoder GM37, L298N và USB UART CP2102

2 Phần mềm trên QT C++

Trang 7

Software của bài này của tương tự như bài trước, cùng với thư viện serialport trong file pro, ta sử dụng thêm thư viện printsupport để dùng qcustomplot vẽ đồ thị QcustomPlot là thư viện mã nguồn mở hỗ trợ Qt Framework mạnh mẹ (từ bản 6.0 trở xuống) Chi tiết có thể truy cập tại https://www.qcustomplot.com/

Hình 10 Giới thiệu QCustomPlot

Cũng tương tự BTL1, ta tạo UI bằng QT Designer:

Hình 11 Giao diện kéo thả tạo bằng QT Designer

Trang 8

Giao tiếp serialport tương tự BTL1, bên cạnh đó, ta cần vẽ đề thị bằng qcustomplot, một số hàm set up và init như sau:

Hình 12 Hàm plotSetting() để chỉnh sửa một số thông số đồ thị

Hình 13 Hàm plotConfig() dể init các 4 đồ thị, trong hình là init PID plot Các đồ

thị còn lại tương tự

Kết quả, giao diện cho ra có khả năng giao tiếp serial port để điều khiển động

cơ cũng như thu thập số liệu để vẽ các đồ thị PID, position, velocity và accelerometer Video demo và src code có đính kèm với thư mục nộp bài và có link github của sinh viên bao gồm src code đính kèm

Trang 9

Hình 14 Giao diện sau khi thiết kế và hoàn thiện về code

Trang 10

BTL3: Giao tiếp USB với board STM32F407 điều khiển động cơ

1 Mô tả tổng quan phần cứng

BTL3 bao gồm các phần cứng của BTL2, ngoài ra có thêm cáp USB giao tiếp với STM32F407 Về mặt phần mềm SW, ta có các thay đổi về thư viện để đọc các VendorID… Còn Firmware từ BTL2, ta thêm các setup về USB như sau:

Hình 15 Chỉnh sửa config lại CUBEMX để giao tiếp USB

Ngoài ra, ta còn thay đổi src code một phần trong firmware như sau để giao tiếp USB:

Hình 16 Thay đổi firmware, xóa đi các func không cần thiết của uart

2 Phần mềm trên QT C++

Trang 11

Phần mềm thêm một group để đọc các thông số như sau:

Hình 17 Một phần thêm vào được thiết kế trên giao diện QT Designer

Về phần mềm SW, BTL sinh viên chỉ thực hiện 70% vì có trục trặc về Encoder của Động cơ Bên cạnh đó, sinh viên cũng dùng thêm một số Class như QserialPortInfo để đọc các VendorID…

Hình 18 Đoạn code sử dụng Class QSerialPortInfo để đọc các thông số

VendorID…

Kết quả với video demo BTL3.mp4, SW này vẫn kết nối và gửi thông số tới STM32F407 qua USB được, ngoài ra vẫn nhận các thống số như VendorID được

Vì lí do trục trặc về phần cứng, hiện tại sinh viên vẫn chưa debug và chỉnh sửa thêm được

Trang 12

Hình 19 Giao diện nhận và gửi PID thành công

Hình 20 Thông tin port hiển thị trên GUI

Ngày đăng: 02/11/2022, 09:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w