Smart bench press trainer with electric motor (M365 Pro). CAN Bus architecture: ESP32-S3 (master) + Flipsky 75100 (VESC) + STM32 Blue Pill (carriage). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
CHANGELOG — История проектных решений
v1 → v2: Расчёт мотора и барабана
- Выбран барабан D30мм (оптимум по расчёту: 100кг при 30А рабочих)
- Рассчитаны константы мотора M365 Pro (Kt, Ke, R, KV)
- Кабестан 3 витка, μ=0.25 — коэффициент удержания 14.1
- Контроллер: MKS VESC Mini 6.7 Pro (первоначальный выбор)
- Батарея 48В 500Вт·ч (автономная работа)
v2 → v3: Waveshare ESP32-S3 Touch LCD 3.5"
- Замена: ESP32 + OLED + RTC + TF → Waveshare ESP32-S3 Touch LCD 3.5" (~$20)
- Плата включает: 3.5" IPS тачскрин, QMI8658 IMU, PCF85063 RTC, AXP2101 PMU, TF слот
- ESP32-S3 имеет TWAI (аппаратный CAN) — нужен только трансивер SN65HVD230
- Бортовой IMU (QMI8658) для диагностики; внешний MPU6050 на каретке для ускорения штанги
- BOM электроники снизился с ~$350 до ~$270
v3 → v4: CAN Bus архитектура
- Проблема I2C: шлейф ~1м к каретке рядом с фазными проводами — ненадёжно для I2C
- Решение: CAN шина, 3 узла, все датчики читаются локально
- CAN узел #3 (каретка): STM32F103C8T6 Blue Pill (~$2)
- Выбран вместо ESP32-C3 (overkill) и ATtiny (нет встроенного CAN)
- STM32F103 — самый распространённый STM32, CAN 2.0B встроен, $1.5-2, тонна примеров
- Читает MPU6050 (I2C) + HX711+тензодатчик (GPIO) локально
- Тензодатчик перемещён на каретку (inline: каретка ↔ трос)
- Раньше был внизу у ролика — длинный провод HX711 к ESP32
- Теперь рядом с Blue Pill — провод 3 см, никаких проблем
- Бонус: мерим силу прямо в точке приложения к штанге
- Контроллер: Flipsky 75100 Pro V2 вместо MKS VESC Mini 6.7
- 100А длительно (запас ×2 при пиках 40-50А)
- 84В макс (48В батарея — в зоне комфорта)
- BT встроен (VESC Tool без провода)
- Фазный EMI фильтр на плате
- Стоимость: ~$90 (vs ~$35 MKS)
v4 дополнения: Питание и безопасность
- Питание от сети 220В — вводной щит (автомат + УЗО + БП 48В)
- Батарея уменьшена: 500Вт·ч → 100-250Вт·ч (только буфер рекуперации + UPS)
- Заряд до 90% — оставляем буфер для приёма энергии рекуперации
- Тормозной резистор: 100-200Вт, 1-5Ом — сброс излишков при полной батарее
- Flipsky 75100 поддерживает brake resistor нативно
- Без резистора: батарея 100% → рекуперация → overvoltage → VESC fault → штанга падает
- Реле: 3× НЗ 40А (не 80А — реально через обмотки 20-30А при торможении)
- Или трёхфазный контактор НЗ на DIN-рейку в щите
- Концевики: остаются на GPIO ESP32 с RC-фильтром (1К+100нФ)
- Бинарный сигнал, помехозащита RC-фильтром достаточна, CAN overkill
Открытые вопросы / TODO
- Софт ESP32: CAN-драйвер, управляющие алгоритмы, UI на тачскрине
- Софт STM32: чтение IMU+HX711, упаковка в CAN фрейм
- Настройка VESC: FOC, лимиты тока/температуры, brake resistor
- Чертежи: барабан, каретка, кронштейны, щит
- Приложение смартфон (BLE): профили, статистика
- Тестирование безопасности: watchdog, реле, концевики
- Выбор конкретного контактора НЗ / реле для щита
- Подбор БП 48В от сети (мощность, форм-фактор)