Может кому и пригодится...
Когда начинал делать регулятор собрал сначала по соответствующей схеме регулятор напряжения, а затем и регулятор тока на 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
Регулятор напряжения и тока на Arduino Pro Mini
Tomat7
Магистр
Черноморская губинния
236 138
Отв.660 17 Апр. 18, 17:17
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 (а можно дисплей без него подключить?) и энкодера.
Очень бы хотелось полную схему подключений элементов к ардуине (хотя и так должен разобраться), и скеч без необходимости переделок внутри него.
Твой регулятор мощности буду собирать отдельно. На данный момент дома есть все детали кроме модуля 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а.
При изготовлении регулятора напряжения с нуля, для калибровки нужно сначала припаять провод трансформатора до симистора, откалибровать, а потом перепаять после симмистора. Минут десять в ступоре был
Скетчи использовал из шапки, которые с семисегментным индикатором и двумя кнопками.
Если на регуляторе тока или напряжения выставить цифры больше чем имеется в сети, то через несколько секунд наряжение на выходе регулятора пропадает. Помогает только перезагрузка.
Регулятор мощности кажет неверные данные, вероятно из за неправильно коэффициента датчика тока. Где изменить к сожалению не нашол. Я использую на 30а.
При изготовлении регулятора напряжения с нуля, для калибровки нужно сначала припаять провод трансформатора до симистора, откалибровать, а потом перепаять после симмистора. Минут десять в ступоре был
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
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мин.:
А на семисегментный индикатор без сдвиговых регистров ни как не вывести?
Автоматику собирать пока не планировал.
Рисунок ПП доработал с соседней ветки.
А для такого исполнения можно скетч доработать?
Добавлено через 42мин.:
А на семисегментный индикатор без сдвиговых регистров ни как не вывести?
Автоматику собирать пока не планировал.
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В
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) вот ее раскоменти и можно компилить и заливать.
Пожалуйста, сообщи о результате.
Rtehnik
Доктор наук
Барнаул
552 162
Отв.679 23 Апр. 18, 17:19
Произвёл измерения, в общем всё неплохо.
Изначально установил мощность заведомо большую чем нагрузка и синхронизировал показания мультиметра с показаниями монитора порта.
Результаты в таблице. Напряжения практически соответствуют, а ток программа немного занижает. Хотя это может и клещи завышают, но вчера на скетче из шапки ток клещей и регулятор тока был практически один в один.
Изначально установил мощность заведомо большую чем нагрузка и синхронизировал показания мультиметра с показаниями монитора порта.
Результаты в таблице. Напряжения практически соответствуют, а ток программа немного занижает. Хотя это может и клещи завышают, но вчера на скетче из шапки ток клещей и регулятор тока был практически один в один.