Автор Тема: Самодельный «РМ-2» с внешним управлением.  (Прочитано 2290 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sechevoy

  • Опытный
  • ***
  • Сообщений: 354
  • Спасибо
  • -Отправлено: 57
  • -Получено: 87
  • Хочется блеснуть, а кроме голого зада нечем
А есть ли к ESPшке типа Sonoff TH10/ТН16/basic прошивка для blynk, чтобы до десятичных значений температуры работала? В стоковой прошивке для eWelink выставляю десятые через небольшое время округляется до целых значений и при этом гистрезис более 2°С (например, задан параметр 10°С, при этом включение при падении до значения 9°С, а выключение при установлении температуры 11°С), что очень много и его никак не сузить в стоке.
Приду домой, проверю. Имею Sonoff с такой прошивкой https://electronic-crafts.blogspot.com/2018/03/myhomeiot-sonoff-esp8266-blynk.html я его для приготовления ветчины использую.

Оффлайн ДимаС

  • Профессионал
  • *****
  • Сообщений: 1238
  • Спасибо
  • -Отправлено: 499
  • -Получено: 405
  • Нетешин
А есть ли к ESPшке типа Sonoff TH10/ТН16/basic прошивка для blynk, чтобы до десятичных значений температуры работала? В стоковой прошивке для eWelink выставляю десятые через небольшое время округляется до целых значений и при этом гистрезис более 2°С (например, задан параметр 10°С, при этом включение при падении до значения 9°С, а выключение при установлении температуры 11°С), что очень много и его никак не сузить в стоке.
Приду домой, проверю. Имею Sonoff с такой прошивкой https://electronic-crafts.blogspot.com/2018/03/myhomeiot-sonoff-esp8266-blynk.html я его для приготовления ветчины использую.
Спасибо, жду. Потому что с самим блинком получилось одну из прошивок запустить, но не видела прошивка ДСку. Говорят что может не хватать библиотек...
Не судите, да не судимы будете, ибо каким судом судите, таким будете судимы

Оффлайн sechevoy

  • Опытный
  • ***
  • Сообщений: 354
  • Спасибо
  • -Отправлено: 57
  • -Получено: 87
  • Хочется блеснуть, а кроме голого зада нечем
Всё ок, с десятыми показывает. Внимательно прочтите инструкцию к прошивке.

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 16201
  • Спасибо
  • -Отправлено: 1116
  • -Получено: 10177
  • Думи мої думи...
    • Каптерка
Вказані контролери виконують аналогічну функцію?
Вказані контролери виконують будь-яку функцію, яку ти здатен придумати. Але якщо мова йде про регулювання тиску, я б не вигадував велосипед, а взяв би за 20 баксів МРХ5010. Регулювати 220 вольт таким контролером я вже навчився.
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн m16

  • Политолог
  • Специалист
  • *
  • Сообщений: 513
  • Спасибо
  • -Отправлено: 39
  • -Получено: 122
Всё изложенное в этой статье - моё личное мнение, основанное на моём личном опыте
и без претензии на истину в первой инстанции.
Костя, ты не против если  я выложу  свою реализацию РМ с внешним управлением?
*********************************************************************
     Собсно  решил перейти на  3-х фазное питание энергией своих кубов - 50л кег с тэнами  1,2кВт х3 для ректификации  и   90л куб  2кВт х3 для дистилляции.   Посему понадобился  3-х фазный  РМ с управлением от внешнего контроллера.  Под  эту задачу хорошо вписался  простенький  контроллер  TINY 13.  Напряжение  стабилизации  задаётся  ШИМом от внешнего контроллера  через оптопару  ОК2 .  Если напряжение на  тэне  отличается  больше чем на 10В  чем  заданное внешним контроллером то  на последний  выдаётся  сигнал аварии  через оптопару  ОК4. Через оптопару ОК1  внешний  контроллер отключает 3-х фазный  дифавтомат  обесточивая  РМ  в аварийной ситуации  либо по окончании процесса.

84195-0

     Пунктиром  выделен один канал  РМ,  т.е.  таких  три  канала  с общим   управлением.  Долгое время  вынашивал мысль сделать  3-х фазный РМ  на одном жирном контроллере  но поразмыслив  о том что больно геморный софт  вырисовывается  остановился  на варианте  с тремя  одинаковыми РМ.  По софту - тынька  вычисляет  RMS  напряжение на тэне  обсчитывая одну полуволну  переменки так же  как  это  сделано ив РМ-2. Кстати  точность  вполне приемлемая  1-2В  в диапазоне  60-220В.   Точность стабилизации  напряжения на тэне в тех же пределах.  Включен вачдог.  Стабилизация напряжения  осуществляется по следующему алгоритму:
 if U_ctrl = U_rms  TOP_T0 = TOP_T0
 if U_ctrl < U_rms  TOP_T0 = TOP_T0 + step_fase
 if U_ctrl > U_rms  TOP_T0 = TOP_T0 - step_fase
 где U_ctrl - заданное напряжение на нагрузке, U_rms - измеренное напряжение на нагрузке, TOP_T0 - модуль счёта таймера,  step_fase - шаг изменения модуля счёта при рассогласовании.

    Выглядит это так:

84197-1

    Блок питания - раздербаненная  зарядка от мобилы.  РМ  отработал три сезона  безупречно.

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 16201
  • Спасибо
  • -Отправлено: 1116
  • -Получено: 10177
  • Думи мої думи...
    • Каптерка
У меня тоже ноль сети соединен с минусом питания, поэтому я не заморачивайся с лишними опторазвязками. Если ноль сети соединен с минусом питания, то зерокросс на тиньках прекрасно ловится через резистор на 1-2 мегаома, подключенного напрямую к пину прерывания.  Такой вариант подсмотрел в атмеловсктх аппноутах. Кроме того, соединение минуса с нулем позволяет организовать бестрансформаторное питание, что я и сделал по принципу РМ-2.
Для измерения мгновенного напряжения сначала парился, потом перестал. Тоже измеряю только положительную полуволну. Подключил выходной контакт ТЭНа к входу АЦП через делитель, одно из плеч которого - мегаом, второе - с подстроечкиком, килоом 15. Параметры делителя настраиваю так, чтобы даже при экстремально повышенном напряжении сети на вход АЦП приходило не больше 2.5 вольт, так как для  опоры использовал 431-й стабилизатор 2.54 вольта.По зерокроссу обнуляю счётчик суммы, делаю прерывания по таймеру 200 с чем-то раз за период. В каждом прерывании измеряю напругу, возвожу в квадрат и прибавляю к сумме.  При очередном зерокроссе делю полученную сумму квадратов на количество придавленных за период значений, то есть строго по классике. Корень из суммы не извлекаю, поэтому полученное значение пропорционально не напряжению , а мощности. Сравнение вычисленной мощности с заданной обрабатываю аналогично м16. Если надо сделать больше, не важно на сколько, запускаю симистор на один тик таймера раньше, если меньше, то позже. Таймер тот-же, который разбивает период на части для замера напруги. Несмотря на то, что минус питания сидит на нуле сети, "поджигаю" симистор через 3023-ю моську. Просто привык. Хотя в другом устройстве делал запуск симистора напрямую с ножки тиньки, все работает.Главный недостаток схемы - постоянная и непрерывная занятость устройсива в прерываниях чаще 20000 раз в секунду. А при общении с датчиками температуры прерывания приходится запрещать. Поэтому раз в 6 секунд управление симистором прекращается на 2 периода. Если настроенная мощность меньше 50%,  симистор на эти два периода оставляется закрытым, если больше 50% , открытым. Это вызывает незначительное мерцание, которое из нескольких сотен пользователей заметил только один, вернее не он сам, а его соседка на той-же фазе.
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн m16

  • Политолог
  • Специалист
  • *
  • Сообщений: 513
  • Спасибо
  • -Отправлено: 39
  • -Получено: 122
зерокросс на тиньках прекрасно ловится через резистор на 1-2 мегаома, подключенного напрямую к пину прерывания
Да, есть такая апнота но есть и косяк. Косяк заключается в том , что  от момента перехода через ноль до возникновения прерывания проходит   значительное , на мой взгляд, время  порядка нескольких сот мкС.

Главный недостаток схемы - постоянная и непрерывная занятость устройсива в прерываниях чаще 20000 раз в секунду. А при общении с датчиками температуры прерывания приходится запрещать.
Разве это недостаток? Каждый  должен заниматься своим делом, имхо.  РМ - своим,  контроллер автоматики - своим,  совмещение в одном всего тянет  за собой  гемор.  Взять РМ :  три вектора прерываний - ADC, zero-cross, Timer + вычисление  rms и по мелочи. Весьма загруженно,   контроллер автоматики  живёт весьма  вольготно.

А при общении с датчиками температуры прерывания приходится запрещать
От этих датчиков ds1820  давно  пора избавляться.  Бюджетный вариант - LM35 + ADC 16bit, и подороже  RTD + ADC 24 bit.  Мне повезло,  я прикупил много PT1000  по цене  ДСок  и недорогой ADC 22bit  MCP3551.

Оффлайн vadiv

  • Мастер
  • ****
  • Сообщений: 979
  • Спасибо
  • -Отправлено: 2
  • -Получено: 178
  • Мы в ответе за тех, кого напоили
Мне повезло,  я прикупил много PT1000  по цене  ДСок  и недорогой ADC 22bit  MCP3551.
Посмотри CS1237 (1238)  24 бита и цена хорошая. При PGA=128 "честных" 21 бит  .

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 16201
  • Спасибо
  • -Отправлено: 1116
  • -Получено: 10177
  • Думи мої думи...
    • Каптерка
Да, есть такая апнота но есть и косяк. Косяк заключается в том , что  от момента перехода через ноль до возникновения прерывания проходит   значительное , на мой взгляд, время  порядка нескольких сот мкС.
я не наблюдал на осциллоскопе таких задержек, а если они и есть, но насколько это критично? В моей схеме это момент, когда я начинаю новый отсчёт суммы квадратов напряжения. ЕслЕго смещение ни на что не влияет.
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн vadiv

  • Мастер
  • ****
  • Сообщений: 979
  • Спасибо
  • -Отправлено: 2
  • -Получено: 178
  • Мы в ответе за тех, кого напоили
.Главный недостаток схемы - постоянная и непрерывная занятость устройсива в прерываниях чаще 20000 раз в секунду.
Интересно  какой процессор и есть там аппаратное умножение (деление).

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 16201
  • Спасибо
  • -Отправлено: 1116
  • -Получено: 10177
  • Думи мої думи...
    • Каптерка
Атмега8. Аппаратное умножение есть. Деления кажется нет, но делить приходится редко в 200 с хвостиком раз реже, чем возводить в квадрат и складывать.Но .. такой алгоритм без проблем работал и на аттини26, в которой нет аппаратного умножения.


добавлено: 17-12-2019, 10:55:53

Настройку произвожу переменным многооборотные резистором в цепи делителя измеряемого напряжения. Настраиваю 50% и кручу до тех пор, пока true rns  вольтметр не покажет 155,6 вольт. Потом проверяю при заданиях 20% и 80%. Если наблюдаю не 98,4 и 196,8 вольт соответственно, подстройку повторяю.
« Последнее редактирование: 17-12-2019, 10:57:01 от Игорь »
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн vadiv

  • Мастер
  • ****
  • Сообщений: 979
  • Спасибо
  • -Отправлено: 2
  • -Получено: 178
  • Мы в ответе за тех, кого напоили
В Atmege8 кажись аппаратное умножение только  8 и 16 бит. ...

Но .. такой алгоритм без проблем работал и на аттини26, в которой нет аппаратного умножения.
Ну там наверно не 20000 измерений в секунду (И на Atmege наверно 10000 измерений в секунду).

Посмотрите в сторону STM32.

На stm32 реализовать можно намного проще - 1 таймер, 1 канал DMA, 1 канал АЦП для одной фазы (можно спокойно делать трехфазный "РМ". Старт измерений, отсчеты таймера, измерения АЦП, сохранение промежуточных измерений -все без прерываний и "загрузки процессора". И это все 32 битные числа.



Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 16201
  • Спасибо
  • -Отправлено: 1116
  • -Получено: 10177
  • Думи мої думи...
    • Каптерка
По количеству измерений не помню - надо посмотреть исходник. Кажется я таки наврал. Там больше 2 сотен замеров, не помню только это за период или за полупериод.
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн mekkaodАвтор темы

  • Мастер
  • ****
  • Сообщений: 787
  • Спасибо
  • -Отправлено: 74
  • -Получено: 549
  • Одесса, не торопясь
всё же мне кажется, что вы сильно заморачиваетесь темой с точностью измерения, особенно с его многократностью.
этот сезон я отработал на БРУ с тремя своими самопальными РМ-ками.
управляемость и повторяемость - без нареканий, при том что напряжение питания в течении дня меняется +30, -50 Вольт.
дача, у соседей кондиционеры, насосы, старые холодильники, а ещё сварка и т.п.

при этом я измеряю напряжение всего один! раз за период 10 битным АЦП, из которых мелкие два можно попросту игнорировать из-за шумов.
вообще не парюсь по поводу "истинной" мощности, для меня главное стабильность установленной и отклик давления.
и если у меня на непрерывке 24 часа не меняется давление в трубе - значит мощность поддерживается постоянной.
в случае с кубовым процессом , та же картина, выставляешь мощность по давлению вначале процесса, от неё , теплопотерь и температуры в кубе считаешь скорости отбора, а за давлением только наблюдаешь.


Оффлайн vadiv

  • Мастер
  • ****
  • Сообщений: 979
  • Спасибо
  • -Отправлено: 2
  • -Получено: 178
  • Мы в ответе за тех, кого напоили
всё же мне кажется, что вы сильно заморачиваетесь темой с точностью измерения, особенно с его многократностью.
Это не "заморочки". Кое где алгоритм и схема используются и в других "приложениях" (У меня например  фазовое регулирование необходимо в ПИД регуляторе, а там желательно поддерживать на выходе точность 1 градус в диапазоне до 280 градусов). "Загрубить" всегда проще.
Ну и опять же, тут дело в  "личных ощущениях" .