Lý thuyết về thuật toán PID: - PID là cách viết tắc của các từ Propotional tỉ lệ, Integral tích phân, Derivativeđạo hàm và là thuật toán điều khiển được dùng nhiều nhất trong các ứng dụn
Trang 1ĐIỀU KHIỂN ĐỘNG CƠ DC DÙNG THUẬT TOÁN PID VỚI SỰ ĐIỀU KHIỂN
VÀ GIÁM SÁT TỪ MÁY TÍNH
Trang 2DANH MỤC HÌNH ẢNH vi
DANH MỤC BẢNG BIỂU vii
DANH MỤC CÁC TỪ VIẾT TẮT viii
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1
1.1 Giới thiệu: 1
1.2 Nguyên lý thiết kế: 1
CHƯƠNG 2: TỔNG QUAN VỀ THUẬT TOÁN PID 2
2.1 Lý thuyết về thuật toán PID: 2
2.2 Một số tiêu chí để kiểm tra một hệ thống sử dụng bộ điều khiển PID: 2
2.3 Cách thức xác định thông số PID: 4
2.4 Áp dụng thuật toán PID vào đề tài: 4
CHƯƠNG 3: LINH KIỆN CHÍNH SỬ DỤNG TRONG MẠCH 5
3.1 Vi điều khiển PIC 16F877: 5
3.1.1 Sơ lược về VĐK PIC16F877: 5
3.1.2 Sơ đồ khối PIC 16F877: 5
3.1.3 Sơ đồ chân PIC 16F877: 6
3.1.4 Tổ chức bộ nhớ: 8
3.2 IC L293: 10
3.3 LCD 16x2: 11
Trang 33.4.2 Thuật toán đo tốc độ động cơ: 12
3.5 Tổng quan về chuẩn RS232 giao tiếp với máy tính: 13
3.6 USB UART CP2102: 14
CHƯƠNG 4: SƠ ĐỒ NGUYÊN LÝ VÀ SƠ ĐỒ MÔ PHỎNG 16
4.1 Sơ đồ khối: 16
4.2 Sơ đồ nguyên lý: 16
4.3 Mạch thực tế: 17
CHƯƠNG 5: KẾT LUẬN 21
5.1 Ưu điểm và nhược điểm: 21
5.2 Hướng phát triển 21
TÀI LIỆU THAM KHẢO 22
PHỤ LỤC A 23
PHỤ LỤC B 30
Trang 4Hình 2.1 Sơ đồ về bộ điều khiển PID 2
Hình 2.2 Các tiêu chí của bộ điều khiển PID 3
Hình 3.1 Sơ đồ khối PIC 16F877A 6
Hình 3.2 Sơ đồ chân PIC 16F877A 7
Hình 3.3 Bộ nhớ chương trình của PIC 16F877A 8
Hình 3.4 Sơ đồ bộ nhớ dữ liệu PIC 16F877A 9
Hình 3.5 Sơ đồ chân L293 10
Hình 3.6 Nguyên tắc hoạt động L293 11
Hình 3.7 Sơ đồ chân LCD 16x2 11
Hình 3.8 Sơ đồ chân động cơ DC Encoder 12
Hình 3.9 Sơ đồ chân USB UART CP2102 14
Hình 4.1 Sơ đồ khối 16
Hình 4.2 Sơ đồ nguyên lý 16
Hình 4.3 Mặt trước mô hình thực tế 17
Hình 4.4 Mặt sau mô hình thực tế 18
Hình 4.5 Mạch thực tế khi đang hoạt động 19
Hình 4.6 Điều khiển động cơ trên máy tính 20
Hình 4.7 Đồ thị tốc độ động cơ theo thời gian 20
Trang 5Bảng 3.2 Chức năng các chân của L293 10 Bảng 3.3 Chức năng các chân của LCD 16x2 11
Trang 6DC: Direct Curent
LCD: Liquid-Crystal Display
PIC Personal Intelligent Communicator
PID Propotional Integral Derivative
SISO Single Input Single Output
Trang 7CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1.1. Giới thiệu:
Đề tài xuất phát từ các hệ thống thực tế sử dụng thuật toán PID Bảo đảm sự ổnđịnh và chất lượng cao trong từng hệ thống Ứng dụng toán học vào điều chỉnh sai số,tùy vào yêu cầu của từng hệ thống mà điều chỉnh những hệ số phù hợp
Nhằm ứng dụng những kiến thức đã học vào thực tế và hiểu rõ thêm về thuật toánPID cùng với sự điều khiển của vi điều khiển PIC 16F877 Em xin thực hiện một đề tài
“ĐIỀU KHIỂN ĐỘNG CƠ DC DÙNG THUẬT TOÁN PID VỚI SỰ ĐIỀU KHIỂN
+ Khối bàn phím nhập thông số và lệnh điều khiển
+ Khối xử lý nhận lệnh và thông số điều khiển từ bàn phím, tiến hành điềukhiển động cơ theo yêu cầu và hiển thị trạng thái và tốc độ động cơ lên LCD16x2
+ Khối giao tiếp máy tính thông qua USB UART CP2102
Trang 8CHƯƠNG 2: TỔNG QUAN VỀ THUẬT TOÁN PID
2.1 Lý thuyết về thuật toán PID:
- PID là cách viết tắc của các từ Propotional (tỉ lệ), Integral (tích phân), Derivative(đạo hàm) và là thuật toán điều khiển được dùng nhiều nhất trong các ứng dụng điềukhiển tự động với yêu cầu chính xác, nhanh và ổn định
- PID chỉ áp dụng cho các hệ thống SISO
Hình 2.1 Sơ đồ về bộ điều khiển PID[1]
- Công thức đầy đủ của bộ điều khiển PID là:
F=Kp*e + Ki*(In-1+()*dt+Kd*
Trong đó:
+ F: là hàm ngõ ra
+ Kp,Ki,Kd: là các thông số của bộ điều khiển PID
+ e: là sai số giữa tín hiệu đặt và tín hiệu thực tế
2.2 Một số tiêu chí để kiểm tra một hệ thống sử dụng bộ điều khiển PID:
- Các tiêu chí để đánh giá hệ thống sư dụng bộ điều khiển PID là:
+ Độ vọt lố (POT)
Trang 9+ Sai số xác lập (exl).
+ Thời gian xác lập (txl)
Hình 2.2 Các tiêu chí của bộ điều khiển PID[1]
- Hệ thống sẽ tối ưu nhất nếu:
+ Độ vọt lố POT(%) càng nhỏ càng tốt
+ Sai số xác lập exl càng nhỏ càng tốt
+ thời gian xác lập txl càng nhỏ càng tốt
- Ảnh hưởng của Kp,Ki,Kd đến hệ thống:
+ Khi Kp tăng dẫn đến exl giảm khiến cho txl sẽ tăng nếu chưa có vọt lố và giảmnếu có vọt lố Khi Kp quá lớn thì hệ sẽ mất ổn định
+ Khi Ki tăng sẽ triệt tiêu exl
+ Khi Kd tăng hệ thống sẽ đạt đến giá trị đặt chậm hơn nhưng sẽ ổn định hơn vàgiảm độ vọt lố
- Từ các thông tin trên, có thể xác định mục tiêu của bộ điều khiển là: Triệt tiêu sai
số xác lập, giảm thời gian xác lập và độ vọt lố, hạn chế dao động nếu có
2.3 Cách thức xác định thông số PID:
Trang 10- Có 2 cách để xác định thông số PID: bằng phương pháp tính toán và phương phápthử sai (thủ công).
+ Phương pháp thử sai: Chọn trước các thông số Kp,Ki,Kd và thay đổi đến khithỏa mãn được chất lượng mà hệ thống yêu cầu Ưu điểm của phương pháp này làkhông cần công thức tính toán Nhược điểm: tốn thời gian và không tránh khỏi sai số
+ Phương pháp tính toán: dùng giải thuật Zeigler Nichols sẽ thu được thông sốKp,Ki,Kd tương đối chính xác nhưng không hoàn toàn tốt
2.4 Áp dụng thuật toán PID vào đề tài:
Gọi F là tốc độ mà ta thiết lập cho động cơ sẽ đạt được, với yêu cầu là chính xác và
ổn định Gọi e là sai số giữa tốc độ động cơ đang chạy thực tế với tốc độ mà ta thiếtlập, trên thực tế nếu sai số càng lớn thì chúng ta phải cần một mức điện áp để giảm giátrị của sai số e này càng nhỏ càng tốt Và ta có công thức:
F=Kp*e
Thực tế khi ta tăng Kp càng lớn thì động cơ đạt đến tốc độ đặt trước rất nhanh, tuynhiên sẽ xảy ra vọt lố, đồng nghĩa với việc sai số e lúc này có giá trị âm tạo ra xuhướng động cơ sẽ giảm tốc độ, quá trình này lập đi lập lại Nếu sử dụng đạo hàm làmthành phần thắng thì có thể giảm vọt lố của động cơ Vậy ta sẽ có bộ điều khiển nhưsau:
F=Kp*e + Kd*
Nếu thành phần D và P chênh lệch với nhau quá lớn thì động cơ chưa đạt đến tốc
độ mong muốn đã dừng lại Khi đó ta thêm thành phần cộng dồn sai số, đó là thànhphần I trong bộ điều khiển Lúc này công thức sẽ là:
F=Kp*e + Kd*+Ki*(In-1+()*dt
CHƯƠNG 3: LINH KIỆN CHÍNH SỬ DỤNG TRONG MẠCH
Trang 113.1 Vi điều khiển PIC 16F877:
3.1.1 Sơ lược về VĐK PIC16F877:
PIC là tên viết tắt của “ Programmable Intelligent Computer”, PIC16F877A làdòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu hết tất cả các ứngdụng thực tế
PIC 16F877 có tập lệnh gồm 35 lệnh và độ dài 14 bit Mỗi lệnh thực thi trong 1xung clock, hoạt động ở tần số 20Mhz và chu kì 200ns
Bảng 3.1 Bảng tổng quan về VĐK PIC 16F877
Bộ định thời 2 bộ định thời 8 bits và 1 bộ định thời 16
Ngoài ra PIC 16F877 còn có 5 port và 1 bộ chuyển đổi ADC (Analog to DigitalConverter
3.1.2 Sơ đồ khối PIC 16F877:
Trang 12Hình 3.1 Sơ đồ khối PIC 16F877[3]
3.1.3 Sơ đồ chân PIC 16F877:
Trang 13Hình 3.2 Sơ đồ chân PIC 16F877A[3]
Các chân được chia thành 5 Port: A, B, C, D, E
PortA (Các chân 2, 3, 4, 5, 6, 7): Bao gồm 6 chân I/O có thể xuất và nhập
được, chức năng này được điều khiển bởi thanh ghi TRISA
PortB (Các chân 33, 34, 35, 36, 37, 38, 39, 40): Bao gồm 8 chân I/O Thanh
ghi điều khiển xuất nhập tương ứng là TRISB Port B có thể sử dụng trong quátrình nạp chương trình cho VĐK
PortC (Các chân 15, 16, 17, 18, 23, 24, 25, 26): Bao gồm 8 chân I/O Thanh
ghi điều khiển xuất nhập tương ứng là TRISC PortC chứa các chân chức năng sosánh, bộ Timer, bộ PWM và các chuẩn giao tiếp
PortD (Các chân 19, 20, 21, 22, 27, 28, 29, 30): Bao gồm 8 chân I/O Thanh
ghi điều khiển xuất nhập tương ứng là TRISD, là cổng xuất dữ liệu của chuẩn giaotiếp PSP (Parallel Slave Port)
PortE (Các chân 8, 9, 10): Bao gồm 3 chân I/O Thanh ghi điều khiển xuất
nhập tương ứng là TRISE Các chân PortE có ngõ vào analog
Trang 15tất cả các bank của bộ nhớ dữ liệu giúp thuật tiện trong quá trình truy xuất vàlàm giảm bớt lệnh của chương trình Sơ đồ cụ thể:
Hình 3.4 Sơ đồ bộ nhớ dữ liệu PIC 16F877A[3]
Trang 163.2 IC L293:
IC L293 là mạch cầu H, trong đề tài sử dụng L293 để đảo chiều động cơ
Sơ đồ chân của L293:
Trang 17Hình 3.6 Nguyên tắc hoạt động L293 [1]
- Khi chân 1A tích cực mức thấp, chân 2A tích cực cao, chân EN tích cực mứccao, động cơ sẽ quay theo chiểu thuận và ngược lại Động cơ không quay khi 2chân 1A, 2A có mực điện áp bằng nhau
3.3 LCD 16x2:
Hình 3.7 Sơ đồ chân LCD 16x2[2]
- LCD 16x2 dùng để hiển thị trạng thái và tốc độ động cơ
- LCD 16x2 bao gồm 16 chân trong đó:
+ Chân 1(Vss): GND, chân 2(Vcc): nguồn 5V, chân 3: Chân dùng để chỉnh độtương phản
+ Chân 4: Nhập lệnh và dữ liệu Chân 5: Ghi và đọc dữ liệu
Trang 18+ Chân 6: Ghi hoặc đọc tùy ngõ vào.
+ Chân 7 – 14: Bus dữ liệu
+ Chân 15,16: Đèn LCD
3.4 Động cơ DC Encoder:
3.4.1 Khái niệm về động cơ DC Encoder:
Động cơ DC Encoder là gì: Động cơ DC ENCODER V2 chạy được với điện áp
nguồn tối đa 24V, tích hợp đĩa encoder 100 xung, cho 2 kênh ra A và B cùng tần sốnhưng lệch pha 90 độ
Sơ đồ chân của động cơ:
Hình 3.8 Sơ đồ chân động cơ DC Encoder[5]
3.4.2 Thuật toán đo tốc độ động cơ:
- Gọi thời gian lấy mẫu là Ts
- Gọi số xung encoder phát ra trong thời gian lấy mẫu Ts là ns
Trang 19- Vậy số xung encoder phát ra trong 1s là ns/Ts.
- Số xung của đĩa encoder là: Ne (khi động cơ quay được 1 vòng thì trên kênh Ahoặc B sẽ xuất ra Ne xung) Suy ra tốc độ động cơ là: (ns/TS)/Ne
Vậy để đo được tốc độ động cơ, chỉ cần đếm được số xung xuất ra từ 1 trong 2kênh A và B trong thời gian Ts hay nói cách khác đó chính là tần số của xungencoder
Thời gian Ts này quá lớn (1s) sẽ dẫn đến tốn thời gian thực thi của vi điều khiển
và làm cho quá trình hiệu chỉnh tốc độ (nếu có) không được liên tục vì vậy việcchọn thời gian lấy mẫu rất quan trọng, phải lựa chọn phù hợp Nếu thời gian Ts quá
bé sẽ dẫn đến sai số lớn
- INT0: khi có cạnh xuống của tín hiệu encoder thì biến lưu số xung tăng lên 1,đây là biến lưu số xung encoder trong thời gian Ts
- TIMER0: tạo định thời Ts=300ms, sau 300ms sẽ tính toán giá trị vận tốc v
3.5 Tổng quan về chuẩn RS232 giao tiếp với máy tính:
RS232 là một trong những chuẩn được sử dụng rộng rãi để kết nối với máy tính.Chuẩn này sử dụng kết nối định dạng không đồng bộ, nhiều nhất có thể kết nối 2 thiết
bị, chiều dài tối đa cho phép đảm bảo dữ liệu là 12.5 đến 25.4m, tốc độ 20kbit/s
Ưu điểm:
- Chống nhiễu cao
- Có thể tháo lắp bất cứ lúc nào
- Mạch đơn giản
Các thông số thông thường trong chuẩn RS232
- Điện áp mức cao từ -3V đến -12V, điện áp mức thấp từ 3V đến 12V
- Tốc độ tối đa truyền nhận dữ liệu lên đến 100kbps
- Điện dung ngõ vào phải nhỏ hơn 2500pF
- Trở kháng nằm trong khoảng 3000-7000Ω
Trang 20- Tốc độ baud chuẩn để truyền dữ liệu: 50, 75, 110, 1200, 2300, 4800 … tùy theo mục đích sử dụng.
3.6 USB UART CP2102:
Sơ đồ và chức năng các chân của USB UART CP2102:
Hình 3.9 Sơ đồ chân USB UART CP2102[5]
Chức năng các chân:
- TXD: Chân truyền dữ liệu, kết nối với chân Rx của module khác
- RXD: Chân nhận dữ liệu, kết nối với chân Tx của module khác
Trang 21CP2102 không sử dụng thạch anh ngoài Có sẵn ngõ ra điện áp 3.3V.
Quá trình truyền dữ liệu:
- Quá trình truyền dữ liệu qua chuẩn RS232 là quá trình mà tại một thời điểmchỉ truyền được 1 bit 1 bit bắt đầu luôn luôn là mức 0 sẽ được gửi để thông báo rằng
có 1 kí tự sẽ được gửi đến trong lần truyền tiếp theo Các bit tiếp theo được gửi dướidạng ASCII, sau đó là bit chẵn lẻ và cuối cùng là bit dừng
- Tốc độ baud: Tham số này đặc trưng cho quá trình truyền dữ liệu là tốc độtruyền dữ liệu hay tốc độ bit Tốc độ này được thiết lập sao cho bên phát và bên thubằng nhau
- Bit chẵn lẻ: Dùng để kiểm tra lỗi
Trang 22CHƯƠNG 4: SƠ ĐỒ NGUYÊN LÝ VÀ SƠ ĐỒ MÔ PHỎNG
Khối nút nhấn
nhập thông số
Khối giao tiếp
với máy tính
Trang 234.3 Mạch thực tế:
Hình 4.3 Mặt trước mô hình thực tế
Trang 24Hình 4.4 Mặt sau mô hình thực tế
Trang 25Hình 4.5 Mạch thực tế khi đang hoạt động
Trang 26Hình 4.6 Điều khiển động cơ trên máy tính
Hình 4.7 Đồ thị tốc độ động cơ theo thời gian
Trang 27CHƯƠNG 5: KẾT LUẬN
5.1 Ưu điểm và nhược điểm:
- Ưu điểm: Mô hình nhỏ gọn, thực hiện được các lệnh và thông số điều khiển, kếtnối được với máy tính
- Nhược điểm: Mạch chạy chưa ổn định, chưa đưa ra sự khác biệt giữa các cáchđiều khiển khác nhau
- Kết quả đạt được: Thiết kế được mô hình hoạt động thực hiện gần đầy đủ các yêucầu ban đầu Điều khiển được động cơ quay thuận, nghịch, đạt tốc độ mong muốn
5.2 Hướng phát triển
- Động cơ đạt đến tốc độ đặt nhanh hơn và ổn định hơn
- Điều khiển động cơ vẫn giữ được tốc độ nếu thêm tải phụ vào
Trang 28TÀI LIỆU THAM KHẢO
[1].https://vi.wikipedia.org/wiki/B%E1%BB%99_%C4%91i%E1%BB%81u_khi
%E1%BB%83n_PID
[2].https://voer.edu.vn/m/tim-hieu-ngon-ngu-lap-trinh-visual-basic/cae67df7 [3] http://ww1.microchip.com
[4] Nguyễn Đăng Quang (09-2009) Giáo trình Microsoft Visual Basic
[5] https://robotics.stackexchange.com/
[6] Lê Đức Hạnh (2017) “Lập trình vi điều khiển học PIC và ứng dụng”
Trang 29PHỤ LỤC A (ĐOẠN MÃ CHO VĐK)
Trang 30int16 speed=0,speed1=0,temp=0,temp1=0,PresetSpeed=0,duty=0;int8 count3=0,count30=0, i=0; int16 t;
int1 chieu=1; char c;
Trang 34if(k1==0) { while(k1==0) {} PUTC(200); start(); }
if(k3==0) { while(k3==0) {} chieu=1; LCD_putcmd(0x8e); Printf(LCD_putchar,"R"); PUTC(202); }
if(k4==0) { while(k4==0) {} chieu=0; LCD_putcmd(0x8e); Printf(LCD_putchar,"L"); PUTC(203); }
if(k5==0) { while(k5==0) {} t=PresetSpeed/100; if(t<9) t++; else t=1; PresetSpeed
= (PresetSpeed%100)+t*100;
PUTC((PresetSpeed%1000)/100); delay_ms(100); PUTC((PresetSpeed
%100)+100);}
Trang 35if(k6==0) { while(k6==0) {} t=(PresetSpeed%100)/10; if(t<9) t++; else t=0;PresetSpeed = (PresetSpeed/100)*100+t*10+PresetSpeed%10;
PUTC((PresetSpeed%1000)/100); delay_ms(100); PUTC((PresetSpeed
if(c==200) { PUTC(200); start(); }
//LCD_putcmd(0xC0); Printf(LCD_putchar,"TOC DO: 0 ");
}
}
PHỤ LỤC B ĐOẠN MÃ GIAO TIẾP MÁY TÍNH
Trang 36Private Sub Command5_Click()