PID Controller รักษาระดับความเร็ว Cruise Control ในรถยนต์ Honda City 1.5L โดย Matlab/Simulink

Application

Simple free body diagram ของรถยนต์แสดงได้ดังภาพ

จากกฎข้อที่สองของนิวตัน เขียนสมการพลศาสตร์ได้เป็น

\(m\ddot{x} +b\dot{x}=u\)

(1)

จัดรูปสมการ (1) ใหม่จะได้

\(m\frac{dv}{dt}+bv=u\)

(3)

m คือมวลของรถ
x คือระยะทางการเคลื่อนที่
b คือสัมประสิทธิแรงเสียดทาน
v คือความเร็วรถ
u คือแรงขับเคลื่อนรถจากเครื่องยนต์

จากคู่มือ Honda City 1.5L เราจะพบค่าพาริเตอร์ที่จำเป็นต่อการออกแบบระบบดังภาพ


เริ่มจากการกำหนดว่าเราต้องการรักษาระดับความเร็วรถไว้ที่ 100 Km/hour

\(100\frac{km}{hour}\times \frac{1000m}{km}\times \frac{hour}{3600s}=27.78\frac{m}{s}\)

(4)

คำนวณหา Drag force อันเกิดจากลมที่เข้ามาปะทะตัวรถ

\(F_{d}=c_{d}\frac{1}{2}\varrho v^{2}A=0.3\times 0.5\times 1.2\times (29)^{2}\times 2.24=339N\)

(5)

คำนวณหา Rolling resistance force อันเกิดจากพื้นถนน

\(F_{r}=c_{r}mg=0.0125\times 1084\times 9.81=133N\)

(6)

คำนวณสัมประสิทธิแรงเสียดทาน

\(b=\frac{F_{d}+F_{r}}{v}=\frac{339N+133N}{27.78m/s}=17\frac{Ns}{m}\)

(7)

คำนวณหา Norminal force ที่ผลิตได้จากเครื่องยนต์

\(u=\frac{max\, Torque}{radius\, wheel}=\frac{145 Nm}{0.3048m}=475.72N\)

(8)

เมื่อได้ค่าพารามิเตอร์ ครบถ้วนแล้ว จากนั้นให้ทำการ Take Laplace สมการ (3)

\(msV(s)+bV(s)=U(s)\)

(9)

จัดรูปสมการ (9) จะได้ Transfer function ของระบบดังนี้

\(\frac{V(s)}{U(s)}=\frac{1}{ms+b}\)

(10)

นำสมการ ค่าที่ได้จา (5) (6) (8) และ สมการ (10) ไปวาดบล๊อกไดอะแกรมใน Matlab/Simulink จะได้ดังภาพ

โดยเราจะใช้แบบจำลองข้างภาพ ออกแบบตัวควบคุมพีไอดี ให้ผลตอบสนองของระบบเป็นดังนี้

Rise Time < 12 Sec. ( การเพิ่มความเร็วจาก 0 – 100 km/h)
Overshoot < 10% (ความเร็วอันเกิดจากการเร่งกำลังไปถึง 100km/h จะมีค่า < +/- 10%)
Steady state error < 2% (การรักษาระดับความเร็วที่ 100km/H อนุญาตให้มี error < +/- 2%)

นอกจากนี้ยังสามารถวิเคราะห์เสถียรภาพของระบบได้ด้วย matlab script ดังนี้

m = 1084;   %mass
b = 17;     %damping coefficient
u = 475.72; %nominal force
r = 27.78;  %desired speed

Gs = tf(1, [m, b]); % s-domain

Ts = 1;             % sampling time
Gz = c2d(Gs, Ts);   % z-domain

% analysis of step response
figure(1)
step(u*Gs)

% Open-loop poles/zeros
figure(2)
pzmap(Gz)
axis([-1 1 -1 1])

% Open-loop Bode plot
figure(3)
bode(Gz)


ดาวน์โหลดไฟล์ Matlab/Simulink ได้ที่นี่