3.2.7.1. Các tín hiệu ngõ vào
Tín hiệu ngõ vào là tín hiệu từ các cảm biến bao gồm:
a) Tín hiệu điện áp
Các tín hiệu điện áp được đưa trực tiếp về chân Analog của Board Arduino Uno hoặc Mega 2560.
59 -TPS: Tín hiệu vị trí bướm ga
- EOT: Tín hiệu nhiệt độ dầu động cơ - FLS: Tín hiệu mực xăng
- BAT1: Tín hiệu điện áp Acquy 1 - BAT2: Tín hiệu điện áp Acquy 2 - BAT3: Tín hiệu điện áp Acquy 3 - BAT4: Tín hiệu điện áp Acquy 4 - BAT5: Tín hiệu điện áp Acquy 5 - CS: Tín hiệu cảm biến dòng điện nạp
Hình 3. 22: Chân thu thập tín hiệu điện áp
b) Tín hiệu xung
Tín hiệu tốc độ động cơ (CKP) thu về được chuyển đổi từ dạng gần giống xung Sine thành xung vuông và đưa vào chân Digital số 2 (chân có hỗ trợ ngắt) của Arduino để tính toán.
3.2.7.2. Thiết kế mạch điều khiển
a) Nguyên lý mạch cơ cấu chấp hành:
Sau khi nhận tín hiệu điện áp Acquy tổng ở mức nhỏ hơn hoặc bằng 54V (mức điện áp cần phải nạp nhanh), Arduino cấp điện áp kích hoạt relay khởi động động cơ. Khi động cơ đã hoạt động, các tín hiệu đầu vào được Arduino xử lý và đưa ra lệnh điều khiển tiếp theo.
Khi tốc độ cầm chừng ổn định ở 1000v/p, Arduino xuất tín hiệu điều khiển theo dạng PWM tương ứng với chân Digital 10,11 điều khiển mở góc bướm ga 20% và giữ nguyên góc bướm ga. Khi bướm ga mở đạt yêu cầu tốc độ động cơ tăng lên đến xấp xỉ 8500v/p thì Arduino cấp điện kích relay điều khiển kích từ cho sạc về Acquy, lúc này tốc độ động cơ xấp xỉ 5000-6000v/p. Arduino luôn nhận tín hiệu dòng điện sạc và kiểm tra.
Khi điện áp sạc tương ứng với SOC khoảng 75%, Arduino cấp điện kích hoạt relay tắt máy và tắt động cơ.
b) Mạch điều khiển relay
Hộp điều khiển bao gồm 3 relay chính: relay mở máy, relay tắt máy, relay kích từ máy phát.
60 Relay mở máy được điều khiển qua chân Digital số 6 của Arduino. Relay này khi được kích sẽ kích hoạt relay máy khởi động và khởi động động cơ.
Hình 3. 23: Mạch điều khiển relay khởi động
Relay tắt máy được điều khiển qua chân Digital số 7 của Arduino. Relay này bình thường sẽ ở dạng thường đóng khi được kích sẽ ngắt nguồn tới kim phun và bu-gi từ đó tắt động cơ.
Hình 3. 24: Mạch điều khiển relay tắt máy
Relay kích từ máy phát được điều khiển qua chân Digital số 5 của Arduino. Khi bướm ga mở đạt 20% relay kích từ được kích và giữ nguyên trạng thái trong quá trình sạc cũng như quá trình hoạt động của động cơ.
61
Hình 3. 25: Mạch điều khiển kích từ máy phát b) Mạch điều khiển mô tơ kéo bướm ga
Góc mở bướm ga được định sẵn trong chương trình Arduino. Khi nhận được lệnh mở bướm ga Arduino cấp xung PWM tại chân Digital số 10 và 11 để điều khiển góc mở như mong muốn.
Hình 3. 26: Mạch điều khiển mô tơ bướm ga
3.2.7.3. Thi công thiết bị thu thập tín hiệu và điều khiển
Các thành phần được sử dụng để thiết kế mạch gồm:
Bảng 3. 8: Các thành phần mạch thu thập tín hiệu và điều khiển
Thành phần Số lượng( cái)
Hộp 1
Board Arduino Uno R3 1
Board Arduino Mega 2560 1
62
Mạch chuyển xung 1
DC Servo Faulhaber 1
Mạch thu thập tín hiệu xăng 1 Mạch thu thập tín hiệu điện áp Acquy 1
Module Relay 5V 3
Mạch điều khiển động cơ XY-160D 1 Mạch cân bằng dung lượng Acquy 1
Nguồn Acquy 12V 1
Mô phỏng mạch trên fritzzing:
63
3.3. Thiết kế phần cơ khí 3.3.1. Thiết kế miếng gá mô tơ 3.3.1. Thiết kế miếng gá mô tơ
Mô phỏng miếng gá trên AutoCAD:
Hình 3. 28: Miếng gá mô phỏng trên Auto CAD
Miếng gá thực tế:
Hình 3. 29: Miếng gá mô tơ thực tế
3.3.2. Thiết kế bánh răng truyền động bướm ga 3.3.2.1. Tính toán thông số bộ bánh răng 3.3.2.1. Tính toán thông số bộ bánh răng
Khoảng cách trục: a = 52mm Chọn modun: m = 2 mm Tỉ lệ: 1:2 Ta có: a = 1 2𝑚(𝑍1+ 𝑍2) = 1 2𝑚3𝑍1
64 => 52 =3 2𝑚𝑍1 =>𝑍1 = 17,3 Chọn Z1 = 17 răng, Z2= 34 răng, Đường kính vòng đỉnh: 𝑑𝑎1 = 𝑚(𝑍1+ 2) = 2. (17 + 2) = 38𝑚𝑚 𝑑𝑎2 = 𝑚(𝑍2+ 2) = 2. (34 + 2) = 72𝑚𝑚 Đường kính vòng đáy: 𝑑𝑓1 = 𝑚. (𝑍1− 2.5) = 2. (17 − 2.5) = 29𝑚𝑚 𝑑𝑓2 = 𝑚. (𝑍2− 2.5) = 2. (34 − 2.5) = 63𝑚𝑚 Đường kính vòng chia: 𝑑1 = 𝑚. 𝑍1 = 2.17 = 34𝑚𝑚 𝑑2 = 𝑚. 𝑍2 = 2.34 = 68𝑚𝑚
Chiều cao răng:
ℎ = ℎ𝑎 + ℎ𝑓 = 2.25𝑚 = 4.5𝑚𝑚
3.3.2.2. Bộ bánh răng thực tế
Hình 3. 30: Bộ bánh răng kéo bướm ga thực tế
3.3.3. Thiết kế bộ truyền đai kéo máy phát
Thiết kế puli có then hoa gắn vào trục khuỷu động cơ để kéo máy phát quay theo tỉ lệ ~3:2, có thêm bánh căng đai.
65
66
3.4. Thuật toán điều khiển
3.4.1. Tiến trình thực hiện đọc tín hiệu
Đọc tín hiệu điện áp:
Hình 3. 32: Chu trình đọc tín hiện dạng điện áp Bảng 3. 9: Bảng chuyển thang giá trị cảm biến
Tín hiệu Thang chuyển đổi
Vị trí bướm ga 0% - 100%
Mực xăng 0 (lít) – 4 (lít)
Nhiệt độ dầu động cơ 00C - 1200C
Dòng điện nạp 0 (A) – 20 (A)
Điện áp Acquy 0 (V) – 15 (V)
Đọc và tính toán tốc động cơ:
67 Truyền dữ liệu qua App Designer:
Hình 3. 34: Chu trình gửi dữ liệu
Một chu trình gửi sẽ truyền vào bộ nhớ đệm của giao tiếp một chuỗi đầy đủ các giá trị như trên. Từ đây App Designer sẽ tách chuỗi thành từng giá trị riêng biệt tương ứng với từng giá trị tín hiệu đã thu thập. Chu trình này sẽ thực hiện tuần hoàn với chu kì gửi 0.2s.
68
3.4.2. Các lưu đồ thuật toán
Thuật toán khởi động động cơ tự động:
Hình 3. 35: Lưu đồ thuật toán điều khiển mở máy
Trong đó:
Vt là giá trị điện áp tổng Acquy thu thập về.
Vy là giá trị điện áp định mức yêu cầu phải nạp có giá trị là 54V. ST là chân điều khiển relay khởi động.
toc là biến tốc độ động cơ.
toct là mức xác định tốc độ động cơ khi chưa hoạt động có giá trị 1000 vòng/phút. time là biến thời chờ khởi động.
ty là mức thời gian chờ khởi động có giá trị 5s. Thuật toán điều khiển tắt động cơ tự động:
69
Hình 3. 36: Lưu đồ thuật toán điều khiển tắt máy
Trong đó:
Vn là điện nạp được thu thập về Arduino.
Vi là điện áp định mức khi Acquy có giá trị xấp xỉ 68V (75%SOC). Time là biến đếm thời gian ngắt công tắc máy.
ty là thời gian ngắt công tắc máy có giá trị 3s.
70
Hình 3. 37: Lưu đồ thuật toán điều khiển kích từ máy phát
Trong đó:
Setpoint là giá trị góc mở bướm ga mong muốn.
Setpointy là biến xác định cho phép đếm thời gian chuẩn bị kích từ có giá trị 102. In là dòng điện nạp được thu thập về Arduino.
Iy là dòng điện định mức khi Acquy đầy có giá trị xấp xỉ 0A. Time là biến đếm thời gian bật kích từ.
timey là biến xác định thời gian bắt đầu bật kích từ có giá trị 2s.
71
Hình 3. 38: Lưu đồ thuật toán điều khiển bướm ga
Trong đó:
Setpoint là giá trị góc mở bướm ga mong muốn. OUTPUT là giá trị tính toán sau bộ PID.
72
CHƯƠNG 4: ỨNG DỤNG APP DESIGNER LẬP TRÌNH, THIẾT KẾ GIAO DIỆN HIỂN THỊ
4.1. Giới thiệu chung về App Designer 4.1.1. App Designer là gì? 4.1.1. App Designer là gì?
App Designer là giao diện đồ họa có điều khiển bởi nhiều thanh công cụ được người lập trình sẵn, cho tương tác giữa người dùng là giao diện chương trình, mỗi chương trình được người lập trình tạo sẵn giao diện thực hiện một vài chức năng được người lập trình tạo sẵn và giao tiếp với người dùng. Nó có thể tạo ra giao diện người dùng tương tự như VBA, C++… App Designer bao gồm đầy đủ các chương trình hỗ trợ thực hiện các phép toán LOGIC, mô phỏng không gian 2D, 3D, liên kết đa phương tiện.
Hình 4. 1: Sơ đồ khối App Designer
Hầu hết App Designer chỉ thực hiện lệnh người dùng thông qua các tác động của người dùng lên giao diện, người dùng không cần biết cấu trúc của chương trình vẫn có thể thực hiện được. App Designer thực hiện thông qua hàm CALLBACK, khi người dùng tác động lên giao diện bằng các cách khác nhau thì hàm CALLBACK được gọi ra để thực thi.
73
4.1.2. Phương pháp để lập trình với App Designer
Cách đơn giản là sử dụng công cụ có sẵn trong App Designer Matlab để lập trình. Ưu điểm của cách này là dễ thực hiện, các hàm FUNCTION được tự tạo sẵn.
Cách thứ hai là lập trình tự tệp Mfile bằng các hàm FUNCTION do người lập trình tự viết, nó có ưu điểm là tùy biến cao. Tuy nhiên cách này khó hơn và đòi hỏi người lập trình phải có hiểu biết sâu. Đối với những bài tập đơn giản thì ta nên sử dụng cách thứ nhất để lập trình giao diện với những công cụ được hỗ trợ sẵn trong Matlab.
Các bước cần thực hiện trước khi bắt đầu với App Designer:
Trước khi để bắt đầu lập trình ta cần phải xác định mục tiêu của chương trình là gì?
Sau đó tiến hành xác định các bước thực hiện để mô phỏng giao diện người dùng sao cho hợp lí chính xác.
Bước cuối cùng là viết chương trình và thực thi.
Khi bắt đầu với App Designer, nó tự động tạo ra các tập tin được thực hiện bởi hàm Callback function. App Designer thao tác trên những kí tự mà người dùng nhập vào chuyển sang dạng số học, nói cách khác, giao diện App Designer tương tự như những lệnh thực thi trong Comment Windows.
Tất cả các hàm Callback thực thi những lệnh chứ trong nó.
Ngoài ra, chúng ta nên sử dung chức năng HELP để tìm thêm tất cả hàm thực thi trong App Designer, cách tạo và thao tác với App Designer….
4.2. Thao tác với App Designer 4.2.1. Khởi động App Designer 4.2.1. Khởi động App Designer
Thực hiện hởi động Matlab đến APP DESIGNER như sau:
Khởi động Matlab.
Có thể mở bằng một số cách sau:
Chọn thẻ Home → New → App.
Chọn thẻ APPS → Design App.
Trong cửa sổ Command Windown gõ lệnh “appdesigner” và Enter. Ta được giao diện màn hình như sau:
74
Hình 4. 2: Giao diện mở đầu AppDesigner
4.2.2. Mô tả chức năng và giao diện App Designer
Trong giao diện trên chúng ta có thể thao tác tùy biến các ô công cụ phù hợp với mục đích sử dụng.
Bảng 4. 1: Các công cụ trong AppDesigner
Công cụ Mô tả
Align Dùng để sắp xếp các đối tượng điều khiển Inspector Thiết lập thuộc tính của các đối tượng điều
khiển. Nó cung cấp một danh sách tất cả các thuộc tính bạn có thể thiết lập và hiển thị các giá trị hiện tại của chúng
Component Object Hiển thị danh sách phân cấp của các đối tượng trong giao diện đồ họa
Run Lưu và chạy giao diện hiện tại
Phía bên trái là COMPONENT LIBRARY nhóm các biểu tượng được APP DESIGNER hỗ trợ sẵn
Button là nút nhấn, khi nhấn vào sẽ thực thi lệnh trong cấu trúc hàm callback của nó.
75
Axes là giao diện đồ họa hiển thị hình ảnh, nó có nhiều thuộc tính bao gồm: không gian 2D (theo trục đứng và trục ngang), 3D (hiển thị không gian 3 chiều).
Check Box sử dụng để đánh dấu tích (thực thi) vào và có thể check nhiều ô để thực thi.
List Box là hộp thoại danh sách các mục, cho phép người dùng chọn một hoặc nhiều mục.
Edit Field là nơi các số, kí tự có thể được nhập từ người dùng, họ có thể thay đổi.
State Button là nút nhấn có hai điều khiển, khi nhấp chuột và nhả ra, nút nhấn được giữ và lệch thực thi, khi nhấp chuột vào lần thứ hai, nút nhấn nhả ra, hủy bỏ lệnh vừa thực thi.
Radio Button Group quản lí sự lựa chọn của nút Radio Button. Radio Button giống như Check Box nhưng thường được sử dụng để tạo sự lựa chọn duy nhất, tức là một lần chỉ được chọn một trong số các nhóm nhiều nút. Khi một ô được chọn thì các ô còn lại trong nhóm bỏ chọn.
Table tạo ra một bảng tương tự Excel.
Panel tạo ra một mảng nhóm các biểu tượng lại với nhau giúp ta dễ hiểu kiểm soát và thao tác khi di chuyển.
Ngoài ra còn có một số công cụ hiển thị bằng hình ảnh như Gauge , Switch , Lamp ,….
Bên cạnh nhóm biểu tượng là các cửa sổ cho phần làm việc từ thiết kế đến lập trình gọi hàm cho giao diện đã thiết kế.
76
Hình 4. 3: Cửa sổ thiết kế đồ họa trong AppDesigner
Với tùy chọn “designer View” đưa ra cửa sổ cho phép người dùng sử dụng các biểu tượng và thiết kế một giao diện làm việc theo mục đích thích hơp.
Hình 4. 4: Cửa sổ lập trình đối tượng trong AppDesigner
Với tùy chọn “Code View” đưa người dùng tới cửa sổ viết lệnh cho giao diện đã thiết kế. Ở đây có thêm các chức năng “Callbacks” cho phép truy cập trực tiếp đến từng biểu tượng đồ họa để viết lệnh, gọi hàm. “Functions” cho phép tạo ra vùng để viết các hàm
77 riêng phục vụ nhu cầu lập trình. “Properties” tạo ra vùng để khai báo các biến trong toàn cục trong chương trình.
Và để có thể thiết kế cũng như điều chỉnh, định dạng về từng đối tượng riêng biệt, App Designer có hộp thoại Inspector thực hiện điều này.
Hình 4. 5: Hộp thoại Inspector
Bảng 4. 2: Các thuộc tính trong hôp thoại Inspector
Thuộc tính Mô tả
BackgroundColor Màu nền đối tượng
FontAngle Kiểu chữ nghiêng
FontName Kiểu chữ
FontSize Cỡ chữ
FontUnits Đơn vị kích thước font chữ.
78
ForegroundColor Màu chữ
Handle Visibility Cho dù xử lý có thể truy cập từ dòng lệnh và ảnh minh họa
BusyAction Callback thường xuyên gián đoạn
Enable Kích hoạt hoặc vô hiệu hóa các đối tượng điều khiển
Visible Điều khiển thuộc tính nhìn thấy của các đối tượng
Value Giá trị hiện thời đối tượng điều khiển
Units Đơn vị đo lường
Tag Dùng để phân biệt giữa các đối tượng
điều khiển
Style Kiểu của đối tượng điều khiển
Horizontal Alignment Căn ngang của chuỗi nhãn
Position Kích thước và vị trí đối tượng điều khiển
4.3. Thiết kế giao diện nhận và hiển thị dữ liệu trên App Designer
Với mục đích phải nhận dữ liệu liên tục từ Arduino gửi qua và hiển thị dữ liệu một cách trực quan nhất cho người xem, do đó cần phải thiết kế giao diện hiển thị đầy đủ, rõ ràng, dễ quan sát. Đồng thời các dữ liệu nhận được phải được lập trình hiển thị một cách nhanh chóng tương ứng với trạng thái hoạt động của động cơ.
4.3.1. Chu trình nhận dữ liệu trên App Designer
79
Hình 4. 6: Chu trình nhận dữ liệu
Các dữ liệu từ Arduino được gửi một cách liên tục và lưu trong bộ đệm của cổng giao tiếp. Với một lần gửi một chuỗi dữ liệu bao gồm các giá trị tín hiệu cách nhau bởi dấu “,” được truyền qua công giao tiếp và lưu vào bộ nhớ đệm cho đến khi chuỗi này được đọc. Chuỗi dữ liệu này được chuyển đổi từ mảng ASCII thành kiểu số và tách thành các tín hiệu riêng biệt phục vụ cho nhu cầu tính toán, hiển thị trên Matlab.
Sơ đồ khối chu trình thực hiện trong App Designer:
80
4.3.2. Thiết kế giao diện hiển thị 4.3.2.1. Nội dung thiết kế 4.3.2.1. Nội dung thiết kế
- Thiết kế nút điều khiển chương trình.
- Hiển thị dữ liệu trên các đồng hồ đo bao gồm các tín hiệu về tốc độ động cơ, nhiệt độ dầu động cơ và tín hiệu báo mực xăng.
- Hiển thị dữ liệu điện áp Acquy bao gồm điện áp từng Acquy, điện áp tổng và các cảnh