# Умный тренажёр для жима лёжа — Спецификация проекта ## Концепция Уличный тренажёр с электронным управлением нагрузкой. Мотор-колесо Xiaomi M365 Pro работает как управляемый тормоз/генератор через барабан кабестана. Нагрузка регулируется током VESC-контроллера (FOC). Питание от сети 220В + батарея-буфер для рекуперации и UPS. ## Мотор M365 Pro — паспортные данные - Kt = 0.511 Н·м/А (моментная постоянная) - Ke = 0.511 В/(рад/с) (противо-ЭДС) - R = 0.392 Ом (сопротивление обмоток) - KV = 16.67 об/(мин·В) - 15 пар полюсов, Hall-сенсоры встроены (U/V/W + 5V + GND) - NTC 10K термистор встроен - Outrunner — ротор снаружи ## Барабан кабестана - Диаметр: D = 30мм (оптимальный выбор по расчёту) - Материал: нержавеющая сталь 12Х18Н10Т - 3 канавки под трос D4мм, шаг 6мм, глубина 2мм (полукруглый профиль R2) - Крепление: фланец к ободу ротора (outrunner) - Кабестан: 3 витка, μ=0.25 (сталь-полимер), коэффициент удержания e^(0.25×6π) = 14.1 - Свободный конец троса → пружина-натяжитель 1-2 кг ## Нагрузки на барабане D30мм | Ток (А) | Сила (кг) | Режим | |---------|-----------|-------| | 20 | 65 | лёгкий | | 30 | 100 | рабочий (подход 30с) | | 40 | 135 | пик (3-5с) | | 50 | 170 | абсолютный максимум | ## Электроника — CAN Bus архитектура (3 узла) ### CAN узел #1: Flipsky 75100 Pro V2 (ID: 10) - VESC 6.0, 100А длительно, 84В макс - FOC current control - BT встроен (VESC Tool настройка по Bluetooth) - Фазный EMI фильтр на плате - CAN 2.0B встроен - Стоимость: ~$90 - Расположение: низ рамы, в электрощите - Отдаёт: ERPM, I_mot, T_mot, V_bat (100 Гц) - Принимает: set_current(I_ref) от ESP32 ### CAN узел #2: Waveshare ESP32-S3 Touch LCD 3.5" (ID: 20) — МАСТЕР - ESP32-S3R8, двухъядерный LX7 240МГц - 3.5" IPS тачскрин 320×480, ёмкостный (ST7796 + FT6336) - QMI8658 6-осевой IMU на плате (бортовой, для диагностики вибраций) - PCF85063 RTC часы реального времени - AXP2101 управление питанием + зарядка Li-ion - TF-карта слот (логирование тренировок) - WiFi 802.11 b/g/n + BLE 5 - TWAI (CAN) контроллер встроен в ESP32-S3 - Стоимость: ~$20 - Расположение: верхняя перекладина рамы, тачскрин к спортсмену - Подключение к CAN через внешний трансивер SN65HVD230 ($1) - Дополнительная периферия (локально на ESP32): - Концевики ×2 (GPIO, НЗ, pull-up 10K, RC-фильтр 1К+100нФ) - RC522 NFC (SPI, идентификация пользователей) - BLE → смартфон (настройки, статистика) ### CAN узел #3: STM32F103C8T6 Blue Pill (ID: 30) — КАРЕТКА - Cortex-M3, 72МГц, CAN 2.0B встроен - Стоимость: ~$2 - Расположение: на каретке штанги (движется) - Подключение к CAN через SN65HVD230 ($1) - Локальные датчики: - MPU6050 (I2C): 6-осевой IMU, 200 Гц, ускорение + гироскоп - HX711 + тензодатчик S-тип 200кг (GPIO): реальная сила на тросе, 80 Гц - Тензодатчик inline: между кареткой и точкой крепления троса - Кабель к основной шине: 4 провода (CAN_H, CAN_L, 5V, GND), гибкий шлейф вдоль направляющей - Отдаёт: accel[3], gyro[3], force_N (200 Гц) ### CAN шина - Стандарт: CAN 2.0B, 250 Кбит/с - Топология: линейная, витая пара - Терминаторы: 120Ω на обоих концах (ESP32 сверху, VESC снизу) - Blue Pill — отвод к каретке (без терминатора, посередине шины) - Загрузка шины: ~30%, запас для расширения - Протокол: VESC CAN (стандартные команды set_current, get_values, status msgs) ## Питание - Сеть 220В → вводной щит (автомат + УЗО) → БП 48В - Батарея 48В 100-250Вт·ч (буфер рекуперации + UPS) - Заряд до 90% (50.4В на 13S), оставляя буфер для рекуперации - DC-DC 48В → 5В для логики, LDO 3.3В на каждом узле - Тормозной резистор: 100-200Вт, 1-5Ом, через MOSFET - Сброс излишков рекуперации при полной батарее - Flipsky 75100 поддерживает brake resistor нативно (настройка порога в VESC Tool) - Расположение: в щите или на раме (нужна вентиляция) ## Безопасность — аппаратная цепь - ESP32 GPIO → Watchdog (555/TPL5010, 50мс) → реле НЗ → замыкание обмоток мотора - Реле: 3× автомобильных НЗ 40А, катушки параллельно ИЛИ трёхфазный контактор НЗ на DIN-рейку в щите - Логика: ESP32 генерирует импульсы ~100Гц → watchdog сбрасывается. Сбой/зависание → watchdog timeout 50мс → реле отпускает → НЗ контакты замыкают три фазы → электромагнитное торможение - Тормозная сила при замкнутых обмотках: F = Kt² × v / (R × r²). При 0.5 м/с → ~150 кг - Опционально: резистор 0.1-0.3Ω / 100Вт в цепи замыкания для смягчения торможения - Софтовый лимит позиции по ERPM (дополнительно к аппаратному) - VESC: max input voltage лимит (ослабление рекуперации при высоком напряжении) ## Концевики - Нижний: homing (нулевая точка отсчёта позиции) - Верхний: аварийный стоп - НЗ контакты, pull-up 10K к 3.3В - RC-фильтр: 1К + 100нФ на входе GPIO ESP32 (τ = 0.1мс, подавление наводок) - Debounce программный: 10-20мс - Подключены напрямую к GPIO ESP32 (бинарный сигнал, помехозащита RC-фильтром достаточна) ## Механика - Рама: профиль 80×80×4мм, сталь 09Г2С, сварная - Высота стоек ~1200мм, ширина между стойками ~340мм, глубина ~700мм - Анкеры 4×M12 в бетон - Направляющие: 2 вала D25мм, сталь 40Х хромированная, длина 900мм - Линейные подшипники LM25UU ×4 на каретке - Ход каретки: 650мм - Каретка: масса 8кг (с грифом), крепление троса снизу через тензодатчик - Компенсация веса каретки: противовес 8кг на тросе через ролик наверху (груз в стойке: стальной цилиндр D60×300мм) - Трос: D4мм, сталь в полимерной оболочке, разрывная нагрузка 8000Н - Путь троса: каретка → тензодатчик (inline) → вниз → ролик D60мм (подшипник 6201-2RS, поворот 90°) → горизонтально к барабану мотора → 3 витка → пружина-натяжитель - Мотор: закреплён за ось внизу рамы, антивандальный кожух сталь 2мм - Вводной щит 220В: на раме или рядом (DIN-рейка: автомат, УЗО, БП 48В, контактор НЗ, тормозной резистор) - Электроника: IP54 бокс (VESC, DC-DC, Watchdog) внизу рамы / в щите - Батарея: IP67 бокс - Габариты: Ш×Г×В ≈ 800×700×1250мм ## Режимы нагрузки 1. **Постоянная**: фиксированный ток, опц. виртуальная инерция (F = m_virtual × a) 2. **Эксцентрический**: разная нагрузка вверх/вниз (направление по ERPM) 3. **Аккомодационное**: F(x) = F_min + (F_max - F_min) × x / L 4. **Интервальный**: чередование нагрузок по повторениям 5. **Изокинетический**: постоянная скорость, VESC speed control 6. **Страховщик**: v_up < 0.05 м/с > 0.5с → снизить 30%; v_down > 0.7 м/с > 0.3с → аварийное торможение ## BOM (оценка) | Компонент | Стоимость | |-----------|-----------| | Waveshare ESP32-S3 LCD 3.5" | ~$20 | | Flipsky 75100 Pro V2 | ~$90 | | Blue Pill STM32F103 | ~$2 | | SN65HVD230 ×2 | ~$2 | | MPU6050 + HX711 + тензодатчик S-тип 200кг | ~$10 | | 3× реле НЗ 40А / контактор НЗ | ~$15 | | Watchdog 555 + обвязка | ~$2 | | RC522 NFC | ~$3 | | Концевики ×2 | ~$2 | | DC-DC 48→5V | ~$5 | | Тормозной резистор 100Вт + MOSFET | ~$5 | | Батарея 48V 100-250Вт·ч | ~$100-150 | | БП 48В от сети | ~$25 | | Мотор M365 Pro (б/у) | ~$60 | | Рама + направляющие + механика | ~$120 | | Щит 220В (автомат + УЗО) | ~$20 | | **ИТОГО** | **~$480-530** | ## Файлы проекта - `SPEC.md` — этот файл - `CHANGELOG.md` — история решений - `wiring.html` — схема подключения (модульная, CSS grid) - (будущее) `firmware/` — прошивки ESP32, STM32 - (будущее) `cad/` — чертежи барабана, каретки, рамы