1. Thiết kế mạch điều khiển động cơ DC-Encoder
1.4. Nguyên tắc điều khiển động cơ
Nguyên tắc chung:
Hình 3.7: Nguyên tắc điều khiển động cơ Công thức tính PID: 1 0 (e ) . . k k k p D I k e u K e K K e h h
37
h[s] thời gian lấy mẫu; k -lần tính thứ k;
. Để đơn giản hóa việc tính thành phần tích phân, chúng ta nên dùng phương pháp “cộng dồn” (hay đệ quy):
(k) (k 1) Ie(k) h
I I K
Tùy thuộc hàm truyền mà ta chọn dùng PID, PI, I...
Từ đó ra sẽ có sơ đồ nguyên tắc thiết kế điều khiển động cơ
Hình 3.8: Sơ đồ điều khiển
Ngắt ngoài khi chân 2 có tín hiệu xuống 1->0 liên tục gửi tín hiệu khi động cơ quay. So sánh kênh A và B để biết chiều thuận nghịch tương ứng q - hay +.
(1)Hàm tính U điều khiển (0-255) xuất ra chân 9; Hàm chỉ được gọi sau mỗi 25ms qua ngắt timer
T=0.025 s : thời gian lấy mẫu. Thời gian lấy mẫu càng nhỏ (tấn số cao) thì việc hiệu chỉnh càng tiến gần đến sự “liên tục” và chất lượng điều khiển sẽ tốt hơn. Trong các bộ
38
điều khiển số, thời gian lấy mẫu là một yếu tố rất quan trọng. Cần tính toán để thời gian này không quá lớn nhưng cũng đừng quá nhỏ, vì như thế sẽ hao phí thời gian thực thi. Code tính PID:
void pid() {
qnew=a; // dat goc moi = a if(menu==0){
t=t+time; // tang thoi gian dem enew=x*sin(y*t+1.57)-a; //e(k)
ipart+=0.05*(enew-eold)*time; //I(k) U=0.21*enew+ipart; }
if(menu==1) {
enew=z-abs(qold-qnew); //enew sai so van toc z xung dat tuong ung voi van to dat U+=0.21*enew; //ki=021; U chinh la I(k)
v=(qnew-qold); } // van toc dang xung in ra man hinh qold=qnew; // dat vi tri cu = vi tri moi cho vong lap moi eold=enew; // dat sai so cu = sai so moi cho vong lap moi dem++;
if (U<0) {U=-U; dau=1;
} else dau=0;
if (U>255) U=255; //Chan can tren if(U<90 && menu==0 && abs(enew)>5)U=90; //Chan can duoi }
39
Ý nghĩa đoạn lệnh:
Đoạn lệnh là chương trình con sẽ được gọi bởi timer sau mỗi 25 ms (thời gian lấy mẫu) Đầu ra của nó là U (0-255) trên chân 9.Có 2 menu: Menu=0 điều khiển vị trí với đầu vào là góc (xung) đo được sau khi đọc encoder; menu=1 điều khiển vận tốc với đầu vào là vận tốc góc (xung/0.025s) đo được sau khi đọc encoder. U được tính theo các công thức PID đã đề cập.