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

Автоматика Самовар

Форум самогонщиков Вопросы по электр(он)ике
1 ... 173 174 175 176 177 178 179 180 176
dranek Доктор наук Минск 526 490
Отв.3500  25 Сент. 25, 11:22
Petrix1, мне все таки думается, что управление через rs-482 предпочтительней. А есть ли гальваническая развязка на приемнике шим сигнала? Скорей всего нету, обычно это забота управляющего контроллера. У меня есть небольшой частотник для шпинделя станка, управляю шимом, но там контроллер по другому просто не умеет и утыкан весь оптопарами. Modbus не так и страшен. Попросил ИИ написать скетч для управления моим частотником с возможностью подбора регистров и адреса частотника. Вот, что он выдал:

Вот модуль для UART-RS485 адаптера и Web-интерфейс для отладки.
---

1. Библиотека ModbusMaster

Установка через Arduino IDE:

1. Скетч → Include Library → Manage Libraries
2. Поиск: "ModbusMaster" by 4-20ma
3. Установить версию 2.0.1

2. Модуль для UART-RS485

```cpp
#include <ModbusMaster.h>
#include <WiFi.h>
#include <WebServer.h>

// Настройки WiFi
const char* ssid = "CNC_Controller";
const char* password = "12345678";

WebServer server(80);

// Modbus объект
ModbusMaster inverter;

// Переменные для настройки
int modbusAddress = 10;
int baudRate = 9600;
int registerWriteAddr = 0x2000;
int registerReadAddr = 0x3000;
int frequencyRegister = 0x2001;

void setup() {
Serial.begin(115200);

// Запуск WiFi в режиме точки доступа
WiFi.softAP(ssid, password);
Serial.print("AP IP address: ");
Serial.println(WiFi.softAPIP());

// Инициализация Modbus на Serial1
Serial1.begin(baudRate, SERIAL_8N1, 16, 17); // RX=16, TX=17 ESP32
inverter.begin(modbusAddress, Serial1);

// Настройка endpoints Web-сервера
server.on("/", handleRoot);
server.on("/set", handleSet);
server.on("/read", handleRead);
server.on("/config", handleConfig);
server.begin();

Serial.println("Web server started");
}

void handleRoot() {
String html = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
<title>CNC Inverter Controller</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: Arial; margin: 20px; }
.card { background: #f0f0f0; padding: 15px; margin: 10px 0; border-radius: 5px; }
input, button { padding: 8px; margin: 5px; }
.status { color: green; font-weight: bold; }
.error { color: red; }
</style>
</head>
<body>
<h1>Управление инвертором YL620</h1>

<div class="card">
<h3>Быстрое управление</h3>
<button onclick="sendCommand('start')">START</button>
<button onclick="sendCommand('stop')">STOP</button>
<br>
Мощность: <input type="number" id="power" min="0" max="100" value="50">%
<button onclick="setPower()">Установить</button>
</div>

<div class="card">
<h3>Ручная отправка Modbus</h3>
Адрес: <input type="number" id="regAddr" value="2000" min="0" max="65535">
Значение: <input type="number" id="regValue" value="1">
<button onclick="writeRegister()">Write</button>
<button onclick="readRegister()">Read</button>
<br>
Результат: <span id="result">-</span>
</div>

<div class="card">
<h3>Настройки связи</h3>
Адрес устройства: <input type="number" id="mbAddr" value="10">
Скорость:
<select id="baud">
<option value="1200">1200</option>
<option value="2400">2400</option>
<option value="4800">4800</option>
<option value="9600" selected>9600</option>
<option value="19200">19200</option>
<option value="38400">38400</option>
</select>
<button onclick="saveConfig()">Сохранить</button>
</div>

<div id="status"></div>

<script>
function sendCommand(cmd) {
fetch('/set?cmd=' + cmd)
.then(r => r.text())
.then(t => document.getElementById('status').innerHTML = t);
}

function setPower() {
let power = document.getElementById('power').value;
fetch('/set?cmd=power&value=' + power)
.then(r => r.text())
.then(t => document.getElementById('status').innerHTML = t);
}

function writeRegister() {
let addr = document.getElementById('regAddr').value;
let value = document.getElementById('regValue').value;
fetch('/set?cmd=write&addr=' + addr + '&value=' + value)
.then(r => r.text())
.then(t => document.getElementById('result').innerHTML = t);
}

function readRegister() {
let addr = document.getElementById('regAddr').value;
fetch('/read?addr=' + addr)
.then(r => r.text())
.then(t => document.getElementById('result').innerHTML = t);
}

function saveConfig() {
let addr = document.getElementById('mbAddr').value;
let baud = document.getElementById('baud').value;
fetch('/config?addr=' + addr + '&baud=' + baud)
.then(r => r.text())
.then(t => document.getElementById('status').innerHTML = t);
}
</script>
</body>
</html>
)rawliteral";

server.send(200, "text/html", html);
}

void handleSet() {
String cmd = server.arg("cmd");
String response = "";

if (cmd == "start") {
response = startInverter() ? "Инвертор запущен" : "Ошибка запуска";
}
else if (cmd == "stop") {
response = stopInverter() ? "Инвертор остановлен" : "Ошибка остановки";
}
else if (cmd == "power") {
float power = server.arg("value").toFloat();
response = setPower(power) ? "Мощность установлена: " + String(power) + "%" : "Ошибка";
}
else if (cmd == "write") {
int addr = server.arg("addr").toInt();
int value = server.arg("value").toInt();
response = writeRegister(addr, value) ? "Write OK" : "Write FAIL";
}

server.send(200, "text/plain", response);
}

void handleRead() {
int addr = server.arg("addr").toInt();
uint16_t value = readRegister(addr);
server.send(200, "text/plain", String(value));
}

void handleConfig() {
modbusAddress = server.arg("addr").toInt();
baudRate = server.arg("baud").toInt();

// Переинициализация Modbus с новыми параметрами
Serial1.updateBaudRate(baudRate);
inverter.begin(modbusAddress, Serial1);

server.send(200, "text/plain", "Конфигурация сохранена");
}

bool startInverter() {
uint8_t result = inverter.writeSingleRegister(registerWriteAddr, 0x0001);
return (result == inverter.ku8MBSuccess);
}

bool stopInverter() {
uint8_t result = inverter.writeSingleRegister(registerWriteAddr, 0x0000);
return (result == inverter.ku8MBSuccess);
}

bool setPower(float percent) {
float freq = 50.0 * (percent / 100.0);
uint16_t value = freq * 100; // 0.01 Гц
uint8_t result = inverter.writeSingleRegister(frequencyRegister, value);
return (result == inverter.ku8MBSuccess);
}

bool writeRegister(int addr, int value) {
uint8_t result = inverter.writeSingleRegister(addr, value);
return (result == inverter.ku8MBSuccess);
}

uint16_t readRegister(int addr) {
uint8_t result = inverter.readHoldingRegisters(addr, 1);
if (result == inverter.ku8MBSuccess) {
return inverter.getResponseBuffer(0);
}
return 0xFFFF;
}

void loop() {
server.handleClient();
delay(10);
}
```

---

3. Схема подключения ESP32 к RS-485

```
ESP32:
GPIO16 (RX2) → RO RS-485 адаптера
GPIO17 (TX2) → DI RS-485 адаптера
GND → GND адаптера

RS-485 адаптер:
A → A инвертора (RS-485+)
B → B инвертора (RS-485-)
VCC → 3.3V или 5V ESP32
```

---

4. Функциональность Web-интерфейса

Возможности:

1. Быстрое управление: Старт/Стоп, установка мощности %
2. Ручная работа с регистрами: Любые адреса 0-65535
3. Настройка связи: Адрес устройства, скорость
4. Реальное время: Мгновенное обновление статуса

Типичные регистры для YL620:

// Запись
0x2000 - Управление (1=старт, 0=стоп)
0x2001 - Задание частоты (0-5000 = 0-50.00 Гц)

// Чтение
0x3000 - Текущая частота
0x3001 - Выходной ток
0x3002 - Выходное напряжение
0x3003 - Состояние ошибки
```

---

5. Дополнительные функции для отладки

Добавьте в handleRoot() после основного HTML:

<div class="card">
<h3>Автосканирование регистров</h3>
Начальный адрес: <input type="number" id="scanStart" value="8192">
Количество: <input type="number" id="scanCount" value="10">
<button onclick="scanRegisters()">Сканировать</button>
<pre id="scanResult"></pre>
</div>

<script>
function scanRegisters() {
let start = parseInt(document.getElementById('scanStart').value);
let count = parseInt(document.getElementById('scanCount').value);
let result = "";

for(let i = 0; i < count; i++) {
fetch('/read?addr=' + (start + i))
.then(r => r.text())
.then(t => {
result += "Регистр " + (start + i) + ": " + t + "\n";
document.getElementById('scanResult').innerText = result;
});
}
}
</script>
```

