sensors
This commit is contained in:
parent
ae4f024b16
commit
24679cf743
41
balance.md
Normal file
41
balance.md
Normal file
@ -0,0 +1,41 @@
|
||||
## Технологическая карта: Первая параллельная балансировка массива АКБ 48В
|
||||
|
||||
## ⚠️ Важное предупреждение (Физика процесса)
|
||||
Каждый литиевый блок имеет емкость 100 А·ч и способен отдать в режиме КЗ колоссальный ток. Если соединить блоки с разным уровнем заряда (разницей более 0.5 В) напрямую толстой медной шиной ШМТ или кабелем 50 мм², возникнет мощный уравнительный ток (сотни ампер). Это приведет к сильной дуге, выгоранию клемм М8 и необратимому повреждению плат встроенных BMS.
|
||||
|
||||
------------------------------
|
||||
## Шаг 1. Подготовка и входной контроль
|
||||
|
||||
1. Разложите все 8 блоков POWERWIN на перфорированные профили ящика ВРУ в их штатные места.
|
||||
2. Важно: Главные медные шины ШМТ и силовые кабели ПуГВ 50 мм² на этом этапе должны быть полностью отключены от аккумуляторов.
|
||||
3. Возьмите мультиметр, переключите в режим измерения постоянного напряжения (DC) и замеряйте вольтаж на клеммах каждого блока по отдельности. Запишите показания.
|
||||
* Норма: Блоки «из коробки» обычно имеют напряжение в районе 51.5 В – 52.5 В.
|
||||
* Анализ: Убедитесь, что максимальная разница между самым заряженным и самым разряженным блоком не превышает 0.8 В. Если разброс укладывается в этот допуск, переходите к Шагу 2.
|
||||
|
||||
## Шаг 2. Сборка временного балансировочного контура (Безопасного)
|
||||
Для ограничения уравнительного тока используется тонкий монтажный провод, который сработает как естественный распределенный резистор.
|
||||
|
||||
1. Отрежьте два куска обычного монтажного провода ПуВ (ПВ-1) сечением 2.5 мм² (который заложен у вас в смете на автоматику) длиной около 1.5–2 метров.
|
||||
2. Зачистите концы. Опрессуйте их штыревыми наконечниками НШВИ или просто сделайте аккуратные петли под болт М8.
|
||||
3. Соедините все плюсовые (+) клеммы всех 8 блоков последовательно в одну цепочку этим тонким проводом 2.5 мм². Затяните болты М8 от руки (без фанатизма).
|
||||
4. Точно так же соедините все минусовые (-) клеммы всех 8 блоков второй цепочкой из тонкого провода 2.5 мм².
|
||||
|
||||
## Шаг 3. Стадия пассивного выравнивания (Ночь)
|
||||
|
||||
1. Оставьте массив аккумуляторов в таком состоянии на 10–12 часов (оптимально — на ночь).
|
||||
2. Что происходит: Из-за высокого сопротивления провода 2.5 мм² уравнительный ток между блоками физически не сможет подняться выше безопасных 2–4 Ампер. Блоки с большим напряжением начнут плавно и мягко «переливать» емкость в более разряженные блоки.
|
||||
3. Утром замеряйте напряжение мультиметром на любой из банок. Оно станет абсолютно одинаковым на всех 8 блоках с точностью до сотых долей вольта (потенциалы выровняются в ноль).
|
||||
|
||||
## Шаг 4. Финальная силовая сборка
|
||||
|
||||
1. Полностью демонтируйте временные тонкие провода балансировки.
|
||||
2. Теперь, когда потенциалы равны и риска искры больше нет, собирайте штатную силовую схему: прикручивайте кабели ПуГВ 50 мм² к клеммам АКБ, заводите их на держатели предохранителей MEGA 125A и фиксируйте на главных медных шинах ШМТ 40х4.
|
||||
3. Затяните все болты М8 динамометрическим ключом или надежно от руки с обязательным использованием пружинных шайб (гроверов) из сметы.
|
||||
|
||||
## Шаг 5. Финишная дозарядка и буфер
|
||||
|
||||
1. Запустите систему АВР, дождитесь наступления ночного тарифа и включения блоков Mean Well RSP-3000-48.
|
||||
2. В процессе первой зарядки током 125А возьмите тепловизор и раз в 30 минут сканируйте клеммы АКБ и места крепления к шинам ШМТ. Все точки должны иметь одинаковую комнатную температуру. Если какая-то клемма светится ярко-желтым — глушите зарядку и подтягивайте болт (там плохой контакт).
|
||||
3. Штатные встроенные BMS внутри каждого блока POWERWIN сами завершат идеальную поячеечную балансировку внутри своих корпусов, когда Mean Well дойдет до выставленной вами буферной точки 54.0 В.
|
||||
|
||||
------------------------------
|
||||
48
sensors.md
Normal file
48
sensors.md
Normal file
@ -0,0 +1,48 @@
|
||||
## 1. Ведомость материалов DC-мониторинга (BOM-таблица)
|
||||
Вся мелочевка и наплатные блоки питания сведены в отдельный список:
|
||||
|
||||
| Категория | Наименование компонента | Кол-во | Назначение и инженерные примечания |
|
||||
|---|---|---|---|
|
||||
| Вычисления | Микроконтроллер Arduino Nano V3.0 (ATmega328P) | 1 шт. | Ядро сбора данных. Подключение к Linux-ПК по USB для прошивки. |
|
||||
| Сеть | Модуль локальной сети ENC28J60 SPI | 1 шт. | Сетевой Ethernet-интерфейс (разъем RJ45 под медный кабель в дом). |
|
||||
| Питание | Наплатный блок питания Mean Well ИЭП-05-12 (или IRM-05-12) | 1 шт. | Преобразует 240В АС от дифавтомата климата в стабильные 12 В DC. |
|
||||
| | Понижающий DC-DC модуль (например, LM2596 или аналогичный Mini) | 1 шт. | Понижает 12 В до 5.0 В DC для чистого питания Arduino, датчика Холла и ENC28J60. |
|
||||
| Датчики | Промышленный датчик Холла Allegro ACS758LCB-200B-PFF-T | 1 шт. | Двунаправленный (±200А). Монтируется в разрыв главного минуса шины 48В. |
|
||||
| Обвязка АЦП | Резистор постоянный 110 кОм (Точность 1%, 0.25 Вт) | 1 шт. | Верхнее плечо делителя напряжения (R1). |
|
||||
| | Резистор постоянный 10 кОм (Точность 1%, 0.25 Вт) | 1 шт. | Нижнее плечо делителя напряжения (R2). |
|
||||
| | Конденсатор керамический 0.1 мкФ (104) | 2 шт. | Фильтры высокочастотных помех на аналоговых входах А0 и А1. |
|
||||
| Монтаж | Макетная плата под пайку (прототипная) + разъемы-гребенки | 1 компл. | Для жесткой распайки всех элементов и резисторов в один монолитный блок. |
|
||||
|
||||
## 2. Схема расключения (Трассировка соединений)
|
||||
Так как датчики и сеть требуют жесткой разводки, соединяйте пины по следующей карте:
|
||||
## Блок питания и Логика:
|
||||
|
||||
* Линия 240В AC (после дифавтомата климата) ──> Вход AC/L и AC/N Mean Well 12V.
|
||||
* Выход Mean Well 12V (+) ──> Вход IN+ DC-DC преобразователя.
|
||||
* Выход Mean Well 12V (-) ──> Вход IN- DC-DC преобразователя.
|
||||
* Настройте DC-DC потенциометром строго на 5.0 Вольт на выходе.
|
||||
* Выход DC-DC (+5V) ──> Пины 5V на Arduino, VCC на ENC28J60 и VCC на ACS758.
|
||||
* Выход DC-DC (GND) ──> Пины GND на Arduino, GND на ENC28J60, GND на ACS758 и нижний вывод Резистора 10 кОм.
|
||||
|
||||
## Сетевой модуль ENC28J60 ──> Arduino Nano (Шина SPI):
|
||||
|
||||
* VCC ──> 5V (от DC-DC)
|
||||
* GND ──> GND
|
||||
* CS ──> Пин D10
|
||||
* SI ──> Пин D11 (MOSI)
|
||||
* SO ──> Пин D12 (MISO)
|
||||
* SCK ──> Пин D13 (SCK)
|
||||
|
||||
## Аналоговый узел делителя напряжения шины 48В (Пин А0):
|
||||
|
||||
* ПЛЮС главной шины 48В ──> Резистор 110 кОм.
|
||||
* Второй конец резистора 110 кОм ──> Пин А0 Arduino.
|
||||
* От пина А0 Arduino ──> Резистор 10 кОм ──> МИНУС главной шины 48В (GND автоматики).
|
||||
* Защита: Конденсатор 0.1 мкФ припаять параллельно резистору 10 кОм (между А0 и GND).
|
||||
|
||||
## Аналоговый узел датчика Холла ACS758 (Пин А1):
|
||||
|
||||
* VCC ──> 5V (от DC-DC)
|
||||
* GND ──> GND
|
||||
* OUT (Сигнал) ──> Пин А1 Arduino Nano.
|
||||
* Защита: Вторую керамику 0.1 мкФ припаять между пином А1 и GND прямо у платы Arduino.
|
||||
73
software.ino
Normal file
73
software.ino
Normal file
@ -0,0 +1,73 @@
|
||||
#include <UIPEthernet.h>
|
||||
|
||||
// 1. СЕТЕВЫЕ НАСТРОЙКИ (Задайте под подсеть вашего дома)
|
||||
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
|
||||
IPAddress ip(192, 168, 1, 200); // Фиксированный IP вашего шкафа ВРУ
|
||||
EthernetServer server(80);
|
||||
|
||||
// 2. АППАРАТНЫЕ ПИНЫ
|
||||
const int PIN_VOLTAGE = A0; // Делитель напряжения шины
|
||||
const int PIN_CURRENT = A1; // Датчик Холла ACS758
|
||||
|
||||
// 3. КАЛИБРОВОЧНЫЕ КОЭФФИЦИЕНТЫ
|
||||
// Коэффициент делителя: (110 + 10) / 10 = 12.0
|
||||
const float VOLTAGE_DIVIDER_RATIO = 12.0;
|
||||
// Чувствительность ACS758-200B составляет 10 мВ на 1 Ампер (0.01 В/А)
|
||||
const float SENSITIVITY = 0.01;
|
||||
|
||||
void setup() {
|
||||
// Инициализация сетевого стека ENC28J60
|
||||
Ethernet.begin(mac, ip);
|
||||
server.begin();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Ожидание входящего HTTP-запроса от Linux-сервера (curl)
|
||||
EthernetClient client = server.available();
|
||||
if (client) {
|
||||
boolean currentLineIsBlank = true;
|
||||
while (client.connected()) {
|
||||
if (client.available()) {
|
||||
char c = client.read();
|
||||
|
||||
// Если дошли до конца HTTP-заголовка (пустая строка)
|
||||
if (c == '\n' && currentLineIsBlank) {
|
||||
|
||||
// === ОПРОС ДАТЧИКА НАПРЯЖЕНИЯ ===
|
||||
// Делаем оверсемплинг из 20 замеров для сглаживания шумов
|
||||
float avgRawV = 0;
|
||||
for(int i=0; i<20; i++) { avgRawV += analogRead(PIN_VOLTAGE); delay(1); }
|
||||
avgRawV /= 20.0;
|
||||
// Расчет: вольты на пине * коэффициент делителя
|
||||
float dc_voltage = avgRawV * (5.0 / 1023.0) * VOLTAGE_DIVIDER_RATIO;
|
||||
|
||||
// === ОПРОС ДАТЧИКА ТОКА ===
|
||||
float avgRawI = 0;
|
||||
for(int i=0; i<20; i++) { avgRawI += analogRead(PIN_CURRENT); delay(1); }
|
||||
avgRawI /= 20.0;
|
||||
// Перевод шагов АЦП в вольт-сигнал
|
||||
float vOut = avgRawI * (5.0 / 1023.0);
|
||||
// Расчет тока: (Текущий вольтаж - средняя точка 2.5В) / чувствительность датчика
|
||||
float dc_current = (vOut - 2.5) / SENSITIVITY;
|
||||
|
||||
// === ОТПРАВКА СЫРОГО ТЕКСТА (UNIX-WAY) ===
|
||||
client.println("HTTP/1.1 200 OK");
|
||||
client.println("Content-Type: text/plain; charset=utf-8");
|
||||
client.println("Connection: close");
|
||||
client.println(); // Обязательный пустой разделитель заголовка и тела
|
||||
|
||||
// Вывод параметров в формате plain-text для простого grep в bash
|
||||
client.print("DC_Voltage: "); client.println(dc_voltage, 2);
|
||||
client.print("DC_Current: "); client.println(dc_current, 1);
|
||||
break;
|
||||
}
|
||||
|
||||
if (c == '\n') { currentLineIsBlank = true; }
|
||||
else if (c != '\r') { currentLineIsBlank = false; }
|
||||
}
|
||||
}
|
||||
// Даем время браузеру/скрипту принять данные и жестко рвем сессию
|
||||
delay(5);
|
||||
client.stop();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user