( ) P ( )
u t K e t
Tác động của thành phần tích phân đơn giản là tín hiệu điều khiển tỉ lệ tuyến tính với sai lệch điều khiển. Ban đầu, khi sai lệch lớn thì tín hiệu điều khiển lớn. Sai lệch giảm thì tín hiệu điều khiển giảm dần. Khi sai lệch e(t) = 0 thì u(t) = 0. Một vấn đề sai lệch đối dấu thì tín hiểu điều khiển cũng đổi dấu. [6]
Thành phần P có ưu điểm là tác động nhanh và đơn giản. Hệ số tỉ lệ Kp càng lớn thì tốc độ đáp ứng càng nhanh, do đó thành phần P có vai trò lớn trong gian đoạn đầu của của quá trình quá độ. [6]
Tuy nhiên, khi hệ số tỉ lệ Kp càng lớn thì sự thay đổi của tín hiệu điều khiển càng mạnh dẫn đến dao động lớn, đồng thời làm hệ nhạy cảm hơn với nhiễu. Hơn nữa, đối với đối tượng không có đặc tính tích phân thì sử dụng bộ P vẫn tồn tại sai lệch tĩnh. [6] 2.2.2. Thành phần tích phân (I) 0 ( ) ( ) t I u t K e d (2.3)
Với thành phần tích phân, khi tồn tại một sai lệch điều khiển dương, luôn làm tăng tín hiệu điều khiển, và khi sai lệch là âm thì luôn làm giảm tín hiệu điều khiển, bất kể sai lệch đó là nhỏ hay lớn. Do đó, ở trạng thái xác lập, sai lệch bị triệt tiêu e(t) =0. Đây cũng là ưu điểm của thành phẩn tích phân. [6]
Nhược điểm của thành phần tích phân là do phải mất một khoảng thời gian để e(t) về 0 nên đặc tính tác động của bộ điều khiển sẽ chậm hơn. Ngoài ra, thành phần tích phân đôi khi con làm xấu đi đặc tính tác động học của hệ thống, thậm chí có thể làm mất ổn định. [6]
Người ta thương sử dụng bộ PI hoặc PID thay vì bộ I đờn thuẩn vửa để cải thiện tốc độ đáp ứng, vừa đảm bảo yêu cầu động học của hệ thống.
16 2.2.3. Thành phần vi phân (D) ( ) ( ) de t u t dt (2.4)
Mục đích của thành phần vi phân là cải thiện sự ổn định của hệ kín. Do động học của quá trình, nên sẽ tồn tại một khoảng thời gian trể làm bộ điều khiển chậm so với sự thay đổi của sai lệch e(t) và đầu ta y(t) của quá trình. Thành phần vi phân đóng via trò dự đoán đầu ra của quá trình và đưa ra phản ứng thích hợp dựa trên chiều hướng và tốc độ thay dổi của sai lệch e(t), làm tăng tốc độ đáp ứng của hệ. [6]
Một ưu điểm nữa là thành phần vi phân giúp ổn định một số quá trình mà bình thương không ổn định được với các bộ P hay PI. [6]
Nhược điểm của thành phần vi phân là rất nhạy cảm với nhiễu đó hay các giá trị đặt do tính đáp ứng nhanh nêu ở trên. [6]
2.2.4. Bộ điều khiển PID số
Trong thực tế công nghiệp, các bộ điềuh kiển PID có thể được cấu thành từ các thành phần mạch tương tự hoặc các cơ cấu chấp hành. Tuy nhiên với yêu cầu cao về độ chính xác với sự phát triển của các ứng dụng nhúng hay trên nền vi xử lý, thì điều khiển số cũng là một lĩnh vực quan trọng. Các bộ điều khiển được số hóa để có thể thực thi với tốc độ cao và chính xác hơn. Đồng thời việc xây dựng các bộ điều khiển trên nền máy tính hay vi điều khiển cũng đơn gian hơn nhiều. [6]
Dưới đây là trình bày về việc xấp xỉ bộ PID trên miền thời gian sang dạng PID số. Việc chọn lựa tham số cho bộ PID số cũng tương như như trên miền thời gian. Ngoài ra ta cần quan tâm đến một tham số quan trọng là chu kì lấy mẫu của vi điều khiển. [6]
Ta có công thức: 0 1 ( ) ( ) ( ) ( ) ( ) t p D I de t u t K e t e d T T d t
17 Ta sử dụng các công thức xấp xỉ tích phân lùi (backward integral approximation) và sử dụng vi phân lùi (backward diffenrence apporixumation) với chu kì lấy mẫu T. [6]
1 0 ( ) t n k e d Te kT de t e kT e kT T dt T Khi đó công thức trở thành 0 1 ( ) n P D k I e kT e kT T T u kT u K e kT e kT T T T Viết gọn lại thành: , 1 ( 1) , , , k P k i k i k d k k p k i k d k u K e K e u K e e u u u Trong đó: up k, K ep k; ui k, K ei k ui k, 1; ud k, KD(ekek1)
2.3. Giới thiệu về kit STM32F4 Discovery 2.3.1. Giới thiệu chung 2.3.1. Giới thiệu chung
STM32F4 Discovery là board vi điều khiển dành cho người mới học hoặc dành cho lập trình viên chuyên nghiệp trong lĩnh vực điều khiển tự động hóa. STM32F4 giúp khám phá STM32F407/417 dể phát triển các ứng dụng một cách dễ dàng. Nó bao gồm tất cả mọi thứ để người mới học bắt đầu một cách nhanh chóng như : một công cụ debug ST-LINK/V2, hai ST MEMS gia tốc kỹ thuật số và micro kỹ thuật số, một bộ DAC âm thanh co tích hợp trình điều khiển loa lớp D, đèn LED và các nút bấm và một cổng kết nối USB OTG. Board được tích hợp chip ARM Cortex-M4 cùng với bộ tính toán số thực(FPU), hoạt động với tần số rất cao 168 MHz, tỷ suất DMIPS/MHZ cao 1.25 giúp cho hệ thống có thể đạt được hiệu năng 210 DMIPS, board rất thích hợp cho các ứng dụng với yêu cầu tính toán xử lý nhanh, ví dụ như DSP, điều khiển robot… Với STM32F4 Discovery, chúng ta sẽ không cần phải lo lắng và không cần phải bỏ tiền ra để mua mạch nạp đắt tiền như các loại MCU thông thường. Điểm nổi bật nhất của board là có nhiều tính năng trong khi giá thành
18 rất rẻ. Đó cũng là lý do mà nhóm thực hiện đề tài lựa chọn kit này để sử dụng. [5]
Hình2.2: Hình ảnh thực tế Kit STM32F4 Discovery.
2.3.2. Tính năng
Kit STM32F4 Discovery có các tính năng như sau: [5]
- Vi điều khiển có bộ nhớ Flash 1 MB, bộ nhớ RAM là 192 KB trong gói LQFP100
- Có thể lựa chọn để sử dụng bộ ST-LINK/V2 (kết nối SWD để lập trình và gỡ lỗi).
- Điện cung cấp cho board : có thể sử dụng thông qua cổng USB hoặc cấp điện áp 5V cho board.
- Nguồn cung cấp cho ứng dụng bên ngoài: 3V và 5V
- Có LIS302DL, cảm biến chuyển động ST MEMS, 3 trục đo gia tốc đầu ra kỹ thuật số.
19 - CS43L22, âm thanh với bộ chuyển đổi DAC có tích hợp trình điều khiển loa lớp D.
Tám đèn LED :
+ LD1 (màu đỏ/màu xanh lá cây) để giao tiếp USB + LD2 (màu đỏ) báo điện áp 3.3V
+ Bốn LED báo sử dụng : LD3 (màu cam, PD13), LD4 (màu xanh lá cây, PD12), LD5 (màu đỏ, PD14) và LD 6 (màu xanh dương, PD15).
+ 2 USB OTG LED: LD7( màu xanh lá) VBus và LD8 (màu đỏ) quá dòng. - Hai nút nhấn (user và reset hệ thống).
- OTG USB với bộ kết nối micro-AB.
2.3.3. Dãy công cụ phát triển:
- IAR EWARW (IAR Embedded Workbench) - Keil MDK-ARM
- GCC dựa trên IDE (ARM @ Atollic@ True STUDIO@,...)
2.3.4. Giới thiệu về dòng vi điều khiển STM32
- Sự tinh vi
Thoạt nhìn thì các ngoại vi của STM32 cũng giống như những vi điều khiển khác, như hai bộ chuyển đổi ADC, timer, I2C, SPI, CAN, USB và RTC. Tuy nhiên mỗi ngoại vi trên đều có rất nhiều đặc điểm thú vị. Ví dụ như bộ ADC 12-bit có tích hợp một cảm biến nhiệt độ để tự động hiệu chỉnh khi nhiệt độ thay đổi và hỗ trợ nhiều chế độ chuyển đổi. Mỗi bộ định thời có 4 khối capture compare (dùng để bắt sự kiện với tính năng input capture và tạo dạng sóng ở ngõ ra với output compare), mỗi khối định thời có thể liên kết với các khối định thời khác để tạo ra một mảng các định thời tinh vi hơn. Một bộ định thời cao cấp chuyên hỗ trợ điều khiển động cơ, với 6 đầu ra PWM với dead time (khoảng thời gian được chèn vào giữa hai đầu tín hiệu xuất PWM bù nhau trong điều khiển mạch cầu H) lập trình được và một đường break input (khi phát hiện điều kiện dừng khẩn cấp) sẽ buộc tín hiệu PWM sang một trạng thái an toàn đã
20
được cài sẵn. Ngoại vi nối tiếp SPI có một khối kiểm tổng (CRC) bằng phần cứng cho 8 và 16 word hỗ trợ tích cực cho giao tiếp thẻ nhớ SD hoặc MMC. [5] STM32 có hỗ trợ thêm tối đa 12 kênh DMA (Direct Memory Access). Mỗi kênh có thể được dùng để truyền dữ liệu đến các thanh ghi ngoại vi hoặc từ các thanh ghi ngoại vi đi với kích thước từ (word) dữ liệu truyền đi có thể là 8/16 hoặc 32-bit. Mỗi ngoại vi có thể có một bộ điều khiển DMA (DMA controller) đi kèm dùng để gửi hoặc đòi hỏi dữ liệu như yêu cầu. Một bộ phân xử bus nội (bus arbiter) và ma trận bus (bus matrix) tối thiểu hoá sự tranh chấp bus giữa truy cập dữ liệu thông qua CPU (CPU data access) và các kênh DMA. Điều đó cho phép các đơn vị DMA hoạt động linh hoạt, dễ dùng và tự động điều khiển các luồng dữ liệu bên trong vi điều khiển. [5]
STM32 là một vi điều khiển tiêu thụ năng lượng thấp và đạt hiệu suất cao. Nó có thể hoạt động ở điện áp 2V, chạy ở tần số 72MHz và dòng tiêu thụ chỉ có 36mA với tất cả các khối bên trong vi điều khiển đều được hoạt động. Kết hợp với các chế độ tiết kiệm năng lượng của Cortex, STM32 chỉ tiêu thụ 2μA khi ở chế độ Standby. Một bộ dao động nội RC 8MHz cho phép chip nhanh chóng thoát khỏi chế độ tiết kiệm năng lượng trong khi bộ dao động ngoài đang khởi động. Khả năng nhanh đi vào và thoát khỏi các chế độ tiết kiệm năng lượng làm giảm nhiều sự tiêu thụ năng lượng tổng thể. [5]
- Sự an toàn
Ngày nay các ứng dụng hiện đại thường phải hoạt động trong môi trường khắt khe, đòi hỏi tính an toàn cao, cũng như đòi hỏi sức mạnh xử lý và càng nhiều thiết bị ngoại vi tinh vi. Để đáp ứng các yêu cầu khắt khe đó, STM32 cung cấp một số tính năng phần cứng hỗ trợ các ứng dụng một cách tốt nhất. Chúng bao gồm một bộ phát hiện điện áp thấp, một hệ thống bảo vệ xung Clock và hai bộ Watchdogs. Bộ đầu tiên là một Watchdog cửa sổ (windowed watchdog). Watchdog này phải được làm tươi trong một khung thời gian xác định. Nếu nhấn nó quá sớm, hoặc quá muộn, thì Watchdog sẽ kích hoạt. Bộ thứ hai là một Watchdog độc lập (independent watchdog), có bộ dao động bên ngoài tách biệt với xung nhịp hệ thống chính. Hệ thống bảo vệ xung nhịp có thể
21
phát hiện lỗi của bộ dao động chính bên ngoài (thường là thạch anh) và tự động chuyển sang dùng bộ dao động nội RC 8MHz. [5]
- Tính bảo mật
Một trong những yêu cầu khắt khe khác của thiết kế hiện đại là nhu cầu bảo mật mã chương trình để ngăn chặn sao chép trái phép phần mềm. Bộ nhớ Flash của STM32 có thể được khóa để chống truy cập đọc Flash thông qua cổng Debug. Khi tính năng bảo vệ đọc được kích hoạt, bộ nhớ Flash cũng được bảo vệ chống ghi để ngăn chặn mã không tin cậy được chèn vào bảng vector ngắt. Hơn nữa bảo vệ ghi có thể được cho phép trong phần còn lại của bộ nhớ Flash. STM32 cũng có một đồng hồ thời gian thực và một khu vực nhỏ dữ liệu trên SRAM được nuôi nhờ nguồn pin. Khu vực này có một đầu vào chống giả mạo (anti-tamper input), có thể kích hoạt một sự kiện ngắt khi có sự thay đổi trạng thái ở đầu vào này. Ngoài ra một sự kiện chống giả mạo sẽ tự động xóa dữ liệu được lưu trữ trên SRAM được nuôi bằng nguồn pin. [5]
- Phát triển phần mềm
Các công cụ phát triển cho ARM hiện có đã được hỗ trợ tập lệnh Thumb-2 và dòng Cortex. Ngoài ra ST cũng cung cấp một thư viện điều khiển thiết bị ngoại vi, một bộ thư viện phát triển USB như là một thư viện ANSI C và mã nguồn đó là tương thích với các thư viện trước đó được công bố cho vi điều khiển STR7 và STR9. Có rất nhiều RTOS mã nguồn mở và thương mại và middleware (TCP/IP, hệ thống tập tin, v.v.) hỗ trợ cho họ Cortex. Truy cập vào hệ thống CoreSight thông qua cổng truy cập Debug (Debug Access Port), cổng này hỗ trợ kết nối chuẩn JTAG hoặc giao diện 2 dây (serial wire-2 Pin), cũng như cung cấp trình điều khiển chạy gỡ lỗi, hệ thống CoreSight trên STM32 cung cấp hệ thống điểm truy cập (data watchpoint) và một công cụ theo dõi (instrumentation trace). Công cụ này có thể gửi thông tin về ứng dụng được lựa chọn đến công cụ gỡ lỗi. Điều này có thể cung cấp thêm các thông tin gỡ lỗi và cũng có thể được sử dụng trong quá trình thử nghiệm phần mềm. [5]
22
2.3.5. Phần cứng
Hình 2.3: Sơ đồ khối phần cứng kit STM32F4 Discovery. [4] Sơ đồ khối kit
23 Hình 2.4: Sơ đồ kit STM32F4. [4]
24 Hình 2.5: Chức năng của các chân. [4]
2.4. Thư viện Waijung Blockset[3]
Waijung Blockset là một thư viện cho MatLab gồm các khối được xây dựng trên nền tảng C do một công ty Thái phát triển với mục đích dùng để giảng dạy và sử dụng các ứng dụng trên phần cứng mà công ty này thiết kế (dựa trên các board của ST), giữ vai trò quan trọng trong việc cấu hình cho tất cả các ngoại vi của vi diều khiển STM32F405xx – 407xx – 415xx – 417xx (từ 64 pin đến 176 pin) kết hợp với nhiều loại cảm biến, module Lan, Wifi, Usb, Uart … Led 7 đoạn, LCD,…. Trong thư viện Waijung Blockset đều có khả năng xuất code cho vi điều khiển STM32F4 khi sử dụng chức năng Real – time Workshop, phù hợp với các phiên bản MatLab R2009a trở lên. Giao diện từng khối rất dễ sử dụng vì được mô tả một cách chi tiết cho từng khối, bên cạch đó cho phép ta sử dụng các khỏi của MatLab với các khối trong thư viện Waijung Blockset. Đặt biệt thư viện cho phép STM32 giao tiếp với UART với MatLab để chạy Simulink. [3]
25
2.4.1. Khối Target Setup
Hình 2.6: Hình ảnh khối Targat Setup trong Simulink.
Hình 2.7: Cấu hình cho Target Setup
Khối Target Setup sẽ được đưa vào mỗi chương trình Simulink dùng để thiết lập các mục tiêu:
- Tạo ra mã cho các mục tiêu STM32F4 được lựa chọn từ một danh sách hỗ trợ MCU.
26 - Dùng để lựa chọn và kiểm soát các trình biên dịch chéo để biên dịch các mã được tạo ra.
- Thiết lập đồng hồ hệ thống khác nhau cho các mục tiêu. - Kiểm soát toàn bộ quá trình xây dựng biên dịch tự động tải.
2.4.2. Khối Digital Output
Hình 2.8: Hình ảnh khối Digital Output trong Simulink.
Hình 2.9: Cấu hình cho khối Digital Output. Trong đó:
27 - Port: chọn port để xuất tín hiệu logic đầu ra.
- Speed: tần số - Type: loại pin
Khối Digital Output thực hiện Digital Output Module để tạo ra mức logic ở đầu ra kỹ thuật số từ MCU pin
Ngõ vào chấp nhận bất kỳ nguồn góc nào của loại dữ liệu Simulink. MCU tạo ra từ chân logic dựa trên logic sau:
if (đầu vào == 1) đầu ra logic = 1; else
đầu ra logic = 0; end
Ngõ thể hiện mức logic này lo do người sử dụng cấu hình.
2.4.3. Khối UART Setup
28 Hình 2.11: Cấu hình cho khối UART Setup.
Trong đó:
- UART Module: chọn module cho UART trong trường hớp sử dụng nhiều UART trong một chương trình.
- Baud rate (bps): chọn tốc độ truyền nhận dữ liệu.
- Tx Pin: tín hiệu được truyền đến thiết bị khác tại chân được lựa chọn. - Rx Pin: tín hiệu được nhận về từ các thiết bị khác tại chân được lựa chọn.
2.4.4. Khối UART Rx
29 Hình 2.13: Cấu hình cho khối UART Rx.
Trong đó:
- UART Module: chọn module phải giống với module khối UART Setup. - Transfer: chọn phương thức chuyển.
- Packet mode: lựa chọn khối truyền dữ liệu ( nhị phân hoặc Ascii).
Sử dụng khối này để nhận dữ liệu từ UART khi ứng dụng cần giao tiếp giữa các thiết bị với thiết bị thông qua giao thức UART.