Собственно нужно держать температуру нагрева как можно точнее, ровнее. Хотелось бы сделать ПИД регулятор. Почитал про принцип действия, но как организовать на мк и настроить его- пока мыслей нет. Может кто уже делал или знает как- подскажите пожалуйста. (мк типа МЕГА8)
Есть термопара с платой усилителя сигнала. мк АЦП можно захватывать значение входа усилителя термопары, а вот что далее, как это значение в какие формулы пихать, да еще и коэффициенты применять.
поделитесь дельными предложениями, ссылками. (готовые решения что то дороги очень 3500-6500руб.)
я тоже думаю нафига дифференциальная составляющая- может она и не нужна вовсе? скажем так -задача регулировать нагреватели ИК станции. Нижний- просто держать температуру уставки, верхний -программный, поход по нескольким температурам (термопрофиль).
Интересует, конечно, если кто уже сам делал. Поделитесь практической реализацией, кода, схемотехники, алгоритм. (понятно, что управление симистором через оптопару с детектором перехода через ноль, а как мк сигнал на оптопару формирует- шим? как связать шим с расчетом ПИ, как применить коэффициенты и расчитать их значение. )
Реклама
Приглашаем всех желающих 13 октября 2021 г. посетить вебинар, посвященный искусственному интеллекту, машинному обучению и решениям для их реализации от Microchip. Современные среды для глубинного обучения нейронных сетей позволяют без детального изучения предмета развернуть искусственную нейронную сеть (ANN) не только на производительных микропроцессорах и ПЛИС, но и на 32-битных микроконтроллерах. А благодаря широкому портфолио Microchip, включающему в себя диапазон компонентов от микроконтроллеров и датчиков до ПЛИС, средств скоростной передачи и хранения информации, возможно решить весь спектр задач, возникающий при обучении, верификации и развёртывании модели ANN.
Сэр Мурр
Модератор
Карма: 46 Рейтинг сообщений: 232 Зарегистрирован: Чт окт 27, 2005 18:50:07 Сообщений: 11174 Откуда: из мест не столь отдалённых Рейтинг сообщения: 0 Медали: 2
Реклама
Реклама
Компания Компэл приглашает 30 сентября на вебинар посвященный экономичным решениям МЕAN WELL. На вебинаре мы рассмотрим, как решения MEAN WELL позволяют сэкономить при выборе оптимального источника питания для ваших приложений. Будут представлены основные группы источников питания по конструктивным признакам и по областям применения в контексте их стоимости или их особенностей, позволяющих снизить затраты на электропитание конечного устройства.
Спасибо большое за ответы, а можно по подробнее как управлять нагрузкой?
Планирую использовать оптопару с детектором нуля и симистор. Оптопара при подаче на нее сигнала управления включит симистор только в ближайший переход через ноль. Как на мк реализовать подачу сигнала на оптопару, ведь скорее всего продолжительность подачи этого сигнала нужно как то увязать с рассчитанным значением ПИД?
В процессе расчета out имеет определенную величину. Скармливаете это значение, например, алгоритму Брезенхема, который равномерно распределяет вкл/выкл состояние на интервал управления нагрузкой.
Pooher
Мучитель микросхем
Зарегистрирован: Вс янв 07, 2007 01:45:48 Сообщений: 491 Откуда: Российская Федерация, будь она неладна. Рейтинг сообщения: 0
А как симистор откроется при нулевом напряжении? Симистор надо открывать при напряжении отличном от нуля, а вот закрывать в тот момент, кода ток и напряжение равно нулю. На пример: 1-Отследили «ноль» (напр. внешним прерыванием) 2-Запустили таймер 3-Таймер досчитал до нужного значения — подаём импульс открытия. 4-При правильной постройке схемы контроля перехода через ноль, симистор сам закроется в «нуле»
_________________ Научить нельзя, можно научиться. Пифагор. Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
для управления симистором предполагается использовать оптопару MOC3083M. у нее на вход просто подается питание, а выход уже сам включается в ближайший, подходящий для включения симистора, момент времени по внутренней схеме с детектором нуля.
имхо зачем усложнять и считать периоды, когда подал напряжение и вуаля, в ближайший момент времени открывается симистор, подключается нагрузка, затем, по высчитанному с термопары ПИД значению отключается.
вопрос лишь в том, вероятна ли и существенна ли ситуация, что оптопара будет включать симистор например только в положительный полупериод. при поддержании граничных значений температуры, когда уже все прогрелось и стоит лишь немного поддерживать- совпадет например так, что симистор будет открываться интервалами в полупериод и только в положительную его часть. возникнут ли какие неприятные последствия в сети?
добрые коты, помогите разобраться с ПИД регулятором. Есть кусок кода CVAVR для регулировки нагревателям (лампа 60Вт.), управляю нагревом через оптотиристор + симистор, режим роботы: 100% — максимальный нагрев и 30% минимальный нагрев. термометр — термопара. нарыл кусок ПИД регулятора . ну не могу его превинтить к своим проекту необходимо что бы функция возвращала процент нагрузки в приделах ((
#define INTERVAL 0.1 #define MAX 100 #define MIN 30 signed int Kp=2,Ki=1,Kd=0; static signed int last_error;
signed int pid_control(signed char setpoint, signed char currentpoint) < signed int P; signed int D; static signed int I; signed int PID; P = (setpoint — currentpoint); I = (I + (setpoint — currentpoint) * INTERVAL); D = (((setpoint — currentpoint) — last_error) / INTERVAL); last_error = setpoint — currentpoint; PID = (Kp * P) + (Ki * I) + (Kd * D); return (PID); >
каждые 250 мс. я считываю показания термопары, и передаю показания
добрые коты, помогите разобраться с ПИД регулятором. Есть кусок кода CVAVR для регулировки нагревателям (лампа 60Вт.), управляю нагревом через оптотиристор + симистор, режим роботы: 100% — максимальный нагрев и 30% минимальный нагрев. термометр — термопара. нарыл кусок ПИД регулятора . ну не могу его превинтить к своим проекту необходимо что бы функция возвращала процент нагрузки в приделах ((
#define INTERVAL 0.1 #define MAX 100 #define MIN 30 signed int Kp=2,Ki=1,Kd=0; static signed int last_error;
signed int pid_control(signed char setpoint, signed char currentpoint) < signed int P; signed int D; static signed int I; signed int PID; P = (setpoint — currentpoint); I = (I + (setpoint — currentpoint) * INTERVAL); D = (((setpoint — currentpoint) — last_error) / INTERVAL); last_error = setpoint — currentpoint; PID = (Kp * P) + (Ki * I) + (Kd * D); return (PID); >
каждые 250 мс. я считываю показания термопары, и передаю показания