TamTam 0 20 июня, 2006 Опубликовано 20 июня, 2006 · Жалоба Имеется термопара, встроенная в нагреватель, Источник тока, МК что уже сделал: 1. усиливаю сигнал с термопары 2. считаю его на АЦП (получил значение) 3. ШИМ с выходом на полевик. Вопрос ? как должна выглядеть формула расчета для шим в зависимости от разницы заданной и действительной температуры и скорости ее нарастания. если мона пример для данных, заданная Т=350, действительная Т=100, скорость нарастания при ШИМ 100% 10град\сек. Про ПИД регулирование читал, но так и не въехал как она должна выглядеть. Заранее всем благодарен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maegg 0 20 июня, 2006 Опубликовано 20 июня, 2006 · Жалоба По моему, не хватает исходных данных. например необходимая точность установки температуры и величина возмущающих воздействий. Может хватит пропорционального регулятора: берем ошибку умножаем на коэфф. усиления и получаем управляющее воздействие. Усиление пожно подобрать удобное 2,4,8 и т.д. Поиграться, посмотреть результат. При наличии хорошей модели объекта управления помогает Matlab. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Atashi 0 20 июня, 2006 Опубликовано 20 июня, 2006 · Жалоба посмотри Титце и Шенк Смехотехника. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 20 июня, 2006 Опубликовано 20 июня, 2006 · Жалоба Можно опытным путем составить две таблицы: 1. таблицу соответсвия показаний АЦП значениям ШИМ. 2. таблицу соответствия показаний АЦП и температур. Далее при задании требуемой температуры, искать соответствие показания АЦП этой температуре в таблице 2, потом брать значение ШИМ из таблицы 1, которое соответвует найденному значению АЦП, и записывать его в ШИМ. Потом можно усложнить задачу - разогревать и остужать, например соответвенно на максимальной (FF) и минимальной (0) мощности, а при достижении требуемой температуры - записывать в ШИМ значение из таблицы 1. Интуитивно простая задача. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 20 июня, 2006 Опубликовано 20 июня, 2006 · Жалоба Тут пришел на ум еще один алгоритм решения вашей задачи. По-децки простой, и основан на свойствах инертности нагревательного элемента. Итак. Потребуется отказаться от ШИМ, управлять непосредственно нагревателем (одним пином МК). 1. Задать требуемую температуру. 2. Прочитать показания датчика температуры. 3. Вывести показания датчика на индикатор. 4. Если температура нагревательного элемента ниже требуемой то включить нагревательный элемент. 5. Если температура нагревательного элемента выше требуемой то выключить нагревательный элемент. 6. Goto 2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 20 июня, 2006 Опубликовано 20 июня, 2006 · Жалоба Ага, называется это термостат =) реализуется одной трёхногой микросхемой ds1820 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 21 июня, 2006 Опубликовано 21 июня, 2006 · Жалоба у меня один из первых "автоподстраивающихся" термостатов был сделан так (я понимаю теперь- что криво, косо, и неправильно :) ) - в течении минуты измеряется скорость настания температуры (t1-t0)при заданной мощности. (сначала мощность максимальна.) на следующем шаге проверяется- через минуту при этой скорости на этой мощности температура превысит заданный порог? если да, то убавляем мощность вдвое. если нет, то прибавляем на 10% :) если порог превышен более чем на 0.2°, убавляем мощность на 10%. все цифры были экспериментально подобраны, но надеюсь, принцип ясен. Было сделано для достаточно инерционных прессформ (прогрев от 20 до 70°С за 30- 40 минут) точность поддержания температуры была +- 0,5° Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Abatt 0 23 июня, 2006 Опубликовано 23 июня, 2006 · Жалоба вот интересные линки по ПИД PID FAQ http://www.tcnj.edu/~rgraham/PID-tuning.html настройка ПИД и там же небольшой туториал: http://www.ctc-control.com/customer/elearn...votut/adjus.asp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SpiritDance 0 23 июня, 2006 Опубликовано 23 июня, 2006 · Жалоба Рекомендую посмотреть на какую-нибудь теорию и аппнот AVR221 discrete PID controller с исходниками. А так расссказывать и показывать что такое пид это целая статья журнальная минимум. :) Мгу обнадежить: наиболее сложное, а именно получение сигнала с термопары, Вы в своем проекте уже сделали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvs157 0 23 июня, 2006 Опубликовано 23 июня, 2006 · Жалоба Про ПИД регулирование читал, но так и не въехал как она должна выглядеть. Заранее всем благодарен Например так -------------------- /* Setpoint - уставка Sysout - текущее значение регулируемого параметра Acc_out_prev - предыдущее значение регулируемого параметра Acc_Ti - накопитель для интегрального канала Acc_Tds - накопитель для фильтра диф. канала output - выходное значение регулятора Maxout - максимальное значение выхода регулятора Перед запуском Acc_out_prev = 0; Acc_Ti = 0; Acc_Tds = 0; При переходе с ручного режима управления на автоматический установить Acc_Ti = Kp*output-Setpoint+Sysout; Ti - Постоянная времени интегр. в единицах периода дискретизации Tw = (0.1 - 0.5) Ti Td - Постоянная времени диф. в единицах периода дискретизации Tds = (0.2 - 1) Td Кр - зона пропорциональности */ Acc_Ti=Acc_Ti+1/Ti*(Setpoint-Sysout)-1/Tw*Sat_out; Acc_Tds=Acc_Tds+1/Tds*(Td*(Acc_out_prev-Sysout)-Acc_Tds); Kp_val=Setpoint-Sysout; output=1/Kp*(Kp_val+Acc_Ti+Acc_Tds); Sat_out=0; if (output>Maxout) { Sat_out=output-Maxout; output=Maxout; }; if (output<0) { Sat_out=output; output=0; }; ---------------------- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TamTam 0 24 июня, 2006 Опубликовано 24 июня, 2006 · Жалоба Про ПИД регулирование читал, но так и не въехал как она должна выглядеть. Заранее всем благодарен Например так -------------------- /* Setpoint - уставка Sysout - текущее значение регулируемого параметра Acc_out_prev - предыдущее значение регулируемого параметра Acc_Ti - накопитель для интегрального канала Acc_Tds - накопитель для фильтра диф. канала output - выходное значение регулятора Maxout - максимальное значение выхода регулятора Перед запуском Acc_out_prev = 0; Acc_Ti = 0; Acc_Tds = 0; При переходе с ручного режима управления на автоматический установить Acc_Ti = Kp*output-Setpoint+Sysout; Ti - Постоянная времени интегр. в единицах периода дискретизации Tw = (0.1 - 0.5) Ti Td - Постоянная времени диф. в единицах периода дискретизации Tds = (0.2 - 1) Td Кр - зона пропорциональности */ Acc_Ti=Acc_Ti+1/Ti*(Setpoint-Sysout)-1/Tw*Sat_out; Acc_Tds=Acc_Tds+1/Tds*(Td*(Acc_out_prev-Sysout)-Acc_Tds); Kp_val=Setpoint-Sysout; output=1/Kp*(Kp_val+Acc_Ti+Acc_Tds); Sat_out=0; if (output>Maxout) { Sat_out=output-Maxout; output=Maxout; }; if (output<0) { Sat_out=output; output=0; }; ---------------------- Если не в напряг помогите разобраться. Те параметры которые я понял для чего, Setpoint - к примеру 300 градусов Sysout - 200 градусов Acc_out_prev - 196 градусов Acc_Ti - сюда надо плюсовать значения после измерения (значения за последние 10 измерений складываем и / на 10) Acc_Tds - накопитель для фильтра диф. канала output - ? Maxout - (надеюсь что понял) у меня шим поэтому 100% Ti - Постоянная времени интегр. в единицах периода дискретизации (в чем она должна быть выражена) Tw = (0.1 - 0.5) Ti Td - Постоянная времени диф. в единицах периода дискретизации (в чем она должна быть выражена) Tds = (0.2 - 1) Td Кр - зона пропорциональности (это я так понял если мне надо нагреть до 300 то сюда пишем 300) Acc_Ti=Acc_Ti+1/Ti*(Setpoint-Sysout)-1/Tw*Sat_out; что такое Sat_out Kp_val=Setpoint-Sysout; (Kp_val - это разница между заданным и достигнутым ?) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SpiritDance 0 24 июня, 2006 Опубликовано 24 июня, 2006 · Жалоба Неудачный термин, Кр - это коэффициэнт усиления пропорционального звена. Интуитивно это скорость нагрева или (при пропорциональном регулировании) коэффициэнт наклона прямой закона регулирования. От этого коэффициэнта зависит как быстро будет разогреватся объект управления. Посмотрите все-таки на аппнот там доходчиво достаточно. С бухты-барахты не разберетесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Abatt 0 24 июня, 2006 Опубликовано 24 июня, 2006 · Жалоба в апноуте AVR492 теория и код для IAR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость LordN 24 июня, 2006 Опубликовано 24 июня, 2006 · Жалоба Кр - это коэффициэнт усиления пропорционального звена. Интуитивно это скорость нагрева или (при пропорциональном регулировании) коэффициэнт наклона прямой закона регулирования.для ПИД регуляторов удобней пользоваться обратной величиной Zp = 1/Кр (Kp = 1 / Zp). Zp - "зона пропорциональности". её физический смысл - величина ошибки, при которой пропорциональная часть = 1. имеет ту же размерность, что и ошибка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Abatt 0 24 июня, 2006 Опубликовано 24 июня, 2006 · Жалоба вот готовые проект что вам нужен http://www.circuitcellar.com/library/print...e_168/index.htm печь для пайки сделана из тостера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться