You are on page 1of 25

Tóm tắt : Ngày nay, trong thời đại công nghệ số phát triển, robot không còn là khái

niệm xa lạ với con người. Có rất nhiều robot phổ biến hiện nay có thể kể đến như robot
công nghiệp, robot dịch vụ, robot hút bụi, robot y tế, robot giải trí,… Và tôi xin giới
thiệu tới các bạn một loại robot khá phổ biến đó là robot dò line. Trong bài nghiên cứu
dưới đây tôi sẽ hướng dẫn mọi người cách để điều khiển robot dò line sao cho nó có thể
di chuyển trên line một cách hiệu quả nhất.

I. Giới thiệu về mô hình xe dò line.


Trong mô hình xe dò line thì đầu vào của chúng ta sẽ là cảm biến TCRT5000 để phát hiện
line và đầu ra của chúng ta sẽ động cơ giảm tốc. Ở đây ta sẽ dùng module L298N để điều
khiển vận tốc xe dò line bằng tín hiệu băm xung PWM sẽ giúp xe đi nhanh chậm bằng việc
cung cấp dòng điện vào 2 chân của động cơ giúp xe dễ dàng di chuyển qua những khúc cua
hay việc thực hiện rẽ trái rẽ phải.

1. Cảm biến hồng ngoại TCRT5000.


Đầu tiên ta phải hiểu thế nào là cảm biến hồng ngoại. Thì cảm biến hồng ngoại
( Infrared Sensor hoặc viết tắt là IR Sensor) là một thiết bị điện tử phát hoặc nhận bức
xạ hồng ngoại trong môi trường xung quanh. Khi vật thể phát ra nhiệt độ trên 35 độ C
thì sẽ phát ra bức xạ hồng ngoại mà con người không thể nhìn thấy được.
Bản chất của cảm biến hồng ngoại sẽ gồm 2 phần: nguồn phát hồng ngoại sử dụng một
bóng đèn LED để phát ra tia sóng hồng ngoại và cảm biến hồng ngoại. Khi gặp vật thể,
tia hồng ngoại bật ngược lại và đi vào cảm biến hồng ngoại.

Hình 1. Nguyên lý hoạt động cảm biến hồng ngoại


Lợi dụng đặc điểm đó nên ở đây chúng tôi đã sử dụng cảm biến hồng ngoại TCRT5000
để phát hiện line đen. Nguyên lý cơ bản ở đây là line đen hấp thụ ánh sáng rất tốt nên
khi phát ra tia sáng hồng ngoại qua line đen thì khả năng thu lại ánh sáng là rất thấp từ
đó tín hiệu analog trả về giúp chúng ta có thể dễ dàng nhận biết đâu là line đen.
Hình 2. Cảm biến TCRT5000.
Tính năng của cảm biến TCRT5000:
- Có thể điều chỉnh biến trở để xác định khoảng cách.
- Phát hiện có vật cản và khởi động máy trong máy hủy tài liệu.
- Phát hiện chướng ngại vật.
- Phát hiện vật cản màu đen.
Thông số kỹ thuật cảm biến TCRT5000:
- Khoảng cách phát hiện vật cản : 1mm ~ 15mm.
- Điều chỉnh độ nhạy bằng cách điều chỉnh chiết áp (biến trở).
- Điện áp làm việc: 3.3V ~ 5V.
- Hình thức đầu ra: có thể ở dạng analog hoặc digital tùy vào mục đích sử dụng.
- Kích thước mạch nhỏ: 3,2cm x 1,4cm
- Sử dụng bộ so sánh LM393 điện áp rộng.
Các chân cảm biến TCRT5000:
- VCC: 3.3V ~ 5V ( kết nối cực dương của nguồn điện)
- GND: kết nối với cực âm của nguồn điện.
- Data : đầu ra tín hiệu ( Analog hoặc Digital ).
Hình 3. Mạch nguyên lý cảm biến TCRT5000.
Nhìn vào mạch có thể thấy có 1 con LED phát sóng hồng ngoại và 1 con thu tín hiệu hồi
qua bộ khuếch đại thuật toán để đưa ra dữ liệu đầu ra. Biến trở R3 được điều chỉnh để
giảm hoặc tăng độ nhạy của cảm biến. Vì nguyên lý là 1 mạch khuếch đại nên ta có
những đặc trưng về điện áp và dòng của nhà sản xuất như sau:
Ở 25 độ C, ta có các đường đặc trưng cơ bản sau:
Hình 4. Đặc trưng về dòng và điện áp của cảm biến hồng ngoại TCRT5000.
Chúng tôi đã thực hiện hơn 100 phép đo và nhận thấy rằng cảm biến TCRT hoạt động vô cùng
tốt ở khoảng cách 1,5cm trở xuống, khả năng nhận line và vô cùng nhạy. Việc nhiều line ở
cùng một khoảng cách cũng ảnh hưởng đến hiệu suất thông tin trả về những việc này đã được
khắc phục bằng biến trở trong cảm biến TCRT5000. Chúng ta có thể điều khiển giảm cường
độ ánh sáng phát ra để có được sự hiệu quả của 5 led khi cùng hoạt động ở một khoảng cách.
Với việc dò line chỉ ở khoảng cách dưới 1cm kết hợp với việc điều chỉnh mức độ của cảm biến
ở từng khoảng cách thì TCRT5000 xứng đáng được lựa chọn trong những mô hình cỡ nhỏ.
2. Module điều khiển động cơ L298N.
Hình 5.Module điều khiển động cơ L298N
Module L298N là một module điều khiển động cơ đa năng, thường được sử dụng để điều
khiển động cơ DC và động cơ bước (stepper motor) trong các ứng dụng điện tử và robot.
Module này có thể điều khiển tối đa hai động cơ DC hoặc một động cơ bước với tốc độ và
hướng quay được điều khiển bởi các tín hiệu đầu vào.
Module L298N sử dụng mạch điều khiển đa cầu H (H-bridge) để cung cấp điện cho động
cơ và điều khiển hướng quay của động cơ. Nó cũng bao gồm các bộ khối điều khiển PWM
(Pulse Width Modulation) để điều chỉnh tốc độ quay của động cơ DC. Module L298N có
thể hoạt động với điện áp từ 5 đến 12V và dòng tối đa là 1 A cho mỗi kênh. Ngoài ra,
module cũng được trang bị bảo vệ quá dòng và quá nhiệt độ để bảo vệ module khỏi thiệt
hại do quá tải hoặc quá nhiệt.

