Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Регулятор напряжения и тока на Arduino Pro Mini

Форум самогонщиков Автоматика
1 ... 25 26 27 28 29 30 31 ... 57 28
sebra Куратор Республика Коми 146 85
Отв.540  25 Дек. 17, 00:49
baton, фазоимпульсный регулятор из этой темы с MOC3083 работать не будет, так как она имеет встроенный детектор нуля.
OldBean в [Ненавязчивая автоматизация ректификационной установки] использует "алгоритм Брезенхема" пропуск полупериодов, другой метод регулирования.
baton Доктор наук Санкт-Петербург 648 230
Отв.541  25 Дек. 17, 02:18
sebra, понял, спасибо!
Тогда спаяю сам.
Tomat7 Магистр Черноморская губинния 235 138
Отв.542  27 Дек. 17, 11:26
Немного поправил алгоритм (от ChatterBox'a) и получилось заметно прибавить в точности регулирования.



На картинках изменения еще заметнее.
Стало.jpg
Стало.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Было.jpg
Было.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Chatterbox Специалист Калуга 123 60
Отв.543  27 Дек. 17, 19:54
Немного поправил алгоритм (от ChatterBox'a) и получилось заметно прибавить в точности регулирования.Tomat7, 27 Дек. 17, 11:26
Спасибо. Выложи изменения.
sevpro Доктор наук Worldwide 769 281
Отв.544  27 Дек. 17, 22:19
На картинках изменения еще заметнееTomat7, 27 Дек. 17, 11:26
Хотелось бы понять, откуда взялась картинка "было"? Параллельно цепи стабилизации была подключена нагрузка в 1750 Вт? Симмуляция? На цену деления временной шкалы хотелось бы взглянуть
Tomat7 Магистр Черноморская губинния 235 138
Отв.545  27 Дек. 17, 22:31, через 12 мин
Выложи изменения.Chatterbox, 27 Дек. 17, 19:54
Общая идея - начинать сбор суммы квадратов тока в момент (или сразу после) отработки прерывания по zero_cross.
Это приводит к тому, что в момент начала подсчёта ток будет близок к нулю.
В итоге получаем единообразие условий на каждом "подсчетном периоде".
Прикладываю файл с библиотекой, там понятно.

Добавлено через 5мин.:

Хотелось бы понять, откуда взялась картинка "было"? Параллельно цепи стабилизации была подключена нагрузка в 1750 Вт? sevpro, 27 Дек. 17, 22:19

В качестве нагрузки был 3кВт ТЭН. 1750вт - это заданная регулятору мощность.
Кстати, на видео ваттметр показывет около 1770вт при той же заданной мощности! Кто врёт - не знаю.
Обе картинки из приложения управляющего регулятором, точнее из его просмотрщика архивов, подробнее - https://simplight.ru/

Симмуляция?sevpro, 27 Дек. 17, 22:19
Злой  :'(
На цену деления временной шкалы хотелось бы взглянутьsevpro, 27 Дек. 17, 22:19
Да легко! Картинки в ассортименте с привязкой ко времени прикладываю.
Частота опроса регулятора опросной станцией - 1 секунда. Это и на  графике видно.
На первой картинке (с синим графиком) запечатлен момент перехода на модифицированный алгоритм с одной из неудачных модификаций.

2017-12-27.png
2017-12-27.png Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
2017-12-26 2.png
2017-12-26 2.png Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
2017-12-27 2.png
2017-12-27 2.png Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
2017-12-27 3.png
2017-12-27 3.png Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
2017-12-27 4.png
2017-12-27 4.png Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
2017-12-27 5.png
2017-12-27 5.png Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
2017-12-27 6.png
2017-12-27 6.png Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

RegPower.zip 5.4 Кб
m16 Модератор Тамбов 1.9K 1K
Отв.546  27 Дек. 17, 23:25, через 55 мин
Общая идея - начинать сбор суммы квадратов тока в момент (или сразу после) отработки прерывания по zero_cross.Tomat7, 27 Дек. 17, 22:31
так и должно быть , а было иначе?
Tomat7 Магистр Черноморская губинния 235 138
Отв.547  27 Дек. 17, 23:43, через 18 мин
m16, будь так добр, ткни меня носом в текст скетча где это есть.
А то мож я зря велосипед изобретаю.
sevpro Доктор наук Worldwide 769 281
Отв.548  28 Дек. 17, 06:56
Картинки в ассортименте с привязкой ко времени прикладываю.Tomat7, 27 Дек. 17, 22:31
Ну и о каком "было" и "стало" может идти речь если графики снимались не просто не одновременно, а вообще в разное время суток?
Я потому и задал вопрос про симуляцию, что для корректности результатов графики нужно снимать одновременно на одинаковых (близких) нагрузках, а это в два раза больше оборудования.
m16 Модератор Тамбов 1.9K 1K
Отв.549  28 Дек. 17, 08:04
будь так добр, ткни меня носомTomat7, 27 Дек. 17, 23:43

U_regulator_free_LCD_display_button.ino
U_regulator_free_7display_button.ino
U_regulator_free.ino
//======================================================== Обработка прерывания АЦП для расчета среднеквадратичного напр
ISR(ADC_vect)
{
  byte An_pin = ADCL;
  byte An = ADCH;
  Uism = (An << Крутой + An_pin;
  Uism *= Uism;// возводим значение в квадрат
  Usumm += Uism; // складываем квадраты измерений
  cntr++;
}

Tomat7 Магистр Черноморская губинния 235 138
Отв.550  28 Дек. 17, 08:37, через 34 мин
m16,
В приведенном тобой коде нет проверки хоть какого-то условия, а в коде zero_crosss_int() нет сброса/поднятия флажков (или обнуления Usumm и cntr).
Я наверное реально торможу и поэтому не вижу как начало сбора измеренных значений (квадратов тока) привязано хоть к чему-нибудь по времени.
Может такая привязка в даташите на ATmel описана? Ну просвети тормоза!
m16 Модератор Тамбов 1.9K 1K
Отв.551  28 Дек. 17, 08:58, через 21 мин
Tomat7, извини не подскажу, мопед не мой. sebra может просветить как автор. я в сях ни бельмеса. у меня свой проект стабилизатора на асме для тини13.
Tomat7 Магистр Черноморская губинния 235 138
Отв.552  28 Дек. 17, 09:32, через 35 мин
Ну и о каком "было" и "стало" может идти речь если графики снимались не просто не одновременно, а вообще в разное время суток?sevpro, 28 Дек. 17, 06:56
Думаешь за полдня я переключился на стабилизатор или мне домой "жирную" фазу завели?  Веселый
нужно снимать одновременно на одинаковых (близких) нагрузкахsevpro, 28 Дек. 17, 06:56
Нагрузка в обоих случаях одинаковая. Второй экземпляр делать не выжу смысла, да и ТЭН второй тоже не нужен.

Сегодня постараюсь сделать несколько переключений между разными алгоритмами в течении часа, каждый по 2-3 минуты.
В результаты такого эксперимента поверишь?  Подмигивающий
pisto Студент Стерлитамак 15 4
Отв.553  28 Дек. 17, 10:16, через 44 мин
В приведенном тобой коде нет проверки хоть какого-то условия, а в коде zero_crosss_int() нет сброса/поднятия флажков (или обнуления Usumm и cntr).
Я наверное реально торможу и поэтому не вижу как начало сбора измеренных значений (квадратов тока) привязано хоть к чему-нибудь по времени.Tomat7, 28 Дек. 17, 08:37

void zero_crosss_int() {
  TCNT1 = 0;
  zero++;
}
......
if (zero == 6) {//расчет среднеквадратичного//zero - количество полупериодов дря рассчета среднеквадратичного
    sqrtUsum = Usumm / cntr; //
    real_U = sqrt(sqrtUsum); //
    cntr = 0;
    Usumm = 0;// обнуляем суммы напряжений
    zero = 0;
  }
Расчет за 6 полупериодов,соответственно и привязка к каждому 6-му переходу.
Tomat7 Магистр Черноморская губинния 235 138
Отв.554  28 Дек. 17, 11:34
Расчет за 6 полупериодов,соответственно и привязка к каждому 6-му переходу.pisto, 28 Дек. 17, 10:16
pisto, где привязка к переходу?
(zero == 6) будет всё время до того как zero станет равно 7, а это один полупериод сетевой синусоиды или 10 миллисекунд.
Соответственно, и cntr = 0; Usumm = 0; произойдут в ЛЮБОЙ момент в течении этого полупериода - может в начале или в конце, когда U близко к нулю, а может в середине полупериода, когда U на максимуме. В простом случае - если код регулятора занимается только слежением за напряжением (током) - количество тактов от одного попадания в (zero == 6) до следующего будет одинаково. Но в коде есть всякие проверки (if..else) и некоторые из них срабатывают, есть общение через UART - всё это приводит к тому, что длительность периода от одного [if (zero == 6) {.. cntr = 0; Usumm = 0;}] до следующего может оказаться разным. И чем больше в коде еще функций отжирающих процессор, тем больше будет плавать длительность этого периода.
Смотри картинку - один подсчет будет за период между точками C-D, а следующий между точками A-B.

Не исключаю, что только у меня это проявляется так заметно - у меня и функций дополнительных Ардуина выполняет много и фаза сама по себе плавает сильно.  ::)
В любом случае ТЭН устройство крайне инертное и для наших целей что "скакалка" +/- 5 ватт, что +/- 50 ватт без разницы.  ;D
sinusABCD.JPG
sinusABCD.JPG Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
sebra Куратор Республика Коми 146 85
Отв.555  28 Дек. 17, 11:51, через 18 мин
И чем больше в коде еще функций отжирающих процессорTomat7, 28 Дек. 17, 11:34
А это никого особо не волнует, как показало время. Некоторые пытаются запихнуть еще датчики температуры. И я в свое время еще повелся на кнопочки-экранчики...

Tomat7, Если есть исправленный алгоритм выкладывай, потестируем
Tomat7 Магистр Черноморская губинния 235 138
Отв.556  28 Дек. 17, 11:58, через 8 мин
выкладывай, потестируемsebra, 28 Дек. 17, 11:51
Так вот здесь же [сообщение #13199115] RegPower.zip приложен!

Некоторые пытаются запихнуть еще датчики температуры.sebra, 28 Дек. 17, 11:51
Да помню я твое предупреждение. Подмигивающий С двумя датчиками действительно перебор, а вот с одним прекрасно получается!
А еще LCD и дополнительные внешние коммуникации нормально тянет.  Строит глазки
m16 Модератор Тамбов 1.9K 1K
Отв.557  28 Дек. 17, 12:37, через 39 мин
есть общение через UART - всё это приводит к тому, что длительность периода от одного [if (zero == 6) {.. cntr = 0; Usumm = 0;}] до следующего может оказаться разным.Tomat7, 28 Дек. 17, 11:34
посему под каждую процедуру отводить фиксированное время кратное полупериоду. в тыньке я делал так :
;******************************************************************************
//  счётчик полупериодов
//  00 -  вычисление среднеквадратичного   state0
//  01 -  измерение напряжения управления   state1
//  10 -  измерение напряжения сети             state2
//  11 -  -----------//-------------      state3
state2, state3 - целый период ацп в режиме непрерывного преобразования , на лету считается сумма квадратов SUMu и количество измерений за период Nu.
state0 - из полученных SUMu  и  Nu  вычисляется среднеквадратичное напряжение на нагрузке Urms . Urms сравнивается с  заданным напряжением управления Uctrl , вычисляется ошибка, корректируется ТОР таймера
state1 - измерение напряжения управления  Uctrl, в вашем случае опрос уарта.
nod32 Бакалавр Новокузнецк 87 19
Отв.558  02 Янв. 18, 12:15
Не нашел на какие пины подключается 1602. Есть тут такой вариант или только I2 и сборка LED?
sebra Куратор Республика Коми 146 85
Отв.559  03 Янв. 18, 10:32
nod32, в скетче есть комментарии как подключить дисплей напрямую
сообщение удалено