bộ PID số thực hiện trên dòng vi điều khiển (VDK) 32bit ARM cortex m3 mới nhất của hãng NXP LPC 1754
Trang 1Lời mở ñầu
Điều khiển ñộng cơ DC (ñiều khiển tốc ñộ hoặc ñiều khiển vị trí) là kiến thức cơ
bản nhất mà bất kì kỹ sư nào ngành ñiều khiển tự ñộng cũng cần phải biết và phải làm
ñược
Có nhiều phương pháp ñiều khiển từ kinh ñiển ñến hiện ñại : ON-OFF, PID
tương tự hoặc analog,ñiều khiển mờ,thích nghi,bền vững
Ngày này người ta ñã kết hợp nhiều bộ ñiều khiển với nhau ñể ñiều khiển một ñối tượng ñể nâng cao chất lượng hệ thống theo sự thay ñổi của môi trường và quan trọng hơn là tăng tính “thông minh” cho thiết bị:PID thích nghi,PID mờ,các hệ lai…
Việc lựa chọn phương pháp nào và chất lượng ñiều khiển ñến ñâu phụ thuộc vào khả năng của từng sinh viên cũng như khả năng hỗ trợ của phần cứng
Trong ñồ án môn học 1 em lựa chọn phương pháp ñiều khiển cơ bản nhất,kinh
ñiển nhất : bộ PID số thực hiện trên dòng vi ñiều khiển (VDK)32bit ARM cortex M3
Sinh viên thực hiện
Lê Văn Mùi
Trang 2Phần 5: KẾT QUẢ THỰC HIỆN ,ĐÁNH GIÁ,HƯỚNG PHÁT TRIỂN
Phần 6: TÀI LIỆU THAM KHẢO
Trang 3MỤC ĐÍCH VÀ CÁC PHẦN SỬ DỤNG TRONG ĐỒ ÁN
I Mục ñích Đồ án
• Tìm hiểu dòng ARM lpc cortex M3 của NXP
• Dùng bộ PID số ñiều khiển tốc ñộ ñộng cơ
• Trình biên dịch Keil C
• Flash Magic
• hyperterminal
Trang 4ĐỒ ÁN MÔN HỌC 1 GVHD: HU Ỳ NH V Ă N KI Ể M
Phần 2
GIỚI THIỆU VỀ ARM CORTEX M3 LPC 1754
I Tổng quan về ARM cortex M3:
• Bộ vi xử lý Cortex-M3 là một bộ vi xử lý 32-bit
• Có 3 cấu hình chính:
• cấu hình A(application) :các úng dụng chạy hệ ñiều hành
• cấu hình R(real time) : các ứng dụng thời gian thực
• cấu hình M(microcontroller):các ứng dụng ñiều khiển
• Bộ vi xử lý Cortex-M3 dựa trên kiến trúc ARMv7-M,tích hợp lõi xử lý trung tâm là CM3Core, với các thiết bị ngoại vi hệ thống tiên tiến có khả năng kiểm soát ngắt, bảo
vệ bộ nhớ, gỡ lỗi và theo vết hệ thống
• Lõi trung tâm Cortex-M3 dựa trên kiến trúc Harvard
• 13 thanh ghi ña dụng, hai con trỏ ngăn xếp, một thanh ghi liên kết, một bộ ñếm chương trình và một số thanh ghi ñặc biệt trong ñó có một thanh ghi trạng thái chương trình
Trang 5
Bảng 1 So sánh ARM7TDMI-S và Cortex-M3 (100MHz - TSMC 0.18G) (*: Không bao gồm các thiết bị ngoại vi (MPU & ETM) hoặc các thành phần tích hợp khác)
Hình 1 So sánh hiệu suất giữa ARM7TDMI-S (ARM) và Cortex-M3 (Thumb-2)
Hình 2 So sánh kích thước mã lệnh giữa ARM7TDMI-S (ARM) và Cortex-M3 (Thumb-2)
Trang 6ĐỒ ÁN MÔN HỌC 1 GVHD: HU Ỳ NH V Ă N KI Ể M
• Thuộc dòng ARM -32bit cortex M3
• CPU clock up to 100MHz
• 128kB on-chip Flash ROM with enhanced Flash Memory Accelerator
• In-System Programming (ISP) and In-Application Programming (IAP),
• 32kB RAM,
• Nested Vectored Interrupt Controller
• 8 channel General purpose DMA controller
• USB 2.0 full-speed Device controller and Host/OTG controller with DMA,
• CAN 2.0B with 1 channel,
• 4 UARTs, 1 with full Modem interface
• 2 I2C serial interfaces,3 SPI/SSP serial interfaces,
• 54 General purpose I/O pins,
• 12-bit ADC with 6 channels,
• 10-bit DAC,
• Four 32-bit Timers with capture/compare,
• Standard PWM Timer block,
• Motor control PWM for three-phase Motor control,
• Quadrature Encoder,
• Watchdog Timer,
• Real Time Clock with optional Battery backup,
• System Tick Timer,
• Repetitive Interrupt Timer,
• Brown-out detect circuit,
• Power-On Reset,
• Power Management Unit,
• Wakeup Interrupt Controller,
• Crystal oscillator, 4MHz internal RC oscillator, PLL,
• JTAG and Serial Wire Debug/Trace Port with ETM
Các ngoại vi sẽ sử dụng trong ñồ án:
2 QEI :Đọc xung từ encoder
3 PWM : Điều rộng xung thay ñổi tốc ñộ ñộng cơ
4 UART : Nạp chương trình và giao tiếp UART với PC
5 ADC : Đo dòng ñiện qua ñộng cơ ñể xử lý quá tải
Trang 7III Giới thiệu 2 module chính sử dụng trong Đồ án
1. Quadrature Encoder
• Đây là moldule hỗ trợ giao tiêp encoder khá mạnh mẽ của dòng LPC17xx
• Có khả năng xác ñịnh chính xác vị trí ñộng cơ
• Đếm lên hoặc ñếm xuống tuy thuôc vào hướng
• Thanh ghi ñếm xung 32 bit
• Tích hợp timer ứng dụng thời gian lấy mẫu
• Có bộ nhân 2 hoặc nhân 4 ñể tang ñộ phân giải khi ñọc xung
• Các thanh ghi so sánh tốc ñọ và vị trí và có khả có ngắt cho từng bộ so sánh
RPM :tốc ñộ (rpm) PCLK : xung clock ngoại vi dùng cho QEI QEICAP:giá trị thanh ghi velocity counter cuối cùng trước khi xãy ra ngắt :ñược lưu vào velocity capture khi có ngắt QEILOAD :thời gian lấy mẫu
PPR :số xung/vong của encoder EDGES: chế ñộ nhân 2 hoặc 4 :mặc ñịnh nhân 2
Trang 8ĐỒ ÁN MÔN HỌC 1 GVHD: HU Ỳ NH V Ă N KI Ể M
• Chế ñộ 2 kênh và 1 kênh
• 7 thanh ghi match cho ra 3 ngõ ra chế ñộ 2 kênh và 6 ngõ ra chế ñộ 1 kênh
• 32 bit timer ,counter ,capture
• 32bit prescaler
Hoạt ñộng:
MR0 : chứa giá trị tính chu kì PWM
MRn :chứa các giá trinh xác ñịnh duty circle cho kệnh n (chế ñộ 1 kênh)
MR(n-1) và MRn : chứa các giá trinh xác ñịnh duty circle cho kệnh n (chế ñộ 2 kênh)
Trang 9IVGiới thiệu phần mềm hỗ trợ
1.Keil C ARM và bộ thư viện chuẩn LPC17xx CMSIS:
Keil C ARM uvision 4:
• Keil C là một phần mêm rất mạnh hỗ trợ lập trinh cho rất nhiều dòng vi ñiều khiển của nhiều hang khác nhau trên môi trường ngôn ngữ lập trình C
• keil hỗ trợ rất mạch các dòng VDK của NXP (8951,ARM) với khả năng debug ở dạng simulator gần giống với kit thực
• Đặc biệt Keil C hỗ trợ debug qua JTAG (công cụ gỡ rối ,sữa lỗi onchip)
Bộ thư viện chuẩn LPC17xx CMSIS
• Được xem là bộ thư viện ñầy ñủ nhất từ trước ñến nay của NXP hổ trợ ARM M3,
• Giúp người dùng tiếp cận nhanh nhất với ARM M3
• Trong chương trinh chính người dùng chỉ cần gọi những hàm có sẵn
• Thư viện hỗ trợ hầu hết các ngoại vi có trên chip
Một vài lưu ý khi sử dụng:
1 Không nhất thiết add toàn bộ Drivers,chỉ cần load driver sử dụng ñến
2 Tùy vào project mà chỉnh sử file lpc17xx_libcfg.h ñể khai báo các ngoại vi ñược sử dụng trong project
Trang 10• ic ổn áp LM7824,LM7812,LM7805
• transistor kéo dòng PNP B688 (chịu dòng tối da 7A-datasheet)
• Cầu chỉnh lưu 10A
II.Khối vi ñiều khiển:
Mô tả: Đế cắm hỗ trợ xuất port cho main LPC1754
Trang 11Cầu H dùng FET IRL540
Mô tả:
• Ngõ vào : + nguồn 3.3V,24V,12V,5V
+ 2 kênh ñiều rộng xung
• Ngõ ra: + 24 V thây ñổi theo PWM Linh kiện:
• IC 6N137 :cách ly phần ñiều khiển và phần công suất
• IC IR2184 :IC lái kích FET cho 2 kênh ra ñảo và không ñảo
• FET IRL540 :khóa ñiện tử
Ưu ñiểm:
• Có thể ñổi chiều quay
• Chịu dòng cao tuy tùy thuộc vào FET
• Số kênh PWM :2
Nguyên tắc hoạt ñộng:
• 2 kênh PWM hoạt ñộng ñối nghịch (không ñồng thời)
• 2 kênh nối vào PWM0,PWM1 của mainboard
• 2 kênh mức 0 :dừng ñộng cơ
• Một kênh mức 0 , kênh còn lại mức 1:ñộng cơ quay
• Đổi chiều bằng cách thay ñôi kênh PWM (bằng phần mềm)
VI.Khối giao tiếp:
Trang 12ĐỒ ÁN MÔN HỌC 1 GVHD: HU Ỳ NH V Ă N KI Ể M
V.khối hiển thị:
Mô tả:
• Ngõ vào: +Nguồn 5V hoăc 3.3V
+4pins VCC cho kích BJT ,4pins data
• Ngõ ra: 4 led 7 ñoạn Linh kiện:
• IC 74LS47 : giải mã BCD 7 ñoạn
• 4 BJT A1015 :nâng dòng
Mô tả:
Trang 13Có 2 loai chính: 1 Incremental Type (encoder ngõ ra dạng xung)
2.Absolute Type (encoder tuyệt ñối-ngõ ra có thể lài Binary, BCD or Gray Code)
Sử dụng:
• Xác ñịnh tốc ñộ bằng cách ñếm số xung trong 1 phút tốc ñộ (rpm)
• Xác ñinh chiều quay :
Hình 2: Dạng xung ra của encoder và chiều quay tương ứng
Trang 14ĐỒ ÁN MÔN HỌC 1 GVHD: HU Ỳ NH V Ă N KI Ể M
Phần 4:
PHẦN MỀM
I.Giới thiệu bộ ñiều khiển PID số:
-Bộ ñiều khiển PID so sánh giá trị trả về và giá trị ñặt ở ñầu vào tạo ra tính hiệu e(error,sai khác),tín hiệu e ñc ñưa qua bộ ñiều khiển PID ,bộ ñiều khiễn sẽ tính toán ñể cho ra tín hiệu ñiều khiển u sao cho tín hiệu ñầu ra bằng với tín hiệu ñặt.ñây là một quá trình lặp lại liên tục cho tới khi xác lập
-Một cách ñơn giản,bộ ñiều khiển ñọc giá trị ñầu ra bằng một sensor,sau ñó lấy giá trị ñặt ở ñầu vào trừ ñi giá trị ñưa về tạo ra một giá trị e(error),giá trị này ñc ñưa qua 3 bộ phận xử lý:
-Khâu P(proportional),ñể tạo ra giá trị hiện tại
-Khâu D(the derivate term),khâu ñạo hàm
-Khâu I(integral term),khâu tích phân
-Khâu tích phân cung cấp thêm một tổng của các e(lỗi )cho bộ ñầu vào của bộ ñiều khiển ,tổng này sẽ
ñc tính cho tới khi giá trị của hệ thống ñiều khiển bằng với giá trị ñặt.kết quả của việc
Này là không có sai số xác lập của tín hiệu ñặt và tín hiệu ñầu ra
-Nhược ñiểm của khâu I là ñáp ứng rất chậm,người ta thường kết hợp khâu I với P.Cụ thể cho trên sơ
ñồ bên
c)Khâu D:
-Khâu D cung cấp cho bộ ñiều khiển giá trị sai lệch giữa lỗi hiên thời và lỗi quá khứ
-Khâu D có tác dụng làm ñáp ứng của hệ thống nhanh hơn,ngoài ra nó còn là một bộ lọc thông cao ñối với tín hiệu ñầu vào(error)
-Giá trị quá lớn của khâu D không có thực trong thực tế(phần cứng không ñáp ứng nổi)
-Thông thường khâu D thường kết hợp với P(PD),hoặc tạo thành PID
Tổng hơp các công thức toán học của các khâu PID:
Trang 15II.Giải thuật PID ñiều khiển tốc ñộ ñộng cơ
Trang 16}
//********************END OF PID***************************************
Trang 17KẾT QUẢ THỰC HIỆN ,ĐÁNH GIÁ,HƯỚNG PHÁT TRIỂN
I.Kết quả thực hiện:
Trang 18ĐỒ ÁN MÔN HỌC 1 GVHD: HU Ỳ NH V Ă N KI Ể M
Kết quả :
Hình 1
Trang 193 Nếu tăng Kp quá lớn thì tốc ñộ ñộng cơ không ổn ñịnh (ñộng cơ bị rung)
4 Thử hãm trục ñộng cơ ñang quay ta thấy ñộng cơ tạo moment rất lớn so với khi cho chạy vòng hở
5 Sau khi thả trục ñộng cơ ñộng cơ sẽ có 1 khoảng thời gian ñể về lại giá trị xác lập 2000rmp
Quá trình này sẽ có vọt lố ñáng kể
6 Giảm giá trị của Ki thì sai số xác lập lớn (không ñạt ñến 2000rpm)
7 Giá trị kd ít ảnh hưởng ñến tôc ñộ ñộng cơ ,có thể cho bằng 0 (vì ở ñây chưa ñánh giá ñược thời gian quá ñộ
Kết luận:
Bộ PID có chất lượng ñiêu khiển tốt
Trang 20ĐỒ ÁN MÔN HỌC 1 GVHD: HU Ỳ NH V Ă N KI Ể M
III.Hạn chế:
•Chưa vẽ ñược ñáp ứng nên chưa thể nhận xét thời gian xác lập
•Động cơ chưa gắn tải nên không xác ñịnh khả năng ảnh hưởng của tải ñối với bộ ñiều khiển
PID
•Đọc ADC gây nhiễu cho ñọc xung do chưa thết kế mạch ñệm
Ban ñầu do chưa tính hết nhiễu từ mạch công suất lên mach ñiều khiển nên em ñã nối GND chung cho toan hệ thống ñể ñọc ADC Nhưng việc này làm cho hệ thống không ổn ñịnh do encoder lúc này ñọc về không còn chính xác nữa-không thể kiểm soát dòng ñược
Hướng giải quyết :
Sẽ sử dụng chân GND của module ADC trên VDK ñưa vào GND mạch công suất ñể ñọc ADC
Điều này sẽ không ảnh hưởng ñến GND của VDK
IV.Những kinh nghệm cho bản thân:
• Lần ñầu tiên làm quen với 1 dòng VDK 32 bit mạnh nên không tránh khỏi những khó
khăn,nhưng với sự giúp ñỡ tận tình của thầy hướng dẫn và sự cố gắng của bản thân ,em ñã dần dần
biết cách sử dụng nó Qua ñó em rút ra ñược nhiêu kinh nghiệm về tìm hiểu 1 dòng VDK mới
• Kỹ thuật làm mạch bằng linh kiện dán
• Hiểu biết thêm về nhiễu và tránh nhiễu
• Bộ ñiều khiển PID và khả năng ứng dụng của nó
V.Hướng phát triển:
• ARM cortex M3 là dòng VDK mạnh nên tương lai sẽ ñược ứng dụng rộng rãi trong ñiều khiển cũng như các hệ thống có hệ ñiều hành.Những khả năng giao tiếp mạnh như USB,CAN… cũng là những hướng mà em ñang quan tâm nghiên cứu
Em hi vọng mình có thể làm chủ ñược dòng VDK này trong thời gian tới
• Giao tiếp máy tính cũng như dùng VB,MALAB ,C# ,,ñể gửi dữ liệu từ VDK lên PC và vẽ ñáp ứng ,kiểm tra kết quả là vấn ñề mà em chưa hoàn thành trong ñồ án này
• PID và chất lượng ñiều khiển tốt có thể áp dụng trong ñiều khiển tay máyñó cũng là ñịnh hướng
của thầy cho Đồ án môn học 2 và luận văn sắp tới
Trang 21Phần 6:
TÀI LIỆU THAM KHẢO
1 datasheet LPC17xx (NXP)
2 Mechatronic Servo System Control - M Nakamura S Goto and N Kyura
3 EMBEDDED ROBOTICS- Mobile Robot Design and Applications with Embedded Systems.2008.3rdEd
4 bô thư viện lpc17xx.cmsis.driver.library (NXP)
5 tài liệu Thí nghiệm lý thuyết ñiều khiển tự ñộng 1
6 Một số tại liệu của NXP tại http://www.nxp.com/lpczone/
7 Website http://www.arm.vn/
8 .Đồ án môn học 1 của SV Phạm Ngọc Anh Tùng
9 IR2184 datasheet