Phần mềm giám sát và thu thập dữ liệu

Một phần của tài liệu Nghiên cứu và phát triển xe điện một bánh tự cân bằng (Trang 69 - 76)

7. Ngày hoàn thành đồ án:

4.2.2.Phần mềm giám sát và thu thập dữ liệu

Trong quá trình thực hiện rất cần một phần mềm có khả năng làm nhiệm vụ gỡ rối chương trình trên vi điều khiển đồng thời thu thập dữ liệu đo đạc về giúp cho việc điều khiển trở nên dễ dàng hơn. Có rất nhiều ngôn ngữ lập trình có thể được sử dụng để viết phần mềm này như Visual Basic, Visual C#, MatLab. Nhưng ở đây chúng em chọn ngôn ngữ LABVIEW để thực hiện. LABVIEW và vi điều khiển được kết nối thông qua cổng COM.

a). Giới thiệu về LABVIEW

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ỳ [25]. LabVIEW còn được biết đến như 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. Bằng cách diễn đạt cú pháp thông qua các hình ảnh trực quan trong môi trường soạn thảo, LabVIEW đã được gọi với tên khác là lập trình G (viết tắt của Graphical, nghĩa là đồ họa).

LabVIEW được dùng nhiều trong các phòng thí nghiệm, lĩnh vực khoa học kỹ thuật như tự động hóa, điều khiển, điện tử, cơ điện tử, hàng không, hóa sinh, điện tử y sinh,... Hiện tại ngoài phiên bản LabVIEW cho các hệ điều hành Windows, Linux, Hãng NI đã phát triển các mô-đun LabVIEW cho máy hỗ trợ cá nhân (PDA). Các chức năng chính của LabVIEW có thể tóm tắt như sau:

- Thu thập tín hiệu từ các thiết bị bên ngoài như cảm biến nhiệt độ, hình ảnh từ webcam, vận tốc của động cơ, ...

- Giao tiếp với các thiết bị ngoại vi thông qua nhiều chuẩn giao tiếp thông qua các cổng 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, Logic mờ (Fuzzy Logic), một cách nhanh chóng thông qua các chức năng tích hợp sẵn trong LabVIEW.

Chương 4. Triển khai phần cứng và phần mềm

b). Giao diện chương trình giám sát và thu thập dữ liệu

Hình 4.18. Giao diện chương trình giám sát và thu thập dữ liệu

c). Code chương trình thực hiện bằng ngôn ngữ LABVIEW

Kết luận

KẾT LUẬN

Sau một quá trình học tập và nghiên cứu, nhóm chúng em đã thu được những kết quả nhất định. Những kết luận sau đây là sự đánh giá tổng hợp cho toàn bộ quá trình nghiên cứu của nhóm:

 Mô hình hóa hệ thống xe một bánh tự cân bằng

 Đề xuất phương pháp điều khiển PD cho xe một bánh tự cân bằng

 Thực hiện mô phỏng và kiểm nghiệm thuật toán lọc Kalman trên vi điều khiển dsPIC30F4011

 Điều khiển động cơ BLDC sử dụng bộ điều khiển dải trễ dòng điện HCC

 Xây dựng chương trình giám sát và thu thập dữ liệu. Công việc tiếp theo của nhóm là:

- Hoàn thiện code điều khiển động cơ trên vi điều khiển dsPIC30F4011 để cải thiện những vướng mắc đã trình bày trong mục 3.4.2.

- Tiến hành kiểm nghiệm khả năng đưa xe trở lại trạng thái cân bằng như phương pháp đề xuất trong mục 2.2.2

- Thử nghiệm xe chạy trên đường có người lái.

Một lần nữa nhóm chúng em xin chân thành cảm ơn sự hướng dẫn, giúp đỡ tận tình của thầy giáo TS. Nguyễn Hồng Quang, thầy giáo Nguyễn Duy Đỉnh và các thầy cô trong bộ môn Tự Động Hóa đã nhiệt tình giúp đỡ, động viên và tạo điều kiện trong quá trình chúng em làm đồ án tại phòng C9-102 cũng như trong suốt những năm học chuyên ngành vừa qua.

Em xin chân thành cảm ơn.

Hà Nội, ngày 5 tháng 06 năm 2013

Sinh viên thực hiện

Tài liệu tham khảo

TÀI LIỆU THAM KHẢO

[1] A. Kadis, D. Caldecott, A. Edwards, M. Jerbic, R. Madigan, M. Haynes, B.Cazzolato and Z. Prime, “Modelling, simulation and control of an electric unicycle”, The University of Adelaide, Australia, 2010. (adsbygoogle = window.adsbygoogle || []).push({});

[2] Nguyễn Hồng Quang, Nguyễn Hoàng Anh, “Nghiên cứu, thiết kế và chế tạo xe 2 bánh tự cân bằng”, Công trình dự thi giải thưởng “Sinh viên nghiên cứu khoa học”,2007.

[3] Nguyễn Gia Minh Thảo, Mai Tuấn Đạt, Dương Hoài Nghĩa, Nguyễn Hữu Phúc, “Nonlinear Controllers For Two – Wheeled Self – Balancing Robot”, The 2011 ASEAN Symposium Control, Ho Chi Minh City, Viet Nam, November 8-9, 2011. [4] Nguyễn Gia Minh Thảo, Mai Tuấn Đạt, Dương Hoài Nghĩa, Nguyễn Hữu Phúc,

“A PID Backstepping Controller For Two – Wheeled Self – Balancing Robot”,

IFOST 2010 Proceedings, Ulsan, South Korea, 13 – 15 October, 2010.

