Nguồn cấp để điều khiển động cơ servo DC thường dùng 2 loại sau: điều khiển tuyến tính và điều khiển độ rộng xung PWM.. Động cơ DC vốn là những hệ thống hồi tiếp vịng hở khi cấp điện để
Trang 1THÀNH PHỐ HỒ CHÍ MINH
CÔNG TRÌNH NGHIÊN CỨU KHOA HỌC CẤP TRƯỜNG
NGHIÊN CỨU THIẾT KẾ MODUL ĐIỀU KHIỂN ĐỘNG CƠ SERVO DÙNG CHO THỰC TẬP TRUYỀN ĐỘNG ĐIỆN
MÃ SỐ: T23 - 2008
S 0 9
S KC 0 0 2 1 7 0
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM
-
ĐỀ TÀI NCKH CẤP TRƯỜNG
NGHIÊN CỨU THIẾT KẾ MODULE ĐIỀU KHIỂN ĐỘNG CƠ SERVO DÙNG CHO THỰC TẬP
TRUYỀN ĐỘNG ĐIỆN
MÃ SỐ: T23 - 2008
THUỘC NHÓM NGÀNH : KHOA HỌC KỸ THUẬT
NGƯỜI CHỦ TRÌ : THS TRẦN QUANG THỌ
NGƯỜI THAM GIA :
ĐƠN VỊ : KHOA ĐIỆN
TP HỒ CHÍ MINH – 3/2009
Trang 4T23-2008
Chương 1 Tổng quan về động cơ servo I.1 Giới thiệu
Động cơ servo được ứng dụng rộng rãi trong thực tế, từ thiết bị
điều khiển trong sản xuất cho đến các ứng dụng trong dân dụng Phổ
biến có hai loại động cơ servo là động cơ servo AC và servo DC Trong khuôn khổ đề tài chỉ đề cập về loại động cơ servo DC Nguồn cấp để điều khiển động cơ servo DC thường dùng 2 loại sau: điều khiển tuyến tính và điều khiển độ rộng xung PWM Điều khiển tuyến tính chỉ sử dụng trong một số trường hợp cần thiết, vì tổn hao trên linh kiện rất lớn trong cách điều khiển này, làm cho hiệu suất điều khiển và tuổi thọ linh kiện thấp Đa số sử dụng phương pháp điều khiển độ rộng xung để điều khiển động cơ servo DC
Động cơ DC vốn là những hệ thống hồi tiếp vịng hở khi cấp điện để động cơ quay nhưng chúng quay bao nhiêu thì ta khơng biết, kể cả đối với động cơ bước là động cơ quay một gĩc xác định tùy vào số xung nhận được Việc thiết lập một hệ thống điều khiển để xác định những gì ngăn cản chuyển động quay của động cơ hoặc làm động cơ khơng quay cũng khơng
dễ dàng
Mặt khác, động cơ servo được thiết kế cho những hệ thống hồi tiếp vịng kín Tín hiệu ra của động cơ được nối với một mạch điều khiển Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp về mạch điều khiển này Nếu
cĩ bất kỳ lý do nào ngăn cản chuyển động quay của động cơ, cơ cấu hồi tiếp
sẽ nhận thấy tín hiệu đầu ra chưa đạt được vị trí mong muốn thì mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được vị trí chính xác
Động cơ servo cĩ nhiều kiểu dáng và kích thước, được sử dụng trong nhiều ứng dụng khác nhau, từ máy tiện điều khiển bằng máy tính cho đến các mơ hình máy bay và xe hơi Ứng dụng mới nhất của động cơ servo là trong các robot, cùng loại với các động cơ dùng trong mơ hình máy bay và
xe hơi Các động cơ servo điều khiển bằng vơ tuyến được gọi là động cơ servo R/C
Trong thực tế, bản thân động cơ servo khơng phải được điều khiển bằng vơ tuyến, nĩ chỉ nối với máy thu vơ tuyến trên máy bay hay xe hơi Động cơ servo nhận tín hiệu từ máy thu này Như vậy cĩ nghĩa là ta khơng cần phải điều khiển robot bằng tín hiệu vơ tuyến bằng cách sử dụng một động cơ servo, trừ khi ta muốn Ta cĩ thể điều khiển động cơ servo bằng
Trang 5máy tính, một bộ vi xử lý hay thậm chí một mạch điện tử đơn giản dùng IC
4 Dây tín hiệu (vàng hoặc trắng)
5 Dây mass âm (đen)
Tốc độ quay của trục động cơ servo lên đến vài ngàn vòng trên phút,
nên thường để có thể sử dụng trong thực tế thì phải có thêm bộ phận truyền
Trang 6T23-2008
động cĩ bánh răng hay hộp số để giảm tốc độ cho phù hợp với máy sản xuất
Để quay động cơ, tín hiệu số được gởi tới mạch điều khiển Tín hiệu này khởi động động cơ, thơng qua chuỗi bánh răng Vị trí của trục cảm biến vị trí cho biết vị trí trục ra của servo Khi trục cảm biến vị trí đạt được vị trí mong muốn, mạch điều khiển sẽ tắt động cơ Thường động cơ servo được thiết kế
để quay cĩ giới hạn chứ khơng phải quay liên tục như động cơ DC hay động
cơ bước Mặc dù cĩ thể chỉnh động cơ servo quay liên tục nhưng cơng dụng chính của động cơ servo là đạt được gĩc quay chính xác trong khoảng từ 90o
– 180o Việc điều khiển này cĩ thể ứng dụng để lái robot, di chuyển các tay máy lên xuống, quay một camera để quan sát khắp phịng…
Trục của động cơ servo R/C được định vị nhờ vào kỹ thuật gọi là điều khiển độ rộng xung PWM Trong hệ thống này, servo là đáp ứng của một dãy các xung số ổn định Cụ thể hơn, mạch điều khiển là đáp ứng của một tín hiệu số cĩ các xung biến đổi từ 1 – 2 ms Các xung này được gởi đi 50 lần/giây Chú ý rằng khơng phải số xung trong một giây điều khiển servo mà
là chiều dài của các xung Servo địi hỏi khoảng 30 – 60 xung/giây Nếu số này quá thấp, độ chính xác và cơng suất để duy trì servo sẽ giảm
I.3 Điều khiển động cơ servo
Các khái niệm cơ bản về điều khiển động cơ servo đã không đổi đáng kể trong hơn năm mươi năm qua Lý do cơ bản phải sử dụng hệ thống servo khác với hệ thống vòng hở là cần cải thiện thời gian đáp ứng quá độ, giảm sai số trạng thái tĩnh và giảm độ nhạy của tham số phụ tải
Nói chung cải thiện thời gian đáp ứng quá độ có nghĩa là làm tăng dãi tần số hoạt động của hệ thống Thời gian đáp ứng nhanh hơn
Trang 7có nghĩa là cho phép máy làm việc với năng suất cao hơn Giảm sai số trạng thái tĩnh liên quan đến độ chính xác của hệ thống servo Cuối cùng, giảm độ nhạy đối với tham số phụ tải nghĩa là hệ thống servo có thể đáp ứng với dao động đối với tham số đầu vào cũng như đầu ra Ví dụ, dao động tham số đầu vào là điện áp nguồn lưới cung cấp, còn đối với đầu ra như là sự thay đổi mô men quán tính của phụ tải, trọng tải, nhiễu mô men trục máy sản xuất,…
Nói chung, việc điều khiển servo có thể phân thành hai vấn đề Loại vấn đề thứ nhất liên quan đến việc kiểm tra lệnh đặt vào, nó xác định lệnh đặt vào là điều khiển theo chế độ nào Có các chế độ điều khiển như là điều khiển theo vị trí, điều khiển theo tốc độ, điều khiển theo gia tốc, điều khiển theo mô men Đối với chuyển động thẳng thì lực được thay thế cho mô men
Loại vấn đề thứ hai của điều khiển servo là đặc tính khử nhiểu của hệ thống Các loại nhiễu có thể là bất kỳ thứ gì từ nhiễu mô men trên trục động cơ do ước lượng sai tham số động cơ dùng để điều khiển Các điều khiển quen thuộc PID và PIV được dùng để khắc phục các vấn đề này Khác với điều khiển tuyến tính, điều khiển khử nhiễu tác động lại với các nhiễu và sai số chưa biết Các hệ thống điều khiển servo hoàn chỉnh thường kết hợp cả hai loại điều khiển servo này để có được kết quả tốt nhất
Bây giờ ta tìm hiểu hai loại điều khiển khử nhiễu phổ biến này
Điều khiển PID
Các thành phần cơ bản của hệ thống chuyển động servo tiêu biểu như trong hình sau:
Trang 8T23-2008
Sử dụng công thức laplace chuẩn trong hình này, điều khiển servo theo vòng dòng điện và được mô hình đơn giản bằng hàm truyền tuyến tính G(s) Dĩ nhiên servo sẽ có giới hạn dòng đỉnh, nên mô hình tuyến tính này không hoàn toàn chính xác, tuy nhiên, nó cho kết quả có thể chấp nhận được trong phân tích này Theo dạng cơ bản nhất, servo điều khiển sẽ nhận tín hiệu đặt là điện áp đặc trưng cho dòng điện mong muốn của động cơ Mô men trục động cơ Td quan hệ với dòng điện động cơ theo hệ số mô men Kt:
TdKt.I Mục đích ở đây là hàm truyền điều chỉnh dòng hoặc điều chỉnh mô men có thể xấp xỉ bằng 1 theo tần số hoạt động thấp hơn tương ứng G(s)=1
Động cơ servo được mô hình hóa bằng một khối quán tính J, ma sát dính b và hằng số mô men Kt
Khối quán tính bao gồm quán tính động cơ và quán tính tải Giả sử tải ghép chặt bằng khớp nối cứng với trục động cơ, điều này cho ta biết mô men quán tính tổng của hệ thống bao gồm tổng mô men quán tính của động cơ và tải đối với tần số điều khiển
Vị trí thực sự của động cơ (s) thường được đo bằng encoder hoặc resolver nối trực tiếp với trục động cơ Ta cũng giả sử rằng, thiết
bị hồi tiếp này cũng nối cứng với trục động cơ để có thể bỏ qua tần số cộng hưởng cơ học
Trang 9Kế bộ truyền động và động cơ là bộ điều khiển vị trí vòng kín Một bộ điều khiển servo tổng quát gồm cả bộ phát quỹ đạo và bộ PID Bộ phát quỹ đạo cho biết lệnh đặt vị trí ký hiệu *(s) Bộ điều khiển PID hoạt động nhờ vào sai số vị trí và lệnh đặt mô men và đôi khi được xác định bằng cách ước lượng hằng số mô men Kt Nếu không biết Kt thì độ lợi PID được đo lại tương ứng một cách đơn giản,
vì thường không biết chính xác hằng số mô men Thường dùng xấp xỉ
(
Điều chỉnh vòng PID
Cách thử và sai là cách được sử dụng phổ biến để xác định các thành phần trong PID bằng cách dựa vào kinh nghiệm của người vận hành hệ thống điều khiển quá trình Có 2 bước cơ bản để thực hiện như sau:
Bước 1: đặt Ki và Kd bằng 0 kích thích hệ thống bằng hàm nấc step
Tăng từ từ Kp cho tới khi vị trí trục bắt đầu dao động Tại điểm này ghi lại giá trị của Kp và đặt Ko bằng giá trị này Lưu lại tần số dao động này là fo
Bước 2: đặt các hệ số như sau:
Trang 10Ta bắt đầu quan sát đáp ứng khi ngõ vào là hàm nấc và Td=0
Bước 1: hệ thống bắt đầu dao động ở fo=0,5 Hz với Ko=5e-5Nm/rad Bước 2: sử dụng các đại lượng này và tối ưu hóa ta được:
Kp=3e-4 Nm/rad
Ki=3e-4 Nm/(rad/s)
Kd=7.4e-5 Nm/(rad/s)
Bộ điều khiển PIV
Và cũng tương tự như vịng điều khiển PID, các đại lượng xác định như sau:
Trang 11Khi kết hợp cả hai ta sẽ được:
Mô men ước lượng: T(s)
Trang 12T23-2008
I.4 Một số ứng dụng của ñộng cơ servo:
Trang 14T23-2008
Trang 16T23-2008
Trang 17Chương 2 MODULE ĐIỀU KHIỂN
II.1 Nguyên lý điều khiển:
Sơ đồ khối hệ thống điều khiển động cơ servo vòng kín
Kỹ thật điều rộng xung được sử dụng phổ biến trong điều khiển động cơ servo DC Điện áp cấp cho động cơ tùy thuộc vào độ rộng xung kích
đây là xung vuông đơn giản có:
Trang 18T23-2008
Khi thay đổi độ rộng xung sẽ thay đổi điện áp đặt vào động cơ:
Việc điều rộng xung có thể thực hiện bằng phần mềm hoặc phần cứng hoặc kết hợp cả 2 Các vi điều khiển ATM và PIC hiện nay có sẵn các kênh điều rộng xung và phụ thuộc vào chương trình điều khiển
Trang 19Đây là cách đơn giản nhất để phát tín hiệu điều rộng xung Khi kết hợp phần cứng và phần mềm ta có thể dùng timer bên trong và ngắt tràn để phát sóng điều rộng xung
Ví dụ mã viết cho 89V51RD2 như sau:
Cấu trúc bên trong vi điều khiển:
Trang 20T23-2008
Sơ đồ chân của AT89S52
Các ngõ tín hiệu điều khiển:
Ngõ tín hiệu PSEN (Program store enable): PSEN là tín hiệu ngõ ra ở
chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường nối đến chân 0E (output enable hoặc RD) của Eprom cho phép đọc các byte mã lệnh Khi có giao tiếp với bộ nhớ chương trình bên ngoài thì mới dùng đến PSEN, nếu không có giao tiếp thì chân PSEN bỏ trống (PSEN ở mức thấp trong thời gian vi điều khiển 89S52 lấy lệnh Các mã lệnh của chương trình đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh bên trong 89S52 để giải mã lệnh Khi 89S52 thi hành chương trình trong Eprom nội thì PSEN ở mức logic 1)
Ngõ tín hiệu điều khiển ALE (Address Latch Enable): Khi vi điều khiển
89S52 truy xuất bộ nhớ ngoài, port 0 có chức năng là bus tải địa chỉ và bus
dữ liệu [AD7-AD0] do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi nối chúng với IC chốt Tín hiệu ra ở chân ALE là một
Trang 21xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên việc chốt địa chỉ được thực hiện 1 cách hoàn toàn tự động Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động của tụ thạch anh gắn vào vi điều khiển
và có thể dùng xung tín hiệu ngõ ra ALE làm xung clock cung cấp cho các phần khác của hệ thống Trong chế độ lập trình cho bộ nhớ nội của vi điều khiển thì chân ALE được dùng làm ngõ ra vào nhận xung lập trình từ bên ngoài để lập trình cho bộ nhớ Flash ROM trong 89S52
Ngõ tín hiệu EA (External Access): Tín hiệu vào EA ở chân 31 thường
nối lên mức 1 hoặc 0 Nếu nối EA lên mức logic 1 (+5V) thì VĐK sẽ thi hành chương trình từ bộ nhớ nội Nếu nối EA lên mức logic 0 (0V) thì VĐK
sẽ thi hành chương trình từ bộ nhớ ngoài
Ngõ tín hiệu RST (Reset): Ngõ vào RST ở chân 9 là ngõ vào của 89S52
Khi cấp điện cho hệ thống hoặc khi nhấn Reset thì mạch sẽ reset vi điều khiển Khi reset thì tín hiệu reset phải ở mức cao ít nhất là hai chu kì máy, khi đó các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống
Trạng thái của tất cả các thanh ghi trong 89S52 sau khi reset hệ thống được tóm tắt như sau:
Bộ đếm chương trình
PC Thanh ghi tích lũy A Than ghi B
Thanh ghi trạng thái PSW
Thanh ghi con trỏ SP DPTR
Port 0-port 3
IP
IE Các thanh ghi định thời
0000H 00H 00H 00H 07H 0000H FFH XXX0 0000B 0X0X 0000B 00H
Trang 22T23-2008
SCON SBUF PCON (HMOS) PCON (CMOS)
00H 00H 0XXX XXXXH 0XXX 0000B
Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC=0000H Sau khi reset xong vi điều khiển luôn bắt đầu thực hiện chương trình tại địa chỉ 0000H của bộ nhớ chương trình, nên các chương trình cho vi điều khiển luôn bắt đầu tại địa chỉ 0000H Nội dung của RAM trên chip không bị thay đổi bởi tác động của ngõ vào reset [có nghĩa là vi điều khiển đang sử dụng các thanh ghi để lưu trữ dữ liệu nhưng nếu vi điều khiển bị reset thì dữ liệu trong thanh ghi vẫn không đổi
Các ngõ vào bộ dao động Xtal1, Xtal2: Bộ dao động được tích hợp bên
trong 89S52, khi sử dụng người thiết kế chỉ cần kết nối thêm tụ thạch anh và các tụ như hình vẽ, tần số tụ thạch anh thương dùng là 12Mhz-24Mhz Chân 40 (Vcc) được nối lên nguồn +5V, chân 2 GND nối mass
Cấu trúc bộ nhớ của vi điều khiển:
- RAM bên trong 89S52 được phân chia như sau:
- Các bank thanh ghi có chỉ từ 00H đến 1FH
- RAM địa chỉ hóa từng bit có địa chỉ từ 20H-2FH
- RAM đa dụng từ 30H-7FH
- Các thanh ghi chức năng đặc biệt từ 80H-FFH
Trang 24T23-2008
Trang 25#include “REG52MOD.h”
unsigned char ONTIME=50;
unsigned char DIRECTION=0×05;
Trang 26T23-2008
Trang 27Sơ đồ nguyên lý:
Trang 28#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
InitializeComponent()
End Sub
Trang 29Protected Overloads Overrides Sub Dispose(ByVal disposing As
Private components As System.ComponentModel.IContainer
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents speed1 As System.Windows.Forms.TextBox
Friend WithEvents speed2 As System.Windows.Forms.TextBox
Friend WithEvents speed3 As System.Windows.Forms.TextBox
Friend WithEvents speed4 As System.Windows.Forms.TextBox
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents Label4 As System.Windows.Forms.Label
Friend WithEvents on1 As System.Windows.Forms.CheckBox
Friend WithEvents on2 As System.Windows.Forms.CheckBox
Friend WithEvents on3 As System.Windows.Forms.CheckBox
Friend WithEvents on4 As System.Windows.Forms.CheckBox
Friend WithEvents servo As System.Windows.Forms.TextBox
Friend WithEvents Label5 As System.Windows.Forms.Label
Friend WithEvents Button2 As System.Windows.Forms.Button
Friend WithEvents DO1 As System.Windows.Forms.CheckBox
Friend WithEvents DO2 As System.Windows.Forms.CheckBox
Friend WithEvents DO3 As System.Windows.Forms.CheckBox
Friend WithEvents DO4 As System.Windows.Forms.CheckBox
Friend WithEvents DIP1 As System.Windows.Forms.CheckBox
Friend WithEvents DIP2 As System.Windows.Forms.CheckBox
Friend WithEvents DIP3 As System.Windows.Forms.CheckBox
Friend WithEvents DIP6 As System.Windows.Forms.CheckBox
Friend WithEvents DIP5 As System.Windows.Forms.CheckBox
Friend WithEvents DIP4 As System.Windows.Forms.CheckBox
Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox