You are on page 1of 273

LẬP TRÌNH ĐỒ HOẠ

❖ Tôn chỉ “Tri thức – Đạo đức – Sáng tạo”,


❖ HUTECH thực hiện Triết lý giáo dục “ Học cách học, học để làm,
học để sáng tạo, học để cùng chung sống và học để tự lập”
Thông tin giảng viên

Giảng Viên: ThS Phạm Quốc Phương


Viện kỹ thuật
Bộ môn: ĐCN-TĐH
Điện thoại: 0913693594
Email:pq.phuong@hutech.edu.vn
ĐỀ CƯƠNG CHI TIẾT

Link file “ĐỀ CƯƠNG CHI TIẾT”


1. Khảo sát - Chia nhóm

2. Tạo group zalo: Lập trình đồ họa – Lớp ….


Bài 1. Giới thiệu về lập trình đồ họa
Bài 2. Vòng lặp – Các cấu trúc đặc biệt
Bài 3. STRING – IO.
Bài 4. Kỹ thuật gỡ rối
NỘI DUNG Bài 5. UART Labview
HỌC PHẦN
Bài 6. Linx – Lifa arduino – Labview
Bài 7. Truyền thông USB trong labview
Bài 8. Thuật toán điều khiển vòng kín
Self driving car
LabVIEW - Robot
BÀI 1
GIỚI THIỆU VỀ LẬP TRÌNH ĐỒ HỌA

1.1 MỘT SỐ KHÁI NIỆM CƠ BẢN

1.1.1 Ngôn ngữ lập trình

1.1.2 Chương trình

1.1.3 Đặc điểm của ngôn ngữ lập trình


1.1.1 Ngôn ngữ lập trình
Ngôn ngữ lập trình phải thỏa mãn được hai điều kiện cơ
bản sau:

▪ Dễ hiểu và dễ sử dụng, có thể


dùng để giải quyết nhiều bài
toán khác nhau.

▪ Mô tả một cách đầy đủ và rõ


ràng các tiến trình (process)
để chạy được trên các hệ máy
tính khác nhau.
1.1.2 Chương trình
❖ “Hello, world” viết bằng C++

❖ “hello world” viết bằng Python

❖ “hello world” viết bằng Java


1.1.3 Đặc điểm của ngôn ngữ lập trình

Mỗi ngôn ngữ lập trình có thể được xem như là một tập
hợp của các chi tiết kỹ thuật chú trọng đến cú pháp, từ
vựng, và ý nghĩa của ngôn ngữ.
1.2 TỔNG QUAN VỀ LABVIEW

1.2.1 Giới thiệu

1.2.2 Các chức năng chính của LabVIEW

1.2.3 Môi trường phát triển LabVIEW

1.2.4 Các bước tạo 1 project trong LabVIEW

1.2.5 Chức năng 1 số công cụ trong Labview


Jeff Kodosky, the “Father of LabVIEW,”
demonstrates an early version of LabVIEW in
1.2.1 Giới thiệu: 1988.

LabVIEW (viết tắt của nhóm từ Laboratory Virtual Instrumentation


Engineering Workbench)
➢ Là một phần mềm máy tính được phát triển bởi công ty National
Instruments, Hoa kỳ. LabVIEW là một ngôn ngữ lập trình với khái niệm
hoàn toàn khác so với các ngôn ngữ lập trình truyền thống như ngôn ngữ
C, Pascal ...
➢ LabVIEW diễn đạt cú pháp thông qua hình ảnh trực quan trong môi trường
soạn thảo.
➢ LabVIEW được gọi tên khác là lập trình G (viết tắt của Graphical, nghĩa là
đồ họa).
1.2.2 Các chức năng chính của LabVIEW

❖ Thu thập các tín hiệu như: cảm biến dòng, cảm biến
áp, cảm biến nhiệt độ, cảm biến lưu lượng, hình ảnh
từ webcam, encoder,...

❖ Giao tiếp với các thiết bị ngoại vi thông qua một số


chuẩn giao tiếp: RS232, RS485, USB, PCI, Ethernet.

❖ Mô phỏng và xử lý các tín hiệu thu nhận được để


phục vụ các mục đích nghiên cứu hay mục đích của
hệ thống mà người lập trình mong muốn.
❖ Xây dựng các giao diện người dùng một cách nhanh
chóng và thẩm mỹ hơn nhiều so với các ngôn ngữ
khác như: Visual Basic, Matlab,..

❖ Cho phép thực hiện các thuật toán điều khiển như:
PID, Fuzzy, LQR, … một cách nhanh chóng thông
qua các chức năng tích hợp sẵn trong LabVIEW.

❖ Cho phép kết hợp với nhiều ngôn ngữ lập trình truyền
thống như: C, C++,...
1.2.3 Môi trường phát triển LabVIEW
Ví dụ 1: Tạo 1 VI (Virtual Instrumentation )

Click biểu tượng


Ví dụ 2: Tạo 1 VI như hình
Tạo code

Front Panel Diagram


Diagram
Click phải
Bảng 1.1 Biểu diễn các loại dây nối phổ biến.
Bài tập 1: Tạo 1 VI và code như hình

a. A, B là 2 số nguyên 8 bit.

b. A, B là 2 số nguyên 16 bit.

c. A, B là 2 số thực.
Hướng dẫn

a. A, B là 2 số nguyên 8 bit.

b. A, B là 2 số nguyên 16 bit.

c. A, B là 2 số thực.
a. b. c.
Bài tập 2: Tạo 1 VI và code như hình (xử lí chuổi)

a. Nếu số kí tự trong chuỗi lớn hơn 5 thì Led1 sáng

b. Nếu kí tự bắt đầu “B” thì Led1 sáng

c. Nếu kí tự thứ 3 là “e” thì Led1 sáng


Hướng dẫn

a. Nếu số kí tự trong chuỗi lớn hơn 5 thì Led1 sáng

Các bước thực hiện:


a. Nếu số kí tự trong chuỗi “lớn hơn 5” thì Led1 sáng
b. Nếu kí tự bắt đầu “B” thì Led1 sáng
c. Nếu kí tự thứ 3 là “e” thì Led1 sáng
Ví dụ 3: Numeric to string
Code
Ví dụ 4: Scan from string
❖Một số khối lệnh mở rộng: Functions/String

1. Format Date/Time String

time stamp
2. To Upper Case – To Lower Case
1.2.4 Thay đổi hình ảnh một đối tượng trong Labview

Các bước thực hiện:

Click chọn đối tượng → Edit/Customize Control...


❖ Ví dụ: SW điều khiển đèn

SW1 OFF SW1 ON


1.2.5 Slider
control

indicator
1.2.6 Knob – Dial

control

1.2.7 Meter - Gause

indicator
1.2.8 Graph
Ví dụ 1: Dùng Waveform hiển thị tín hiệu
Các bước thực hiện:

1. Dùng Vi phát tín hiệu: Express/Input/Simulate Sig


2. Đặt 1 Waveform trong Front panel:

Graph/Waveform Chart
Ví dụ 1: Vẽ đồ thị y=ax+b x[-5,5]
Ví dụ 2: Vẽ đồ thị y=a 𝑥 2 + 𝑏𝑥 + 𝑐 x[-10,10]
CÂU HỎI ÔN TẬP BÀI 1

Câu 1: Ngôn ngữ lập trình là gì ?

Câu 2: Lập trình đồ hoạ là gì?

Câu 3: Ưu điểm của ngôn ngữ lập trình đồ hoạ với những
ngôn ngữ lập trình khác?

Câu 4: Labview do công ty nào phát triển?

Câu 5: Trình bày một số chức năng chính và lĩnh vực ứng
dụng của phần mềm Labview?

Câu 6: Điều khiển và hiển thị dạng số là gì ?


Câu 7: Điều khiển và hiển thị dạng boolean là gì ?

Câu 8: Điều khiển và hiển thị dạng chuỗi là gì ?

Câu 9: Trong trường hợp nếu có nhiều dây nối bị hỏng


(broken wires) phải làm như thế nào ?

Câu 10: Trình bày màu sắc của từng loại dữ liệu Numeric,
Boolean, String ?
BÀI 2:
VÒNG LẶP – CÁC CẤU TRÚC ĐẶC BIỆT

2.1 VÒNG LẶP (LOOP)

2.1.1 Vòng lặp While

2.1.2 Vòng lặp For

2.2 CÁC CẤU TRÚC ĐẶC BIỆT

2.2.1 Cấu trúc Case

2.2.2 Enum

2.2.3 Cấu trúc SEQUENCE


2.1 VÒNG LẶP (LOOP)

2.1.1 Vòng lặp While


❖“While Loop” trong Labview:
Programming/Structures/While Loop
Ví dụ: Hiển thị Random nhiệt độ dùng “While Loop”
Bài tập: Chuyển đổi nhiệt độ Celsius Kelvin Fahrenheit

dùng “While Loop”

1. Celsius - Kelvin Converter.

2. Kelvin - Fahrenheit Converter.

3. Celsius - Fahrenheit Converter


2.1.2 Vòng lặp For
❖“For Loop” trong Labview:
Programming/Structures/For Loop
Ví dụ: Hiển thị từ 0-10 dùng “For Loop” thời gian delay1s
Chú ý: khi dùng “For Loop”
Chú ý: Thoát “For Loop”
Bài tập: Hiển thị từ 0-99 dùng “For Loop” thời gian delay1s

➢ Nếu số đếm <90 thì led 1 sáng, led 2 tắt.

➢ Nếu số đếm >=90 thì led 2 sáng, led 1 tắt.


Hướng dẫn
2.2 CÁC CẤU TRÚC ĐẶC BIỆT

2.2.1 Cấu trúc Case


Ví dụ: Điều khiển 3 led theo yêu cầu

➢ Nếu SW = 1 (True) → led 1, led3 sáng.

➢ Nếu SW = 0 (False) → led 1, led2 sáng


Hướng dẫn
Code
Bài tập: Chuyển đổi nhiệt độ Celsius Kelvin Fahrenheit

dùng “case structure”


2.2.2 Enum
Buổi 3
Cấu trúc Flat Sequence
Local Variable
2.2.3 Cấu trúc Flat Sequence

Functions/Programming/Structures/Flat Sequence

Buổi 3 Slide 74
❖ Add Frame …
Click phải đối tượng/Add Frame After (Before)

Buổi 3 Slide 75
❖ Phát hiện cạnh xuống của tín hiệu

Buổi 3 Slide 76
❖ Phát hiện cạnh xuống của tín hiệu

Buổi 3 Slide 77
Ví dụ 1: Điều khiển Led

➢ Thiết kế Front Panel như hình.

➢ Xây dựng Block Diagram (code) điều khiển led sáng –


tắt xen kẽ (delay = 1s).

Buổi 3 Slide 78
Hướng dẫn: Sử dụng chức năng “Local Variable”

Click phải đối tượng/Create/Local Variable

Buổi 3 Slide 79
Hướng dẫn: code demo

Buổi 3 Slide 80
Bài tập1: Điều khiển 2 Led

➢ Thiết kế Front Panel như hình.

➢ Xây dựng Block Diagram (code) điều khiển 2 led sáng


– tắt xen kẽ (delay = 1s).

Buổi 3 Slide 81
Hướng dẫn: Sử dụng chức năng “Local Variable”

Buổi 3 Slide 82
Ví dụ 2: Điều khiển 8 Led

➢ Thiết kế Front Panel như hình.

➢ Xây dựng Block Diagram (code) điều khiển 8 led sáng


– tắt xen kẽ (delay = 1s).

Buổi 3 Slide 83
Hướng dẫn: Sử dụng chức năng “Local Variable”

Buổi 3 Slide 84
Bài tập 2: Điều khiển 8 Led

➢ Thiết kế Front Panel như hình.

➢ Xây dựng Block Diagram (code) điều khiển 8 led sáng


dần từ D0 đến D7 (delay = 1s).

Front Panel

Buổi 3 Slide 85
Hướng dẫn: Sử dụng chức năng “Local Variable”

Buổi 3 Slide 86
Ví dụ 3: Điều khiển đèn giao thông (không hiển thị thời gian)

➢ Thiết kế Front Panel như hình.

➢ Xây dựng Block Diagram (code).

Buổi 3 Slide 87
Hướng dẫn: Sử dụng chức năng “Local Variable”, For Loop

coercion

Buổi 3 Slide 88
Hướng dẫn: Sử dụng chức năng “Local Variable”, For Loop

Buổi 3 Slide 89
Bài tập 3: Điều khiển đèn giao thông (hiển thị thời gian)

➢ Thiết kế Front Panel như hình.

➢ Xây dựng Block Diagram (code).

Buổi 3 Slide 90
Hướng dẫn: Sử dụng chức năng “Local Variable”, For Loop,
Shift Register.

Buổi 3 Slide 91
Ví dụ: Shift Regiter

Buổi 3 Slide 92
Hướng dẫn: Sử dụng chức năng “Local Variable”, For Loop,
Shift register.

Buổi 3 Slide 93
Buổi 4
Cấu trúc “Formula Node”
❖ Giới thiệu

Phương trình: c=a+b

1. Ngôn ngữ C
c=a+b;

2. Ngôn ngữ G (Labview)

Buổi 4 Slide 95
❖ Giới thiệu

Phương trình: c=a+b

1. Ngôn ngữ C
c=a+b;

2. Ngôn ngữ G (Labview)

Buổi 4 Slide 96
4.1 Cấu trúc Formula Node

Functions/Programming/Structures/Formula Node

Buổi 4 Slide 97
4.2 Add Input, Output …
Click phải đối tượng/Add Input (Output)

Buổi 4 Slide 98
Buổi 4 Slide 99
Hướng dẫn:
Front Panel

Block Diagram

Chú ý

Buổi 4 Slide
Buổi 4 Slide
Hướng dẫn:
Front Panel

Block Diagram

Buổi 4 Slide
Buổi 4 Slide
Hướng dẫn:
Front Panel

Block Diagram

Buổi 4 Slide
Buổi 4 Slide
Bài tập 4: Cho Front Panel
Yêu cầu:
1. Temperature: số thực (input)
2. Thermometer: hiển thị nhiệt
độ C.
3. Điều khiển 3 led (điều kiện
như hình).
4. Dùng “Formula Node”

Buổi 4 Slide
Hướng dẫn:

Front Panel Block Diagram

Buổi 4 Slide
Bài tập 5: Cho Front Panel
Yêu cầu:
1. Temperature : số thực (độ C)
2. Thermometter: hiển thị nhiệt độ K.
3. Điều khiển 3 led theo độ K.
4. Dùng “Formula Node”

Buổi 4 Slide 108


Bài tập 6: Cho Front Panel
Yêu cầu:
1. Temperature : số thực (độ C)
2. Thermometter: hiển thị nhiệt độ F.
3. Điều khiển 3 led theo độ F.
4. Dùng “Formula Node”

Buổi 4 Slide 109


Bài tập 7: Cho Front Panel
Yêu cầu:
1. Temperature : số thực (độ C)
2. Thermometter: hiển thị nhiệt độ F,K.
3. Điều khiển 3 led theo độ F.
4. Dùng “Formula Node”

Buổi 4 Slide 110


Bài tập 8: Cho “Block Diagram” sau

1. Tính y
2. Kiểu dữ liệu kết quả y?
Buổi 4 Slide 111
Bài tập 9: Cho “Block Diagram” sau

1. Tính y
2. Kiểu dữ liệu kết quả y

Buổi 4 Slide 112


Bài tập 10: Viết phương trình chuyển đổi V→T (adc=10bit)

Buổi 4 Slide
Bài tập 11: Đo nhiệt độ dung Thermistor 10K

-1

Trong đó:

Buổi 4 Slide
Hướng dẫn: Đo nhiệt độ dung Thermistor 10K

Buổi 4 Slide
Hướng dẫn: Lấy khối “ln”
Mathematics/Elementary/Exponential/ln

Buổi 4 Slide
Buổi 5

Radio buttons – Check box


Tab Control
Giới thiệu

Buổi 5 Slide 118


5.1 Radio buttons trong Labview

Buổi 5
❖ Add Radio buttons

Click phải

Buổi 5 Slide 120


❖ Ví dụ: Thiết kế “Front Panel” như hình

Yêu cầu: Dùng “Radio Buttons”

Buổi 5 Slide 121


Hướng dẫn: Thiết kế “Front Panel” như hình

Framed
color box

Radio Buttons

Buổi 5 Slide 122


Framed Color Box: Control/Numeric/Framed Color Box

Buổi 5 Slide 123


Front Panel Block Diagram

Buổi 5 Slide 124


❖ Bài tập 1: Thiết kế “Front Panel” như hình

Yêu cầu:

1. Thiết kế FrontPanel

2. Dùng “Radio Buttons”

3. Xây dựng Block Diagram


Buổi 5 Slide 125
5.2 Checkbox trong Labview
Control/ System/Boolean/System Checkbox

Buổi 5
❖ Ví dụ: Thiết kế “Front Panel” như hình

Yêu cầu: Dùng “Checkbox”

Buổi 5 Slide 127


Hướng dẫn: Thiết kế “Front Panel” như hình

Buổi 5 Slide 128


5.3 Tab Control trong Labview

Control/ Modern/Containers/Tab Control

Buổi 5
❖ Add Tab Control

Click phải

Buổi 5
❖ Ví dụ: Thiết kế “Front Panel” như hình

Buổi 5 Slide 131


Hướng dẫn:

Buổi 5 Slide 132


Hướng dẫn:

Buổi 5 Slide 133


Bài tập 1: Thiết kế Front Panel – Block Diagram như hình

Buổi 5 Slide 134


Hướng dẫn:

Buổi 5 Slide 135


Hướng dẫn:

Buổi 5 Slide 136


Hướng dẫn:

Buổi 5 Slide 137


Hướng dẫn:

Buổi 5 Slide 138


Hướng dẫn:

Buổi 5 Slide 139


Tạo khối “Get Image”

Buổi 5 Slide 140


Save file: JPEG, PNG, or BMP

Buổi 5 Slide 141


Hướng dẫn:

Buổi 5 Slide 142


Hướng dẫn:

Buổi 5 Slide 143


Hướng dẫn:

Buổi 5 Slide 144


❖ Bài tập 2: Thiết kế “Front Panel” như hình

Buổi 5 Slide 145


5.4 Spectral