---

6. Настройка инвертора для RS-485

P00.01 = 3 // Управление через Modbus
P03.00 = 5 // 38400 бод (или 3=9600)
P03.01 = 10 // Адрес устройства
P03.02 = 2 // 8N1 (no parity)
```

Запуск:

1. Прошейте ESP32
2. Подключитесь к WiFi CNC_Controller (пароль: 12345678)
3. Откройте в браузере IP адрес (обычно 192.168.4.1)
4. Начинайте отладку!

Теперь вы можете интерактивно подбирать регистры и тестировать управление ТЭНами! 🔥
Использован синхронный веб сервер, поднятие своей точки доступа и.т.п. недостатки, однако можно попробовать прошить esp32 и поотлаживать работу с частотником. В случае успеха перенести управляющий код в Самовар.
сообщение удалено
Chernik_ Магистр Липецк 215 125
Отв.3501  25 Сент. 25, 22:49
Привет.
Обнаружил еще одно полезное применение для Самовара.
Потребовалось срочно приготовить настойку на сушеной вишне. Обычно она настаивается от 2 недель, но протормозил вовремя поставить и времени не было.
Поставил банки в куб с водой, в котором в режиме "пиво" поддерживалась температура 45 градусов.
Предположил, что при такой температуре компот гарантированно не наварится, при этом экстракция должна идти существенно быстрее. Через двое суток цвет уже был насыщеннее, чем через неделю обычного настаивания, через 4 суток все было готово.
Затем я это перегоняю на НБК к 40% и получается чудесная мягчайшая водочка с вишневым ароматом и послевкусием.
gxtkjdjl Профессор Архангельск 8.6K 2.3K
Отв.3502  26 Сент. 25, 11:31
Затем я это перегоняю на НБК к 40%Chernik_, 25 Сент. 25, 22:49
Chernik_, какая крепость перед перегоном?
сообщение удалено
Chernik_ Магистр Липецк 215 125
Отв.3503  26 Сент. 25, 14:53
Chernik_, какая крепость перед перегоном?gxtkjdjl, 26 Сент. 25, 11:31
Разбавляю до примерно 12. С этой навалки что будет дальше уже понятно и откалибровано.
gxtkjdjl Профессор Архангельск 8.6K 2.3K
Отв.3504  26 Сент. 25, 15:09 (через 17 мин)
Разбавляю до примерно 12Chernik_, 26 Сент. 25, 14:53
делал так же типа джин 1 раз и ндрф дистиллировал-норм.
Kuban Доктор наук Краснодар 628 508
Отв.3505  26 Сент. 25, 17:18
Затем я это перегоняю на НБК к 40% и получается чудесная мягчайшая водочка с вишневым ароматом и послевкусием.Chernik_, 25 Сент. 25, 22:49
Chernik_, собственно вопрос: а почему на НБК? Судя по технологии это настойка на спирту, хоть на 12, хоть на 40% все равно это спирт. Почему просто не перегоняете, как дистилляцию до 40 в приемной емкости? Ведь дрожжей там нет и развариться нечему. Почему именно НБК.
Вопрос не праздный и без подкола Улыбающийся. Интересует опыт прошедших путь, от и до ... .
gxtkjdjl Профессор Архангельск 8.6K 2.3K
Отв.3506  26 Сент. 25, 17:42 (через 24 мин)
Почему именно НБКKuban, 26 Сент. 25, 17:18
на нбк пролетает быстро, компотных тонов нет. у меня опыт не большой но читал в теме за джин и мутнеет при разбавлении нже 47 и тряпки идут при перегонке,в кубе, на нбк такого нет, выставил 40,(38, 45 и.т.д)так и будет пока сырьё не закончился. опытные тут тут и здесь свои опыты описывали.
Chernik_ Магистр Липецк 215 125
Отв.3507  26 Сент. 25, 18:20 (через 38 мин)
Коллега всеобъемлюще про компот ответил. Ну и плюс чисто для меня прикольнее с НБК повозиться. Потери отсутствуют опять же.
Добавлю небольшое размышление. При дистилляции скажем 50% настойки сначала идёт очень крепкий продукт, затем, чтобы довести все до 40%, мы должны гнать грубо до 10% в струе. То есть в процессе дистилляции мы все равно несколько утрируя смешиваем спирт с водой. Такого идеального соединения спирта с водой непосредственно при конденсации из паровой фазы до нужной крепости, которое происходит в НБК, не получается. Берусь утверждать, что после НБК напиток сразу получается мягче, чем после дистилляции.
Toljnuch Бакалавр Сочи 77
Отв.3508  26 Сент. 25, 19:33
Там есть и про резисторыKuban, 24 Сент. 25, 23:34
плата полностью распаяна со всеми резисторами и т.д.

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

Фото реле с подведенными проводами. - в студию.Kuban, 24 Сент. 25, 23:34
сложно хорошо сфотать. минус к минусу, питание к питанию, управление сигналом (14pin к среднему из семи контактов на плате. №3) к управлению сигналом на реле . оно и фонит 0,35в и постоянно включает реле

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

Давно забываю написать. Есть 4 платы самовара, отдам по себестоимости если нужно кому. Валяются без дела
Sanuch55 Новичок Москва 8
Отв.3509  26 Сент. 25, 19:55 (через 23 мин)
отдам по себестоимостиToljnuch, 26 Сент. 25, 19:33
готов приобрести одну. Можно в л/с, у меня не получается в личку написать.
Toljnuch Бакалавр Сочи 77
Отв.3510  26 Сент. 25, 20:00 (через 6 мин)
Посоветуйте, какой регулятор для работы с Самоваром самый удачный ? Я собрал который Регулятор Stab-avr из китайских модулей - он почему-то больше 2,5квт у меня не держит, постоянно прыгает то вверх то вниз. Электричество в дом через стабилизатор заходит. И в режиме Пиво не получается с ним. Написал как смог. Спасибо

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

готов приобрести одну. Можно в л/с, у меня не получается в личку написать.Sanuch55, 26 Сент. 25, 19:55
Вроде написал
Sanuch55 Новичок Москва 8
Отв.3511  26 Сент. 25, 20:09 (через 10 мин)
Вроде написалToljnuch, 26 Сент. 25, 20:00
Прочитал, ответы не могу писать - «новичок»). В понедельник в ватсап)
dranek Доктор наук Минск 526 490
Отв.3512  26 Сент. 25, 20:25 (через 16 мин)
сложно хорошо сфотатьToljnuch, 26 Сент. 25, 19:33
Сфотьте нехорошо.
питание к питаниюToljnuch, 26 Сент. 25, 19:33
Тут поподробней. Какое питание, к какому питанию?
Вам уже писали 0.35В это нормально. Соответствует логическому нулю.
какой регулятор для работы с Самоваром самый удачный ?Toljnuch, 26 Сент. 25, 20:00
ИМХО, от dranek. Подмигивающий
Kuban Доктор наук Краснодар 628 508
Отв.3513  26 Сент. 25, 20:28 (через 4 мин)
сложно хорошо сфотать. минус к минусу, питание к питанию, управление сигналом (14pin к среднему из семи контактов на плате. №3) к управлению сигналом на реле . оно и фонит 0,35в и постоянно включает релеToljnuch, 26 Сент. 25, 19:33
Блин... судя по всему дело не не проблеме "хорошо сфоткать".)
Хорошо. Только потому что мы типа земляки. Если хотите запустим ваше оборудование (реле), но не обсуждая это на весь мир. Пишите мне в личку, там обсудим что именно у вас не получается. Второго предложения не будет. От слова "совсем".

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

Посоветуйте, какой регулятор для работы с Самоваром самый удачный ?Toljnuch, 26 Сент. 25, 20:00
Самый лучший регулятор это KVIc, но у него до сих пор есть проблемы которые надеюсь будут решены.
На сегодняшний день купите РМВК, обвязку сделаете сами. Забудете о проблеме регулятора лет на 5.
Toljnuch Бакалавр Сочи 77
Отв.3514  26 Сент. 25, 20:44 (через 16 мин)
Тут поподробней. Какое питание, к какому питанию?
Вам уже писали 0.35В это нормально. Соответствует логическому нулю.dranek, 26 Сент. 25, 20:25
Я тогда не знаю как объясниться. Два реле в наличии и оба срабатывают от 0,35в
Chernik_ Магистр Липецк 215 125
Отв.3515  26 Сент. 25, 22:13
Самый лучший регулятор это KVIc, но у него до сих пор есть проблемы которые надеюсь будут решены.Kuban, 26 Сент. 25, 20:28
Я небольшой спец во всякой схемотехнике, просто интересно, почему такое однозначное предпочтение KVIc перед SEM-avr из китайских модулей. Работает SEM-avr у меня уже года 3 без единой проблемы, думал, что лучше и не надо. Твое мнение прямо глаз зацепило. Поскольку ты в электронике для меня авторитет, пожалуйста, если несложно, почему так.
Kuban Доктор наук Краснодар 628 508
Отв.3516  26 Сент. 25, 22:16 (через 3 мин)
просто интересно, почему такое однозначное предпочтение KVIc перед SEM-avr из китайских модулейChernik_, 26 Сент. 25, 22:13
Да все просто. Лампочки не мигают:)
Chernik_ Магистр Липецк 215 125
Отв.3517  26 Сент. 25, 22:19 (через 4 мин)
Понял. У меня винокурня в гараже на отдельной фазе, поэтому наверное я никаких проблем не вижу. В гараже, правда, тоже в процессе ничего не моргает. Но это может потому что у меня глаз замылен.
Kuban Доктор наук Краснодар 628 508
Отв.3518  26 Сент. 25, 22:42 (через 23 мин)
Да все просто. Лампочки не мигают:)Kuban, 26 Сент. 25, 22:16
Типа пошутил...
Но это в принципе очень существенно. Не стоит оповещать соседей, о том что идет процесс. У меня-то не мигают, а у них могут.
А если серьезно - мне просто не нравится когда твердотельные реле используют как силовые регуляторы на питающей цепи. Потому как реле либо отрыто, либо закрыто. А-ля ШИМ. Моргание неизбежно.
Когда только начал заниматься нашим хобби сразу приобрел РМВк. Обвязал, запустил. Мне понравилась его работа в связке с моей коммутацией ТЭНов. Потом стало интересно и собрал регулятор KVIc. Он понравился еще больше. Чем?
И РМВК и KVIc просты как утюг, прекрасная стабилизация, регулировка и больше ничего. Запускаются "из коробки", ничего вводить не нужно. Обвязал, включил и можно работать. К тому же отлично работают с самоваром. Но KVIc проще для оператора. Это конечно я говорю сегодняшний - после прошедших лет. Для новичка лучше РМВк.
К слову у меня есть и SEM_AVR.
Но попробовав все регуляторы, остановился на KVIc.
Toljnuch Бакалавр Сочи 77
Отв.3519  26 Сент. 25, 23:07 (через 26 мин)
У меня SEM-avr .
такие показания из HOMEASSISTANT без включение самовара и с включенным самоваром. Вход в дом через стабилизатор. Показания ДОМИК ДО СТАБИЛИЦАТОРА. Может это изза ограничения ? Поставили счетчики на столб. Както ограничивают?
IMG_3757.jpg
IMG_3757.jpg Автоматика Самовар. Вопросы по электр(он)ике.
IMG_3758.jpg
IMG_3758.jpg Автоматика Самовар. Вопросы по электр(он)ике.
IMG_3759.jpg
IMG_3759.jpg Автоматика Самовар. Вопросы по электр(он)ике.