ĐIỀU KHIỂN SERVO

 

 

8.3.3. Điều khiển Servo

            Bài toán định vị thường được giải quyết bằng các môtơ bước. Khi đó ta cần đến ít nhất là một thông báo trở lại về một điểm chuẩn. Đối với hệ truyền động lớn hơn, các môtơ một chiều cũng được sử dụng, khi đó sẽ phải chi phí nhiều cho những phương tiện nhận biết vị trí hiện thời. Máy tính điều khiển tạo nên một vòng lặp điều chỉnh để điều khiển dòng điện qua môtơ. Nhưng thông thường thì vòng điều chỉnh được xây dựng bằng phần cứng. Khi đó máy tính chỉ đóng vai trò điều khiển vị trí cần có. Giải pháp này dẫn đến, trước hết ở những hệ thống phức tạp, để làm giảm khối lượng công việc mà máy tính phải thực hiện

            Đối với những ứng dụng có mức độ chịu tải không đáng kể thì hệ thống servo (tuỳ động) điều khiển từ xa được sử dụng trong trò chơi dành cho trẻ em là một ví dụ minh hoạ thích hợp. Trong trường hợp đơn giản việc điều khiển có thể tiến hành qua một đường dẫn cổng duy nhất bằng một tín hiệu PWM. Ta cần có những xung dương với độ rộng nằm giữa 1 ms và 2  ms trong đó độ trống không phải là một yêu cầu bức bách. Mạch điện tử điều khiển động cơ servo so sánh vị trí được cho trước qua độ rộng xung với vị trí hiện thời và thực hiện việc tinh chỉnh một cách độc lập.

           

 

Hình 8.9: Đấu môtơ servo vào hệ 80535

 

Qua khối lấy mẫu / so sánh của 80535 việc điều khiển môtơ servo có thể tiến hành một cách đơn giản theo hình 8.9. Để bộ xử lý hoàn toàn được giải phóng khỏi nhiệm vụ tạo ra các xung thì bộ Timer 2 cần phải được tự động nạp lại. Ngoài ra, nó phải làm việc tự do trong chế độ nạp lại (Reload) và cứ 4 ms lại tạo ra một trạng thái tràn. Ở tần số 10 MHz, bộ định thời nhận được xung nhịp có chu kỳ đúng bằng một mỉcô giây. Thanh ghi Reload cần phải được nạp bằng CRCH – F0h và CRCL – 00h. Giá trị F000h tương ứng với FFFFh – 4095, như vậy tương ứng với một chu kỳ bằng 4,095 ms. Ba thanh ghi so sánh nhận được các giá trị so sánh tương ứng giữa F800h (2 ms) và FBFFh (1 ms), vì thế độ rộng xung giữa 1,024 ms và 2,048 ms được tạo ra. Hình 8.9 giải thích rõ hơn các tín hiệu được tạo ra.

 

 

Hình 8.10. Dạng biến đổi của ba tín hiệu PWM

 

Chương trình SERVO.M35 minh hoạ một quá trình điều khiển tự động co hai môtơ servo. Khi thay đổi một giá trị điều khiển có thể dẫn đến một lỗi về thời gian khi byte HIGH và byte LOW đang được truyền thì có một xung xuất hiện. Để tránh hiện tượng này, việc truyền dữ liệu được đồng bộ trong thủ tục SetPWM bằng một tín hiệu luôn luôn không đổi ở kênh 3. Việc truyền dữ liệu điều khiển mới chỉ tiến hành sau khi tín hiệu ở kênh 3 (P1.3) chính xác là đang ở mức LOW. Trước khi gọi thủ tục Set PWM, các dữ liệu điều khiển phải có mặt cở các thanh ghi Mem 1 đến Men 4. Các giá  trị đặt và thời gian trễ được ấn định trên một bảng điều khiển ở trong bộ nhớ RAM. Trong một bộ dữ liệu có 5 byte:

1.       Byte HIGH kênh 1

2.       Byte LOW kênh 2

3.       Byte HIGH kênh 2

4.       Byte LOW kênh 2

5.       thời gian trễ theo 0,1 s

Nhiều bộ dữ liệu tuỳ ý có thể được xếp nối tiếp với nhau. Bộ dữ liệu cuối cùng cần phải được kết thúc với thời gian trễ bằng 0 để rẽ nhanh ra chỗ bắt đầu. Như thế sẽ cho phép dãy điều khiển thực hiện tuần hoàn. Một ứng dụng có thể sẽ là điều khiển một mô hình minh hoạ.

 

; điều chỉnh servo bằng các tín hiệu PWM  (SERVO.M35)

Procedure  Init PWM

WrT2CON  0

WrCCen  10101000b          ; so sánh CC1, CC2, CC3

WrCRCL   0

WrCRCH  F0h                            ; cỡ 4 ms

WrCCh1   F8h                            ; 2 ms

WrCCH2  F8h                            ; 2 ms

WrCCh3  F4h  ; 3 ms                 ; 1 ms low, để đồng bộ

WrT2CON  00010001b                ; start Timer 2, reload

EndProc

 

Procedure  SetPWM

WhileBit  93h                             ;chờ P1.3 = 0

EndWhile

RdMem  1                                 ; nạp kênh 1

WrCCH1

RdMem 2

WrCCl1

RdMem 3                                  ; nạp kênh 2

WrCCH2

RdMem  4

WrCCl2

EndProc

 

Procedure DIEU_KHIEN

RdRAM                                     ; đọc dữ liệ

WrMem  1

RdRAM

WrMem  2

RdRAM

WrMem  3

RdRAM

WrMem  4

Setpwm                                    ; đọc dữ liệu

RdRAM

IFA=0  Reset                             ; dấu hiệu kết thúc

WrCount1                                  ; thời gian 0,1s … 25s

Loop1 Delay  100

EndProc

 

Procedure  du_lieu

Reset RAM

WrRAM  F8h                             ; kênh 1: F880h

WrRAM 80h

WrRAM  FBh                             ; kênh 2: FBFFh

WrRAM  FFh

WrRAM  255                              ; 25,5 ms

WrRAM F9h                              ; kênh 1: F980h

WrRAM 80h

WrRAM Fah                              ; kênh 2: FAFFh

WrRAM  FFh

WrRAM 255                               ; 25,5 ms

WrRAM Fah                              ; kênh 1: FA80h

WrRAM 80h

WrRAM F9h                              ; kênh 2: F9FFh

WrRAM FFh

WrRAM  0                                 ; kết thúc bảng

Reset RAM

EndProc

 

Begin

Du_lieu

InitPWM

Loop DIEU_KHIEN

End

 

EYETECK.VN

Theo mục 8.3.3 – Chương 8 - Bộ vi xử lý 80535

Tài liệu: Vi xử lý trong đo lường và điều khiển

Tác giả: Ngô Diên Tập

Nhà Xuất bản Khoa học và Kỹ thuật