3. Arduino UNO R3
Hình 6. Arduino UNO R3
Arduino UNO R3 là một phiên bản phổ biến của board Arduino, được thiết kế để giúp
các nhà phát triển dễ dàng xây dựng các ứng dụng IoT, các hệ thống nhúng và các dự án điện
tử khác. Nó được phát triển bởi tập toàn Arduino.cc và được sản xuất trên nền tảng vi điều
khiển Atmega328P của hãng Atmel.
Arduino UNO R3 có các tính năng như bộ nhớ lưu trữ chương trình 32KB Flash, 2KB SRAM
và 1 KB EEPROM, điều khiển động cơ servo, hỗ trợ giao tiếp USB và I2C, SPI, UART, cảm
biến và module ngoại vi khác. Nó cũng có 14 chân số và 6 chân Analog để kết nối với các thiết
bị ngoại vi.
Arduino UNO R3 cũng có khả năng thực hiện các chức năng như đọc và ghi các tín hiệu từ
cảm biến, điều khiển các thiết bị đầu ra như LED và động cơ, cũng như giao tiếp với máy tính
hoặc các thiết bị khác thông qua USB.

4. Động cơ giảm tốc và bánh xe.


Hình 7. Động cơ giảm tốc và bánh xe.
5. Pin Lithium 18650.

Hình 8. Pin Lithium 18650


Pin Lithium-ion 18650 là một loại pin sạc tái sử dụng được sử dụng rộng rãi trong các thiết
bị di động, máy tính xách tay, máy ảnh, đèn pin và các thiết bị điện tử khác. Tên gọi 18650
đề cập đến kích thước của pin, với đường kính 18mm và chiều dài 65mm.
Pin Lithium-ion 18650 có nhiều ưu điểm so với các loại pin khác. Chúng có mật độ năng
lượng cao, tức là chúng có thể lưu trữ nhiều năng lượng trong một khối lượng nhỏ hơn so
với các loại pin khác. Chúng cũng có tuổi thọ kéo dài, trong khi vẫn giữ được hiệu suất cao
và dung lượng pin tốt. Pin Lithium-ion 18650 cũng có thể được sạc lại nhiều lần mà không
ảnh hưởng đến hiệu suất hoặc tuổi thọ của pin.
II. Thực hành thí nghiệm cơ cấu chấp hành.
1. Giá trị enable của bánh xe.
Ở đây mình thực hiện kỹ thuật băm xung (PWM) bằng vi điều khiển trên Arduino. Có những
chân tín hiệu như 3, 5, 6, 9, 10, 11 chúng ta có thể băm xung tín hiệu ra. Bản chất của việc
băng xung này là chúng ta sẽ băm nhỏ điện thế cấp vào 2 chân (+) và (-) của cơ cấu chấp hành
( 2 bánh xe ). Tín hiệu enable thực hiện băm xung sẽ chạy từ 0🡪255. Sau đây chúng ta sẽ thực
hiện thí nghiệm đo :

Enable = Enable = Enable = Enable = Enable = Enable = Enable =


  Enable = 140
70 80 90 100 110 120 130
Số vòng Số vòng Số vòng Số vòng Số vòng Số vòng Số vòng
Lần đo bánh xe bánh xe bánh xe bánh xe bánh xe bánh xe bánh xe Số vòng bánh xe <
< góc < góc < góc < góc < góc < góc < góc góc

1 2<160 2<320 3<60 3<220 3<320 4<15 4<90 5<90


2 2<160 2<300 3<90 3<215 3<310 4<23 4<85 5<100
3 2<155 2<310 3<100 3<220 3<300 4<20 4<85 5<95
4 2<155 2<325 3<105 3<205 3<290 4<30 4<95 5<110
5 2<150 2<335 3<100 3<210 3<310 4<25 4<100 5<100
6 2<155 2<320 3<95 3<210 3<315 4<20 4<100 5<115
7 2<147 2<330 3<100 3<210 3<318 4<27 4<95 5<100
8 2<155 2<315 3<105 3<220 3<300 4<20 4<95 5<110
9 2<160 2<318 3<105 3<205 3<295 4<25 4<100 5<100
10 2<163 2<320 3<100 3<210 3<290 4<30 4<95 5<105
X_mean 2<156 2<319.3 3<96 3<212.5 3<307.8 4<23.5 4<90 5<102.5
Vận tốc
51.9829 61.6733 69.7852 76.6985 82.3537 86.8458 90.792 112.8966
(Cm/s)
Bảng 1. Giá trị vận tốc (cm/s) dựa vào giá trị cấp xung enable.
Hình 9. Đồ thị giữa enable và vận tốc bánh xe.
Giá trị enable tôi để ở 70 -> 255 vì ở giá trị <70 thì động cơ chạy nhưng khi gắn động cơ vào
tải thì động cơ không có dấu hiệu chấp hành. Nên giá trị đo được thực tế sẽ lấy giá trị enable
lớn hơn hoặc bằng 70.
Enable chúng tôi ở đây chỉ xét đến 140 vì chúng tôi nhận thấy vận tốc đang tăng nhanh và
khó có kể kiểm soát thực tế nên mô hình của chúng tôi ở đây. Với giá trị enable =140 lúc này
vận tốc của bánh xe đã là 112.8966 cm/s.
Đây chỉ là vận tốc bánh xe chỉ mang trọng lực của chính nó, nên nếu nó mang theo trọng lực
của xe, thêm một điều lo ngại nữa là độ lệch khi truyền chuyển động của động cơ đến tải
( bánh xe ). Sau đây tôi sẽ đo để tính độ lệch ly tâm của bánh xe.
Độ ly tâm của bánh xe là 1mm theo chiều ngang. Bán kính của bánh xe là 3,4cm. Lúc này khi
quay được 1 vòng thì bánh xe thực tế sẽ quay được : 21.36285314 cm. Trên lý thuyết là
21.36283004. Sai số chưa đến 1 phần nghìn nên ta sẽ coi như bỏ qua sai số ly tâm của bánh xe.
2. Thí nghiệm cho xe đi trên đường line thẳng.
Xe của chúng tôi ở đây có 5 led phát hiện line nên thành ra sẽ có 5 trường hợp cơ bản xảy ra.
Hình 10. Các trường hợp sai số của mô hình xe dò line.
Chúng ta sẽ luôn phải đưa xe về trường hợp 1 để cân bằng trọng lực và hướng quán tính ở
giữa.
Trước khi cho xe chạy thực nghiệm thì chúng tôi sẽ tính toán để làm sao đưa xe về trường
hợp 1 vừa đảm bảo được về thời gian vừa đảm bảo được về vận tốc không quá cao và không
quá thấp. Vận tốc cao thì sẽ làm xe đi lệch. Ví dụ như có thể đi lệch từ trường hợp 4 🡪 sang
trường hợp 2 vì do quán tính xe.
Hình 11. Thông số kỹ thuật của mô hình xe dò line.

Ở đây chúng ta sẽ thực hiện đưa xe lệch từ trường hợp 5 về trường hợp 4 rồi đưa về trường
hợp 1. Tương tự thì trường 3 cũng sẽ đưa về trường hợp 2 rồi đưa về trường hợp 1. Ý tưởng ở
đây là bánh xe bên trái sẽ đi nhanh hơn bánh xe bên phải thì đầu xe lúc này sẽ hướng về bên
trái.
Hình 12. Biểu diễn xe khi chuyển khi có xuất hiện sai số.
Ta sẽ sử dụng đồ thị Hình A* để thực hiện điều này.
Ở đây tôi thực hiện Bánh A đi với xung enable =90 và Bánh B đi với xung enable =80.
Lúc này ta có :

( cms ), V =61.6733 ( cms ) .


V a =69.7852 b

Δ =V −V =8.1119≈ 8.112 ( ) .
cm
v a b
s
Sau 0.1 s thì S a >S b là Δ v∗0.1=0.8112 cm.

Hình 13. Biểu diễn toán học của xe bắt khi bắt đầu tăng tốc để đi vào vị trí chính giữa của
line.
Ở đây hình vẽ của chúng tôi chưa chính xác nên tôi sẽ bổ xung thêm 1 số điều kiện như sau:
^
FCE= ^
IHG= ^
o
BAD=90 .

