что бы пересчитать время открытия симистора в мощность достаточно одной формулы
g100m
Доцент
Самара
1.6K 237
Отв.1061 12 Марта 15, 12:51, через 6 мин
Да не, я работаю пропуском полупериодов, так помех меньше
dee
Научный сотрудник
Минск
8.1K 2.1K
Отв.1062 12 Марта 15, 12:53, через 2 мин
тогда могу тебе подкинуть идею как увеличить точность установки мощности, но как реализовать ее я не думал
g100m
Доцент
Самара
1.6K 237
Отв.1063 12 Марта 15, 12:56, через 4 мин
Да ну точность нормальная, у меня сеть хорошая, точность можно повысить просто увеличив массив например до 200
Добавлено через 1мин.:
Но от идеи не откажусь
dee
Научный сотрудник
Минск
8.1K 2.1K
Отв.1064 12 Марта 15, 13:44, через 49 мин
массив в 256 значений дает 2,56 секунды период, не знаю - много это для РК или мало, точность получается 0,4% а вот если взять период в 10 тактов то получится точность 10% НО можно использовать переключение между соседними режимами, например 15% можно получить чередуя 10% и 20%, 12% - 4 10% и 1 20% включения, 11% 9 10% и 1 20%.
алгоритм, кмк, может быть такой: находиться ближайшее значение мощности и вычисляется ошибка в установке, одновременно вычисляется и корректировка, которую дает переход на соседнее значения. когда сумма ошибок становиться больше чем корректировка происходит разовый переход на соседнее значение, от суммы ошибки отнимается корректировка и процесс зацикливается.
например контроллер установлен на 12%, ближайшее значение - 10%, ошибка 2%, соседнее - 20%, корректировка 8%. первый такт - ошибка 2%, второй такт - ошибка 4%, третий такт ошибка 6%, четвертый такт - ошибка 8%, включается корректировка 20% 5й такт ошибка 0%, 6й такт ошибка 2% и т.д.
g100m
Доцент
Самара
1.6K 237
Отв.1065 12 Марта 15, 13:49, через 5 мин
Т.е. как бы двухуровневый брезенхэм получается... Ну надо думать
KD
Научный сотрудник
Танкоград
1.4K 648
Отв.1066 12 Марта 15, 13:57, через 8 мин
если пропускать по целому периоду (а не полупериодами, дабы не провоцировать появление постоянной составляющей) то получим точность установки 2% на секундном интервале, что более чем достаточно, к примеру изменение сетевого напряжения на 2 В даст ту же погрешность. Так что хз-хз, нужно ли все это. Лучше ток/напряжение мерять как делает msg31, больше пользы будет
dee
Научный сотрудник
Минск
8.1K 2.1K
Отв.1067 12 Марта 15, 14:03, через 7 мин
блок питания с детектором нуля и измерителем напряжения на предыдущей странице: два стабилитрона, два резистора и диод. для защиты от перенапряжения понадобится еще один стабилитрон
KD
Научный сотрудник
Танкоград
1.4K 648
Отв.1068 13 Марта 15, 08:00
блок питания с детектором нуля и измерителем напряжения на предыдущей страницеdee, 12 Марта 15, 16:03
не нравится он мне ну детектор еще прокатит, только поправку надо будет делать а вот измерять напряжение транса который нагружен переменной (реле включилось/выключилось) нагрузкой не совсем правильно, впрочем выходное напряжение транса работающего на ХХ тоже далеко не в линейной зависимости от входного правильнее вообще ток в нагрузке контролировать, заказал ACS712, пока в пути детектор [сообщение #12242572] вчера собрал работает, не греется
g100m
Доцент
Самара
1.6K 237
Отв.1069 13 Марта 15, 08:31, через 32 мин
правильнее вообще ток в нагрузке контролировать, заказал ACS712, пока в путиKD, 13 Марта 15, 08:00
m16 правильно говорит. я уже месяц думаю над этим, и все больше убеждаюсь, что более качественно, чем пид-регулирование по току нагрузки, нельзя будет стабилизировать мощность.
svarnoy
Профессор
Жуковский.
9.1K 4.6K
Отв.1070 14 Марта 15, 21:15
Сделал ещё в том году, мысль вроде интересная. На фотографии, две крутилки снизу слева, это галетный переключатель на 16 позиций слева, и переменный резистор справа. Ручки одинаковые. Img_2112. Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика. Переключатель переключает на режимы: СС/ Ректификация/ Тушёнка/ сыр/ пользовательский. Резистор, с плавающим числом. В зависимости от режима ему присваиваются разные значения и множители. Например: Гоним сырец с браги, нажали старт. Единственный параметр который можно/нужно регулировать, это температура в кубе до которой гоним. У резистора множитель стоит, что бы весь его ход был в пределах 80-101. Это значение и будет точкой остановки. Делаем ректификат: Тут задаваемый параметр, только головы. Я отбираю головы по времени, при фиксированном отборе 50-70 мл/час. В данном случае, после нажатия старт, кручу до нужного, множитель 0 тоесть до 1023 минуты. Тушёнка: При переключении на режим тушёнка, отображается температура готовки. Множитель стоит, что бы было 90-125. Выставляю температуру, при нажатии старт, резистор работает на время готовки, с множителем 20-150. С сыром оказалось всё на много сложнее, и готового решения пока нет. Пользовательский, можно в ручном режиме пользоваться всеми ресурсами.
msg31
Научный сотрудник
Барнаул
4.6K 2.5K
Отв.1071 15 Марта 15, 05:08
m16 правильно говорит. я уже месяц думаю над этим, и все больше убеждаюсь, что более качественно, чем пид-регулирование по току нагрузки, нельзя будет стабилизировать мощность.g100m, 13 Марта 15, 08:31
Коллеги, подскажите, как Вы ПИД будете применять при использовании одного только датчика тока и Брезенхема?
Я понимаю для фазового управления можно: рассчитали угол открытия симистора, затем фактическую мощность через датчик тока замеряли и ПИД применяем если нужная мощность не совпала с требуемой.
А для Брезенхеме по-моему там никакой ПИД вообще не нужен. Измеряете квадрат тока протекающий в сети за полу-период (или за несколько), затем определяете среднеквадратичный ток, из среденеквадратичного тока мощность. Делите требуемую мощность на фактическую и получаете коэффициент для Брезенхема. Как мне кажется, что он кореллирует с пропорциональным коэффициент для ПИД. Остальные коэффициенты в этом случае вырождены, то есть нулевые.
Ну и чтобы не флудить в ветке предлагаю недавно написанную мной функцию извлечения квадратного корня для квадратов чисел от 90 д 255.
// Функция расчета квадратного корня. // Значения корней от 0 до 90 и от 256 до 512 считаются по очень приблизительным формулам, поскольку такое значение среднеквадратичного в нормальной сети 220 вольт недопустимо // Больше 512 значение не определено. int my_sqrt(unsignedlong tsQT) { char i; unsignedint sQT; // Временная переменная, чтобы поменьше сравнивать 4-битных чисел. int res=666; // Если попадаем в диапазон if (tsQT<tableSQ[0]) { // Если меньше минимального значения, тогда расчет по крайне приближенной формуле res=tsQT*tableSQRT[0]/tableSQ[0]; } else if (tsQT<=tableSQ[MAX_TABLE_SQRT-1]) { sQT=tsQT; for(i=1;i<MAX_TABLE_SQRT;i++) {
if (tableSQ[i-1]<=sQT && tableSQ>=sQT) { if (tableSQ[i-1]==sQT) res=tableSQRT[i-1]; // На крайних значениях берем готовые цифры else if (tableSQ==sQT) res=tableSQRT; // На крайних значениях берем готовые цифры else res=(sQT-tableSQ[i-1])*(tableSQRT-tableSQRT[i-1])/(tableSQ-tableSQ[i-1]) + tableSQRT[i-1] +1; // На промежуточных вычисляем.
return res; } } } else { // Если больше максимального считаем по крайне приближенной формуле, исходя из максимума значений в 512 res=(tsQT-tableSQ[MAX_TABLE_SQRT-1])*(512-tableSQRT[MAX_TABLE_SQRT-1])/(262144-tableSQ[MAX_TABLE_SQRT-1]) + tableSQRT[MAX_TABLE_SQRT-1] +1; }
return res; }
Таблицу квадратов сначала необходимо проинициализировать.
Я понимаю для фазового управления можно: рассчитали угол открытия симистора, затем фактическую мощность через датчик тока замеряли и ПИД применяем если нужная мощность не совпала с требуемой.
А для Брезенхеме по-моему там никакой ПИД вообще не нужен. Измеряете квадрат тока протекающий в сети за полу-период (или за несколько), затем определяете среднеквадратичный ток, из среденеквадратичного тока мощность. Делите требуемую мощность на фактическую и получаете коэффициент для Брезенхема. Как мне кажется, что он кореллирует с пропорциональным коэффициент для ПИД. Остальные коэффициенты в этом случае вырождены, то есть нулевые.msg31, 15 Марта 15, 05:08
Подобным алгоритмом пользуюсь я. ПИД как таковой не нужен в нашем случае, только пропорциональная часть. Это не терморегулирование, тут нет инерционности. Пользую только датчик тока. Кроме того таблицу я получаю при первом включении- калибровке, а не расчетным путем интеграла синуса. Это сводит на нет необходимость определения сдвига фронта датчика нуля от истинного нуля. Кроме того таблица строится не с определенным шагам по углу включения, а по мощности- это увеличивает точность. Шаг по мощности не постоянный, а изменяется пропорционально мощности. К примеру: 100 вт, 110,125,150,180,210 и т.д
g100m
Доцент
Самара
1.6K 237
Отв.1073 15 Марта 15, 09:41
Коллеги, подскажите, как Вы ПИД будете применять при использовании одного только датчика тока и Брезенхема?msg31, 15 Марта 15, 05:08
а никто про Брезенхема и не говорил в совокупности с датчиком тока, речь шла именно о угле открытия. если пропускать полупериоды, ты прав абсолютно.
Дятел
Доктор наук
NA
554 119
Отв.1074 15 Марта 15, 12:01
Ни интегральной, ни дифференциальной части для регулирования мощности на ТЭН-е на обеих алгоритмах ( угол или пропуск полупериодов) не нужно.
сообщения удалены (26)
nakhalovka
Научный сотрудник
moskva
446 586
Отв.1075 04 Мая 15, 13:37
Нужна помощь в написание скетча, несложного, за написании приз, 10 литров домашнего пива. Плата Arduino Pro Mini . будет четыре кнопки и светодиод. При нажимании одной из низ светодиод будет мигать с разным интервалом. Более подробно расскажу в личку или по телефону.
Добавлено через 8ч. 48мин.:
Ну а если не хватит пива кальвадосика добавлю. Если есть другие варианты то в личку. Программа не сложная. А то я Arduino не практиковал.
makМодератор
Екатеринбург
6.3K 1.8K
Отв.1076 05 Мая 15, 06:28
Напиши в личку, сделать не сложно, помогу
nakhalovka
Научный сотрудник
moskva
446 586
Отв.1077 05 Мая 15, 11:18
Напиши в личку, сделать не сложно, помогуmak, 05 Мая 15, 06:28
Написал.
MuxaJIbI4
Студент
tsk
12 2
Отв.1078 30 Июня 15, 19:41
вроде разобрался, один вопрос по поводу реле низкого /высокого уровня, можно простыми словами как разобраться какое у меня реле и какое значение выбирать? KLP_HIGH
Grin52
Бакалавр
Нижний Новгород
69 8
Отв.1079 06 Июля 15, 16:18
Решил замутить пивоварню, по истечению 2-х месяцев вот что вышло, коробок мелкий, пришлось повозиться, проводки в дальнейшим сделаю короче(наверное), хотел сделать кнопки "джойстиком" не вышло, так и не понял почему, поэтому сделал в линию, "гемороя" от этого на корпусе много образовалось пришлось делать наклейку, заказал в типографии еще в процессе. Это сейчас бумага для визуальной наглядности! . ) Вопрос по насосу для прокачки сусла, по литературе читал, что его можно подключить прямо к электромеханическому реле 5V. Вопрос выдержит или нет и подключается аналогичным образом как и реле нагревателя или нет???
Imag0514. Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика. Imag0513. Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика. Imag0509. Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
IMAG0509.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.IMAG0513.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.IMAG0514.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.