[5] Nguyễn Mạnh Tiến, Điều khiển robot công nghiệp, NXB Khoa Học Kỹ Thuật, 2009

[6] http://en.wikipedia.org/wiki/Inertial_measurement_unit

[7] http://web.mit.edu/scolton/www/filter.pdf

[8] http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-333-aircraft-stability and-control-fall-2004/lecture-notes/l15_filter_examp.pdf

[9] Greg Welch and Gary Bishop, “An Introduction to the Kalman Filter”, University of North Carolina at Chapel Hill, Chapel Hill, 2006.

[10] Mai Tuấn Đạt, “ Xe hai bánh tự cân bằng di chuyển trên địa hình phẳng”, Luận văn tốt nghiệp đại học chuyên ngành cơ khí, Đại học Bách Khoa HCM, 2005. [11] http://www.segway.com/

[12] http://focusdesigns.com/sbuv3/

Tài liệu tham khảo

[14] Bùi Quốc Khánh, Nguyễn Văn Liễn, Cơ sở truyền động điện, NXB Khoa Học và Kỹ Thuật, 2006.

[15] AN885, “Brushless DC Motor Fundamentals”, Microchip.

[16] B. K. Bose, Modern Power Electronics And AC Driver, Prentice Hall PTR, 2002. [17] Nguyễn Duy Đỉnh, “Đề xuất thuật toán điều khiển động cơ phát động và thuật

toán điều khiển chuyển động xe điện, thử nghiệm trên xe điện 3 bánh HUT-1”, Đồ án tốt nghiệp ngành Tự Động Hóa, Đại học Bách Khoa Hà Nội, 2009.

[18] Nguyễn Thế Năng, “Cải tiến phương pháp điều khiển “Giả vectơ” cho động cơ một chiều không chổi than”, Đồ án tốt nghiệp ngành Tự Động Hóa, Đại học Bách Khoa Hà Nội, 2012.

[19] Shane W. Colton, “Design and Prototyping Methods for Brushless Motors and Motor Control”, Massachusetts Institute of Technology, 2010.

[20] http://www.4qdtec.com/pwm-01.html

[21] DT98-2A, “Boostrap Component Selection For Control IC’s”, International Rectifier.

[22] http://www.enicycle.com/

Phụ lục

PHỤ LỤC

P1. Các bảng số liệu dùng trong mô phỏng

Bảng P1.1. Tham số mô phỏng cho động cơ

Tham số Giá trị Công suất định mức 54 [W] Tốc độ định mức 1500 [rpm] Mômen định mức 0.343 [ Nm] Số đôi cực 4 Điện áp định mức 36 [V] Dòng điện định mức 2 [A] Điện trở stator 0.8 [Ω] Điện cảm stator 2.14 [mH] Hằng số sức phản điện động 0.018 [V/rpm] Từ thông rotor 0.021486 [Wb]

Bảng P1.2. Thông số bánh và thân xe sử dụng trong mô phỏng

Tham số Giá trị

Bán kính bánh xe 0,225 [m]

Khối lượng bánh xe 8 [kg] (adsbygoogle = window.adsbygoogle || []).push({});

Chiều dài khung 0,8 [m]

Chiều rộng khung 0.3 [m]

Khối lượng khung 50 [kg]

Phụ lục

P2. Chƣơng trình khởi tạo tham số mô phỏng cân bằng xe

clear; % khung xe b=0.8; c=0.3; mf=50; rf=0.68; Jf=1/12*mf*(b.^2+c.^2); % banh xe mw=6; rw=0.225; Jw=1/2*mw*rw.^2; % Cac hang so me= mw + mf+ Jw/rw.^2; g=10; % Thong so dong co %Kt= % He so mo men

% g= % Gia toc trong truong

% Cac ma tran he so ms=me*(mf.^2*rf.^2+Jf)-mf.^2*rf.^2; k1=-mf.^2*rf.^2*g/ms; k2=(mf.^2*rf.^2+Jf)/(rw*ms); k3=me*mf*rf*g/ms; k4=-mf*rf/(rw*ms);

P3. Code thuật toán lọc Kalman mô phỏng

%Khai bao cho Kalman

accelnoise = 0.005; gyronoise = 0.001; accelnoise1 = 0.05 a = [1 -dt;0 1]; b = [dt;0]; c = [1 0];

Xhat = [0;0]; %intial estimate

R = 0.03; %meas noise cov

Q = [0.001 0; 0 0.004];%process noise cov

P = Q;%initial cov estimate error

biashat=[];%bias estimate

thetahat = [];%theta estimate

thetameas = []; theta = []; for i =1:1:length(Ua), if(i==1) U= 0; else U=Ua(i-1);

%simulate linear system

end

% Simulate the noisy measurement

Y=Ya(i);

Phụ lục

%Predict update

Xhat = a * Xhat + b * U;

% Form the Innovation vector.

Inn = Y - c * Xhat; P = a*P*a' + Q;

% Compute the covariance of the Innovation.

s = c * P * c' + R;

%Meas update (adsbygoogle = window.adsbygoogle || []).push({});

% Form the Kalman Gain matrix.

K = (P * c')/s;

% Update the state estimate.

Xhat = Xhat + K * Inn;

% Compute the covariance of the estimation error.

P = ([1 0;0 1] - K*c)*P;

% Save some parameters for plotting later.

% theta(i) = X(i); thetameas(i) = Y; thetahat(i) = Xhat(1); biashat(i) = Xhat(2); end

Một phần của tài liệu Nghiên cứu và phát triển xe điện một bánh tự cân bằng (Trang 69 - 76)