^
Lúc này ta có : CB = Δ S =0.8112 cm→ C EB=arctan arctan ( CB
EB )=arctan arctan (
12.2 )
0.8112 o
≈ 3.8

Lại có ^ CEB=3.8o ( Cùng phụ với ^


yCF=^ BCE )

Tương tự thì ta cũng có: ^ ^


HGF=CEB=3.8
o

Lúc này : d ( H , Ay )=HC∗sin sin ^


HCY =6.97852∗sin sin ( 3.8o )=0.46249 cm.

Xét đến điểm H, thì lúc này ( ^


MH , Ay ) =3,8 ∗2=7.6 .
o o
Suy ra công thức tổng quát sau n giây thì D ( bánh xe, Ay ) là :
n
D=∑ ¿ ¿
1

Từ đây ta có thể suy ra thêm 1 hệ quả với khoảng cách lệch bất kỳ và với tốc độ chênh lệch,
ta có thể quy nạp để đưa ra công thức tổng quát như sau :
n
D=∑ ¿ ¿
1

Quay trở lại ở trên thì ta tính được n=3 (tức sau 0.3s) thì xe sẽ từ trường hợp 5 về trường hợp
4. Và sau 0.4s thì xe sẽ từ trường hợp 5 về trường hợp 1. Sau đây chúng tôi sẽ thực hành trên
mô hình thực tế.
Vì thời gian ngắn nên việc đo đạc cũng khá khó nhưng chúng tôi đều có chung 1 kết quả khi
nhìn vào đồng hồ bấm giờ thì xấp xỉ 1 giây. Xe đã đi được vào đúng line nhưng chúng tôi đã
nhận ra được vô cùng nhiều vấn đề khi cho xe chạy.

⮚ Đầu tiên là việc xe không thể đi thẳng nếu để xe ngay từ đầu ở trường hợp 1. Việc 2
bánh xe li tâm khi không quay thẳng như đã phân tích ở trên là không ảnh hưởng tới xe
nhưng có lẽ rằng tín hiệu từ Module L298N chưa đủ tốt để cho 2 bánh di chuyển với
cùng 1 vận tốc. Nên giờ chúng ta sẽ điều khiển xe đi vừa chính giữa line tốt nhất có thể
chứ không thể đi thẳng được vì bản chất là 2 bánh xe đang chạy độc lập với nhau.
⮚ Vấn đề thứ hai là tốc độ phản hồi tín hiệu của cảm biến TCRT5000 khá chậm. Mặc dù
code tôi đã để ở delaymicroseconds(10) nhưng tốc độ này vẫn chưa đủ khi so với tốc
độ xe là quá vượt trội. Nên chúng ta cũng sẽ phải điều khiển xe đi một cách tương đối (
tức là xe sẽ di chuyển xung quanh line mà thôi ).
⮚ Vấn đề thứ ba là đường line bị kẹt ở giữa khoảng cách giữa 2 tín hiệu line. Do khoảng
cách giữa 2 line là 2cm mà đường line chỉ có 1,5 cm nên sẽ có lúc đường line bị kẹt
giữa như hình dưới đây. Nên chúng tôi đã tăng đường line lên từ 1,5cm -> 2cm. Còn
nếu muốn phát triển hơn nữa thì đặt nhiều line cạnh nhau sẽ đưa ra kết quả tốt hơn
( thay vì dùng 5 cảm biến chúng ta có thể tăng lên 7 cảm biến hay 9 cảm biến kết quả
sẽ chính xác hơn mà thuật toán thì không có gì thay đổi.)
Hình 14. Đường line bị kẹt giữa 2 cảm biến TCRT5000.

⮚ Do xe đang di chuyển với tốc độ cao nên việc dừng lại ngay lập tức sau khi không có
tín hiệu là không thể. Điều này dẫn đến sai số khá lớn trong việc xe đi hết line mà vẫn
tiếp tục di chuyển. ( Chúng tôi đo ra được với quãng đường 1m thì quán tính do chiếc
xe gây ra đã đi xa sau khi không có line là từ 24cm đến 30cm ).
⮚ Một số vấn đề khác như khi chạy càng lâu thì suất điện động cảm ứng có xu hướng
chống lại tốc độ quay bánh xe càng tăng làm cho vận tốc khó kiểm soát trên lý thuyết
( thực tế sẽ yếu đi so với việc thực hiện đo ở trên ). Vận tốc ban đầu của xe cũng rất
quan trọng vì ngay khi cấp điện thì bánh xe chưa nhận được toàn bộ điện năng trong
khi phải di chuyển cả 1 chiếc làm xong trong 1 số trường hợp xe sẽ không chạy nên
chúng ta phải cung cấp 1 vận tốc V o để xe có thể hoạt động.

III. Xây dựng cơ sở lý thuyết cho mô hình.


