27 МОСКОВСКАЯ ВСТРЕЧА
Форум самогонщиков Сайт Барахолка Магазин 27 МОСКОВСКАЯ ВСТРЕЧА

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

Форум самогонщиков Автоматика
1 ... 31 32 33 34 35 36 37 ... 58 34
Tomat7 Магистр Черноморская губинния 236 138
Отв.660  17 Апр. 18, 17:17
Может кому и пригодится...

Когда начинал делать регулятор собрал сначала по соответствующей схеме регулятор напряжения, а затем и регулятор тока на ASC712. Также перепробовал разные скетчи, и в итоге остановился на регуляторе тока - как мне показалось он работал точнее, но это было до ноябрьского изменения алгоритма. Увидев положительные отзывы об обновленном регуляторе напряжения решил попробовать его еще раз, благо модуль с трансформатором, выпрямителем и прочей обвязкой не был закинут сильно далеко. Всё заработало прекрасно. И тут захотелось "скрестить ужа с ежом" - то есть в одном устройстве совместить регулятор напряжения и тока получив регулятор мощности.

Прикладываю схему - от той, что в шапке темы отличается только тем, что в ней совмещены и модуль измерителя тока и модуль напряжения на одном листе.
Также в приложенном файле библиотека с двумя примерами.
В среду разработки Arduino библиотека добавляется как и другие библиотеки из zip-файла: меню Sketch->Include Library->Add .ZIP Library...
После установки библиотеки должны появится два пример: меню File->Examples->ACpower->...
Библиотека с примерами также доступна здесь - https://github.com/Tomat7/ACpower.

Внимание!
В отличие от оригинального скетча от Sebra, значение мощности задаётся через Serial порт в виде SPxxxx!
Где хххx значение от 0 до максимальной мощности заданной при компиляции скетча, в ответ в Serial выдаются текущие параметры.

Спасибо Sebra за обновленный алгоритм регулятора напряжения.
Также благодарю ChatterBox - следы его алгоритма регулятора тока всё можно рассмотреть в коде.  ;D

Дополнение от 23.04.2018!
Библиотека обновлена [сообщение #13295823]
Добавлена возможность задать пины всех используемых сигналов (детектор "0", триак, датчик тока, датчик напряжения).
Также при инициализации библиотеки можно указать тип датчика тока.
https://github.com/Tomat7/ACpower/tree/experimental
ACpower2.jpg
ACpower2.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

ACpower.zip 10.1 Кб
Rtehnik Доктор наук Барнаул 552 162
Отв.661  18 Апр. 18, 10:22
Вот бы ещё версию с дисплеем и кнопками (энкодером)!
сообщения удалены (6)
Tomat7 Магистр Черноморская губинния 236 138
Отв.662  18 Апр. 18, 14:10
чем lcd ухудшает функционал?
В самом общем случае, тем что жрет ресурсы. Был очень удивлен когда увидел что вроде безобидная библиотека работы с OLED дисплеем тратит несколько миллисекунд на вывод строки на экран. Хоть в регуляторе и сделано всё на прерываниях, и производительности вроде с запасом, но всё равно возможны варианты.  Строит глазки

Сам использую регулятор в котором LCD, энкодер, OneWire с DS18B20, и еще Modbus с Ethernet'ом впридачу - и всё это вместе даже как-то работает. Но когда у меня при отладке библиотеки регулятора появлялись хоть малейшие глюки я первым делом отцеплял всю эту телегу. Поэтому я понимаю о чем пишет m16, да и Sebra про это писал [сообщение #13199451]

Вот бы ещё версию с дисплеем и кнопками (энкодером)!
В примерах, которые идут вместе с библиотекой есть версия с LCD.

Версия с энкодером есть здесь [сообщение #13229034] - mb-AC-004.zip, но там очень много лишнего и нужна библиотека ReadDigKey.zip отсюда [сообщение #13000957] . (есть вероятность что зависнет при старте если не обнаружит Ethernet модуля, хотя с версией под w5100 не должен) Можешь попробовать хоть сейчас. Сразу после старта регулятор ожидает удаленного управления, для перехода на местное управление нужно выполнить долгое нажатие на кнопку энкодера. После этого вращением энкодера можно выбрать нужную мощность и коротким нажатием установить её. Управление по Serial доступно сразу после старта. Длительное нажатие на кнопку энкодера устанавливает мощность в "0" и переключает регулятор между местным и удаленным управлением.

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

У меня стабилизированный регулятор напряженияRtehnik, 18 Апр. 18, 14:06
Какой именно? Дай полное имя файла или ссылку. Могу попробовать конкретный скетч переделать под библиотеку регулятора мощности.
Rtehnik Доктор наук Барнаул 552 162
Отв.663  18 Апр. 18, 14:54, через 45 мин
У меня устройство из шапки "ВЕРСИИ С СЕМИСЕГМЕНТНЫМ ИНДИКАТОРОМ НА СДВИГОВЫХ РЕГИСТРАХ 74HC595:" с кнопками, версия скетча старая, которая измеряет напряжение в сети до симистора. Это устройство переделывать не буду, максимум обновлю до последней версии.

Твой регулятор мощности буду собирать отдельно. На данный момент дома есть все детали кроме модуля i2c (а можно дисплей без него подключить?) и энкодера. 
Очень бы хотелось полную схему подключений элементов к ардуине (хотя и так должен разобраться), и скеч без необходимости переделок внутри него.
Tomat7 Магистр Черноморская губинния 236 138
Отв.664  18 Апр. 18, 15:15, через 21 мин
кроме модуля i2c (а можно дисплей без него подключить?)Rtehnik, 18 Апр. 18, 14:54
Наверное можно, но я так не делал.
и энкодера.
Ты с энокдером собирать будешь или с кнопками?

Я бы так делал:
1) собрал регулятор напряжения (с LCD или без, с кнопками или энокдером - не важно) и проверил его с соответствующим скетчем из шапки этой темы;
2) переключил выход модуля напряжения на A0 и собрал регулятор тока с ACS712 на A1 и проверил его с соответствующим скетчем из шапки;
3) залил скетч из примеров регулятора мощности и убедился в его работоспосбности управляя по Serial;

Если с пунктом 3 будет всё ОК, сообщи имя твоего "любимого" скетча, (с кнопками или энкодером) и я попробую переделать его под свою библиотеку.
Rtehnik Доктор наук Барнаул 552 162
Отв.665  18 Апр. 18, 15:18, через 3 мин
👌, по готовности сообщу. Не позже чем в воскресенье.
m16 Модератор Тамбов 1.9K 1K
Отв.666  18 Апр. 18, 16:16, через 59 мин
А дайте ссылочку пожалуйстаkillboss, 18 Апр. 18, 13:44
    свою автоматику я не выкладывал поскольку сложна в повторении. я говорю о концепции - РМ должен быть в виде отдельного узла с внешним управлением не важно с каким интерфейсом . у меня ,например, РМ  управляется pwm сигналом  обратная связь дискретная - напряжение в норме/аварии. как правильно заметил Tomat7 - не хрен  загружать проц всякой ерундой ему rms считать нужно. а ерунда заключается в использовании чужих либ  кривых и не очень.

    это всё лирика. есть более интересные моменты :
- кто нибудь пользует вачдог?
- в ваших ардуинах прошит фуз CKPOT?
Rtehnik Доктор наук Барнаул 552 162
Отв.667  22 Апр. 18, 19:08
Ну, вобщем на фото что у меня получилось.

Скетчи использовал из шапки, которые с семисегментным индикатором и двумя кнопками.

Если на регуляторе тока или напряжения выставить цифры больше чем имеется в сети, то через несколько секунд наряжение на выходе регулятора пропадает. Помогает только перезагрузка.

Регулятор мощности кажет неверные данные, вероятно из за неправильно коэффициента датчика тока. Где изменить к сожалению не нашол. Я использую на 30а.

При изготовлении регулятора напряжения с нуля, для калибровки нужно сначала припаять провод трансформатора до симистора, откалибровать, а потом перепаять после симмистора. Минут десять в ступоре был Улыбающийся
E2DA8F9E-5103-47A4-ADB5-997BE558ACB6.jpeg
E2DA8F9E-5103-47A4-ADB5-997BE558ACB6.jpeg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
0749AE21-B52A-439E-896B-8F797069FF9E.jpeg
0749AE21-B52A-439E-896B-8F797069FF9E.jpeg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Tomat7 Магистр Черноморская губинния 236 138
Отв.668  22 Апр. 18, 20:13
сначала припаять провод трансформатора до симистораRtehnik, 22 Апр. 18, 19:08
Если регулятор собран корректно, то есть видно что он адекватно реагирует на команды с кнопок/энкодера/Serial, то можно просто дать ему "команду" установить 220 вольт и смотреть вольтметром что он там выдает. При этом можно/нужно подкручивать резистор чтобы измерения вольтметра совпадали с тем что намеряла Ардуина.

вероятно из за неправильно коэффициента датчика тока. Где изменить к сожалению не нашол.
// Коэффициент датчика ACS712 |5А - 0.024414063 | 20А - 0.048828125 | 30A - 0.073242188 |
 
Rtehnik Доктор наук Барнаул 552 162
Отв.669  23 Апр. 18, 04:13
дать ему "команду" установить 220 вольт и смотреть вольтметром что он там выдаетTomat7, 22 Апр. 18, 20:13
Но вероятно при этом на выходе будет резаная синусоида и подтебуется среднеквадратичный вольтметр? Хотя не суть...
// Коэффициент датчика ACS712 |5А - 0.024414063 | 20А - 0.048828125 | 30A - 0.073242188 |Tomat7, 22 Апр. 18, 20:13
В сетче sebra я нашёл где изменить, а вот в твоём не нашёл Грустный
Скрытый текст// ** ВНИМАНИЕ ** будьте аккуратны - высокое напряжение опасно для жизни!

#define SKETCHVERSION __FILE__ " " __DATE__ " " __TIME__
#define MAXPOWER 3000
#define SERIALSPEED 115200
#define SHOWINTERVAL 1000
#include "ACpower.h"

/*
 Вход с детектора нуля - D3
 Выход на триак - D5
 Аналоговый вход с датчика тока - A1 (ACS712)
 Аналоговый вход с датчика напряжения - A0 (трансформатор с обвязкой подлюченный к ВЫХОДУ триака)
*/

// все подробности [Регулятор напряжения и тока на Arduino Pro Mini]

// каждую секунду в COM-порт выдается текущая и установленная мощность
// (при отсутствии нагрузки может выдавать ерунду Улыбающийся
// для установки необходимой мощности нужно в COM-порт "дать команду" SPxxxx,
// где xxxx мощность в ваттах


uint16_t inst_P = 0;
unsigned long msShow = 0;
String T1, Var;

ACpower TEH(MAXPOWER);      // регулятор не позволит установить мощность больше чем MAXPOWER

void setup()
{
 Serial.begin(SERIALSPEED);
 TEH.init();   
 delay(3000);
 Serial.println(F(SKETCHVERSION));
}

void loop()
{
 TEH.control();
 if ((millis() - msShow) > SHOWINTERVAL)
 {
   chkSerial();
   showInfo();
   msShow = millis();
 }
}

void showInfo()
{
 Serial.print("Pnow=");
 Serial.println(TEH.Pnow);
 Serial.print("Pset=");
 Serial.println(TEH.Pset);
 //Serial.print("Unow=");
 //Serial.println(TEH.Unow);
 //Serial.print("Inow=");
 //Serial.println(TEH.Inow);
}

void chkSerial() {
 while (Serial.available()) //Serial port, пока не конец сообщения, читаем данные и формируем строку
 {
   char ch = Serial.read();
   Var += ch;
   if (ch == '\n')
   {
     if (Var.substring(0, 2) == "SP")
     {
       T1 = Var.substring(Var.indexOf("SP", 2) + 3); //команда
       inst_P = T1.toFloat();          //Выставленная мощность с Serial
       TEH.setpower(inst_P);
       Var = "";
     }
   }
 }
}
Tomat7 Магистр Черноморская губинния 236 138
Отв.670  23 Апр. 18, 07:59
В сетче sebra я нашёл где изменить, а вот в твоём не нашёлRtehnik, 23 Апр. 18, 04:13
Упс! Этот параметр зашит в библиотеке. Вчера запилил версию со всеми конфигурационными параметрами задаваемыми из скетча. (в прищепке. там же и примеры)
В этой версии немного изменён алгоритм. Долго еще не гонял, только вчера вечером пару часов. Сегодня успел сравнить с показаниями ваттметров - они показывают на 50-100 ватт больше чем меряет регулятор. Причем если раньше показания между ними различались на 100-150 ватт и регулятор показавал что-то среднее между ними, то теперь оба ваттметра показывают больше регулятора. Возможно из-за алгоритма, вечером буду разбираться.
Непонимающий
Но вероятно при этом на выходе будет резаная синусоида
Ну если в сети 220 и на выходе регулятора примерно столько же, то она не сильно подрезанная будет.  ;)

Обновление 23.04.2018 19:15!
Исправлено расхождение с показаниями других приборов - теперь регулятор показывает среднее между двумя "независимыми" ваттметрами.
Фотка сделана когда на регуляторе было установлено 2000 ватт, а нагрузкой был 3 кВт ТЭН. Приложенный файл обновлен.
https://github.com/Tomat7/ACpower
IMG_20180423_190931.jpg
IMG_20180423_190931.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

ACpower.zip 237.0 Кб
Rtehnik Доктор наук Барнаул 552 162
Отв.671  23 Апр. 18, 09:47
не сильно подрезанная будетTomat7, 23 Апр. 18, 07:59
Ну мы же префекционисты Подмигивающий

Вечером протестирую скеч
Tomat7 Магистр Черноморская губинния 236 138
Отв.672  23 Апр. 18, 09:57, через 10 мин
Вечером протестирую скечRtehnik, 23 Апр. 18, 09:47
Если есть возможность сверь с ваттметром - этот расколбас показаний меня сильно напряг и хочется набрать статистику.
Мы же перфекционисты  ;)
killboss Студент Пермский край 33 6
Отв.673  23 Апр. 18, 10:24, через 28 мин
Доброго времени. Собрал модуль 3 в 1. теристор, детектор нуля, и датчики I и U.
Рисунок ПП доработал с соседней ветки.
А для такого исполнения можно скетч доработать?

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

А на семисегментный индикатор без сдвиговых регистров ни как не вывести?
Автоматику собирать пока не планировал.
0-021.jpg
0-021.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Tomat7 Магистр Черноморская губинния 236 138
Отв.674  23 Апр. 18, 11:11, через 47 мин
А для такого исполнения можно скетч доработать?killboss, 23 Апр. 18, 10:24
С каким скетчем проверял работу регулятора тока и регулятора напряжения?

Судя по фотке у тебя датчик тока не на ACS712. Если так, то тут может быть загвоздка.  :(
Хотя... глянул скетчи, выходит что достаточно коэффициент нужный установить и всё.

В общем - любой скетч можно "доработать".

killboss Студент Пермский край 33 6
Отв.675  23 Апр. 18, 11:48, через 38 мин
С каким скетчем проверял работу регулятора тока и регулятора напряжения?Tomat7, 23 Апр. 18, 11:11

Те что в шапке от автора
 
Разлет по току 100-150 мА( на нагрузке до 0,85 А- 200ват лампочка.) После 1000 Ватn по току все четко. токовый транс у меня из счетчика электроэнергии 3х-фазного трансформаторного включения с коэфф  1:2500  TZ77V.
По напряжению разлета практически нет 10-20В

0-03.jpg
0-03.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Tomat7 Магистр Черноморская губинния 236 138
Отв.676  23 Апр. 18, 12:03, через 15 мин
Те что в шапке от автораkillboss, 23 Апр. 18, 11:48
В архивах шапки скетчей с десяток. Сообщи имена файлов скетчей регулятора тока и регулятора напряжения с которыми проверял.
В регуляторе тока коэффициент подбирал или использовал тот что был в скетче?
killboss Студент Пермский край 33 6
Отв.677  23 Апр. 18, 12:10, через 7 мин
С каким скетчем проверял работу регулятора тока и регулятора напряжения?Tomat7, 23 Апр. 18, 11:11

I_regulator_free_Current
U_regulator_free
В регуляторе тока коэффициент использовал тот что был в скетче.
Tomat7 Магистр Черноморская губинния 236 138
Отв.678  23 Апр. 18, 15:08
В регуляторе тока коэффициент использовал тот что был в скетче.killboss, 23 Апр. 18, 12:10
Отлично! Забирай ACpower.zip отсюда [сообщение #13295823] - я его только что перезалил.
Установи его как библиотеку в среду разработки Ардуино.
В примерах найди ACpower->ACpower-mini01 и открывай.
В скетче найди строку TEH.init(20) и закоментируй её.
Ниже нее будет строка которая нужна тебе TEH.init(0.029, 1) вот ее раскоменти и можно компилить и заливать.
Пожалуйста, сообщи о результате.
lib1.JPG
lib1.JPG Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Rtehnik Доктор наук Барнаул 552 162
Отв.679  23 Апр. 18, 17:19
Произвёл измерения, в общем всё неплохо.

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

Результаты в таблице. Напряжения практически соответствуют, а ток программа немного занижает. Хотя это может и клещи завышают, но вчера на скетче из шапки ток клещей и регулятор тока был практически один в один.
D283D6AB-7ABE-4435-988E-E50F65F54B18.jpeg
D283D6AB-7ABE-4435-988E-E50F65F54B18.jpeg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.