Buổi 5 Slide 146


5.4 Spectral

Buổi 5 Slide 147


5.5 Trigger And Gate
❖ Bài tập 3: Thiết kế “Front Panel” như hình

Buổi 5 Slide 149


Buổi 6

Array - Matrix
Mảng – Ma trận

Buổi 6 Slide 151


Buổi 6 Slide 152
6.2 Chức năng các khối xử lí Array

6.2.1 Array Size

Ví dụ: Tính kích thước của mảng

Buổi 6 Slide 153


6.2.2 Index Array

Ví dụ: Tìm giá trị của phần tử trong mảng

Buổi 6 Slide 154


6.2.3 Replace Array Subnet

Buổi 6 Slide 155


Ví dụ: Thay thế giá trị của phần tử trong mảng

Buổi 6 Slide 156


6.2.4 Insert Into Array

Buổi 6 Slide 157


Ví dụ: Chèn thêm cột hoặc hàng vào mảng

Buổi 6 Slide 158


6.2.5 Initialize Array

Buổi 6 Slide 159


Ví dụ: Tạo 1 mảng 2 chiều sau

Buổi 6 Slide 160


6.2.6 Build Array

Buổi 6 Slide 161


Ví dụ 1: Tạo 1 mảng 2 chiều từ 2 mảng 1 chiều

Buổi 6 Slide 162


Ví dụ 1: Tạo 1 mảng 1 chiều từ 2 mảng 1 chiều

Buổi 6 Slide 163


Ví dụ 2: Tạo 1 mảng 1 chiều từ 2 mảng 1 chiều

Buổi 6 Slide 164


6.2.7 Search 1D Array

Buổi 6 Slide 165


Ví dụ 1: Tìm 1 phần tử trong 1D Array

Buổi 6 Slide 166


6.2.8 Search 2D Array

Buổi 6 Slide 167


❑ Các bước thực hiện:

1. Chuyển “2D Array” sang “1D Array”

2. Dùng lệnh “Search 1D Array”

Cách 1
“For Loop”, “Build Array”

Buổi 6 Slide 168


Cách 2
“Array Size”, “Index Array”, “Reshape Array”

Buổi 6 Slide 169


Thủ thuật: Chuyển nhanh “2D Array” sang “1D Array”

Buổi 6 Slide 170


Bài tập: Thiết kế Front Panel – Block Diagram như hình:

Yêu cầu: Nhập vị trí hàng (ROW), cột (COLUMN) tương


ứng với led ở vị trí hàng, cột sẽ sáng

Buổi 6 Slide 171


Buổi 7

Toolkit
CD Simulation & Control
Giới thiệu

Trong đó:
m, M: khối lượng vật hoặc xe.
k: độ cứng lò xo.
c: hệ số giảm chấn.
F(t): lực tác động lên xe hoặc vật
Mass-spring-Damper
x(t): vị trí của xe hoặc vật.

Phương trình vi phân:

Buổi 7 Slide 173


Mô phỏng hoạt động hệ: Mass-spring-Damper

Buổi 7 Slide 174


SolidWork - Labview

Buổi 7 Slide 175


7.1 Toolkit CD Simulation & Control

Buổi 7 Slide 176


7.2 Xây dựng mô hình toán hệ thống trong Labview

7.2.1 Phương trình vi phân

Mass-spring-Damper
Phương trình vi phân của hệ thống:

Buổi 7 Slide 177


Buổi 7 Slide 178
❖ Kết quả mô phỏng

Buổi 7 Slide 179


Bài tập 1: Phương trình động học của tốc độ xe ô tô theo lực kéo
của động cơ
B

Trong đó: M - khối lượng xe,


B - hệ số ma sát: thông số của hệ thống
f(t) - lực kéo của động cơ: tín hiệu vào
v(t) - tốc độ xe: tín hiệu ra
Yêu cầu: Xây dựng PT vi phân dùng Toolkit CD Simulation & Control

Buổi 7 Slide 180


7.2.2 Hàm truyền

Mass-spring-Damper

❑ Phương trình vi phân của hệ thống:

Buổi 7 Slide 181


Phương trình vi phân - Hàm truyền

Buổi 7 Slide 182


❑ Hàm truyền trong Labview

Path: Simulation & Control /Simulation /Continuous Linear


Systems /Transfer Function

Buổi 7 Slide 183


Buổi 7 Slide 184
Ví dụ: Thiết lập hàm truyền

Buổi 7 Slide 185


❖ Kết quả mô phỏng

Buổi 7 Slide 186


Bài tập 2: Phương trình động học của tốc độ xe ô tô theo lực kéo
của động cơ
B

Trong đó: M - khối lượng xe,


B - hệ số ma sát: thông số của hệ thống
f(t) - lực kéo của động cơ: tín hiệu vào
v(t) - tốc độ xe: tín hiệu ra
Yêu cầu: - Xây dựng hàm truyềndùng Toolkit CD Simulation & Control
- Mô phỏng hoạt động

Buổi 7 Slide 187


Bài tập 3: Cho 1 mô hình có PTVP sau

Buổi 7 Slide 188


Buổi 7 Slide 189
7.2.3 Phương trình trạng thái

Mass-spring-Damper
❑ Phương trình vi phân của hệ thống:

❑ Phương trình trạng thái:

Buổi 7 Slide 190


Phương trình vi phân - PTTT

Đặt:

Buổi 7 Slide 191


Chuyển sang dạng ma trận

Phương trình ngõ ra (vị trí)

Buổi 7 Slide 192


Single pendulumsystem

❑ Phương trình vi phân của hệ thống:


𝑑2 𝜃 𝑐 𝑑𝜃 𝑔
2
+ 2 + 𝑠𝑖𝑛𝜃 = 0
𝑑 𝑡 𝑚𝑙 𝑑𝑡 𝑙

c: viscous damping coefficient (kg/s) (0.1kg/s)

Buổi 7 Slide 193


Phương trình vi phân - Phương trình trạng thái
𝑑2 𝜃 𝑐 𝑑𝜃 𝑔
+ + 𝑠𝑖𝑛𝜃 = 0 (1)
𝑑2 𝑡 𝑚𝑙 𝑑𝑡 𝑙

Đặt: 𝑥1 = 𝜃; 𝑥2 = 𝜃ሶ
ሶ 𝑥2
𝑥ሶ1 = 𝜃=
𝑐 𝑑𝜃 𝑔
𝑥ሶ 2 = 𝜃ሷ = − − 𝑠𝑖𝑛𝜃
𝑚𝑙 𝑑𝑡 𝑙

Buổi 7 Slide 194


❑ PTTT trong Labview

Path: Simulation & Control /Simulation /Continuous Linear


Systems /State-Space

Buổi 7 Slide 195


Buổi 7 Slide 196
❖ Kết quả mô phỏng

Buổi 7 Slide 197


Control Tutorials for MATLAB and Simulink - Home (umich.edu)

DC Motor Position: System Modeling

1. Physical setup

Buổi 7 Slide 198


2. System equations

Buổi 7 Slide 199


Buổi 8

CD Simulation & Control


PID ALGORITHM
Giới thiệu

VS

Buổi 8 Slide 201


Buổi 8 Slide 202
Buổi 8 Slide 203
Buổi 8 Slide 204
Buổi 8 Slide 205
Buổi 8 Slide 206
Buổi 8 Slide 207
Buổi 8 Slide 208
Buổi 8 Slide 209
Buổi 8 Slide 210
8.1 Thuật toán PID

Buổi 8 Slide 211


8.2 Ý nghĩa các thông số: Kp, Ki, Kd
8.2.1 Thay đổi Kp

Buổi 8 Slide 212


8.2.2 Thay đổi Ki

Buổi 8 Slide 213


8.2.3 Thay đổi Kd

Buổi 8 Slide 214


8.2.3 Mục tiêu

✓ Giảm độ vọt lố

✓ Khử sai số xác lập

✓ Giảm dao động

Buổi 8 Slide 215


8.2.4 PID trong Toolkit Simulation & Control

Buổi 8 Slide 216


((J*s+b)*(L*s+R)+K^2)

Điều khiển vận tốc dc motor dùng PID

Hàm truyền


Θ(𝑠) 𝐾
=
𝑉(𝑠) ( 𝐽𝑠 + 𝑏 ∗ 𝐿𝑠 + 𝑅 + 𝐾 2 )

Control Design

𝜃ሶ𝑟 𝐾
𝑆𝑃 PID 𝜃ሶ
( 𝐽𝑠 + 𝑏 ∗ 𝐿𝑠 + 𝑅 + 𝐾 2 )

Buổi 8 Slide 217


Front Panel

Block Diagram

Buổi 8 Slide 218


Ví dụ 2: Điều khiển lò nhiệt

Đặc tính lò nhiệt

Buổi 8 Slide 219


❑ Thông số mô phỏng:
K=150(độ C)
T1=8(s)
T2=15(s)

Buổi 8 Slide 220


❑ Mô phỏng lò nhiệt theo đặc tính gần đúng

Path: Control & Simulation\Control Design\Model Construction\CD


Contruct Transfer Function Model.vi
Buổi 8 Slide 221
Path: Control & Simulation\Control Design\Time Response\CD Step Response.vi
Buổi 8 Slide 222
❑ Mô phỏng lò nhiệt theo đặc tính chính xác

