ШИМ регулятор тока ТЭНа ( TRUE_RMS)

Автор ace, 16-03-2013, 14:18:15

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

aceTopic starter

Предлагаю Вашему вниманию ШИМ-регулятор (в будущем-Стабилизатор)
TRUE_RMS тока ТЭНа, построенный на ARDUINO
Датчиком тока является микросхема ACS712 выпускающаяся с предельным
значение 5А,20А,30А, измеряющая постоянный или переменный ток.
Регулятор позволяет регулировать задержку включения Триака от 0 до 100%
времени полупериода сети (0-10мс) взависимости от переменной DIM.
Переменная Z1 зависит от средне квадратичного значения тока в цепи.
Массштабируя ее и сравнивая ее с уставкой и воздействуя на переменную DIM
можно застабилизировать ток в цепи ТЭНа.
По деньгам это обходится так:
Arduino mini - 6.32$ -
ACS712 - 3,30$
BTA24-600 - 3,00 $
+ 3 оптрона = 3$
Итого порядко 16$ + немного потрудится.
[attach=1]
Скетч можно встаивать в другую программу.
Т.к. время измерения чуть больше 1 сек то его можно оформить в виде функции и
запускать вместо задежки Delay во время преобразования температуры от датчиков 18в20.
Регулировка момента открытия триака работает в фоновом режиме и не занимает процессор!
В качестве датчика тока можно использовать трансформаторы тока типа АС1020.
На следующей неделе попробую измерить ток положительных и отрицательных полуволн
раздельно. Интересно что получится.И сделаю стабилизатор .Кроме того сделаю плавное включение ТЭНов, предохраняющее от тепловых ударов при первом включении.
На фото видно значение 8217 измерений за 100 полупериодов
и  среднеквадратичное значение тока в цепи 100 вт. лампочки (х10).
[attach=2]
[attachmini=3]

m16

только ты учти простую вещь - мощность  выделяемая на тэне  нелинейна в зависимости от угла открытия симистора и считается по этой формуле:
P  = 1 - f / pi + sin(2 * f) / (2 * pi)     где f- угол открытия симистора.

Sambedded

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

aceTopic starter

Вы рябята поспорьте отдельно об дифференциалах и т. п. ( когда это было)
Мне в мои 64 представляется так как я сделал
а замечания приму с удовольствием

Sambedded

Я сто-то не понял - чего ты возмущается?
Ты же собираешься делать стабилизатор? Так почему бы не использовать алгоритм Пропорционально-Интегрального регуляра?
На вход ему подаем текущее и желаемое значение тока, а на выходе получаешь нужное тебе значение DIM.

m16

Цитата: Sambedded від 16-03-2013, 19:00:54Синусы считать не обязательно, поскольку мы в реальном времени измеряем
как всё запущено. синусы считает эксель и превращает их в таблицу
[attach=1]

далее копи-паст в листинг
[attach=2]

остаётся  из таблицы взять  слово и загрузить его в OCR1A

Sambedded

Цитата: m16 від 16-03-2013, 19:42:41

как всё запущено. синусы считает эксель и превращает их в таблицу

Какая разница как считать екселем или контроллером если можно вообще не считать?

m16

ну-ну. иногда лучше помолчать чем говорить
Цитата: Sambedded від 16-03-2013, 19:00:54Дифференциальную компоненту в регулятор вводить не стоит как раз из-за значительной нелинейности.

Sambedded

Цитата: m16 від 16-03-2013, 19:55:56
ну-ну. иногда лучше помолчать чем говорить
Цитата: Sambedded від 16-03-2013, 19:00:54Дифференциальную компоненту в регулятор вводить не стоит как раз из-за значительной нелинейности.


Обоснуй, пожалуйста - что именно не так в моем предложении? У тебя есть лучше решение для стабилизации? Так изложи его.

Кстати насчет помолчать

Цитата
остаётся  из таблицы взять  слово и загрузить его в OCR1A

Это называет "табличное вычисление функции"

Игорь

Ребята, не ссорьтесь.
Можно сантехник вставит 5 копеек? (Sambedded, пардон, 5 центов :) )

По поводу "молчать, чем говорить". Я попробую сказать - изложить точу зрения. Может она не имеет смысла - вы поправите, я поумнею. А с вас не убудет :)
А если я "промолчу", то не поумнею, но и вам не прибавится.
Нет, молчать нельзя. Правильно написал кто-то из наших коллег. Лучше спросить  (сказать)  глупость, чем сделать.
Итак...

Я уже достал всех своим ассоциативным методом, но эта когда-то мне помогла разобраться, осознать суть PID...

Автомобильный амортизатор состоит из двух деталей - пружины и собственно амортизатора. Задача этой системы - обеспечить стабильное положение (по высоте) ее верхней точки независимо от изменения положения нижней.

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

Роль дифференциальной составляющей играет амортизатор. Честно говоря, ему совершенно все равно в каком положении находится верхняя точка. Будучи сжатым или растянутым, он "не сопротивляется", не оказывает никакого влияние, Но в процессе сжатия или растяжения влияет сильно, сопротивляется изменению положения верхней точки.

