Оглавление:
- Шаг 1. Инструменты и материалы
- Шаг 2: протравите печатную плату
- Шаг 3: припаяйте компоненты
- Шаг 4: запрограммируйте микроконтроллер
- Шаг 5: Сборка и калибровка
- Шаг 6: настройка ПИД-регулятора
- Шаг 7: упакуйте
Видео: ПИД-регулятор температуры: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Мой друг строит пластиковый экструдер для переработки пластика (https://preciousplastic.com). Ему нужно контролировать температуру экструзии. Для этого он использует ленту нагревателя сопла. В этом сопле есть термопара и нагревательный элемент, которые позволяют нам измерить температуру и, наконец, достичь желаемой температуры (сделать петлю обратного действия).
Когда я услышал, что ему нужно несколько ПИД-регуляторов для управления всеми этими лентами нагревателя форсунок, у меня сразу возникло желание попробовать сделать наш собственный.
Шаг 1. Инструменты и материалы
Инструменты
- паяльник, припой и флюс
- пинцет
- фрезерный станок (также возможно химическое травление для прототипирования печатной платы) (вы также можете заказать печатную плату с моим файлом орла)
- термометр (для калибровки)
- arduino (любого типа) или программатор AVR
- Последовательный USB-кабель FTDI TTL-232
- лазерный резак (опция)
- мультиметр (омметр и вольтметр)
Материал
- Бакелитовая односторонняя медная пластина (минимум 60 * 35 мм) (я испортил свою пилу, купив стекловолоконную, так что будьте осторожны: бакелит)
- Микроконтроллер Attiny45
- Регулятор напряжения LM2940IMP-5
- Операционный усилитель AD8605
- Транзистор NDS356AP
- связка резисторов и конденсаторов (у меня есть книга adafruit SMT 0603)
- Трансформатор переменного / постоянного тока 230В-9В
- 1N4004 диоды
- твердотельное реле
- лак для ногтей (по желанию)
Шаг 2: протравите печатную плату
Я использовал свой Proxxon MF70 с ЧПУ и конический наконечник для фрезерования печатной платы. Думаю, подойдет любой наконечник для гравировки. Файл Gcode был напрямую сгенерирован eagle и плагином pcb-gcode. Было сделано всего три прохода, чтобы обеспечить хорошее разделение маршрутов, но без необходимости тратить часы на измельчение всей меди. Когда печатная плата вышла из станка с ЧПУ, я зачистил трассы резаком и проверил их мультиметром.
Параметры: скорость подачи 150 мм / мин, глубина 0,2 мм, скорость вращения 20 000 т / мин.
Шаг 3: припаяйте компоненты
С помощью пинцета и паяльника разместите компоненты в нужных местах и припаяйте их, используя флюс (это помогает), начиная с мельчайших компонентов. Опять же, проверьте мультиметром, что у вас нет коротких замыканий или неподключенных элементов.
Вы можете выбрать коэффициент усиления усилителя, выбрав нужный резистор (коэффициент усиления = (R3 + R4) / R4). Я взял 1 МОм и 2,7 кОм, поэтому в моем случае усиление было примерно 371. Я не могу знать точное значение, потому что я использую резистор с допуском 5%.
Моя термопара J-типа. Это означает, что он дает 0,05 мВ для каждого градуса. С коэффициентом усиления 371 я получаю 18,5 мВ на градус на выходе усилителя (0,05 * 371). Я хочу измерить температуру около 200 ° C, поэтому выход усилителя должен быть около 3,7 В (0,0185 * 200). Результат не должен превышать 5 В, потому что я использую опорное напряжение 5 В (внешнее).
Изображение соответствует первой (не работающей) версии, которую я сделал, но принцип тот же. В этой первой версии я использовал реле и поместил его прямо посередине платы. Как только я переключался с высоким напряжением, у меня были всплески, из-за которых контроллер перезагружался.
Шаг 4: запрограммируйте микроконтроллер
Используя arduino, как в этой инструкции: https://www.instructables.com/id/How-to-Program-a…, вы можете загрузить код.
Я использовал профессиональную безделушку с кабелем FTDI-USB для программирования Attiny 45, но этот метод эквивалентен. Затем я подключил контакт PB1 и GDN непосредственно к RX и GND кабеля FTDI-USB, чтобы получить последовательные данные и иметь возможность отлаживать.
Вы должны обнулить все параметры (P = 0, I = 0, D = 0, K = 0) в скетче Arduino. Они будут установлены на этапе настройки.
Если вы не видите дыма или запаха гари, переходите к следующему шагу!
Шаг 5: Сборка и калибровка
Внимание: Никогда не подключайте блок питания и 5 В от программатора одновременно! В противном случае вы увидите дым, который я создавал на предыдущем шаге. Если вы не уверены, что сможете это уважать, вы можете просто удалить вывод 5 В для программатора. Я позволил, потому что мне было удобнее программировать контроллер без источника питания и тестировать контроллер без того, чтобы нагреватель как сумасшедший нагревался у меня перед лицом.
Теперь вы можете разветвить термопару на усилителе и посмотреть, измеряете ли вы что-нибудь (соблюдайте полярность). Если ваша система отопления имеет комнатную температуру, вы должны измерить ноль. Нагревание вручную уже должно привести к небольшим значениям.
Как читать эти значения? Просто подключите контакты PB1 и GDN непосредственно к RX и GND кабеля FTDI-USB и откройте последовательный монитор Arduino.
Когда контроллер запускается, он посылает значение красного цвета внутренним термометром микросхемы. Вот как я компенсирую температуру (без использования специального чипа). Это означает, что если температура изменится во время работы, это не будет учтено. Это значение сильно отличается от одного чипа к другому, поэтому его нужно вводить вручную в определении REFTEMPERATURE в начале скетча.
Перед подключением твердотельного реле убедитесь, что выходное напряжение находится в диапазоне, поддерживаемом вашим реле (от 3 В до 25 В в моем случае, схема генерирует около 11 В). (соблюдайте полярность)
Эти значения не являются температурой в градусах или градусах Фаренгейта, а являются результатом аналого-цифрового преобразования, поэтому они варьируются от 0 до 1024. Я использую опорное напряжение 5 В, поэтому, когда на выходе усилителя около 5 В, результат преобразования будет около 1024.
Шаг 6: настройка ПИД-регулятора
Я должен упомянуть, что я не специалист по контролю, поэтому я нашел некоторые параметры, которые работают для меня, но я не гарантирую, что они работают для всех.
Прежде всего, я должен объяснить, что делает программа. Я реализовал своего рода программную ШИМ: счетчик увеличивается на каждой итерации, пока не достигнет 20'000 (в этом случае сбрасывается на 0). Задержка замедляет цикл до миллисекунды. Самые взыскательные из нас заметят, что период контроля составляет около 20 секунд. Каждый цикл начинается со сравнения счетчика и порога. Если счетчик ниже порога, то реле выключаю. Если побольше, включаю. Поэтому я регулирую мощность, устанавливая порог. Расчет порога происходит каждую секунду.
Что такое ПИД-регулятор?
Если вы хотите управлять процессом, у вас есть измеряемое значение (analogData), значение, которого вы хотите достичь (tempCommand), и способ изменить состояние этого процесса (seuil). В моем случае это делается с помощью порога («seuil» на французском языке, но гораздо проще писать и произносить (произносится «sey»)), который определяет, как долго переключатель будет включаться и выключаться (рабочий цикл), таким образом, количество энергии. поставить в систему.
Все согласны с тем, что если вы далеки от точки, которой хотите достичь, вы можете сделать большую коррекцию, а если вы близки, то потребуется небольшая коррекция. Это означает, что исправление является функцией ошибки (error = analogData-tempComand). Да, но сколько? Допустим, мы умножаем ошибку на коэффициент (P). Это пропорциональный регулятор. Механически пружина производит пропорциональную коррекцию, потому что сила пружины пропорциональна сжатию пружины.
Вы, наверное, знаете, что подвеска вашего автомобиля состоит из пружины и демпфера (амортизатора). Роль этого демпфера - избежать отскока вашего автомобиля, как от батута. Именно это и делает производный член. Как и демпфер, он вызывает реакцию, пропорциональную изменению погрешности. Если ошибка быстро меняется, коррекция снижается. Это уменьшает колебания и выбросы.
Термин интегратора здесь, чтобы избежать постоянной ошибки (он интегрирует ошибку). Конкретно, это счетчик, который увеличивается или уменьшается, если ошибка положительная или отрицательная. Затем поправка увеличивается или уменьшается в соответствии с этим счетчиком. У него нет механического эквивалента (или у вас есть идея?). Может быть, есть аналогичный эффект, когда вы приносите свою машину в сервис, и механик замечает, что удары систематически слишком низкие, и решает добавить еще немного предварительной нагрузки.
Все это суммируется в формуле: поправка = P * e (t) + I * (de (t) / dt) + D * интеграл (e (t) dt), P, I и D - три параметра, которые имеют быть настроенным.
В своей версии я добавил четвертый термин, который представляет собой команду «априори» (прямая связь), необходимая для поддержания определенной температуры. Я выбрал пропорциональную команду температуре (это хорошее приближение к потерям на нагрев. Верно, если пренебречь потерями на излучение (T ^ 4)). С этим термином интегратор становится легче.
Как найти эти параметры?
Я попробовал обычный метод, который вы можете найти, набрав в Google "регулятор температуры настройки pid", но мне было трудно его применить, и в итоге я остановился на своем собственном методе.
Мой метод
Сначала установите P, I, D в ноль, а для «K» и «tempCommand» установите маленькие значения (например, K = 1 и tempCommand = 100). Включите систему и подождите, подождите, подождите… пока температура не стабилизируется. На данный момент вы знаете, что при «seuil» 1 * 100 = 100 температура стремится к X. Итак, вы знаете, что с помощью команды 100/20000 = 5% вы можете достичь X. Но цель - достичь 100 потому что это «tempCommand». Используя пропорцию, вы можете вычислить K, чтобы получить 100 (tempCommand). Из предосторожности я использовал меньшее значение, чем расчетное. В самом деле, легче нагреть больше, чем остыть. Итак, наконец
Kфинал = K * tempCommand * 0,9 / X
Теперь, когда вы запускаете контроллер, он, естественно, должен стремиться к желаемой температуре, но это очень медленный процесс, потому что вы только компенсируете потери на нагрев. Если вы хотите перейти от одной температуры к другой, в систему необходимо добавить некоторое количество тепловой энергии. P определяет, с какой скоростью вы вкладываете энергию в систему. Установите P на небольшое значение (например, P = 10). Попробуйте (почти) холодный старт. Если у вас нет большого перерегулирования, попробуйте с двойным (P = 20), если теперь у вас есть один, попробуйте что-нибудь посередине. Если у вас перерегулирование на 5%, это хорошо.
Теперь увеличивайте D до тех пор, пока не будет перерегулирования. (всегда испытания, я знаю, что это не наука) (я взял D = 100)
Затем добавьте I = P ^ 2 / (4 * D) (он основан на методе Циглера-Николса, он должен гарантировать стабильность) (для меня I = 1)
Зачем все эти испытания, а почему не наука?
Я знаю я знаю! Существует огромная теория, и вы можете вычислить передаточную функцию, преобразование Z и блаблаблу. Я хотел сгенерировать унитарный прыжок, а затем записать в течение 10 минут реакцию и написать передаточную функцию, а потом что? Я не хочу заниматься арифметикой с 200 терминами. Так что, если у кого-то есть идея, я был бы рад узнать, как это сделать правильно.
Я также подумал о своих лучших друзьях Зиглере и Николсе. Они сказали мне найти P, который генерирует колебания, а затем применить их метод. Я этих колебаний не обнаружил. Единственное, что я нашла, это ооооооо перебег в небо.
И как смоделировать тот факт, что нагрев - это не то же самое, что охлаждение?
Я продолжу свое исследование, а теперь давайте упакуем ваш контроллер, если вы довольны полученной производительностью.
Шаг 7: упакуйте
У меня был доступ к московскому fablab (fablab77.ru) и их лазерному резчику, за что я благодарен. Эта возможность позволила мне создать красивый пакет, сгенерированный в один клик плагином, который делает коробки желаемых размеров (h = 69 l = 66 d = 42 мм). Сверху есть два отверстия (диаметром 5 мм) для светодиода и переключателя и одна прорезь сбоку для штифтов программирования. Я закрепил трансформатор двумя деревянными панелями, а плату - двумя винтами. Я припаял клеммную колодку к проводам и к плате, добавил переключатель между трансформатором и входом питания печатной платы, подключил светодиод к PBO с резистором (300 Ом) последовательно. Я также использовал лак для ногтей для электроизоляции. После последнего теста приклеил коробку. Вот и все.
Рекомендуемые:
Самобалансирующийся робот - алгоритм ПИД-регулирования: 3 шага
Самобалансирующийся робот - алгоритм ПИД-регулирования: этот проект был задуман, потому что мне было интересно узнать больше об алгоритмах управления и о том, как эффективно реализовать функциональные контуры ПИД-регулирования. Проект все еще находится в стадии разработки, так как модуль Bluetooth еще не добавлен, что позволит
ESP8266 NodeMCU Access Point (AP) для веб-сервера с датчиком температуры DT11 и печатью температуры и влажности в браузере: 5 шагов
ESP8266 NodeMCU Access Point (AP) для веб-сервера с датчиком температуры DT11 и печатью температуры и влажности в браузере: Привет, ребята, в большинстве проектов мы используем ESP8266, а в большинстве проектов мы используем ESP8266 в качестве веб-сервера, чтобы данные могли быть доступны на любое устройство через Wi-Fi, получив доступ к веб-серверу, размещенному на ESP8266, но единственная проблема в том, что нам нужен рабочий маршрутизатор для
Платформа Стюарта для балансировки шаров с ПИД-управлением: 6 шагов
Платформа Стюарта для балансировки мяча с ПИД-управлением: мотивация и общая концепция: Как физик, проходящий обучение, меня естественно привлекают физические системы, и я стараюсь их понимать. Меня научили решать сложные проблемы, разбивая их на самые основные и важные составляющие, а затем
Обучение ПИД-регулированию с помощью роботов Lego: 14 шагов
Обучение ПИД-регулированию с помощью роботов Lego: Многие молодые энтузиасты роботов интересуются более сложными темами управления, но могут оказаться в тупике из-за расчетов, которые часто требуются для анализа систем с замкнутым контуром. В Интернете доступны замечательные ресурсы, которые упрощают создание "
Робот слежения за линией на основе ПИД-регулятора с массивом датчиков POLOLU QTR 8RC: 6 шагов (с изображениями)
Робот слежения за линией на основе PID с массивом датчиков POLOLU QTR 8RC: Здравствуйте! Это моя первая статья об инструкциях, и сегодня я собираюсь провести вас по дороге и объяснить, как построить робота, следующего за линией на основе PID, с помощью QTR-8RC сенсорный массив. Прежде чем приступить к созданию робота, нам необходимо понять