Đề tài Bộ điều khiển số PID điều khiển DC motor

Khi ghép bán dẫn loại p và loại n với nhau tạo thành tiếp xúc p-n (p-n junction), đây chính là các diode. Đặc điểm của tiếp xúc p-n là chỉ có dòng điện chạy qua theo 1 chiều từ p sang n. Khi ghép 3 lớp bán dẫn sẽ tạo thành transistor, phụ thuộc vào thứ tự bán dẫn được ghép chúng ta có transistor npn hay pnp. Tôi sẽ chọn transistor npn để giải thích hoạt động của transistor vì loại này được dùng phổ biến trong các ứng dụng điều khiển (và cả trong mạch cầu H). Hình 5 là mô hình và ký kiệu của transistor npn.

Ba lớp bán dẫn n, p và n kết hợp tạo thành 3 cực C (cực thu-Collector), cực B (nền – Base) và cực E (phát – Emitter). Tùy theo cách mắc transistor mà người ta có các loại phân cực khác nhau, trong hình 6 tôi trình bày cách phân cực rất cơ bản mà chúng ta sẽ dùng sau này, phân cực E chung (CE- Common Emitter).

Tuy là được tạo nên từ các bán dẫn tạp chất nhưng nồng độ tạp chất của các lớp trong npn BJT rất khác nhau. Lớp E rất “giàu” hạt dẫn, kế đến là lớp C và lớp B thì lại rất ít hạt dẫn và rất mỏng. Khi điện áp cực B lớn hơn điện áp cực E, tiếp xúc p-n giữa B và E được phân cực thuận. Dòng electron từ E (vốn có rất nhiều do cách pha tạp chất) ào ạt “chảy” về B, trong khi lớp B (bán dẫn loại p) vốn rất mỏng và nghèo hạt dẫn (lỗ trống), nên phần lớn electron từ E sẽ “tràn” qua cực C và đi về nguồn Vc như mô tả trên hình 6. Chú ý trên hình 6 tôi vẽ chiều di chuyển là chiều của dòng electron,

docx58 trang | Chia sẻ: lethao | Lượt xem: 4994 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Bộ điều khiển số PID điều khiển DC motor, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
cấu cơ khí, thiết bị khí nén, mạch điện RC, mạch khuếch đại thuật toán. Các bộ điều chỉnh liên tục gồm bộ P, I, PI, PD, PID: Bộ điều chỉnh tỉ lệ P (Proportional): Bộ điều chỉnh tỉ lệ tạo tín hiệu điều khiển upt tỉ lệ với tín hiệu sai lệch et Hình 2.4 Sơ đồ khối bộ điều chỉnh tỉ lệ Phương trình vi phân: upt=Kp.et (9) Trong đó Kp gọi là hệ số khuếch đại Hàm truyền trong miền Laplace: Gps=Kp. Bộ điều chỉnh tích phân I (Integration): Bộ điều chỉnh tích phân tạo tín hiệu điều khiển uIt tỉ lệ với tích phân của tín hiệu sai lệch et Hình 2.5 Sơ đồ khối bộ điều chỉnh tích phân Phương trình vi phân: uIt=KI.etdt (10) Hàm truyền trong miền Laplace: GIs=UsEs=KIS Trong đó: KI là hằng số tích phân Bộ điều chỉnh tỉ lệ - tích phân (PI) Bộ điều chỉnh PI là cấu trúc ghép song song của khâu P và khâu I. Tín hiệu ra của bộ PI là tổng tín hiệu ra của hai khâu thành phần. Hình 2.6 Sơ đồ khối của bộ điều chỉnh tỉ lệ - tích phân Phương trình vi phân:ut=Kp.et+KI.etdt=Kpet+1TIetdt Đặt : hằng số thời gian tích phân. Hàm truyền trong miền Laplace: GPIs=Kp1+1TIS Bộ điều chỉnh tỉ lệ - vi phân (bộ PD) Bộ điều chỉnh PD lý tưởng là cấu trúc ghép song song của khâu P và khâu D. Tín hiệu ra của bộ PD là tổng tín hiệu ra của hai thành phần. Hình 2.7 Sơ đồ khối bộ điều chỉnh tỉ lệ - vi phân Phương trình vi phân: ut=KP.et+KD∙detdt=KP.et+Td∙detdt Đặt Td = KD /Kp là hằng số thời gian vi phân. Hàm truyền đạt trong miền Laplace: GPDs=KP1+Tds Bộ điều chỉnh tỉ lệ - vi tích phân (bộ PID) Bộ điều chỉnh PID lý tưởng là cấu trúc ghép song song của ba khâu: P, I và D. Hình 2.8 Sơ đồ khối của bộ điều chỉnh tỉ lệ - vi tích phân Phương trình vi phân của bộ PID lý tưởng: ut=KP.et+KD∙detdt+KI.etdt=KP.et+Td∙detdt+1TIetdt Hàm truyền đạt trong miền Laplace: GPIDs=KP1+Tds+1TIS Trong thực tế có nhiều sơ đồ điều khiển khác nhau có thể áp dụng cho hệ rời rạc, nhưng sơ đồ thường được sử dụng là hiệu chỉnh nối tiếp với bộ điều khiển PID số. Ta có sơ đồ điều khiển với bộ PID số: Xuất phát từ mô tả toán học của bộ PID liên tục ở trên ta có: ut=upt+uDt+uIt ut=Kp.et+KI.etdt+KD.detdt Khi chuyển sang mô hình rời rạc của bộ PID số thì u(t) thay bằng uk= u(k). uk=ukp+ukI+ukD (11) Khâu tỉ lệ upt=Kp.et được thay bằng: ukp=Kpek Suy ra hàm truyền: Gpz=UpzEz=Kp Khâu vi phân uDt=KD.detdt được thay bằng sai phân lùi: ukD=KDek-ek-1T Biến đổi Z hai vế ta được: UDz=KDEz-z-1EzT=KDT1-z-1Ez=KDTz-1zEz Þ Hàm truyền: GDz=UDzEz=KDTz-1z (12) Khâu tích phân uIt=KI.0tetdt có nhiều cách tính: Thứ nhất là tính tích phân chữ nhật lùi: ukI=KIi=1kTei=uk-1I+KITek Thứ hai là tính tích phân chữ nhật tới:ukI=KIi=1kTei-1=uk-1I+KITek-1 Thứ ba là tính tích phân hình thang: ukI=KIi=1kTei-1+ei2=uk-1I+Tek-1+ek2 Hình 2.9 Minh họa ba cách tính tích phân Trong ba cách tính tích phân trình bày ở trên, thì cách tính tích phân hình thang cho kết quả chính xác nhất, do đó thực tế người ta thường sử dụng công thức: ukI=uk-1I+Tek-1+ek2 biến đổi Z hai vế ta có: UIz=z-1Uz+KIT2z-1Ez+ Ez Þ Hàm truyền: GIz=UIzEz=KIT21+z-11-z-1=KIT2z+1z-1 (13) Từ các hàm truyền cơ bản vừa phân tích ở trên, ta rút ra được hàm truyền của bộ PI, PD, PID số như sau: GPIz=Kp+KIT2z+1z-1 (14) GPDz=Kp+KDTz-1z (15) GPIDz=Kp+KIT2z+1z-1+KDTz-1z (16) Từ đó ta có sơ đồ khối bộ PID số: Hình 2.10 Sơ đồ khối bộ PID số 2.2.2 Phương pháp hiệu chỉnh PID bằng thực nghiệm Phương pháp Zeigle – Nichols là phương pháp thực nghiệm để thiết kế bộ điều khiển P , PI hoặc PID bằng cách dựa vào đáp ứng quá độ của đối tượng điều khiển . Bộ điều khiển PID cần thiết kế có hàm truyền là : GPID=Kp+KIs+KDs=KP1+1TIs+Tds Zeigle – Nichols đưa ra 2 phương pháp lựa chọn thông số bộ điều khiển PID tùy đối tượng . Phương pháp Zeigle – Nichols 1 Phương pháp này sử dụng mô hình xấp xỉ quán tính bậc nhất có trễ của đối tượng điều khiển: WĐTs=k.e-T1s1+T2s Phương pháp thực nghiệm này có nhiệm vụ xác định tham số kp, TI, Td cho bộ điều khiển PID trên cơ sở xấp xỉ hàm truyền đạt S(s) của đối tượng thành dạng (1.1), để hệ kín nhanh chóng trở về chế độ xác lập và độ quá điều chỉnh Δh không vượt quá một giới hạn cho phép, khoảng 40% so với , tức là có Ba tham số T1 (hằng số thời gian), K (hệ số khuyếch đại) và T2 (hằng số thời gian quán tính) của mô hình xấp xỉ quán tính bậc nhất có thể được xác định gần đúng từ đồ thị hàm quá độ h(t) của đối tượng. Nếu đối tượng có hàm quá độ dạng như hình 2.10 mô tả thì từ đồ thị h(t) đó ta đọc ra được: - T1 là khoảng thời gian tín hiệu ra h(t) chưa có phản ứng ngay với tín hiệu kích thích 1(t) tại đầu vào. - K là giá trị tới hạn h∞=limt→∞ht. - Gọi A là điểm kết thúc khoảng thời gian trễ, tức là điểm trên trục hoành có hoành độ bằng T1. Khi đó T2 là khoảng cần thiết sau T1 để tiếp tuyến của h(t) tại đầu vào. Như vậy điều kiện áp dụng được phương pháp xấp xỉ mô hình bậc nhất có trễ của đối tượng là đối tượng đã phải ổn định, không có dao động và ít nhất hàm quá độ của nó phải có dạng chữ S. Hình 2.9 Xác định tham số cho mô hình xấp xỉ của đối tượng Sau khi đã xác định các tham số cho mô hình xấp xỉ của đối tượng, Ziegler-Nichols đã đề nghị sử dụng các tham số kp, TI, TD cho bộ điều khiển như sau: K là giá trị giới hạn h∞. - Kẻ đường tiếp tuyến của h(t) tại điểm uốn của nó. Khi đó T1sẽ là hoành độ giao điểm của tiếp tuyến với trục hoành và T2 là khoảng thời gian cần thiết để đường tiếp tuyến đi được từ giá trị 0 tới được giá trị K. Như vậy ta thấy điều kiện để áp dụng được phương pháp xấp xỉ mô hình bậc nhất hàm quá độ của nó phải có dạng chữ S. Sau khi đã có tham số cho mô hình xấp xỉ của đối tượng, ta chọn các thông số của bộ điều chỉnh theo bảng: Bảng 2.1: Bảng chọn thông số PID phương pháp Ziegler-Nichols thứ nhất. Bộ ĐK/ Tham số Kp TI Td P T2/(T1.K) ∞ 0 PI 0.9 T2/(T1.K) 10T1/3 0 PID 1,2 T2/(T1.K) 2T1 0,5 T1 Phương pháp Zeigle – Nichols 2 Phương pháp thứ hai này không sử dụng mô hình toán học của đối tượng. Phương pháp thực nghiệm thứ hai này chỉ áp dụng được cho những đối tượng có được chế độ biên giới ổn định khi hiệu chỉnh hằng số khuyếch đại trong hệ kín. Trước tiên, sử dụng bộ P lắp vào hệ kín (hoặc dùng bộ PID và chỉnh các thành phầnKIvà Kd về giá trị 0). Khởi động quá trình với hệ số khuếch đại Kp thấp, sau đó tăng dần Kp tới giá trị tới hạn Kgh để hệ kín ở chế độ giới hạn ổn định, tức là tín hiệu ra h(t) có dạng dao động điều hòa. Xác định chu kỳ tới hạn Tgh của dao động. Hình 2.10. Xác định hệ số khuếch đại tới hạn Thông số bộ điều chỉnh như sau: Bảng 2.2: Bảng chọn thông số PID phương pháp Ziegler-Nichols thứ hai. Bộ điều khiển (Thông số) Kp KI Td P 0.5Kgh ∞ 0 PI 0.45Kgh 0.93Tgh 0 PID 0.6Kgh 0.5Tgh 0.125Tgh 2.3 Bộ điều khiển PID cho động cơ một chiều Do động cơ DC có hàm truyền dạng quán tính bậc nhất có trễ nên ta sử dụng phương pháp hiệu chỉnh phương pháp Zeigle – Nichols 1. Bộ điều khiển PID có hàm truyền: GPID=Kp+KIs+KDs=KP1+1TIs+Tds Với các tham số KP,TI,Td chỉnh định được. Đối tượng là khâu trễ và khâu quán tính bậc nhất có hàm truyền: WĐTs= e-Ls1+Ts Hệ thống có sơ đồ như hình vẽ: WĐTs D WPIDs Từ công thức thực nghiêm Zeigle – Nichols: Bộ ĐK/ Tham số Kp TI Td P T2/(T1.K) ∞ 0 PI 0.9 T2/(T1.K) 10T1/3 0 PID 1,2 T2/(T1.K) 2T1 0,5 T1 (thay số cụ thể vào phần này) Chương 3: GIỚI THIỆU PHẦN MỀM VISUAL BASIC 6.0 3.1 Giới thiệu về Visual Basic 6.0 Visual Basic 6.0 (VB6) là một phiên bản của bộ công cụ lập trình Visual Basic (VB), cho phép người dùng tiếp cận nhanh cách thức lập trình trên môi trường Windows. Với VB6, chúng ta có thể : Khai thác thế mạnh của các điều khiển mở rộng. Làm việc với các điều khiển mới (ngày tháng với điều khiển MonthView và DataTimePicker, các thanh công cụ có thể di chuyển được CoolBar, sử dụng đồ họa với ImageCombo, thanh cuộn FlatScrollBar,…). Làm việc với các tính năng ngôn ngữ mới. Làm việc với cơ sở dữ liệu. Các bổ sung về lập trình hướng đối tượng. 3.2 Tổng quan lập trình Visual Basic 3.2.1 Môi trường lập trình a. Soạn thảo chương trình Trong Visual Basic IDE, cửa sổ mã lệnh (Code) cho phép soạn thảo chương trình. Cửa sổ này có một số chức năng nổi bật: Đánh dấu (Bookmarks): Chức năng này cho phép đánh dấu các dòng lệnh của chương trình trong cửa sổ mã lệnh để dễ dàng xem lại về sau này. Để bật tắt khả năng này, chọn Bookmarks từ menu Edit, hoặc chọn từ thanh công cụ Edit. Các phím tắt trong cửa sổ mã lệnh: Chức năng Phím tắt Xem cửa sổ Code F7 Xem cửa sổ Object Browser F2 Tìm kiếm CTRL+F Thay thế CTRL+H Tìm tiếp SHIFT+F4 Tìm ngược SHIFT+F3 Chuyển đến thủ tục kế tiếp CTRL+DOWN ARROW Chuyển đến thủ tục trước đó CTRL+UP ARROW Xem định nghĩa SHIFT+F2 Cuộn xuống một màn hình CTRL+PAGE DOWN Cuộn lên một màn hình CTRL+PAGE UP Nhảy về vị trí trước đó CTRL+SHIFT+F2 Trở về đầu của mô-đun CTRL+HOME Đến cuối mô-đun CTRL+END b. Các chức năng tự động: Tự động kiểm tra cú pháp (Auto Syntax Check). Nếu chức năng này không được bật thì khi ta viết một dòng mã có chứa lỗi, VB chỉ hiển thị dòng chương trình sai với màu đỏ nhưng không kèm theo chú thích gì và tất nhiên ta có thể viết tiếp các dòng lệnh khác. Còn khi chức năng này được bật, VB sẽ cho ta biết một số thông tin về lỗi và hiển thị con trỏ ngay dòng chương trình lỗi để chờ ta sửa. Yêu cầu khai báo biến (Require Variable Declaration) VB sẽ thông báo lỗi khi một biến được dùng mà không khai báo và sẽ chỉ ra vị trí của biến đó. Hình3.1: Cửa sổ Options Gợi nhớ mã lệnh (Code): Khả năng Auto List Members: Tự động hiển thị danh sách các thuộc tính và phương thức của 1 điều khiển hay một đối tượng khi ta gõ vào tên của chúng. Chọn thuộc tính hay phương thức cần thao tác và nhấn phím Tab hoặc Space để đưa nó vào chương trình. Hình 3.2 Cửa sổ Code với khả năng gợi nhớ Code 3.2.2 Các kiểu dữ liệu cơ sở trong Visual Basic Kiểu dữ liệu Mô tả Boolean Gồm 2 giá trị: TRUE & FALSE. Byte Các giá trị số nguyên từ 0 – 255 Integer Các giá trị số nguyên từ -32768 – 32767 Long Các giá trị số nguyên từ -2147483648 – 2147483647. Kiểu dữ liệu này thường được gọi là số nguyên dài. Single Các giá trị số thực từ -3.402823E+38 – 3.402823E+38. Kiểu dữ liệu này còn được gọi là độ chính xác đơn. Double Các giá trị số thực từ -1.79769313486232E+308 - 1.79769313486232E+308. Kiểu dữ liệu này được gọi là độ chính xác kép. Currency Dữ liệu tiền tệ chứa các giá trị số từ -922.337.203.685.477,5808 - 922.337.203.685.477,5807. String Chuỗi dữ liệu từ 0 đến 65.500 ký tự hay ký số, thậm chí là các giá trị đặc biệt như ^%@. Giá trị kiểu chuỗi được đặt giữa 2 dấu ngoặc kép (“”). Date Dữ liệu kiểu ngày tháng, giá trị được đặt giữa cặp dấu ##. Việc định dạng hiển thị tùy thuộc vào việc thiết lập trong Control Panel. Variant Chứa mọi giá trị của các kiểu dữ liệu khác, kể cả mảng. 3.2.3 Hằng số Hằng số (Constant) là giá trị dữ liệu không thay đổi. Cách khai báo hằng : [Public|Private] Const [As ] = Trong đó: tên hằng được đặt giống theo quy tắc đặt tên của điều khiển. 3.2.4 Biến Định nghĩa : Biến (Variable) là vùng lưu trữ được đặt tên để chứa dữ liệu tạm thời trong quá trình tính toán, so sánh và các công việc khác. Biến có 2 đăc điểm: Mỗi biến có một tên. Mỗi biến có thể chứa duy nhất một loại dữ liệu. Cách khai báo: `[Public|Private|Static|Dim] [ As ] Trong đó, tên biến: là một tên được đặt giống quy tắc đặt tên điều khiển. Nếu cần khai báo nhiều biến trên một dòng thì mỗi khai báo cách nhau dấu phẩy (,). Nếu khai báo biến không xác định kiểu dữ liệu thì biến đó có kiểu Variant. Khai báo ngầm: Đây là hình thức không cần phải khai báo một biến trước khi sử dụng. Cách dùng này có vẻ thuận tiện nhưng sẽ gây một số sai sót, chẳng hạn khi ta đánh nhầm tên biến, VB sẽ hiểu đó là một biến mới dẫn đến kết quả chương trình sai mà rất khó phát hiện. Khai báo tường minh: Để tránh rắc rối như đã nêu ở trên, ta nên quy định rằng VB sẽ báo lỗi khi gặp biến chưa được khai báo bằng dòng lệnh: Option Explicit trong phần Declaration (khai báo) của mô-đun. 3.2.5 Biểu thức Định nghĩa : Toán tử hay phép toán (Operator): là từ hay ký hiệu nhằm thực hiện phép tính và xử lý dữ liệu. Toán hạng: là giá trị dữ liệu (biến, hằng…). Biểu thức: là tập hợp các toán hạng và các toán tử kết hợp lại với nhau theo quy tắc nhất định để tính toán ra một giá trị nào đó. Các phép toán số học: Thao tác trên các giá trị có kiểu dữ liệu số. Phép toán Ý nghĩa Kiểu của đối số Kiểu của kết quả - Phép lấy số đối Kiểu số (Integer, Single…) Như kiểu đối số + Phép cộng hai số Kiểu số (Integer, Single…) Như kiểu đối số - Phép trừ hai số Kiểu số (Integer, Single…) Như kiểu đối số * Phép nhân hai số Kiểu số (Integer, Single…) Như kiểu đối số / Phép chia hai số Kiểu số (Integer, Single…) Single hay Double \ Phép chia lấy phần nguyên Integer, Long Integer, Long Mod Phép chia lấy phần dư Integer, Long Integer, Long ^ Tính lũy thừa Kiểu số (Integer, Single…) Như kiểu đối số Các phép toán quan hệ: Đây là các phép toán mà giá trị trả về của chúng là một giá trị kiểu Boolean (TRUE hay FALSE). Phép toán Ý nghĩa = So sánh bằng nhau So sánh khác nhau > So sánh lớn hơn < So sánh nhỏ hơn >= So sánh lớn hơn hoặc bằng <= So sánh nhỏ hơn hoặc bằng 3.2.6 Các câu lệnh a. Lệnh gán Cú pháp: = b. Lệnh rẽ nhánh If o Một dòng lệnh: If Then o Nhiều dòng lệnh: If Then Các dòng lệnh End If Lưu đồ cú pháp: Trong đó, : biểu thức mà kết quả trả về kiểu Boolean. Ý nghĩa câu lệnh: Các dòng lệnh hay dòng lệnh sẽ được thi hành nếu như điều kiện là đúng. Còn nếu như điều kiện là sai thì câu lệnh tiếp theo sau cấu trúc If ... Then được thi hành. o Dạng đầy đủ: If ... Then ... Else If Then [Khối lệnh 1] ElseIf Then [Khối lệnh 2]... [Else [Khối lệnh n]] End If VB sẽ kiểm tra các điều kiện, nếu điều kiện nào đúng thì khối lệnh tương ứng sẽ được thi hành. Ngược lại nếu không có điều kiện nào đúng thì khối lệnh sau từ khóa Else sẽ được thi hành. c. Lệnh lựa chọn Select Case Trong trường hợp có quá nhiều các điều kiện cần phải kiểm tra, nếu ta dùng cấu trúc rẽ nhánh If…Then thì đoạn lệnh không được trong sáng, khó kiểm tra, sửa đổi khi có sai sót. Ngược lại với cấu trúc Select…Case, biểu thức điều kiện sẽ được tính toán một lần vào đầu cấu trúc, sau đó VB sẽ so sánh kết quả với từng trường hợp (Case). Nếu bằng nó thi hành khối lệnh trong trường hợp (Case) đó. Select Case Case [Khối lệnh 1] Case [Khối lệnh 2] . . . [Case Else [Khối lệnh n]] End Select Mỗi danh sách kết quả biểu thức sẽ chứa một hoặc nhiều giá trị. Trong trường hợp có nhiều giá trị thì mỗi giá trị cách nhau bởi dấu phẩy (,). Nếu có nhiều Case cùng thỏa điều kiện thì khối lệnh của Case đầu tiên sẽ được thực hiện. Toán tử Is & To Toán tử Is: Được dùng để so sánh với một biểu thức nào đó. Toán tử To: Dùng để xác lập miền giá trị của . d. Cấu trúc lặp Các cấu trúc lặp cho phép thi hành một khối lệnh nào đó nhiều lần. Lặp không biết trước số lần lặp : Do ... Loop: Đây là cấu trúc lặp không xác định trước số lần lặp, trong đó, số lần lặp sẽ được quyết định bởi một biểu thức điều kiện. Biểu thức điều kiện phải có kết quả là True hoặc False. Cấu trúc này có 4 kiểu: Kiểu 1: Do While Lo op Kiểu 2: Do Loop While Kiểu 3: Do Until Loop Kiểu 4: Do Loop Until Lặp biết trước số lần lặp For ... Next Đây là cấu trúc biết trước số lần lặp, ta dùng biến đếm tăng dần hoặc giảm dần để xác định số lần lặp. For = To [Step ] [khối lệnh] Next Biến đếm, điểm đầu, điểm cuối, bước nhảy là những giá trị số (Integer, Single,…). Bước nhảy có thể là âm hoặc dương. Nếu bước nhảy là số âm thì điểm đầu phải lớn hơn điểm cuối, nếu không khối lệnh sẽ không được thi hành. Khi Step không được chỉ ra, VB sẽ dùng bước nhảy mặc định là một. 3.2.7 Chương trình con Trong Visual Basic, chương trình con có hai dạng là hàm (Function) và thủ tục (Sub). Hàm khác thủ tục ở chỗ hàm trả về cho lệnh gọi một giá trị thông qua tên của nó còn thủ tục thì không. Do vậy ta chỉ dùng hàm khi và chỉ khi thoả mãn đồng thời các yêu cầu sau đây: - Ta muốn nhận lại một kết quả (chỉ một mà thôi) khi gọi chương trình con. - Ta cần dùng tên chương trình con (có chứa kết quả) để viết trong các biểu thức. Nếu không thỏa mãn hai điều kiện ấy thì dừng thủ tục. a. Thủ tục Định nghĩa : Thủ tục là một chương trình con thực hiện một hay một số tác vụ nào đó. Thủ tục có thể có hay không có tham số. Cách khai báo thủ tục [Private | Public] [Static] Sub [([As ])] hay End Sub Trong đó: - : Đây là một tên được đặt giống quy tắc tên biến, hằng,… - [: ]: có thể có hay không? Nếu có nhiều tham số thì mỗi tham số phân cách nhau dấu phẩy. Nếu không xác định kiểu tham số thì tham số có kiểu Variant. Để gọi thủ tục để thực thi, ta có 2 cách: [] Call ([]) b. Cách khai báo hàm [Private | Public | Static] Function [([As ])] _ [As ] hay End Function Sau khi xây dựng chương trình, ta có giao diện điều khiển : Chương 4: TỔNG QUAN THIẾT KẾ 4.1 Thiết kế phần cứng Sơ đồ khối mạch phần cứng được mô tả như hình dưới: Khối điều khiển trung tâm (Atmega16) Khối hiển thị LCD 16x2 Máy tính (PC) Khối giao tiếp Mạch công suất (Mạch cầu H) Khối nguồn 5V Khối nguồn 12V Động cơ Encoder Hình 4.1 : Sơ đồ khối của mạch Khối điều khiển trung tâm được cấp nguồn 5V từ khối nguồn và kết nối với khối điều khiển công suất để điều khiển tốc độ và đảo chiều động cơ. Mạch công suất nhận tín hiệu điều khiển từ khối điều khiển trung tâm để điều khiển công suất cung cấp cho động cơ và thay đổi chiều quay. Khối Encoder đọc tốc độ động cơ và xuất ra các xung đếm, các xung này được sửa thành xung vuông và đưa vào chân ngắt của vi điều khiển ATmega16 cho phép Atmega16 giám sát được tốc độ và xác định chiều quay của động cơ. Khối hiển thị LCD 2 hàng 16 cột, để hiển thị vận tốc thực và vận tốc đặt của động cơ do vi điều khiển xử lý tín hiệu gửi về từ encoder. Khối giao tiếp UART giao tiếp giữa máy tính và vi điều khiển, để truyền thông số được cái đặt từ máy tính xuống vi điều khiển và truyền dữ liệu từ vi điều khiển lên máy tính. Sử dụng IC chuyển đổi điện áp MAX232. 4.1.1 Khối điều khiển trung tâm Hình 4.2: Sơ đồ khối điều khiển trung tâm Tổng quan về AVR và Atmega16 +Vi điều khiển AVR Vi điều khiển AVR (Atmel Norway Design) thuộc họ vi điều khiển Atmel, nó là họ vi điều khiển khá mới trên thị trường cũng như đối với người sử dụng. Đây là họ vi điều khiển được chế tạo theo kiến trúc RISC (Reduced Intruction Set Computer) có cấu trúc khá phức tạp. Ngoài các tính năng như các họ VĐK khác, nó còn tích hợp nhiều tính năng mới rất tiện lợi cho người thiết kế và lập trình. Sự ra đời của AVR bắt nguồn từ yêu cầu thực tế là hầu hết khi cần lập trình cho vi điều khiển, chúng ta thường dùng những ngôn ngữ bậc cao HLL (Hight Level Language) để lập trình ngay cả với loại chip xử lí 8 bit trong đó ngôn ngữ C là ngôn ngữ phổ biến nhất. Tuy nhiên khi biên dịch thì kích thước đoạn mã sẽ tăng nhiều so với dùng ngôn ngữ Assembly. Hãng Atmel nhận thấy rằng cần phải phát triển một cấu trúc đặc biệt cho ngôn ngữ C để giảm thiểu sự chênh lệch kích thước mã đã nói trên. Và kết quả là họ vi điều khiển AVR ra đời với việc làm giảm kích thước đoạn mã khi biên dịch và thêm vào đó là thực hiện lệnh đúng đơn chu kỳ máy với 32 thanh ghi tích lũy và đạt tốc độ nhanh hơn các họ vi điều khiển khác từ 4 đến 12 lần. Vì thế nghiên cứu AVR là một đề tài khá lý thú và giúp cho sinh viên biết thêm một họ vi điều khiển vào loại mạnh nhất hiện nay. + Phân loại AVR - AT90S8535: Không có lệnh nhân hoặc chia trên thanh ghi. - ATMEGA 8, 16, 32 (AVR loại 8 bit, 16 bit, 32 bit): Là loại AVR tốc độ cao, tích hợp sẵn ADC 10 bit. - AVR tích hợp sẵn LCD driver : Atmega169, 329. - AVR có tích hợp SC (power stage controller): AT90PWM thường dùng trong các ứng dụng điều khiển động cơ hay chiếu sáng nên còn gọi là lighting AVR. - Attiny11, 12, 15: AVR loại nhỏ. + Các tính năng của Atmega16 : - Hiệu xuất cao ( high performance ), là loại vi điều khiển AVR 8 bit công suất thấp - Cấu trúc lệnh đơn giản, thời gian thực thi lệnh như nhau (thật ra là Advanced RISC Architecture) + 130 lệnh thực thi trong vòng 1 chu kì chip. + 32 x 8 thanh ghi công dụng chung ( chắc là 32 thanh ghi công dụng chung 8 bit) + Đầy đủ các sử lí tĩnh + Hỗ trợ 16 MIPS khi hoạt động ở tần số 16 MHz + Tích hợp bộ nhân 2 thực hiện trong 2 chu kì chip. - Bộ nhớ chương trình và dữ liệu không bay hơi ( nonvolatile ). + 16k byte trong hệ thống flash khả trình có thể nạp và xóa 1,000 lần. + Tùy chọn khởi động phần mã với các bit nhìn độc lập trong hệ thống bằng cách vào chương trình khởi động chip. + 512 byte EEPROM có thể ghi và xóa 100,000 lần. + 1k byte ram nhớ tĩnh trong ( internal SRAM ). + Lập trình khóa cho phần mềm bảo mập. - Tính năng ngoại vi. + 2 bộ định thời/bộ đếm ( timers/counters ) 8 bit với các chế độ đếm riêng rẽ và kiểu so sánh. + 1 bộ định thời/bộ đếm ( timer/counter ) 16 bit với các chế độ đếm riêng rẽ, kiểu so sánh và kiểu bắt sự kiện. + Bộ đếm thời gian thực với máy giao động riêng rẽ. + 4 kênh băm xung PWM. + 8 kênh ADC 10 bit. + Byte định hướng 2 đường giao tiếp nối tiếp. + Giao tiếp USART nối tiếp khả trình. + Giao tiếp SPI nối tiếp chủ/tớ ( master/slave ). + Bộ định thời khả trình giám sát xung nhịp của chip 1 cách riêng rẽ. + Tích hợp bộ so sánh tín hiệu tương tự. - Giao tiếp JTAG. - Các tính năng đặt biệt của vi điều khiển. + Chế độ bật nguồn reset và phát hiện Brown-out khả trình. + Tích hợp mạch dao động RC bên trong. + Các ngắt trong và ngoài. + 6 chế độ nghỉ : rảnh rỗi,giảm nhiễu ADC, Tiết kiệm năng lượng, nguồn thấp, Standby và Extended Standby. - Vào/ra và các gói dữ liệu. + 32 chân vào ra khả trình. - 40-pin PDIP and 44-lead TQFP. - Điện áp sử dụng. + 2.7 – 5.5V dùng với atmega16L. + 4.5 – 5.5V dùng với atmega16. - Tốc độ xung nhịp dùng cho chip. + 0 – 8 MHz cho atmega16L. + 0 – 16 MHz cho atmega16 a. Hình ảnh thực tế và sơ đồ chân Atmega16: Hình 4.3 Hình ảnh thực tế của Atmega16 Hình 4.4 Sơ đồ chân của Atmega16 Hình 4.5 Sơ đồ cấu trúc của AVR ATmega16 +Atmega16 gồm có 40 chân: - Chân 1 đến 8 : Cổng nhập xuất dữ liệu song song B ( PORTB ) nó có thể đc sử dụng các chức năng đặc biệt thay vì nhập xuất dữ liệu. - Chân 9 : RESET để đưa chip về trạng thái ban đầu. - Chân 10 : VCC cấp nguồn nuôi cho vi điều khiển. - Chân 11,31 : GND 2 chân này đc nối với nhau và nối đất. - Chân 12,13 : 2 chân XTAL2 và XTAL1 dùng để đưa xung nhịp từ bên ngoài vào chip. - Chân 14 đến 21: Cổng nhập xuất dữ liệu song song D ( PORTD ) nó có thể được sử dụng các chức năng đặc biệt thay vì nhập xuất dữ liệu. - Chân 22 đến 29 : Cổng nhập xuất dữ liệu song song C ( PORTC ) nó có thể được sử dụng các chức năng đặc biệt thay vì nhập xuất dữ liệu. - Chân 30 : AVCC cấp điện áp so sánh cho bộ ADC. - Chân 32 : AREF điện áp so sánh tín hiệu vào ADC. - Chân 33 đến 40 : Cổng vào ra dữ liệu song song A ( PORTA ) ngoài ra nó còn được tích hợp bộ chuyển đổi tín hiệu tương tự sang tín hiệu số ADC ( analog to digital converter) b. Vào ra của vi điều khiển PORTA ( PA7 … PA0 ) : là các chân số 33 đến 40. Là cổng vào ra song song 8 bít khi không dùng ở chế độ ADC. Bên trong có sẵn các điện trở kéo, khi PORTA là output thì các điện trở kéo không hoạt động, khi PORTA là input thì các điện trở kéo được kích hoạt. PORTB ( PB7 ... PB0 ) : là các chân số 1 đến 8. Nó tương tự như PORTA khi sử dụng vào ra song song. Ngoài ra các chân của PORTB còn có các chức năng đặt biệt sẽ được nhắc đến sau. PORTC ( PC7 ... PC0 ) : là các chân 22 đến 30. Cũng giống PORTA và PORTB khi là cổng vào ra song song. Nếu giao tiếp JTAG được bật, các trở treo ở các chân PC5(TDI), PC3(TMS), PC2(TCK) sẽ hoạt động khi sự kiện reset sảy ra. Chức năng giao tiếp JTAG và 1 số chức năng đặc biệt khác sẽ được nghiên cứu sau. PORTD ( PD7 ... PD0 ) : là các chân 13 đến 21. Cũng là 1 cổng vào ra song song giống các PORT khác, ngoài ra nó còn có 1 số tính năng đặc biệt sẽ đc nghiên cứu sau. c. Mạch cấp nguồn nuôi cho vi điều khiển Hình 4.6 Sơ đồ nguyên lý mạch nguồn 5V Khối này là mạch điện dùng để ổn áp điện thế 5V, cấp nguồn ổn định cho vi điều khiển hoat động. Sử dụng IC ổn áp 7805 để giữ đầu ra ổn định trong khoảng 5V, đầu ra này chính là nguồn AVCC cung cấp cho mạch vi điều khiển hoạt động. Sử dụng IC 7805 chuyển điện áp 12V đầu vào thành điện áp 5V đầu ra, cho dòng điện ra định danh 1A nhưng thực tế thì dòng ra khoảng 500mA. Nên để tạo ra nguồn cung cấp 3A ta sử dụng mạch nâng dòng dùng BJT TIP42. Điện trở R5=10Ω để phân cực cho BJT dẫn ở chế độ khuếch đại. Tụ CAP-P7 dung lượng lớn lọc điện áp gợn tránh ảnh hưởng của tín hiệu cao tầng chạy vào IC nguồn và tụ CAP –P6 lọc xung điện áp nhọn về. Điện trở R6 hạn dòng cho Led1LED báo. Điện trở R5 làm nhiệm vụ giới hạn dòng cho 7805 ở giá trị Ik nào đó. Khi I tải Ik thì có thể coi: tr

Các file đính kèm theo tài liệu này:

  • docxBộ điều khiển số PID điều khiển DC motor.docx
Tài liệu liên quan