Рассуждая так, можно понять, нужна D составляющая в нашем регуляторе или нет.

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

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

Наша ситуация - не ухабистая дорога, но и не идеально ровная. Скорее это автобан, на котором амортизатор ( D ) не обязателен, но желателен.
(Наверное так считает М16)

Наша ситуация - идеально ровная дорога, на которой очень редко встречается "лежачий полицейский". Ну покачает несколько секунд после встречи с ним. не беда. (наверное это позиция Sambedded)

Хотите позицию сантехника?
Код для PID-регулятора будет отличаться от кода PI- регулятора парой строк, поэтому спор не стоит выеденного яйца.
Если бы я делал регулятор, дифференциальную составляющую вел бы обязательно. Никогда не поздно выставить для ее нулевой коэффициент.

Кажется я понял почему возник спор. Из разницы стилей разработки.
М16 предпочитает использовать камень с запасом ресурсов, он не будет возиться с восьминогой микросхемой на 2 килобайта, если можно использовать 32-ю мегу :)
Sambedded - сторонник скромного стиля, он стремится максимально использовать ресурсы используемого камня, и не тратить напрасно память.
И хоть я понимаю, что первый подход дает больше комфорта разработчику, все-же мне больше по нутру второй стиль - стиль изящества и разумной достаточности.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

aceTopic starter

Цитата: m16 від 16-03-2013, 15:46:31только ты учти простую вещь - мощность  выделяемая на тэне  нелинейна в зависимости от угла открытия симистора и считается по этой формуле:

M16 !
Я не буду считать мощность и не буду переводить полученные значения в физическую величину.
Я приведу все к шкале 100%. И буду стабилизировать ток взависимости от нужной величины.
А какая там величина мощности будет мне не нужно знать - главное чтобы она была стабильна.
Вопрос к ИГОРЮ.
Оцени - сколько реально периодов нужно считать чтобы получить достаточную точность необходимую
для наших процесов.
Я тоже пытался пойти по второму пути - но для моих 64 - это тяжело - стек мелковат!

bobych

И получился самодельный РМ-2.
Вместо стабилизации напряжения стабилизируется ток.
То же, только в другой руке.

m16

Цитата: Игорь від 17-03-2013, 00:40:17М16 предпочитает использовать камень с запасом ресурсов, он не будет возиться с восьминогой микросхемой на 2 килобайта, если можно использовать 32-ю мегу
засунуть пид в восьминогие  2к - нет проблем , проблема будет с подключением органов управления и отображения

Цитата: ace від 17-03-2013, 08:19:32Я не буду считать мощность и не буду переводить полученные значения в физическую величину.
Я приведу все к шкале 100%. И буду стабилизировать ток взависимости от нужной величины.
А какая там величина мощности будет мне не нужно знать - главное чтобы она была стабильна.
бусть будет так.

Цитата: ace від 17-03-2013, 08:19:32Оцени - сколько реально периодов нужно считать чтобы получить достаточную точность необходимую
для наших процесов.
количество  обсчитанных периодов - дело второе . я пробовал от 4-х до 50-ти, разницы нет. другое  дело количество сэмплов ацп на один период сети чем оно больше тем точнее измерения . максимальная частота преобразования  ацп у авр- 200кгц, это 307 сэплов на период .
второй момент влияющий на точность измерений - опорное напряжение , чем оно "чище" и стабильней тем сам понимаешь.



aceTopic starter

У меня получается порядка 164 измерения за период.
Но на точность также влияет стабильность времени измерений
Сейчас я стартую по прерыванию и считаю полупериоды ( а они по времени не стабильны) Конец измерения наверно надо сделать по фиксированному их числу а не по кол-ву полупериодов. Попробую так.
Еще я заметил как здорово шумит датчик тока если не разнести аналоговую и цифровую
землю. Попробую поствить колечко на цифру и запитать все от отдельного источника.
Сечас на макете все питается от ноута.
Хотя может и так пойдет- нестабильность +/-  1- 2 деления
Проблема в другом как с иммитировать нестабильность сети. У нас она категории А
и ниже 216 в вечером не падает

Игорь

Цитата: ace від 17-03-2013, 09:47:20У меня получается порядка 164 измерения за период.
Застрелите меня, но я не понимаю...
ACS712 сама обсчитывает синусоиду и дает на выходже постоянное напряжение, пропорциональное True RMS переменного тока в нагрузке.
АСЕ, зачем тебе делать 162 измерения за период, если ты используешь ASC?
Не достаточно ли раз в секунду измерить выходное напряжение ACS712,  умножив на 5,4, определить ток, сравнить с заданным, и по выбранному алгоритму определить и задатьновое значение задержки "поджига" симистора?

Можно вообще обойтись без контроллера, если сделать связку ACS712 - К1182ПМ1. Тогда не понадобится ни зерокроссинг, ни клацание 100 раз в секунду.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

SMF spam blocked by CleanTalk