Path: Control & Simulation\Control Design\Model Interconnection\CD Series.vi


Buổi 8 Slide 223
Path: Control & Simulation\Control Design\Time Response\CD Step Response.vi
Buổi 8 Slide 224
❑ Điều khiển vòng kín lò nhiệt theo đặc tính chính xác

Buổi 8 Slide 225


❑ Điều khiển vòng kín lò nhiệt theo đặc tính chính xác

Buổi 8 Slide 226


Bài tập: Mô phỏng điều khiển PID động cơ DC

Ф(s) is the angular velocity (rad/sec)


V(s) is applied voltage (V)
J is the rotor inertia (9.64E-6)
R is the rotor resistance (3.3 Ώ)
K is the torque constant (0.028 N-m/A)
L is the Inductance ( 4.64E-3 H)
B is the Friction Torque Constant (1.8E-6 N-m-s)

Buổi 8 Slide 227


Buổi 8 Slide 228
right-click on the PID.vi and select SubVI Node Setup

Buổi 8 Slide 229


Buổi 8 Slide 230
Auto Turning

Buổi 8 Slide 231


PID Turning

Buổi 8 Slide 232


Ví dụ 1: Điều khiển vòng hở dc Motor

Mô hình động cơ DC nam châm vĩnh cửu

Buổi 8 Slide 233


❑ Hàm truyền dc Motor

Buổi 8 Slide 234


❑ Phương trình vi phân dc Motor

Buổi 8 Slide 235


Buổi 8 Slide 236
Hàm truyền dc Motor

Km: Motor back-EMF constant (V/(rad/s))


Rm: Motor armature resistance (Ohms)
Jeq: Equivalent moment of inertia (kg*m2)
(Assume that Jeq=Jm(Motor armature moment of inertia))

Cho:

Buổi 8 Slide 237


❑ Hàm truyền dc Motor

1. Định luật Kirschoff’s 2:

Buổi 8 Slide 238


Buổi 8 Slide 239
8.4 Inverted Pendulum (MIMO)

The mathematical model for this system can be expressed as follows:

Buổi 8 Slide 240


8.4.1 Pole placement controller:

In designing this pole placement controller we have placed the


system poles at a location given by matrix P.
P= [-4+4i, -4-4i, -7, -8]

We obtained the state feedback gain matrix using Ackerman’s


formulae as:

K = [ -1604.9 -357.73 -914.29 -473.47]

Buổi 8 Slide 241


Buổi 8 Slide 242
8.5 Thuật toán LQR (LQR is a state feedback controller)

Inverted Pendulum (MIMO)


Buổi 8 Slide 243
Buổi 8 Slide 244
Buổi 9: LIFA-LINX ARDUINO

9.1 Giới thiệu arduino

9.2 Giao thức Lifa

9.3 Giao thức Linx


6.1 Giới thiệu arduino

Arduino là một board mạch vi xử lý, nhằm xây dựng các


ứng dụng tương tác với nhau hoặc với môi trường được
thuận lợi hơn. Phần cứng bao gồm một board mạch nguồn
mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit,
hoặc ARM Atmel 32-bit.
6.1 Giới thiệu arduino

Arduino là một board mạch vi xử lý, nhằm xây dựng các


ứng dụng tương tác với nhau hoặc với môi trường được
thuận lợi hơn. Phần cứng bao gồm một board mạch nguồn
mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit,
hoặc ARM Atmel 32-bit.
6.2 Giao thức Lifa

6.2.1 Download và cài đặt add on Lifa trong Labview

▪Download và cài đặt VI Package Manager (VIPM).

▪Download NI LabVIEW Interface for Arduino Toolkit.


Ví dụ: BlinkM
6.3 Giao thức Linx

LINX là một bộ công cụ được tạo bởi LabVIEW MakerHub,


LINX dễ dàng giao tiếp với các nền tảng nhúng phổ biến
như: chipKIT, Arduino, và NI myRIO cũng như các cảm
biến thông thường bao gồm ( gia tốc, nhiệt độ và siêu
âm…).
❑Load Firmware

1. Mở phần mềm LabVIEW.

2. Click Tools»MakerHub»LINX»Firmware Wizard…

3. Chọn Device Family (Arduino, Digilent, PJRC, Sparkfun).


4. Chọn board Arduino tương ứng trong Device Type.

5. Click Next.
6. Chọn cổng COM tương ứng.

7. Click Next.

8. Đợi upload firmware


❑Điều khiển RC Servo
❑ Thiết lập RC Servo
❑ Điều khiển RC Servo
Bài tập 2: Viết chương trình điều khiển tốc độ DC Motor
dùng cả 2 giao thức LINX và LIFA.