1. Tính toán quãng đường lực quán tính do bánh xe gây nên ảnh hưởng tới việc tìm
line.
Việc để delay của vòng lặp cũng ảnh hưởng đến quá trình phản hồi của xe nên giờ đây
thay vì để delay(1000) tức là 1 giây thì chúng tôi đã để ở mức độ phản hồi thấp hơn
delayMicroseconds(10). Mặc dù chưa biết đây có phải hệ pha không cực tiểu hay cực
tiểu để đưa ra cơ cấu chấp hành nhưng ít ra nó cũng phản hồi nhanh hơn so với việc
delay(1000) nhiều lần.
Đầu tiên ta sẽ xác định lực quán tính gây ra cho xe với những dữ kiện đầu như :
mxe =0.415 ( kg ) , μ ( hệ số ma sát ) =0.8 , v 0= Δ ( v a−v b ) , v sau =0.

Với v a và v blà tốc độ khác nhau của 2 bánh xe, ta cần lấy hiệu của 2 vận tốc để biết được
độ lợi giữa 2 bánh xe. V sau =0 là do lúc này xe đã dừng rồi .
Ta có năng lượng lúc đầu và lúc sau của xe là :
1 2
E= m ( v o−v sau )
2
E sau=0.

Suy ra : Δ E=E−Esau =E .
Để tính quãng đường bị lực quán tính làm giảm, ta sử dụng công thức của công cơ học :
W =F . d=m . g . μ . d

Trong đó:

● F là lực quán tính ( đơn vị Newton).

● d là quãng đường bị lực quán tính làm giản ( đơn vị mét ).

Lại có W = E do đó :
1
m . g . μ .d = m ( v o−v sau )2
2
1
( ( v −v )2 )
2 0 sau
→ d=
g.μ

Kết hợp với công thức (*) ở trên thì d ở đây chính là quãng đường đi theo hướng tiếp
theo của xe. Vì vậy ta suy ra được :
^ n
D−d∗sin sin ( 3.8¿¿ o∗n¿)=∑ ¿ ¿ ¿ ¿
1

1
(( v −v )2 )
2 0 sau ^ n
Hay D− ∗sin sin (3.8 ¿ ¿ o∗n ¿ )=∑ ¿¿ ¿ ¿
g. μ 1

Trong đó v 0=v 1−v 2


Với vận tốc tốc v1 và v 2như đã đo được ở bảng trên, ta chỉ việc thay số là sẽ tìm được
n*0.1 để tính ra số giây.
Ví dụ như ở trường hợp 3 như hình ở đã nêu : Lúc này ta có hệ số K p =1, K d =0 , K i=0.
Theo công thức với khâu điều khiển PID thì lúc này PI Dvalue =K p∗error=20.

Lúc này: Tín hiệu ở v 1=80 và v 2=120 → v 1−v 2=86.84−61.67=25.17 ( cms )


Thay số ở trên ta tìm được : n = 2 và quãng đường đi được sau 0.2 giây là : 5 cm . Gần như đã
đi được ngay vào vị trí giữa line. Ta có thể thấy được khi K p =1thì tốc độ phản hồi nhanh và
chỉ sau 0.1s nữa thì nó sẽ đi thêm được 4.97 cm nữa. Điều này dẫn tới việc ta phải điều chỉnh
K p , K d và K i hợp lý để tốc độ phản hồi vừa kịp và không dẫn tới độ vọt lố nhiều bằng lý thuyết
đã nêu ở trên.

2. Lưu đồ thuật toán của mô hình xe dò line.

Hình 15. Lưu đồ thuật toán của xe dò line.


3. Sơ đồ mạch điều khiển của mô hình xe dò line.
Hình 16. Chân nối điều khiển của mô hình.
Vì trong proteus 8 không có thư viện của cảm biến hồng ngoại TCRT5000 nên ở đây tôi
lấy tạm cảm biến DHT11 để thay thế. Các chân của cảm biến TCRT5000 tương tự DHT11
nên có thể nối cảm biến hồng ngoại tương tự như mạch trên để dễ dàng thực hiện.

IV. Phương pháp điều khiển PID.


Phương pháp điều khiển PID (Proportional-Integral-Derivative Control) là một phương pháp
điều khiển phản hồi lặp trong đó đầu ra điều khiển được tính dựa trên các giá trị đo từ cảm
biến và sai số giữa giá trị đặt trước và giá trị thực tế của cảm biến điều khiển.
Phương pháp điều khiển PID sử dụng ba thành phần chính để tính toán đầu ra điều khiển: hệ
số hồi tiếp (proportional gain), hệ số tích lũy (integral gain) và hệ số giảm dốc (derivative
gain). Các thành phần này đóng vai trò quan trọng trong cân bằng giữa độ ổn định và thời gian
đáp ứng của hệ thống.

▪ Nghiên cứu mô hình để tìm ra Kp.

