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

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

Форум самогонщиков Вопросы по электр(он)ике
1 ... 173 174 175 176 177 178 176
Kuban Доктор наук Краснодар 623 494
Отв.3500  25 Сент. 25, 00:05
Суть сборки самовара на плате расширения состоит в следующем (на примере датчиков температуры):
Берем голую ESP подключаем по USB к компу, прошиваем, загоняем ее в свою WiFi сеть и в итоге видим на мониторе компа WEB-интерфейс без данных с датчиков. Устанавливаем в плату расширения, подает питание на разъем платы расширения от 6.5 до 12 вольт. Включаем. Снова видим интерфейс.
Теперь нужно подключить датчики 18B20. Каждый датчик, подключается к ESP тремя проводами. Но поскольку датчики цифровые все провода от всех датчиков сходятся вместе.
Т.е допустим у вас 5 датчиков. На каждый придет GND, +3,3 вольта от ESP32 и от каждого должен прийти сигнал на пин D5. Где вы это соедините - не имеет значения. Важен электрический контакт. Либо от каждого датчика потяните провод в корпус с ESP и там соедините на разьемах, либо потяните 1 провод с тремя жилами на колонну и все датчики соедините там.
Но по схеме присутствие резистор подтяжки по питанию 4,7 ком. Между +3,3 вольта и D5. Его можно поставить где угодно, в том числе и на колонне, это будет работать, но это не правильно. Резистор нужно ставить на плате расширения или на разьемах корпуса.
Если на плате расширения, то... к штырькам платы расширения напротив вывода D5 будет припаян резистор 4,7 и 1 провод от датчиков, который потом разветвится на 5 датчиков.
Надеюсь понятно. Улыбающийся
Sanuch55 Новичок Москва 8
Отв.3501  25 Сент. 25, 00:14 (через 9 мин)
Kuban,
Да, это понятно. Основную пайку планирую делать на простой монтажной плате.
У меня вопрос в другом был. В описании с сайта проекта samovar-tool 4 конденсатора и 4 резистора, на схеме-картинке только 2 резистора.
Может я не правильно объясняю, прошу прощения.
Kuban Доктор наук Краснодар 623 494
Отв.3502  25 Сент. 25, 00:15 (через 2 мин)
Смотрел, как раз после просмотра и возникли вопросы, потому что на этой схеме
Конденсаторов и двух резисторов нет.Sanuch55, 24 Сент. 25, 23:41
Э... так не пойдет. Никто не будет считать резисторы и конденсаторы на разных версиях схем.
Хотите предметно спросить - спрашивайте: нужен ли резистор(конденсатор) на выводе таком-то.
И вообще самая полная схема находится в каталоге Fritzing scheme в каждом релизе Самовара

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