1. Tạo giao diện Front Panel như hình vẽ.

2. Viết code
Bài tập 3: Viết chương trình phát tần số tên Buzzer.

1. Tạo giao diện Front Panel như hình vẽ.

2. Viết code
BÀI 7: GIAO TIẾP USB

7.1 GIỚI THIỆU


7.1.1 Những đặc trưng của cổng USB
7.1.2 Phân loại
7.1.3 Cấu trúc cổng USB
7.1.4 Truyền dữ liệu qua cổng USB
7.1.5 Hub USB
7.2 GIAO TIẾP USB TRONG LABVIEW

7.2.1 USB - VISA

7.2.2 Cấu hình USB

7.2.3 Giao tiếp NI-VISA và thiết bị USB

7.2.4 Giao tiếp Labview – 18F4550 qua USB


7.1 GIỚI THIỆU

7.1.1 Những đặc trưng của cổng USB

▪ USB hỗ trợ các cuộc truyền đẳng thời, các tín hiệu
video và âm thanh, các tín hiệu truyền được đảm bảo.

▪ USB hỗ trợ cả các thiết bị không đẳng thời, các thiết


bị đẳng thời hay không đẳng thời đều có thể tồn tại ở
cùng một thời điểm.

▪ Có khả năng mở rộng tới 127 thiết bị có thể kết nối


cùng vào một máy tính trên một cổng USB duy nhất
(bao gồm các hub USB) và có các thao tác xảy ra
đồng thời.
▪ Những sợi cáp USB riêng lẻ có thể dài tới 5 mét, với
những hub có thể kéo dài tới 30 mét.

▪ Với USB 2.0 (tốc độ cao), đường truyền đạt tốc độ tối đa
đến 480 Mbps.

▪ Nguồn USB máy tính có thể cấp nguồn 5Vdc/500mA.

▪ Những thiết bị tiêu thụ công suất thấp (ví dụ: chuột, bàn
phím, loa máy tính công suất thấp...) được cung cấp điện
năng cho hoạt động trực tiếp từ các cổng USB mà không
cần có sự cung cấp nguồn riêng thậm chí cả các thiết bị
giải trí số như: SmartPhone, PocketPC,… ngày nay sử
dụng các cổng USB để xạc pin.
7.1.2 Phân loại: Có 2 loại cổng USB: USB 2.0 và USB 3.0
7.1.3 Cấu trúc cổng USB: Bus USB có hai kiểu đầu nối
khác nhau là kiểu A và kiểu B
7.1.4 Truyền dữ liệu qua cổng USB

7.1.5 Hub USB

Khi cần đấu nối nhiều thiết bị, cần một hộp phân phối được gọi
là Hub. Phần lớn những máy tính ngày nay có nhiều đầu cắm
USB được thiết kế sẵn trên các cổng vào/ra hoặc các đầu cắm
trên main board.
7.2 GIAO TIẾP USB TRONG LABVIEW

7.2.1 USB – VISA:

▪ VISA là một cấp cao API được sử dụng để giao tiếp


với các bus các thiết bị đo đạc. Nó là một nền tảng,
bus và môi trường độc lập.

▪ Bắt đầu với phiên bản 3.0, NI-VISA hỗ trợ giao tiếp
USB. Hai lớp của VISA được hỗ trợ: USB INSTR và
USB RAW.
7.2.2 Cấu hình USB

Bước 1: Tạo file INF sử dụng chương trình NI-VISA


Driver Wizard.

Bước 2: Cài đặt file INF và các thiết bị USB.

Bước 3: Kiểm tra kết nối các thiết bị với chương trình
VISA Interactive Control.
7.2.3 Giao tiếp NI-VISA và thiết bị USB

▪ USB INSTR (USBTMC).


▪ USB RAW:

Phân loại giao tiếp USB RAW:

1. Control.

2. Bulk.

3. Interrupt.

4. Isochronous.
7.2.4 Giao tiếp Labview – 18F4550 qua USB

▪ Ghi dữ liệu dùng VISA


▪ Đọc dữ liệu dùng VISA
CÂU HỎI ÔN TẬP BÀI 7

Câu 1: Trình bày các tiêu chuẩn khi thiết kế giao tiếp thiết
bị qua cổng USB?

Câu 2: Trình bày về hình dáng, tốc độ của cổng USB?

Câu 3: Đặc trưng của giao tiếp qua cổng USB là gì?

Bài tập: Cho giao diện Labview như hình vẽ:

.
Yêu cầu:

1. Vẽ sơ đồ nguyên lí giao tiếp Pic18F4550-Labview qua cổng


USB.

2. Thiết kế giao diện Labview như hình vẽ.

3. Viết code 18F4550 và Labview.

You might also like