Kp (proportional gain) tương ứng với hệ số hồi tiếp, đóng góp tỉ lệ thuận với sai số hiện
tại giữa giá trị đặt trước và giá trị thực tế hiện tại của biến điều khiển. Hệ số này cung
cấp độ nhạy của hệ thống với sai số, giúp điều chỉnh đầu ra của hệ thống theo cách
tương ứng với sai số.
Ta sẽ đo từng giá trị Kp và dựa theo cơ sở lý thuyết để so sánh từng giá trị Kp.
  Quãng đường vào line (cm)

Kp 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Lần 1 97 100 44 34 20 23 13 14 10 5

Lần 2 84 93 40 7 18 178 25 10 6 10

Lần 3 60 72 63 39 27 16 12 14 11 3

Lần 4 80 56 49 32 23 16 14 9 13 4

Lần 5 73 36 55 30 15 18 17 10 9 7

Lần 6 116 62 49 39 21 15 14 13 14 3

Lần 7 100 77 47 28 18 15 13 8 6 8

Lần 8 85 69 43 29 25 14 15 9 14 9

Lần 9 173 52 39 34 20 18 11 11 12 7
Lần
70 56 50 28 19 15 16 9 9 10
10
Trung
93.8 67.3 47.9 30 20.6 32.8 15 10.7 10.4 6.6
bình

76.5* 79.1* 80.5* 81.85* 82.65* 91.7* 100.27* 102.6* 105.2* 112.5*
thuyết
0.8 0.5 0.4 0.2 0.2 0.2 0.1 0.1 0.1 0.1
(v*t)
Sai 14.44
32.6 27.73 15.7 13.662 4 4.97 0.433 -0.126 4.65
lệch 6
Bảng 2. Bảng sai số giữa thực tế và lý thuyết khi xuất hiện error.

Từ bảng trên có thể nhận thấy lấy Kp=0.7 là hợp lý nhất. Các giá trị Kp nhỏ hơn 0.7 thì
đều gây ra sai số lớn, có thể thấy khi sai số có xu hướng giảm từ Kp=0.1 đến Kp=0.5 thì ới
Kp=0.6 thì tự dưng sai số lại lớn. Nhưng khi xét 10 giá trị Kp thì có thể thấy sự lệch với
Kp=0.5 có thể do phép đo chưa đủ nhiều hoặc lúc này mô hình đang có sự cố. Còn với
Kp=0.8, Kp=0.9 và Kp=1 thì lại đưa ra đáp ứng quá nhanh, lớn hơn cả những số liệu tính toán
ở cơ sở lý thuyết, điều này có thể do cảm biến và độ phản hồi của bộ xử lý, nhiễu, vv… ảnh
hưởng. Vậy dựa vào những giá trị đo được, ta sẽ chọn Kp=0.7.
Nói thêm một chút với trường hợp Kp lớn hơn 1 tôi bỏ qua là vì đáp ứng của mô hình
quá nhanh khiến khả năng tính toán và bấm giờ không đủ nên tôi sẽ bỏ qua những trường hợp
này. Tôi nhận thấy khi Kp quá lớn thì xe gần như sẽ quay vòng tròn (Vận tốc của bánh xe A
lớn hơn vận tốc của bánh xe B quá nhiều, cụ thể là 25cm/s).

▪ Nghiên cứu mô hình để tìm ra giá trị Kd.


Kd (derivative gain) tướng ứng với hệ số giảm dốc, đóng góp tỉ lệ thuận với tốc độ thay
đổi của sai số giữa giá trị đặt trước và giá trị thực tế hiện tại của biến điều khiển. Hệ số
này giúp đối phó với sự dao động của hệ thống và cải thiện tốc độ phản hồi của hệ
thống.
Ví đáp ứng ở đây khá nhanh nên tôi sẽ đi tìm Kd trước để đáp ứng phản hồi kịp thời
làm cho sai số giảm đi.
  Quãng đường vào line
