Arduino PID library – Bộ điều khiển chiếu sáng

Category: Arduino Published: 02 January 2014
Hits: 11286

Định nghĩa PID

Bộ điều khiển Tỷ lệ-P/Tích phân-I/Vi phân-D, hay bộ điều khiển PID hoặc chỉ đơn giản là PID, là một kỹ thuật điều khiển quá trình tham gia vào các hành động xử lý về Tích phân Tỷ lệ và Vi phân, theo đó các tín hiệu sai số xảy đến được làm giảm đến mức tối thiểu bởi ảnh hưởng của tác động tỷ lệ, ảnh hưởng của tác động tích phân và được làm rõ bởi một tốc độ đạt được với tác động vi phân số liệu trước đó. Hoạt động của PID được dựa trên mô hình toán học đối với kết quả phản hồi của một quá trình vòng lặp được điều khiển.

Trong thực tế, bộ điều khiển PID được tìm thấy bên trong các bộ điều khiển điện tử được gọi là “Vòng đơn”, thường dùng với các bộ vi xử lý, và cũng thông qua phần mềm trên các bộ điều khiển logic lập trình PLC và các thiết bị điều khiển khác.

Trong đề tài này, chúng ta sẽ mô phòng một bộ điều khiển ánh sáng với Ardunio.

Arduino sẽ được vận hành (chạy) sử dụng thư viện PID, được tìm thấy tại: http://playground.arduino.cc/Code/PIDLibrary

Thêm vào đó, thư viện PID đối với Ardunio cũng sẽ cần PID Front End để xử lý số liệu, đây là giao diện người dung GUI để xác lập cấu hình các thông số điều khiển như các giá trị P, I, D, thiết lập điểm Set Point và cách hoạt động,…; thể hiện biểu diễn một tương tác người dùng thân thiện với Ardunio.

Bạn cũng có thể download PID_FrontEnd từ link ở trên.

Khi chúng ta sẽ làm việc với ArdunioProcessing, chúng ta cần có Ardunio's IDE phiên bản 1.0.1 2.0b8 đã được cài đặt trên máy tính.

Từ phần mềm Processing, chạy PID-FrontEnd, chúng ta cũng cần thư viện “ContorlP5” cho Processing đã cài đặt trên máy tính của bạn. Bạn có thể tải về thư viện “ControlP5” trực tiếp từ link liên quan ở đây: http://www.sojamo.de/libraries/controlP5/#installation.

Để biết chi tiết về điều khiển PID, tôi khuyên các bạn ghé thăm Website của tác giả thư viện PID-V1 tại: http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/.

Cũng như truy cập vào website “Control Guru” để biết thêm chi tiết về kỹ thuật tự động và điều khiển: http://www.controlguru.com/pages/table.html.

Chi tiết về các “Hệ thống Điều khiển” có thể được tìm thấy trong Website http://www.facstaff.bucknell.edu/mastascu/econtrolhtml/CourseIndex.html.

Bước 1: Lắp mạch – Phần I

Bây giờ chúng ta sẽ đi sang các khía cạnh xây dựng đề tài của chúng ta:

Chúng ta sẽ làm hai bài thử nghiệm, một với môi trường được mô phỏng vởi một ống tối (môi trường này sẽ không cho phép sự can thiệp từ bên ngoài), và bài thử nghiệm còn lại với môi trường – nơi mà chúng ta có thể can thiệp từ bên ngoài, và vì vậy chúng ta xác nhận lại sự phản ứng lại của hệ thống

Thử nghiệm 1:

Môi trường được mô phỏng bởi một ống tối (đen).

Tại một đầu của ống, chúng ta sẽ có một đèn LED trắng với độ chiếu sáng cao (nó sẽ được sử dụng để chiếu sáng môi trường). Tại đầu còn lại của ống, chúng ta sẽ có một đèn quang điện trở (LDR sẽ được sử dụng để quản lý tổng lượng ánh sáng trong môi trường, đó sẽ là sự phản hồi của hệ thống).

Kết nối dây với Arduino thì rất đơn giản:

Chân D3 (tín hiệu số số 3) của Arduino sẽ được sử dụng như tín hiệu đầu ra và được kết nối với cực dương của đèn LED. Đèn LED được nối qua một điện trở 220Ω với cực dương (cho sự phân cực của đèn LED); cực âm của đèn LED được kết nối trực tiếp tới dây nối đất GND.

Chân A0 (tín hiệu liên tục số 0) của Ardunio sẽ được kết nối tới LDR và được sử dụng làm tín hiệu đầu vào liên tục. LRD có một chân được nối trực tiếp đến nguồn nuội +5V, và chân còn lại được kết nối A0 được nối đất bằng điện trở.

Hãy nhìn những bức ảnh để biết được các kết nối mạch của các thiết bị cảm ứng (sensors) và các bộ chấp hành (actuators) với Ardunio được hoạt động  như thế nào, mạch được thiết kế bằng Fritzing

Bước 2: Lắp mạch – Phần II

Thử nghiệm – 2

Bây giờ hệ thống có thể chịu ảnh hưởng của các tác động bên ngoài được gọi là sự nhiễu loại như sự chắn sáng hay ánh sáng quá mức trong thiết bị cảm ứng trong môi trường hoặc thậm chí là chắn hẳn các cảm biến.

Sự nhiễu loạn được điều khiển tự động bởi Ardunio_PID, nghĩa là: Khi chúng ta giảm ánh sáng tới đi đến LDR (được mô phỏng bởi một vệt tối trên LDR), hệ thống sẽ tự động gia tăng độ sáng của đèn LED để cố gắng duy trì một ánh sáng xung quanh không đổi.

Một chi tiết khác của bài thử nghiệm đặc biệt này là giá trị điểm đặt Setpoint, được điều khiển bởi máy đo điện thế, bài thử nghiệm này thì không còn cần thiết để sử dụng cấu hình điểm đặt thông qua PID_FrontEnnd.

Trong những bức ảnh, chúng ta thấy mạch của các cảm biến và các thiết bị chấp hành được kết nối với Arduino.

Bước 3: Lập trình

Picture of Programming Aspects

PID_2.PNG

 

1. Download và giải nén các thư viện

PID_V1 vào thư mục thư viện vủa Ardunio IDE.

Fron End PID đến 1 thư mục trong máy tính của bạn.

ControlP5 vào thư mục thư viện vủa Processing.

2. Khởi động Arduino IDE và mở file “PID-FrontEnd_ArdunioSampleCode” từ thư mục “PID_frontEnd”

3. Khởi động “Processing” và mở file “PID_frontEnd_v03” từ thư mục “PID_FrontEnd”

Nhìn vào những bức ảnh có liên quan đến quá trình được miêu tả ở trên.

Đặc biệt, đối với thử nghiệm thứ 2, chúng ta phải gửi Arduino, bản phác họa sketch bên dưới: (bản phác họa sketch này sẽ được sử dụng tại vị trí của file “PID_FrontEnd_ArduinoSamplCode”).

Ban có thể download bản phác thảo sketch này từ link dưới:

http://www.4shared.com/file/Y5BIbUdR/LED_PIDcontroller_2.html

Lưu ý rằng giá trị Kiểm soát Điểm đặt được lấy từ thiết lập qua một chiết áp.

Để tạo một nguồn nhiễu loạn, chúng ta có thể sử dụng một đèn nháy để tập trung nhiều ánh sáng hơn vào LDR hoặc một màn hình nhỏ để che bớt ánh sáng đến LDR.

Khi chúng ta có một sự nhiễu loạn trong quá trình, bộ điều khiển sẽ tăng /giảm độ sáng của đèn LED nhằm cố gắng để giữ cho đầu ra được kiểm soát và tại mức độ được thiết lập bởi các điểm đặt (trong trường hợp làm một “màn che”(Shadow), bộ điều khiển sẽ gia tăng cường độ ánh sáng của đèn LED), chúng ta có thể nhìn thấy những thay đổi trong PID_FrontEnd bằng đồ họa sinh động.

Bước 4: PID FrontEnd GUI - Giao diện PID

  

Khi chạy ứng dụng, cửa sổ PID_FrontEnd sẽ mở ra:

Trong cửa sổ này, chúng ta có thể chú ý đến các chức năng sau:

TOGGLE_AM – thay đổi chế độ PID sang tự động hoặc chỉnh tay;

SETPOINT – yêu cầu tổng lượng ánh sáng ở trong môi trường (giá trị 0 đến 1024)

INPUT – Giá trị thực tế của độ sáng môi trường xung quanh (được đo bởi LDR và trả về giá trị làm thông tin phản hồi)

OUTPUT – Giá trị điều khiển được gửi lại bằng Arduino như một bộ điều khiển PID (Điều khiển độ sáng của đèn LED gắn vào chân D3)

KP – hằng số điều khiển tỷ lệ

Ki – hằng số điều khiển tích phân

Kd – hằng số điều khiển vi phân

TOOGLE_DR – thay đổi hướng của PID (khi tín hiệu đầu phát triển làm phát triển đầu vào hoặc ngược lại của nó)

SEND_TO_ARDUINO: Gửi dữ liệu đến Arduino

PID Input/Setpoint: Cửa sổ đồ thị cho các điểm đặt (giá trị yêu cầu của độ sáng) và đầu ra (đo độ sáng từ LDR)

PID Output – cửa sổ đồ thị cho tín hiệu điều khiển đầu ra của đèn LED.

Trong các bức ảnh, chúng ta có thể nhận thấy điểm đặt được thiết lập đến 950 (Dòng kẻ màu xanh), Giá trị đầu vào (dòng kẻ màu đỏ) và bộ điều khiển PID giá trị đầu ra (Dòng màu xanh nước biển) dùng để điều khiển độ sáng.

Chúng ta có thể hiểu thông tin được miêu tả thông qua một sơ đồ khối (nhìn vào các ảnh)

Khi chúng ta nhận thấy sai số Error = SP – PV và sai số được gắn vào bộ điều khiển PID sẽ sinh ra MV đối với bộ điều khiển quá trình.

  1. PV = Biến số quá trình
  2. SP = Điểm đặt
  3. MV = Biến điểu khiển giá trị hiện tại

Mỗi loại tham số điều khiển: P, I và D có thể được sử dụng độc lập hoặc kết hợp như:

  • Bộ điều khiển P (rất được dùng)
  • Bộ điều khiển PI (rất được dùng)
  • Bộ điều khiển PD (hiếm khi được dùng)
  • Bộ điều khiển PID (được dùng nhiều nhất)

Nhìn vào các bức ảnh và bạn có thể quan sát một sự thay đổi trong giá trị điểm đặt (từ 950 đến 700 và sau đó lại đến 950) và bạn có thể nhìn thấy sự tự động hóa của bộ điều khiển PID trong biến đầu vào.

Bạn có thể quan sát có một chút dao động trong điều khiển (đặc điểm của mỗi hệ   thống được điều khiển, dù nó bậc 1 hay bậc 2,…)

Bước 5: Videos

Giải thích video trên youtube:

http://youtu.be/dMdtjuw9Npo

http://youtu.be/Y267-qba12M

Các tham khảo thêm:

https://controls.engin.umich.edu/wiki/index.php/Main_Page

http://en.wikipedia.org/wiki/Controller_(control_theory)

http://en.wikipedia.org/wiki/Control_theory

http://en.wikipedia.org/wiki/PID_controller

http://en.wikipedia.org/wiki/Process_control

http://ctms.engin.umich.edu/CTMS/index.php?example=Introduction&section=SystemModeling

Donate

Donate using PayPal
Amount: