Урок 39. Разработка контроллера элемента Пельтье. Интегральный регулятор мощности.

Ардуино-контроллер элемента Пельтье

Продолжение разработки контроллера, начатой в уроке 36. Напишем программу для регулятора мощности на элементе Пельтье. Узнаем что такое интегральный регулятор.

Предыдущий урок     Список уроков     Следующий урок

Охлаждающая способность элемента Пельтье (холодильная мощность) связана с электрической мощностью на элементе. Поэтому регулировка температуры в камере должна производиться за счет изменения электрической мощности на модуле Пельтье. Т.е. нам нужен регулятор ни напряжения, ни тока, а именно мощности.

 

Будем разрабатывать регулятор мощности, но сначала узнаем минимальные сведения о регуляторах.

 

Общие сведения о регуляторах.

Регулятор это устройство, которое поддерживает определенные параметры объекта на заданном уровне. Регулятор следит за состоянием объекта и вырабатывает управляющие воздействия для того, чтобы  обеспечить стабильность параметра регулирования.

Я хорошо помню, что первая система регулирования, которую нам в институте представил преподаватель ТАУ (теория автоматического управления) был механизм поддержания уровня воды сливного бачка. Когда уровень воды достигает заданного значения, поплавок поднимается и клапан, связанный с его рычагом, перекрывает поток воды. Если уровень воды снизится, то поплавок опустится и клапан откроет воду.

В любом регуляторе надо четко выделить, что мы регулируем и с помощью чего мы регулируем. Т.е.

  • регулируемый параметр;
  • и регулирующий элемент.

В системе регулировки уровня воды регулируемый параметр это уровень воды, а регулирующий элемент это клапан, связанный с рычагом поплавка. Все остальное между поплавком и клапаном реализует алгоритм управления.

Для нашего регулятора мощности:

  • регулируемый параметр – электрическая мощность на нагрузке;
  • регулирующий элемент – широтно-импульсный модулятор.

Структурная схема

Кто-то задастся вопросом, что является регулирующим элементом в нашей системе – коэффициент заполнения ШИМ или ключевой транзистор электронной схемы. Алгоритм регулятора мы реализуем программным способом. Для программы регулирующий элемент – коэффициент заполнения ШИМ.

Подавляющее большинство регуляторов используют обратную связь для того чтобы узнать состояние регулируемого параметра и компенсировать внешние возмущения.

В нашем случае на регулятор поступает измеренная мощность с выхода системы и заданное значение мощности. По определенному алгоритму регулятор вычисляет значение коэффициента заполнения ШИМ, за счет которого и меняется мощность на нагрузке.

Как у всего на свете у регулятора есть критерии оценки качества. Это:

  • Скорость регулирования (быстродействие) – время уменьшения ошибки регулирования до заданной величины.
  • Точность регулирования – ошибка параметра регулирования в установившемся состоянии.
  • Устойчивость регулятора – отсутствие колебаний параметра регулирования.

И еще. Мы реализуем алгоритм регулирования программным способом. Это значит, что у нас будет дискретный по времени регулятор. Управление будет происходить в отдельные моменты времени. В программе контроллера мы определили временную дискретность регулятора мощности 20 мс.

 

Интегральный регулятор.

Другие законы регулирования мы рассмотрим в следующем уроке, когда будем разрабатывать ПИД (пропорционально-интегрально-дифференцирующий) регулятор температуры. Сейчас мы говорим только об интегральном законе регулирования.

Итак, мы должны поддерживать значение мощности на выходе, меняя ШИМ. Самый простой, интуитивный способ это:

  • сравнить заданную мощность с измеренной;
  • если заданное значение больше реального, то ШИМ увеличить на 1 ;
  • если заданное значение меньше реального, то ШИМ уменьшить на 1.

Регулятор с таким алгоритмом управления будет работать, только критерии качества регулирования у него не на высоте. Причем абсолютно все.

Для более качественного регулирования необходимо прибавлять к текущему значению ШИМ величину, зависящую от ошибки параметра регулирования.

Математически закон управления интегрального регулятора выглядит такФормула алгоритма

  • Kw – коэффициент заполнения ШИМ;
  • Ki – интегральный коэффициент;
  • e(t) – ошибка рассогласования, т.е. разница между заданным и реальным значениями регулируемого параметра.

Выходная функция интегрального регулятора пропорциональна интегралу по времени от отклонения регулируемого параметра.

Интегральный регулятор это регулятор последовательного приближения. Большая ошибка – он изменяет ШИМ большими шагами. Маленькая ошибка он медленно ее компенсирует. Ошибка накапливается в интеграторе и сколь малой она не была бы, все равно со временем она окажет воздействие на регулирующий элемент.

В более понятном виде, близком к дискретной реализации схема интегрального регулятора выглядит так.

Структурная схема управления по интегральному закону

  • Вычисляется ошибка рассогласования e, как разность между заданной мощностью Pset и измеренной на выходе Preal :   e = Pset – Preal.
  • Ошибка рассогласования e умножается на интегральный коэффициент Ki и накапливается в регистре-интеграторе RgI.
  • Целые разряды регистра поступают на широтно-импульсный модулятор.

Как правило, интегратор имеет достаточно большую разрядность с дробной частью. А ШИМ может воспринимать только целые значения. Здесь нет противоречия. Значения меньше еденицы постепенно накапливаются в интеграторе и переходят в целую часть, а значит и в ШИМ. Это позволяет при малых ошибках рассогласования или малом значении Ki уменьшать быстродействие регулятора. Малые значения будут долго переходить в целую часть.

Интегральные регуляторы обладают:

  • высокой точностью;
  • низкой скоростью регулирования;
  • посредственной устойчивостью, зависящей от скорости регулирования.

Почему для регулятора мощности на элементе Пельтье мы выбрали именно интегральный закон управления.

  • Элемент Пельтье меняет свои параметры в зависимости от температуры. Но происходит это крайне медленно. Быстрый регулятор нам просто не нужен.
  • Более того резкое изменение мощности на элементе Пельтье ведет к деградации полупроводниковых кристаллов модуля. Из-за резких изменений температуры в местах спайки полупроводников возникают механические напряжения, что ведет к снижению эффективности элемента и даже выходу его из строя. Поэтому как бы быстро не менял регулятор температуры заданное значение для регулятора мощности необходимо, чтобы изменение мощности на элементе Пельтье происходило плавно.
  • Есть еще конденсатор большой емкости на выходе регулятора, который также лучше заряжать медленно.

Например, при включении питания при не охлажденной камере холодильника регулятор температуры должен включить элемент на полную мощность. Необходимо, чтобы это произошло не мгновенно, а в течение нескольких секунд.

Ко всем этим требованиям идеально подходит именно интегральный регулятор. Более того коэффициент Ki мы специально снизим, чтобы обеспечить медленное изменение мощности на нагрузке.

 

Программа регулятора мощности.

Регулятор добавим в программу из предыдущего урока. Напомню, что в ней мы создали структуру программы контроллера и реализовали измерение напряжения, тока и мощности на нагрузке.

Нам нужны следующие переменные и константы:

float measureP; // измеренная мощность на нагрузке, Вт – эта переменная в программе уже есть.

Добавим:

float setPower; // заданная мощность
float regPwrInt=0; // интегральное звено регулятора мощности
#define koeffRegPwrInt 0.05 // интегральный коэффициент регулятора мощности

Сам регулятор уместился в одну строку:

regPwrInt = regPwrInt + (setPower - measureP) * koeffRegPwrInt;

И еще надо перегрузить целую часть из интегратора в ШИМ:

analogWrite(9, (unsigned int) regPwrInt); // ШИМ

В принципе эта программа уже работает. Можно временно задать мощность равной, например, 5 Вт:

setPower = 5; // временно заданная мощность 5 Вт

вставить регулятор в цикл 20 мс и проверить. Но не хватает еще кое-каких операций.

 

Ограничение интегратора.

Мы работаем с реальной схемой. Допустим, задана мощность, которую регулятор не способен обеспечить, например, 50 Вт. Регулятор должен сформировать максимальный ШИМ. Но интегральное звено нашего регулятора будет продолжать увеличиваться. Когда оно превысит максимально-допустимое значение ШИМ (у нас это 255), ШИМ перестанет правильно работать. Скорее сбросится в 0 и опять начнет увеличиваться. Т.е. необходимо ввести ограничения интегрального звена. Оно не должно быть больше максимального значения ШИМ и не допустимо, чтобы оно стало отрицательным.

if (regPwrInt < 0) regPwrInt=0;     // ограничение снизу  
if (regPwrInt > MAX_PWM) regPwrInt=MAX_PWM; // ограничение сверху

"Мертвое время" ШИМ.

Есть еще одна тонкость работы с ШИМ. Импульсы на выходе ШИМ переключают реальный ключ. При уменьшении коэффициента заполнения импульсы включения ключа могут стать очень короткими. Для нашего ШИМ значение 1 соответствует импульсу длительностью 62,5 нс. За такое короткое время ключ не успеват открываться полностью и нормально работать не будет. Скорее всего при нашем низковольтном питании (12 В) беды не случится. Но в высоковольтных цепях источников питания (300 В и более) такая коммутация приводит к катастрофическим последствиям. Поэтому хороший стиль управления ШИМ – это запрет слишком коротких импульсов управления.

Введем два временных отрезка, на которых запретим работу ШИМ. Один отрезок вблизи нуля, второй около максимального значения. Общепринято длительность этих отрезков называть “мертвым временем” ШИМ (dead time). Алгоритм простой:

  • Если значение ШИМ меньше “мертвого времени”, то ШИМ равен 0.
  • Если значение ШИМ больше разницы максимального ШИМ и “мертвого времени”, то ШИМ равен максимальному значению.

Реализация этого алгоритма в программе выглядит так:

unsigned int  pwm = (unsigned int)regPwrInt;  // перевод в ШИМ  
if (pwm < DEAD_TIME) pwm=0;  
if (pwm > (MAX_PWM - DEAD_TIME)) pwm=MAX_PWM;  
analogWrite(9, pwm); // ШИМ

Я задал “мертвого времени” равным 500 нс:

#define DEAD_TIME 8     // мертвое время ШИМ (* 62,5 нс)

Выключение регулятора.

Последнее, что надо добавить это быстрое выключение регулятора. Я говорил, что регулятор должен медленно изменять мощность на элементе Пельтье. Но это не касается аварийного выключения. При setPower=0 будем выключать регулятор мгновенно.

Полностью программный блок интегрального регулятора мощности выглядит так:

    //------------------ регулятор мощности
    if ( setPower != 0) {
      regPwrInt = regPwrInt + (setPower - measureP) * koeffRegPwrInt;
      if (regPwrInt < 0) regPwrInt=0;     // ограничение снизу
      if (regPwrInt > MAX_PWM) regPwrInt=MAX_PWM; // ограничение сверху
      // мертвое время ШИМ
      unsigned int  pwm = (unsigned int)regPwrInt;  // перевод в ШИМ
      if (pwm < DEAD_TIME) pwm=0;
      if (pwm > (MAX_PWM - DEAD_TIME)) pwm=MAX_PWM;   
      analogWrite(9, pwm); // ШИМ
    }
    else {            // выключение
      regPwrInt=0;
      analogWrite(9, 0); // ШИМ     
    }

Еще я добавил в блок передачи данных на компьютер значение интегратора. Его целая часть соответствует коэффициенту заполнения ШИМ. Поэтому значение коэффициента я на компьютер не передавал.

Serial.print(" p="); Serial.print(regPwrInt, 2);  // интегральное звено регулятора мощности

По этой ссылке можно загрузить полный скетч программы контроллера холодильника на данном этапе разработки:

Зарегистрируйтесь и оплатитеВсего 60 руб. в месяц за доступ ко всем ресурсам сайта!

 

Проверка и настройка регулятора.

Теперь проверим работу регулятора на реальной нагрузке и определим интегральный коэффициент.

Схема из урока 36, нагрузка 20 Ом, как в уроке 38.

Ардуино-контроллер элемента Пельтье

В качестве средства контроля работы регулятора будем использовать монитор последовательного порта. Не забудьте установить скорость 19200 бод.

Сначала я задал интегральный коэффициент равным 0,1.

#define koeffRegPwrInt 0.1 // интегральный коэффициент регулятора мощности

Запустил монитор последовательного порта и увидел такую картину.

Настройка устройства

Регулятор работает. Заданную мощность (5 Вт) устанавливает за 14-15 сек.

Замкнул один резистор. Мощность резко изменилась, но регулятор за 5-6 сек привел ее в норму.

Настройка устройства

Работает устойчиво. Об устойчивости надо судить по изменению целой части интегрального звена, т.е. ШИМ. В идеальном регуляторе ШИМ должен меняться на 1. Ток, а значит, и мощность “скачут” из-за не очень точной дискретизации АЦП при малых значениях. В принципе этот коэффициент (0,1) нас устраивает. Но лучше увидеть границы устойчивой работы регулятора и задать его с запасом.

Установил интегральный коэффициент равным 1 и увидел следующее.

Настройка устройства

Мощность устанавливается на заданном уровне примерно за 1 сек и регулятор продолжает работать устойчиво.

Теперь коэффициент 10.

Настройка устройства

Работает еще быстрее, но ШИМ начал “скакать” на 2-5 единицы. Регулятор работает неустойчиво. Такой коэффициент использовать нельзя.

Чисто в демонстративных целях я задал коэффициент равным 20.

Настройка устройства

Колебания достигли 30 единиц ШИМ. Вот осциллограмма напряжения на выходе. Все пошло в разнос.

Осциллограмма на выходе

Выбирайте коэффициент сами. Я думаю, что он не должен превышать 0,5. Я пока установил медленный коэффициент 0,05.

Настройка устройства

Регулятор устанавливает заданную мощность 5 Вт за 30 сек. При большей мощности будет работать еще медленнее. Но тем лучше для элемента Пельтье. Да и коэффициент всегда можно изменить.

Резюме.

Я хочу подчеркнуть, что мы добавили к программе контроллера в этом уроке.

Мы создали программный блок регулятора мощности, который устанавливает электрическую мощность на элементе Пельтье равной значению переменной setPower.

 

Теперь регулятор температуры, который мы создадим в следующем уроке, не будет работать с ШИМ и АЦП. Он будет работать с переменной setPower.

Предыдущий урок     Список уроков     Следующий урок

3

Автор публикации

не в сети 4 дня

Эдуард

285
Комментарии: 1946Публикации: 200Регистрация: 13-12-2015

Один комментарий на «Урок 39. Разработка контроллера элемента Пельтье. Интегральный регулятор мощности.»

  1. привет всем. что то не очень понятно про интегральную часть регулятора. интеграл это сумма значений какой-то функции на определённой интервале (обычно время). больше похоже на отрицательную обратную связь

    0
    • Ошибка измерения не накапливается. Накапливается компенсирующее воздействие на нее. Накапливается в интеграторе. На схеме регистр-накопитель RgI. Попробуйте представить, просчитать что будет происходить при ошибке.

      0
    • Это число с выхода регистра. Ошибка прибавляется к содержимому регистра и сумма кладется в регистр.
      Вот математика накапливающего регистра:
      RgI = RgI + e

      0
  2. еще больше запутали)) е — я так понимаю пропорциональная составляющая ошибки которую мы и интегрируем

    0
    • Формула же простая. Представьте, что есть ошибка и просчитайте, что будет происходить с RgI, а значит и с ШИМ. Вы поняли, что математика выполняется через равномерные промежутки времени.

      0
  3. я правильно понимаю если скажу . что вы на схеме из сумматора вынесли регистр чтобы показать что в нем храниться предыдущее измерение. интегрируем по двум значениям измеренным сейчас и в предыдущем измерении. и интегрируем пропорциональную составляющую

    0
    • В RgI хранится значение ШИМ, только с дробной частью. Мы в него добавляем и накапливаем ошибку умноженную на коэффициент Ki. Ki определяет как быстро мы компенсируем ошибку. В результате ШИМ меняется, ошибка уменьшается, к RgI прибавляется все меньшее значение, ошибка становится равной 0 и RgI, а значит и ШИМ останавливаются.

      0
  4. тогда видимо я не понимаю о интегральной ошибки Ваш Кi должен быть всегда меньше единицы иначе пойдет все в разнос или упрется в ноль все остановиться

    0
    • Как правило он меньше 1. Но в общем случае на него влияют разрядность ошибки (АЦП) и разрядность ШИМ. Если бы ШИМ был например, 32 разряда, то Ki наверняка бы был больше 1. А пойдет система в разнос или нет зависит от многих факторов и в том числе от времени дискретизации.

      0
  5. насколько я знаю в пид ноль может иметь пропорциональная ошибка — нет ошибки. дифференциальная ошибка — скорость ошибки не меняется. а вот интеграл всегда имеет значение при котором система в покое. ошибка отработана

    0
    • Статическая ошибка до 0 может быть скомпенсирована только интегральным регулятором. ПИД регулятор буду в следующем уроке объяснять.

      0
      • Сергей. Возьмите бумагу, ручку и калькулятор. Представьте, что Вы стабилизируете значение ШИМ. Т.е. ШИМ это и есть измеренное значение. Заданное значение пускай будет равно 100, начальное значение ШИМ = 0, Ki = 0.1. И посчитайте шаг за шагом. Вы увидите, как ШИМ будет увеличиваться, ошибка уменьшаться и в какой-то момент будет равна 0.

        0
  6. совершенно верно Эдуард. наш регулятор начинает работать с 5в если я правильно понял. вот это и есть начальная точка нашего интегратора

    0
  7. при включении устанавливаем шим равный пяти вольтам и начинаем регулировать

    0
  8. Нет ШИМ равного 5 В. Никто не знает какой ШИМ надо устанавливать для 5 В. В этом и смысл регулятора — определить ШИМ для нужного напряжения или мощности на выходе.

    0
  9. ну тогда и интегральный регулятор не нужен измеряем и сравниваем с заданным положительная ошибка плюс один импульс за 20 млс или разряд к шиму если минус то ждем и не включаем регулятор

    0
  10. Я приводил пример такого алгоритма в статье и писал о недостатках. Просчитайте пример с теми данными, которые я привел и все поймете на практике!

    0
  11. процессы слишком медленный и колебательных вверх вниз регулировок надеюсь не будет. а если шим максимален а ошибка в плюсе значит слабоват наш регулятор

    0
  12. а то что вы показали вы ввели коэффициент при котором обратная связь стала положительно. баланс амплитуд а если баланс фаз то и генератор получился

    0
  13. Связь там всегда отрицательная. Положительная связь будет если ошибка будет считаться наоборот e = Preal — Pset. А устойчивость системы считается обычно по критерию Найквиста, но я об этом даже говорить не хочу.

    0
  14. критерию Найквиста это слишком сложно лучше выбрать начальные условия в заведомо устойчивой области. ограничить скорость регулирования например один разряд за период 20млс если есть ошибка. макс и мин значения шим. и если за определенный период при максимальном шиме не достигнута нужная температура то двери холодильника открыты или авария.
    спасибо Эдуард за диалог я понял ваш регулятор но интегральная составляющая всегда показывает насколько наш регулятор «черепаха» — медленно отрабатывает ошибку

    0
  15. А зачем ему быстро отрабатывать? Чтобы угробить элемент Пельтье? В контроллере холодильник на PIC контроллере регулятор нижнего уровня отрабатывает даже пульсации сети. А регулятор мощности работает медленно.

    0
  16. так при большой ошибке он может это делать а ему надо запретить из условий эксплуатации регулируемого элемента

    0
  17. Загрузил по ссылке программу, комментарии на русском не могу прочитать — что там за кодировка?

    0
  18. Здравствуйте,
    появилось время для продолжения освоения.
    По совету попытался загрузить программу по ссылке в этом месте сайта:
    …»По этой ссылке можно загрузить полный скетч программы контроллера холодильника…»
    Вместо загрузки открывается новая вкладка с текстом программы, где и невозможно прочитать комментарии.

    0
  19. Здравствуйте!
    по поводу «мертвого» времени ШИМ. в тексте сказано:

    Если значение ШИМ меньше “мертвого времени”, то ШИМ равен 0.
    Если значение ШИМ больше разницы максимального ШИМ и “мертвого времени”, то ШИМ равен максимальному значению.

    вот тут вопрос — «значение шим» — это цифры от 0 до 255. как от них можно отнимать время — непонятно. далее описан код:

    Реализация этого алгоритма в программе выглядит так:
    unsigned int pwm = (unsigned int)regPwrInt; // перевод в ШИМ
    if (pwm (MAX_PWM — DEAD_TIME)) pwm=MAX_PWM;
    analogWrite(9, pwm); // ШИМ

    похоже что дело в первой строке unsigned int pwm = (unsigned int)regPwrInt; // перевод в ШИМ

    но я тоже не могу понять, какой смысл перевода одной переменной в другую, если у них одна и та же размерность (unsignes int)?

    0
  20. Здравствуйте.
    Не могу понять «мертвое время» ШИМ. Как рассчитать длительность одного импульса? Хочу реализовать такой алгоритм на STM32, а там 12 бит ШИМ 0 — 4095.

    0
      • Здравствуйте!
        Все очень просто. Допустим у вас ШИМ 12 разрядов (0…4095) с периодом 10 мкс. Считаем время одной дискретины ШИМ 10 мкс / 4096 = 2,44 нс. Теперь вычисляем число градаций для мертвого времени. Допустим, необходимо мертвое время 800 нс. Число градаций 800 / 2,44 = 329. Т.е. отрезки длиной 329 градаций ШИМ в начале и конце полного диапазона должны буть заблокированы.
        если ШИМ < 329, ШИМ =0 если ШИМ > 4095 — 329, ШИМ =4095
        Можно посчитать в процентах от максимального ШИМ.

        0
  21. Здравствуйте у меня такая проблемма
    без нагрузки постоянно показывает
    =4.15 I=0.41 P=4.94 p=24.79
    U=4.15 I=0.41 P=4.94 p=24.93
    U=4.17 I=0.43 P=5.20 p=24.87
    U=4.15 I=0.41 P=4.94 p=24.92
    а под нагрузкой

    U=0.81 I=0.39 P=4.68 p=38.05
    U=0.81 I=0.41 P=4.94 p=38.04
    U=0.81 I=0.43 P=5.20 p=38.03
    U=0.81 I=0.41 P=4.94 p=38.04
    и так постоянно
    В чем может быть проблема?

    0
      • в 38 ничего не показал, начал показывать только когда ресет убрал вот такие страшные вещи
        U=3.23 I=12.46 P=150.87
        U=3.19 I=14.07 P=170.38
        U=3.09 I=11.86 P=143.59

        0
          • еще момент в 39 уроке при отключении резет показывает
            I=0.00 P=0.00 p=6.25
            U=0.81 I=0.00 P=0.00 p=6.25
            U=0.81 I=0.00 P=0.00 p=6.25
            U=0.81 I=0.00 P=0.00 p=6.25
            U=0.81 I=0.00 P=0.00 p=6.25
            U=0.81 I=0.00 P=0.00 p=6.25
            U=0.81 I=0.00 P=0.00 p=6.25
            U=0.81 I=0.00 P=0.00 p=6.25
            U=0.81 I=0.00 P=0.00 p=6.25

            0
          • Проверьте программу 38 урока. На этой программе проверяются все измерительные цепи и работа ШИМ.

            0
        • это под нагрузкой, и также без ресета и нагрузки вот что:
          U=12.11 I=0.00 P=0.00
          U=12.11 I=0.00 P=0.00
          U=12.11 I=0.00 P=0.00
          U=12.11 I=0.00 P=0.00
          U=12.11 I=0.00 P=0.00
          U=12.11 I=0.00 P=0.00
          U=12.11 I=0.00 P=0.00

          0
          • У вас аппаратная ошибка. Напряжение 12 В, ток должен быть 12 / Rнагрузки. Проверяйте напряжение на входе платы Ардуино для измерения тока. Либо оно не доходит с датчика тока, либо датчик тока замкнут. Если напряжения на входе нет, то измеряйте его на датчике тока. Схема простая. Надо проследить все цепи. А что значит отключить ресет, я не понял.

            0
          • Я понял, что значит отключить ресет. У вас аппаратная ошибка. Проверяйте транзисторный ключ VT3 и R7.

            0
  22. в общем на программе 38 урока не показывает ничего до тех пор пока не отключу Res

    0
  23. В общем нашел одну из причин, это танталовые конденсаторы, которые видимо либо бракованные, либо мне дали не те, просто небыло возможности проверить, при подаче напряжения их просто пробило, причем один из них сгорел как бингальский огонь, второй по ошибке не прозвонил надеясь что все хорошо, но в итоге проверив все на плате нашел его в коротком…, теперь в 38 уроке под нагрузкой вроде более или менее нормальные показатели:

    U=8.82 I=0.67 P=8.06
    U=8.82 I=0.71 P=8.58
    U=8.82 I=0.67 P=8.06
    U=8.82 I=0.67 P=8.06
    U=8.82 I=0.67 P=8.06
    Да и еще заменил сопротивление R8 На нихромовую нить, длину которой подобрал путем замеров, теперь замеряемые мной ток и напряжение выводимое на компьютер с небольшим расхождением.
    Про ресет я говорил о выходе Res на схеме. я его от ардуино отключал. сейчас как не странно работает все с ним

    0
  24. в 39 уроке вот что получается:

    U=12.11 I=0.00 P=0.00 p=18.75
    U=12.11 I=0.00 P=0.00 p=31.25
    U=12.11 I=0.00 P=0.00 p=43.75
    U=12.11 I=0.00 P=0.00 p=56.25
    U=12.11 I=0.00 P=0.00 p=68.75
    U=12.11 I=0.00 P=0.00 p=81.25
    U=12.09 I=0.00 P=0.00 p=93.75
    U=12.04 I=0.00 P=0.00 p=106.25
    U=12.04 I=0.00 P=0.00 p=118.75
    U=12.03 I=0.00 P=0.00 p=131.25
    U=12.01 I=0.00 P=0.00 p=143.75
    U=12.04 I=0.00 P=0.00 p=156.25
    U=8.90 I=0.00 P=0.00 p=156.50
    U=11.51 I=0.00 P=0.00 p=169.00
    U=12.03 I=0.00 P=0.00 p=181.50
    U=12.11 I=0.00 P=0.00 p=194.00
    U=11.15 I=0.00 P=0.00 p=204.12
    U=12.11 I=0.00 P=0.00 p=216.62
    U=12.11 I=0.00 P=0.00 p=229.12
    U=10.46 I=1.07 P=13.01 p=228.39
    U=9.69 I=0.88 P=10.67 p=212.42
    U=8.97 I=0.84 P=10.14 p=198.06
    U=8.38 I=0.75 P=9.10 p=186.42
    U=7.93 I=0.71 P=8.58 p=176.93
    U=7.48 I=0.64 P=7.80 p=168.85
    U=7.19 I=0.60 P=7.28 p=162.33
    U=6.89 I=0.58 P=7.02 p=156.72
    U=6.74 I=0.52 P=6.24 p=153.55
    U=6.59 I=0.52 P=6.24 p=150.56
    U=6.49 I=0.49 P=5.98 p=148.09
    U=6.38 I=0.47 P=5.72 p=146.14
    U=6.30 I=0.47 P=5.72 p=144.36
    U=6.20 I=0.45 P=5.46 p=142.77
    U=6.15 I=0.45 P=5.46 p=141.60
    U=6.10 I=0.45 P=5.46 p=140.45
    U=6.07 I=0.45 P=5.46 p=139.42
    U=6.00 I=0.43 P=5.20 p=138.69
    U=6.02 I=0.45 P=5.46 p=138.10
    U=5.96 I=0.43 P=5.20 p=137.51
    U=5.96 I=0.43 P=5.20 p=136.99
    U=5.91 I=0.43 P=5.20 p=136.49
    U=5.86 I=0.43 P=5.20 p=135.98
    U=5.86 I=0.43 P=5.20 p=135.48
    U=5.83 I=0.43 P=5.20 p=134.97
    U=5.81 I=0.43 P=5.20 p=134.48
    U=5.78 I=0.43 P=5.20 p=133.98
    U=5.78 I=0.43 P=5.20 p=133.54
    U=5.78 I=0.43 P=5.20 p=133.13
    U=5.73 I=0.41 P=4.94 p=132.90
    U=5.73 I=0.43 P=5.20 p=132.84
    U=5.73 I=0.43 P=5.20 p=132.86
    U=5.73 I=0.43 P=5.20 p=132.77
    U=5.73 I=0.41 P=4.94 p=132.69
    U=5.73 I=0.41 P=4.94 p=132.56
    U=5.73 I=0.41 P=4.94 p=132.36
    U=5.73 I=0.41 P=4.94 p=132.18
    U=5.73 I=0.43 P=5.20 p=132.06
    буду пытаться разобраться с этим, так же буду рад коментариям в помощь

    0
    • Все правильно работает. Регулятор стабилизирует мощность. В программе временно задано 5 Вт.
      setPower = 5; // временно заданная мощность 5 Вт
      И у вас 5 Вт.

      0
      • понял, просто не доконца изучил программу, но погрешность в измерении тока всетаки есть не маленькая, R 8 нужно до ума довести)

        0
  25. Добрый день! Не могу понять одну вещь. Мы измеряем напряжение и ток в «попугаях» (0-255) потом пересчитываем это все в вольты и амперы. Перемножаем это все и получаем измеренную мощность в ваттах. Измеренную мощность и заданную используем для вычисления ШИМ. И пихаем на выход ШИМ, но в попугаи (0-255) уже не переводим. Почему так?

    0
    • Здравствуйте!
      Мы измеряем в попугаях, задаем в попугаях, вычисляем разницу (ошибку рассогласования), а затем по результату решаем, насколько нам изменить значение регулирующего элемента (ШИМ). Коэффициенты показывают, как ошибку рассогласования в попугаях преобразовать в изменение значения регулирующего элемента в его единицах.

      0
  26. Блин, все равно не понял(

    // вычисление напряжения это же в вольтах правильно?
    measureU = powerU — (float)(averageU / MEASURE_PERIOD) * koeffU;

    // вычисление тока, это в амперах?
    measureI = (float)(averageI / MEASURE_PERIOD) * koeffI;

    // вычисление мощности, это в Ваттах?
    measureP = powerU * measureI;

    setPower = 5; // временно заданная мощность 5 Вт

    regPwrInt = regPwrInt + (setPower — measureP) * koeffRegPwrInt; //здесь же мы вычислили сколько Ватт нужно, чтобы достичь значения 5 Вт

    analogWrite(9, (unsigned int) regPwrInt); // ШИМ а тут же попугаи 0-255?

    0
    • Кажется понял, 0-255 это не попугаи, а процент заполнения ШИМ, но опять как составить проценты и мощность, если у меня допустим нагревать на 1 кВт.

      0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".