Kd 0.1 0.15 0.2 0.25 0.3 0.35
Lần 1 23 20 24 21 15 15
Lần 2 24 21 23 20 19 17
Lần 3 29 22 28 17 20 18
Lần 4 28 25 26 17 20 11
Lần 5 25 21 23 19 21 16
Lần 6 26 27 21 20 19 18
Lần 7 26 22 20.5 21 24 16
Lần 8 24 20 20 19 26 15
Lần 9 24 20 20 19 24 15
Lần 10 26 23 21 19 24 15
Trung bình 25.5 22.1 22.65 19.2 21.2 15.6
Bảng 3. Bảng quãng đường xe từ vị trí lỗi sai khi đi vào line.
Khoảng cách line và cảm biến
Kd 0.1 0.15 0.2 0.25 0.3 0.35
Lần 1 13 11 16 14 10.5 12
Lần 2 13 10.5 8 10 13 14.5
Lần 3 15 10.5 12 16 18 17
Lần 4 10 9 12 19 8 9
Lần 5 11.5 12 13 4 9 15
Lần 6 11 11 12 7 15 11
Lần 7 12 14 9 9 12 11
Lần 8 11 11 9.5 15 14 11.5
Lần 9 16 13 11 12 13 16.5
Lần 10 13 10 9 9 15 12
Trung bình 12.55 11.2 11.15 11.5 12.75 12.95
Rate 2.03187 1.97321 2.03139 1.66957 1.66275 1.20463
Bảng 4. Tỷ lệ rate của quãng đường xe đi được ở bảng 3 và khoảng cách line và cảm
biến khi đi ra khỏi line.
Hình 17. Hình biểu diễn Rate theo hai giá trị trung bình của hai bảng.
Sau khi thực hiện đo tôi nhận thấy giá trị Kd nếu càng tăng sẽ làm xe mất ổn định hơn và lệch
khỏi line nhiều hơn. Vì vậy giá trị Line phù hợp sẽ từ 0.1 đến 0.25 mà thôi. Sau khi đo khoảng
cách vào line tôi nhận thấy đa số trong các trường hợp xe đều đi ra khỏi line mà không quay
trở lại nhưng vị trí của xe đã thấp hơn khi có thêm Kd (tức là khoảng cách giữa line và cảm
biến của xe đã thấp đi) số liệu tôi đã ghi ở bảng trên. Tôi đã tính thêm giá trị Rate ( tỷ lệ giữa
khoảng cách phản hồi của xe và vị trí của cảm biến với line). Tôi nhận thấy giá trị này càng
lớn thì xe có vẻ ổn hơn nhiều. Lúc đầu tôi chọn Kd là 0.15 nhưng khi thử lại Kd là 0.2 thì có
vẻ xe có xu hướng quay trở lại line tốt hơn. Do đó tôi chọn Kd là 0.2.

▪ Nghiên cứu mô hình để tìm ra giá trị Ki.

Ki (Integral gain) tương ứng với hệ số tích lũy, đóng góp tỉ lệ thuận với tổng sai số tích
lũy của biến điều khiển trong thời gian chạy của hệ thống. Hệ số này giúp giảm thiểu sai
số ổn định của hệ thống.
Vì đáp ứng của xe khi đi trên line thẳng là ổn nếu vị trí ban đầu error là 0 (tức là ở vị trí
chính giữa line). Nên tôi sẽ thực hiện đo xe ở những khúc cua để Ki được thể hiện tốt
nhất vai trò của mình (Sai số liên tục thay đổi vì khúc cua cần đáp ứng nhanh những sai
số để đưa xe ra vị trí error = 0).
Hình 18. Quỹ đạo đi của xe dò line trong khúc cua bán kính 35cm.
Ta nhận thấy khi giá trị error max thì giá trị Ki max là 0.9 vì giá trị enable khi cung cấp
cho xe chỉ là 150 mà thôi. Dựa vào những kết quả đo được tôi đã vẽ ra được quỹ đạo đi
của xe và giá trị Ki=0.7 là hợp lý nhất trong trường hợp này.

⇨ Sau khi thực hiện đo thì tôi thấy tốc độ phản hồi của cảm biến có thể không kịp với
tốc độ đi vào line trong những trường hợp đi đường thẳng. Với độ lệch tối đa chỉ có
4cm mà tốc độ lệch tương đối giữa hai bánh xe có thể lên đến 60cm/s, thời gian đi
vào line lúc này chỉ có 0.06s mà thôi. Đây là tính toán trên lý thuyết nhưng dựa trên
quan sát thì tôi thấy nó thực sự rất nhanh nên điều này cũng ảnh hưởng đến mô hình
tính toán rất nhiều.
⇨ Vậy sau khi nghiên cứu mô hình thì ta đã chọn được bộ thông số PID để xe dò line
có thể chạy tốt đó là Kp=0.7, Kd=0.2 và cuối cùng là Ki =0.1. Nhận thấy xe đi vẫn
chưa ổn khi đi qua những khúc cua nên phần tiếp theo tôi sẽ thêm những
ngưỡng(Threshold hợp lý để xe có thể di chuyển tốt nhất trong đường line khi cua
với bán kính trên).
▪ Tìm hiểu và đặt các giá trị ngưỡng (Threshold).

Sau khi quan sát xe di chuyển trên đường thẳng và đường cong thì tôi có những nhận
xét để hiệu chỉnh thêm bộ PID bằng cách đặt giá trị ngưỡng như sau:

