Mục lục:

Bộ điều khiển nhiệt độ PID: 7 bước
Bộ điều khiển nhiệt độ PID: 7 bước

Video: Bộ điều khiển nhiệt độ PID: 7 bước

Video: Bộ điều khiển nhiệt độ PID: 7 bước
Video: Phương pháp điều chỉnh thông số cho bộ điều khiển PID | Học Nghề Kỹ Sư Điện & Điện Tử 2024, Tháng bảy
Anonim
Bộ điều khiển nhiệt độ PID
Bộ điều khiển nhiệt độ PID

Bạn tôi đang chế tạo một máy đùn nhựa để tái chế nhựa (https://preciousplastic.com). Anh ta cần kiểm soát nhiệt độ đùn. Vì mục đích đó, anh ta đang sử dụng một dải làm nóng vòi phun. Trong vòi phun này, có một cặp nhiệt điện và một bộ gia nhiệt cho phép chúng ta đo nhiệt độ và cuối cùng đạt đến nhiệt độ mong muốn (tạo một vòng lặp phản ứng ngược lại).

Khi tôi nghe nói rằng anh ấy cần một số bộ điều khiển PID để điều khiển tất cả các dải làm nóng vòi phun này, điều đó ngay lập tức khiến tôi mong muốn được thử chế tạo bộ điều khiển của riêng chúng tôi.

Bước 1: Công cụ và vật liệu

Công cụ

  • mỏ hàn, dây hàn và chất trợ dung
  • cái nhíp
  • máy phay (ăn mòn hóa học cũng có thể tạo mẫu PCB) (bạn cũng có thể đặt hàng PCB bằng tệp đại bàng của tôi)
  • nhiệt kế (để hiệu chuẩn)
  • arduino (bất kỳ loại nào) hoặc một lập trình viên AVR
  • Cáp USB nối tiếp FTDI TTL-232
  • máy cắt laser (tùy chọn)
  • đồng hồ vạn năng (ohmmeter và vôn kế)

Vật liệu

  • Tấm đồng một mặt Bakelite (tối thiểu 60 * 35 mm) (Tôi đã làm hỏng chiếc cưa của mình khi mua tấm sợi thủy tinh nên hãy cẩn thận: Bakelite)
  • Bộ vi điều khiển Attiny45
  • Bộ điều chỉnh điện áp LM2940IMP-5
  • Bộ khuếch đại hoạt động AD8605
  • Bóng bán dẫn NDS356AP
  • một loạt các điện trở và tụ điện (Tôi có cuốn sách SMT 0603 adafruit)
  • Máy biến áp xoay chiều 230V-9V
  • 1N4004 điốt
  • rơle trạng thái rắn
  • sơn móng tay (tùy chọn)

Bước 2: Khâu PCB

Khâu PCB
Khâu PCB
Khâu PCB
Khâu PCB
Khâu PCB
Khâu PCB

Tôi đã sử dụng Proxxon MF70 CNC đã được chuyển đổi và một bit cuối hình nón để nghiền PCB. Tôi nghĩ rằng bất kỳ bit kết thúc khắc nào sẽ hoạt động. Tệp Gcode được tạo trực tiếp bởi Eagle và plugin pcb-gcode. Chỉ có ba con đường được thực hiện để đảm bảo phân cách tuyến đường tốt nhưng không tốn hàng giờ đồng hồ để xay xát tất cả. Khi PCB ra khỏi máy CNC, tôi đã làm sạch các tuyến bằng máy cắt và kiểm tra chúng bằng đồng hồ vạn năng.

Thông số: tốc độ tiến dao 150mm / phút, độ sâu 0,2mm, tốc độ quay 20'000 t / phút

Bước 3: Hàn các thành phần

Hàn các thành phần
Hàn các thành phần

Với nhíp và mỏ hàn, hãy đặt các bộ phận vào đúng vị trí và hàn nó bằng cách sử dụng chất trợ dung (nó có ích) và bắt đầu với những bộ phận nhỏ nhất. Một lần nữa, hãy kiểm tra bằng đồng hồ vạn năng để đảm bảo rằng bạn không bị đoản mạch hoặc các phần tử chưa được kết nối.

Bạn có thể chọn độ lợi của bộ khuếch đại bằng cách chọn điện trở bạn muốn (độ lợi = (R3 + R4) / R4). Tôi đã lấy 1M và 2,7k vì vậy trong trường hợp của tôi, mức tăng bằng khoảng 371. Tôi không thể biết giá trị chính xác vì tôi đang sử dụng điện trở dung sai 5%.

Cặp nhiệt độ của tôi là loại J. Nó có nghĩa là nó cung cấp 0,05mV cho mỗi mức độ. Với mức tăng 371, tôi thu được 18,5mV mỗi độ từ đầu ra bộ khuếch đại (0,05 * 371). Tôi muốn đo khoảng 200 ° C vì vậy đầu ra bộ khuếch đại phải ở khoảng 3,7V (0,0185 * 200). Kết quả không được vượt quá 5V vì tôi sử dụng điện áp tham chiếu 5V (bên ngoài).

Hình ảnh tương ứng với phiên bản đầu tiên (không hoạt động) mà tôi đã thực hiện nhưng nguyên tắc thì giống nhau. Trong phiên bản đầu tiên này, tôi đã sử dụng một rơ le và đặt nó ngay giữa bảng. Ngay sau khi tôi đang chuyển đổi với điện áp cao, tôi đã có những người khiến bộ điều khiển khởi động lại.

Bước 4: Lập trình vi điều khiển

Lập trình vi điều khiển
Lập trình vi điều khiển

Sử dụng arduino như trong hướng dẫn này: https://www.instructables.com/id/How-to-Program-a… bạn có thể tải mã.

Tôi đã sử dụng một phụ kiện chuyên nghiệp với cáp FTDI-USB để lập trình Attiny 45 nhưng phương pháp này là tương đương. Sau đó, tôi cắm trực tiếp chân PB1 và GDN vào RX và GND của cáp FTDI-USB để nhận dữ liệu nối tiếp và có thể gỡ lỗi.

Bạn nên đặt tất cả các tham số về 0 (P = 0, I = 0, D = 0, K = 0) trong arduino sketch. Chúng sẽ được thiết lập trong bước điều chỉnh.

Nếu bạn không thấy khói hoặc mùi khét, bạn có thể chuyển sang bước tiếp theo!

Bước 5: Lắp ráp và hiệu chỉnh

Lắp ráp và hiệu chỉnh
Lắp ráp và hiệu chỉnh
Lắp ráp và hiệu chỉnh
Lắp ráp và hiệu chỉnh

Thận trọng: Không bao giờ cắm nguồn điện và 5V từ bộ lập trình cùng một lúc! Nếu không, bạn sẽ thấy khói mà tôi đã thực hiện ở bước trước. Nếu bạn không chắc chắn có thể tôn trọng điều đó, bạn có thể chỉ cần tháo chân 5v cho bộ lập trình. Tôi để nó vì nó thuận tiện hơn cho tôi để lập trình bộ điều khiển mà không cần nguồn điện và để kiểm tra bộ điều khiển mà không có máy sưởi nóng như điên trước mặt tôi.

Bây giờ bạn có thể phân nhánh cặp nhiệt điện trên bộ khuếch đại và xem liệu bạn có đang đo thứ gì đó không (tôn trọng cực tính). Nếu hệ thống sưởi của bạn ở nhiệt độ phòng, bạn nên đo bằng không. Làm nóng nó bằng tay đã có thể dẫn đến một số giá trị nhỏ.

Làm thế nào để đọc các giá trị này? Chỉ cần cắm trực tiếp các chân PB1 và GDN vào RX và GND của cáp FTDI-USB và mở màn hình nối tiếp arduino.

Khi bộ điều khiển khởi động, nó sẽ gửi giá trị màu đỏ bằng nhiệt kế bên trong chip. Đây là cách tôi bù nhiệt độ (mà không cần sử dụng chip chuyên dụng). Nó có nghĩa là nếu nhiệt độ thay đổi trong quá trình hoạt động, nó sẽ không được tính đến. Giá trị này rất khác nhau từ chip này sang chip khác vì vậy nó phải được nhập thủ công trong định nghĩa REFTEMPERATURE ở đầu phác thảo.

Trước khi kết nối rơle trạng thái rắn, hãy xác minh rằng đầu ra điện áp nằm trong phạm vi được hỗ trợ bởi rơle của bạn (3V đến 25V trong trường hợp của tôi, mạch tạo ra khoảng 11V). (tôn trọng cực)

Các giá trị này không phải là nhiệt độ theo độ hay độ F mà là kết quả của quá trình chuyển đổi tương tự sang kỹ thuật số nên chúng khác nhau giữa 0 và 1024. Tôi sử dụng điện áp tham chiếu 5V do đó khi đầu ra bộ khuếch đại gần 5V, kết quả chuyển đổi gần 1024.

Bước 6: Điều chỉnh PID

Điều chỉnh PID
Điều chỉnh PID

Tôi cần phải đề cập rằng tôi không phải là một chuyên gia điều khiển, vì vậy tôi đã tìm thấy một số thông số phù hợp với tôi nhưng tôi không đảm bảo rằng nó hoạt động cho tất cả mọi người.

Trước hết, tôi phải giải thích chương trình làm gì. Tôi đã triển khai một loại PWM phần mềm: một bộ đếm được tăng lên ở mỗi lần lặp cho đến khi nó đạt đến 20'000 (trong trường hợp đó được đặt lại về 0). Một khoảng thời gian trễ sẽ làm chậm vòng lặp xuống còn một phần nghìn giây. Những người sáng suốt nhất trong chúng ta sẽ nhận thấy rằng khoảng thời gian kiểm soát là khoảng 20 giây. Mỗi vòng lặp bắt đầu với sự so sánh giữa bộ đếm và một ngưỡng. Nếu bộ đếm thấp hơn ngưỡng, sau đó tôi tắt rơle. Nếu nó lớn hơn, tôi bật nó lên. Vì vậy, tôi điều chỉnh sức mạnh bằng cách đặt ngưỡng. Việc tính toán ngưỡng xảy ra mỗi giây.

Bộ điều khiển PID là gì?

Khi bạn muốn kiểm soát một quy trình, bạn có giá trị mà bạn đo lường (analogData), giá trị bạn muốn đạt được (tempCommand) và một cách để sửa đổi trạng thái của quy trình đó (seuil). Trong trường hợp của tôi, nó được thực hiện với ngưỡng ("seuil" trong tiếng Pháp nhưng dễ viết và phát âm hơn nhiều (phát âm "sey")) xác định thời gian bật và tắt công tắc (chu kỳ làm việc) do đó lượng năng lượng đưa vào hệ thống.

Tất cả mọi người đều đồng ý rằng nếu bạn ở xa điểm bạn muốn đạt tới, bạn có thể sửa chữa lớn và nếu bạn ở gần, điều chỉnh nhỏ là cần thiết. Nó có nghĩa là sửa chữa là một chức năng của lỗi (error = analogData-tempComand). Có nhưng bao nhiêu? Giả sử rằng chúng ta nhân sai số với một hệ số (P). Đây là một bộ điều khiển tỷ lệ. Về mặt cơ học, lò xo biến thiên tỉ lệ vì lực đàn hồi của lò xo tỉ lệ với độ nén của lò xo.

Bạn có thể biết rằng hệ thống treo xe hơi của bạn bao gồm một lò xo và một bộ giảm chấn (giảm xóc). Vai trò của van điều tiết này là tránh cho xe của bạn bật lại như tấm bạt lò xo. Đây chính xác là những gì thuật ngữ phái sinh làm. Là van điều tiết, nó tạo ra một phản ứng tỷ lệ với sự thay đổi sai số. Nếu lỗi đang thay đổi nhanh chóng, việc sửa chữa sẽ được hạ xuống. Nó làm giảm dao động và độ vọt lố.

Thuật ngữ tích hợp ở đây để tránh lỗi vĩnh viễn (nó tích hợp lỗi). Cụ thể, nó là một bộ đếm được tăng hoặc giảm nếu sai số là dương hoặc âm. Sau đó, hiệu chỉnh được tăng hoặc giảm theo bộ đếm này. Nó không có sự tương đương về cơ học (hoặc bạn có ý tưởng?). Có thể có tác động tương tự khi bạn mang xe đến dịch vụ và thợ cơ khí nhận thấy rằng hệ thống giảm xóc quá thấp và quyết định thêm một số tải trước.

Tất cả điều này được tóm tắt trong công thức: hiệu chỉnh = P * e (t) + I * (de (t) / dt) + D * tích phân (e (t) dt), P, I và D là ba tham số có để được điều chỉnh.

Trong phiên bản của tôi, tôi đã thêm thuật ngữ thứ tư là lệnh "tiên nghiệm" (tiến lên) cần thiết để duy trì một nhiệt độ nhất định. Tôi đã chọn một lệnh tỷ lệ thuận với nhiệt độ (đây là một ước lượng tốt của tổn thất nhiệt. Điều này đúng nếu chúng ta bỏ qua tổn thất bức xạ (T ^ 4)). Với thuật ngữ này, bộ tích phân nhẹ đi.

Làm thế nào để tìm các thông số này?

Tôi đã thử một phương pháp thông thường mà bạn có thể tìm thấy bằng cách sử dụng "bộ điều khiển nhiệt độ điều chỉnh pid" trên googling nhưng tôi thấy khó áp dụng và cuối cùng tôi đã chọn phương pháp của riêng mình.

Phương pháp của tôi

Đầu tiên đặt P, I, D về 0 và đặt "K" và "tempCommand" thành các giá trị nhỏ (ví dụ K = 1 và tempCommand = 100). Bật hệ thống và chờ, đợi, đợi… cho đến khi nhiệt độ ổn định. Tại thời điểm này, bạn biết rằng với "seuil" là 1 * 100 = 100, nhiệt độ có xu hướng là X. Vì vậy, bạn biết rằng với lệnh 100/20000 = 5%, bạn có thể đạt được X. Nhưng mục tiêu là đạt 100 bởi vì nó là "tempCommand". Sử dụng một tỷ lệ, bạn có thể tính K để đạt được 100 (tempCommand). Để đề phòng, tôi đã sử dụng một giá trị nhỏ hơn giá trị được tính toán. Thật vậy, nó dễ dàng để làm nóng nhiều hơn là nguội đi. Cuối cùng thì

Kfinal = K * tempCommand * 0.9 / X

Bây giờ khi bạn khởi động bộ điều khiển, nó sẽ tự nhiên có xu hướng đến nhiệt độ bạn muốn nhưng đó là một quá trình thực sự chậm vì bạn chỉ bù đắp các tổn thất nhiệt. Nếu bạn muốn đi từ nhiệt độ này sang nhiệt độ khác, một lượng nhiệt năng phải được thêm vào trong hệ thống. P xác định tốc độ bạn đặt năng lượng vào hệ thống. Đặt P thành một giá trị nhỏ (ví dụ P = 10). Hãy thử một (gần như) bắt đầu lạnh. Nếu bạn không gặp phải tình trạng vọt lố lớn, hãy thử với mức gấp đôi (P = 20) nếu bây giờ bạn có thử một cái gì đó ở giữa. Nếu bạn vượt quá 5% thì tốt.

Bây giờ tăng D cho đến khi bạn không có vượt quá. (luôn luôn là thử nghiệm, tôi biết đây không phải là khoa học) (Tôi lấy D = 100)

Sau đó, thêm I = P ^ 2 / (4 * D) (Nó dựa trên phương pháp Ziegler-Nicholts, nó sẽ đảm bảo sự ổn định) (đối với tôi I = 1)

Tại sao tất cả những thử nghiệm này, tại sao không phải là khoa học?

Tôi biết rồi mà! Có một lý thuyết khổng lồ và bạn có thể tính toán hàm truyền và biến đổi Z và blablabla. Tôi muốn tạo ra một bước nhảy đơn nhất và sau đó ghi lại phản ứng trong 10 phút và viết hàm truyền và sau đó làm gì? Tôi không muốn lập số học với 200 số hạng. Vì vậy, nếu ai có ý tưởng, tôi rất vui được học cách làm điều đó đúng cách.

Tôi cũng nghĩ đến những người bạn thân nhất của tôi là Ziegler và Nichols. Họ nói với tôi rằng hãy tìm một P tạo ra dao động và sau đó áp dụng phương pháp của họ. Tôi không bao giờ tìm thấy những dao động này. Điều duy nhất tôi tìm thấy là một chuyến bay quá đà lên bầu trời.

Và làm thế nào để mô hình hóa sự thật rằng quá trình sưởi ấm không giống với quá trình làm lạnh?

Tôi sẽ tiếp tục nghiên cứu của mình nhưng bây giờ hãy đóng gói bộ điều khiển của bạn nếu bạn hài lòng với hiệu suất bạn có được.

Bước 7: Đóng gói

Đóng gói nó
Đóng gói nó
Đóng gói nó
Đóng gói nó
Đóng gói nó
Đóng gói nó
Đóng gói nó
Đóng gói nó

Tôi đã có quyền truy cập vào Moscow fablab (fablab77.ru) và máy cắt laser của họ và tôi rất biết ơn. Cơ hội này cho phép tôi tạo ra một gói tuyệt đẹp được tạo ra bằng một cú nhấp chuột bởi một plugin tạo ra các hộp có kích thước mong muốn (h = 69 l = 66 d = 42 mm). Có hai lỗ (diam = 5mm) trên đỉnh cho led và công tắc và một khe ở bên cho các chân lập trình. Tôi đã cố định máy biến áp bằng hai miếng gỗ và PCB bằng hai con vít. Tôi hàn khối thiết bị đầu cuối với dây dẫn và PCB, thêm công tắc giữa máy biến áp và đầu vào nguồn PCB, kết nối đèn led với PBO bằng điện trở (300 Ohms) mắc nối tiếp. Tôi cũng đã sử dụng sơn móng tay để cách điện. Sau lần kiểm tra cuối cùng, tôi dán hộp. Đó là nó.

Đề xuất: