Thiết kế thiết bị thu thập tín hiệu và điều khiển

Một phần của tài liệu Ứng dụng matlab arduino trong mô phỏng, thiết kế và chế tạo bộ điều khiển sạc cho xe e REV đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 71)

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

Một phần của tài liệu Ứng dụng matlab arduino trong mô phỏng, thiết kế và chế tạo bộ điều khiển sạc cho xe e REV đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 71)