▪ Khi xe đi trên đường thẳng thì giá trị Ki có thể không cần thiết vì Ki ở đây sẽ là
tổng sai số làm tăng độ vọt lố khi xe đi qua line. Mặc dù có giá trị Kd nhưng Kd
ở đây tương đối nhỏ đến ảnh hưởng đến Ki để làm giảm độ vọt lố. Nên tôi sẽ kết
hợp khi mà D (Derivative) khác 0 thì ta sẽ bỏ đi ảnh hưởng của khâu I (integral)
trong trường hợp này.
▪ Khi xe đi trên đường cong thì đa số trong các trường hợp sai số không đổi trong
hết quá trình. Thực tế ta cũng có thể thấy khi cua thì ta sẽ cố gắng để giữ nguyên
tốc độ trong quá trình cua để không làm mất thăng bằng của xe. Chính vì sai số
không đổi nên D (Derivative) bằng 0 (Vì không có sự biến thiên của sai số).
Từ những nhận xét trên kết hợp với Kp, Ki, Kd và sai số đã đặt sẵn thì tôi đã tìm ra
được Threshold là 16 và 26 kết hợp với điều kiện D khác 0 và D bằng 0. Cụ thể là
khi đi đường thẳng thì những ảnh hưởng của khâu I sẽ được bỏ đi và sẽ giảm tất cả
giá trị của PID đi 1 số lần nhất định để làm giảm sự vọt lố. Còn trong quá trình cua
thì sẽ tăng giá trị PID lên 1 số lần để đáp ứng nhanh hơn, sau khi đi hết đường cua
kết hợp với Threshold 16 sẽ làm đáp ứng trở lên chậm lại.

Hình 19. Quỹ đạo của xe khi đi đường thẳng (sai số tối đa)
Từ hình trên ta thấy khi điều khiển bằng phương pháp PID thì đáp ứng đang có xu hướng dao
động tắt dần theo thời gian (Lỗi sai của xe ngày càng ít đi). Nhưng thời gian đáp ứng lại khá
lâu. Khi ta thêm các ngưỡng để xe phản hồi nhanh hơn thì tốc độ trở lại line của xe nhanh hơn
PID khi lỗi sai vượt qua ngưỡng 1 nhưng lại phản hồi chậm hơn PID khi vượt qua ngưỡng 2.
Có thể thấy rằng xe đã phản hồi nhanh hơn nhưng lại ít gây ra độ vọt lố hơn khi áp dụng thêm
Threshold.
Hình 20. Quỹ đạo của xe khi đi qua khúc cua bán kính 35cm.
Khi đi qua khúc cua thì điều khiển PID cũng chỉ giúp xe điều chỉnh sai số ở một mức nào đó.
Việc chúng ta tăng các hệ số Ki, Kd, Kp lên cũng sẽ giúp xe đáp ứng nhanh nhưng điều này lại
phản tác dụng trong quá trình đi trên đường thẳng (Tốc độ 2 bánh xe không nên chênh lệch nhau
quá 60cm/s). Khi ta thêm các ngưỡng vào sẽ giúp xe đi tốt trên đường cong và khi đến đường
thẳng bỏ qua hệ số tích lũy lỗi sai sẽ làm xe đáp ứng chậm lại. Điều này sẽ giúp cho xe giảm độ
vọt lố và không đi ra khỏi line.
Dưới đây là hình ảnh code cho thuật toán thêm ngưỡng (Threshold) vào điều khiển PID.
Hình 21.Thuật toán PID kết hợp với Threshold.
V. Đánh giá, kết luận và hướng phát triển.
Mặc dù ban đầu xe di chuyển chưa được tốt với phương pháp xử lý cơ bản nhưng khi thêm
phương pháp PID và giá trị đặt ngưỡng (Threshold) xe đã đi chuyển ổn hơn trong các trường
hợp như đi thẳng và đi qua đường cong. Xe sẽ đi được tốt với những vòng cua có bán kính lớn
(R lớn hơn hoặc bằng 35cm).
Sau khi nghiên cứu mô hình chúng em xin đưa ra kết luận và hướng phát triển như sau :

▪ Những cảm biến của xe đa số đều là rẻ tiền (10000 VNĐ/TCRT5000) nên độ chính
xác vẫn còn kém và tốc độ xử lý chưa tốt ta nên thay bằng các cảm biến có giá thành
cao hơn thì tốc độ xử lý sẽ nhanh hơn và giúp xe đi chính xác hơn.
▪ Ta có thể lắp thêm những module giao tiếp để xe có thể giao tiếp thông qua mạng
nội bộ hoặc nhiều xe có thể giao tiếp với nhau để thực hiện một nhiệm vụ nhất định.
▪ Ta có thể lắp thêm Camera để giúp xe nhận dạng được những vật cản và xử lý
những khúc cua trước khi xe di chuyển đến.
▪ Sử dụng thêm một số thuật toán để làm giảm độ sai số của xe như: Phương pháp
điều khiển PID nâng cao (Advantage PID), Logic mờ (Fuzzy Logic), mô hình
Markov, Stochastic Gradient Descent (SGD), Recursive Least Square (RLS), Naïve
Bayesian Classifier,…

Danh mục tài liệu tham khảo :


https://en.wikipedia.org/wiki/PID_controller
https://en.wikipedia.org/wiki/Fuzzy_logic
https://en.wikipedia.org/wiki/Moment_of_inertia

You might also like