Сайт давно не обновлялся. Самая свежая информация будет на форуме, в руководстве пользователя и в руководстве по сборке. (руководства пока в стадии наполнения- но основное есть).
Sanuch55 Новичок Москва 8
Отв.3503  25 Сент. 25, 00:44 (через 30 мин)
Kuban,
Спасибо!
Скачаю релиз, буду разбираться. Может и вопросы тогда все отпадут.
dranek Доктор наук Минск 510 466
Отв.3504  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_ Магистр Липецк 212 123
Отв.3505  25 Сент. 25, 22:49
Привет.
Обнаружил еще одно полезное применение для Самовара.
Потребовалось срочно приготовить настойку на сушеной вишне. Обычно она настаивается от 2 недель, но протормозил вовремя поставить и времени не было.
Поставил банки в куб с водой, в котором в режиме "пиво" поддерживалась температура 45 градусов.
Предположил, что при такой температуре компот гарантированно не наварится, при этом экстракция должна идти существенно быстрее. Через двое суток цвет уже был насыщеннее, чем через неделю обычного настаивания, через 4 суток все было готово.
Затем я это перегоняю на НБК к 40% и получается чудесная мягчайшая водочка с вишневым ароматом и послевкусием.
gxtkjdjl Профессор Архангельск 8.4K 2.2K
Отв.3506  26 Сент. 25, 11:31
Затем я это перегоняю на НБК к 40%Chernik_, 25 Сент. 25, 22:49
Chernik_, какая крепость перед перегоном?
сообщение удалено
Chernik_ Магистр Липецк 212 123
Отв.3507  26 Сент. 25, 14:53
Chernik_, какая крепость перед перегоном?gxtkjdjl, 26 Сент. 25, 11:31
Разбавляю до примерно 12. С этой навалки что будет дальше уже понятно и откалибровано.
gxtkjdjl Профессор Архангельск 8.4K 2.2K
Отв.3508  26 Сент. 25, 15:09 (через 17 мин)
Разбавляю до примерно 12Chernik_, 26 Сент. 25, 14:53
делал так же типа джин 1 раз и ндрф дистиллировал-норм.
Kuban Доктор наук Краснодар 623 494
Отв.3509  26 Сент. 25, 17:18
Затем я это перегоняю на НБК к 40% и получается чудесная мягчайшая водочка с вишневым ароматом и послевкусием.Chernik_, 25 Сент. 25, 22:49
Chernik_, собственно вопрос: а почему на НБК? Судя по технологии это настойка на спирту, хоть на 12, хоть на 40% все равно это спирт. Почему просто не перегоняете, как дистилляцию до 40 в приемной емкости? Ведь дрожжей там нет и развариться нечему. Почему именно НБК.
Вопрос не праздный и без подкола Улыбающийся. Интересует опыт прошедших путь, от и до ... .
gxtkjdjl Профессор Архангельск 8.4K 2.2K
Отв.3510  26 Сент. 25, 17:42 (через 24 мин)
Почему именно НБКKuban, 26 Сент. 25, 17:18
на нбк пролетает быстро, компотных тонов нет. у меня опыт не большой но читал в теме за джин и мутнеет при разбавлении нже 47 и тряпки идут при перегонке,в кубе, на нбк такого нет, выставил 40,(38, 45 и.т.д)так и будет пока сырьё не закончился. опытные тут тут и здесь свои опыты описывали.
Chernik_ Магистр Липецк 212 123
Отв.3511  26 Сент. 25, 18:20 (через 38 мин)
Коллега всеобъемлюще про компот ответил. Ну и плюс чисто для меня прикольнее с НБК повозиться. Потери отсутствуют опять же.
Добавлю небольшое размышление. При дистилляции скажем 50% настойки сначала идёт очень крепкий продукт, затем, чтобы довести все до 40%, мы должны гнать грубо до 10% в струе. То есть в процессе дистилляции мы все равно несколько утрируя смешиваем спирт с водой. Такого идеального соединения спирта с водой непосредственно при конденсации из паровой фазы до нужной крепости, которое происходит в НБК, не получается. Берусь утверждать, что после НБК напиток сразу получается мягче, чем после дистилляции.
Toljnuch Бакалавр Сочи 77
Отв.3512  26 Сент. 25, 19:33
Там есть и про резисторыKuban, 24 Сент. 25, 23:34
плата полностью распаяна со всеми резисторами и т.д.

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

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

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

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

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

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

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

Посоветуйте, какой регулятор для работы с Самоваром самый удачный ?Toljnuch, 26 Сент. 25, 20:00
Самый лучший регулятор это KVIc, но у него до сих пор есть проблемы которые надеюсь будут решены.
На сегодняшний день купите РМВК, обвязку сделаете сами. Забудете о проблеме регулятора лет на 5.
Toljnuch Бакалавр Сочи 77
Отв.3518  26 Сент. 25, 20:44 (через 16 мин)
Тут поподробней. Какое питание, к какому питанию?
Вам уже писали 0.35В это нормально. Соответствует логическому нулю.dranek, 26 Сент. 25, 20:25
Я тогда не знаю как объясниться. Два реле в наличии и оба срабатывают от 0,35в
Chernik_ Магистр Липецк 212 123
Отв.3519  26 Сент. 25, 22:13
Самый лучший регулятор это KVIc, но у него до сих пор есть проблемы которые надеюсь будут решены.Kuban, 26 Сент. 25, 20:28
Я небольшой спец во всякой схемотехнике, просто интересно, почему такое однозначное предпочтение KVIc перед SEM-avr из китайских модулей. Работает SEM-avr у меня уже года 3 без единой проблемы, думал, что лучше и не надо. Твое мнение прямо глаз зацепило. Поскольку ты в электронике для меня авторитет, пожалуйста, если несложно, почему так.