🏋️ 무게 모드 체계
앱 → BLE → FW 전수 매핑 · v3.1 · 2026-03-21 (진동 모드 kg 직접 설정)
🛡️ 공통 안전 체인 (모든 모드)
| 안전장치 | FW 변수 | 기본값 | BLE paramId | 앱 설정 |
| IqLimit NEW | IqLimit | 0 (OFF) | 0x40 (×100) | 0~30A 슬라이더 |
| Slew Rate | SlewRate_kgPerSec | 50 kg/s | 0x20 | 10~200 슬라이더 |
| MaxWeight | WP_Machine.MaxWeight | Flash or 50kg | 변경 불가 | — |
| MaxCurrent | WP_Machine.MaxCurrent | 30A | 변경 불가 | — |
📦 기존 모드 (0~2)
설정 무게 그대로 일정하게 유지. 모드 전용 파라미터 없음.
F_Load = TargetWeight × OnOffScale
이완(내리는) 구간에서 추가 부하
| 앱 변수 | BLE | FW 변수 |
| 앱 이완 강도 | ECC_LEVEL (0x62) | F_EccSet |
F_Load = (TargetWeight + FeccTemp) × OnOffScale
위치에 비례하는 탄성 저항. 모드 전용 파라미터 없음.
Iq_Temp = F_idle + (F_Load - F_idle) × (Pos - H_LoSoft) / (RangeHi - H_LoSoft)
⚡ 신규 모드 (3~5)
목표 속도 초과 시 저항 급증 — 속도 제한 훈련
| 앱 변수 | BLE paramId | FW 변수 | 기본값 | 범위 |
| 앱 목표 속도 | 0x10 | Iso_Vtarget | 200 mm/s | 100~600 |
| 앱 제동 게인 | 0x11 (×100) | Iso_Kgain | 5.0 | 2.0~8.0 |
|v| ≤ Vtarget: F_Load = TargetWeight × OnOffScale
|v| > Vtarget: F_Load = TargetWeight × (1 + Kgain × (|v|-Vtarget)/Vtarget) × OnOffScale
체험 프리셋
🐌 Slow
Vtarget 150mm/s · Kgain 5.0
🚶 Normal
Vtarget 300mm/s · Kgain 5.0
🏃 Fast
Vtarget 500mm/s · Kgain 3.0
속도에 비례하는 유체 저항 — 빠를수록 무거움
| 앱 변수 | BLE paramId | FW 변수 | 기본값 | 범위 |
| 앱 기준 속도 | 0x01 | Hydro_Vref | 300 mm/s | 100~600 |
| 앱 최대속도 cap | 0x02 | Hydro_Vmax | 600 mm/s | 300~1000 |
| 앱 속도 지수 | 0x03 (×100) | Hydro_n | 1.0 | 0.5~2.0 |
| 앱 최소 텐션 | 0x04 (×100) | Hydro_minRatio | 0.10 | 0.05~0.30 |
cappedSpd = min(|v|, Vmax)
spdRatio = (cappedSpd / Vref)^n
F_Load = TargetWeight × (minRatio + (1-minRatio) × spdRatio) × OnOffScale
체험 프리셋
🌬️ Air
n=2.0 · min 5% · Vref 300
💧 Water
n=1.5 · min 10% · Vref 300
🫗 Oil
n=1.0 · min 15% · Vref 300
🍯 Honey
n=0.7 · min 20% · Vref 300
주기적 부하 진동 — 기본 무게(평균) 중심으로 ±진폭kg 진동. 진폭은 kg 직접 설정 + 비율 안전 상한.
파라미터 정의
| 앱 UI | BLE paramId | FW 변수 | 기본값 | 범위 | 설명 |
| 기본 무게 (평균) |
SET_WEIGHT |
TargetWeight |
— |
1~59 kg |
리모컨 무게 설정, 진동 중심값 |
| 앱 진폭 (kg) |
0x31 (×100) 변경 |
Vib_AmplitudeKg |
3.0 kg |
0.5~15 |
직접 kg 설정 |
| 앱 비율 상한 (%) |
0x32 (×100) 변경 |
Vib_MaxRatio |
0.30 |
0.10~0.50 |
기본무게 대비 진폭 상한 |
| 앱 주파수 (Hz) |
0x30 (×100) |
Vib_Freq |
20 Hz |
10~100 |
진동 빠르기 |
FW 수식
vibKg = Vib_AmplitudeKg
maxByRatio = TargetWeight × Vib_MaxRatio
if (vibKg > maxByRatio) vibKg = maxByRatio
osc = sin(2π × Freq × t)
F_Load = (TargetWeight + vibKg × osc) × OnOffScale
동작 예시
| 기본무게 | 진폭 설정 | MaxRatio | 실효 진폭 | 부하 범위 |
| 20 kg | 5 kg | 30% | 5 kg (상한 6kg) | 15~25 kg |
| 10 kg | 5 kg | 30% | 3 kg (클램프!) | 7~13 kg |
| 40 kg | 5 kg | 30% | 5 kg (상한 12kg) | 35~45 kg |
| 10 kg | 2 kg | 50% | 2 kg (상한 5kg) | 8~12 kg |
| 50 kg | 10 kg | 30% | 10 kg (상한 15kg) | 40~60 kg |
핵심 변경 (v3.0 → v3.1):
• 진폭을 % 대신 kg 직접 설정 — 직관적
• AbsMaxKg(절대 상한) → MaxRatio(비율 상한) — 기본무게에 따라 자동 스케일
• BLE paramId 동일 (0x31, 0x32), 해석만 변경
📊 진동 모드 시뮬레이터
🔍 엣지 케이스 분석
⚠️ 고무게 + 큰 진폭 + 고주파
50kg · 10kg · 30% · 60Hz
vibKg=10kg (상한15kg OK), SlewRate 심한 클리핑 → 삼각파
✅ 저무게에서 MaxRatio 클램프
10kg · 5kg · 30% · 25Hz
vibKg=5kg → 3kg 클램프 (10×30%), 안전
✅ 적당한 기본 설정
20kg · 2kg · 30% · 15Hz
필요 변화율=188kg/s > 50 → 약간 클리핑, 체감 진동 OK
✅ 작은 진폭 + 저주파 → 완전 사인파
20kg · 1kg · 30% · 10Hz
필요 변화율=63kg/s ≈ SlewRate → 거의 완전 사인파
⚠️ IqLimit 10A 적용
30kg · 5kg · 30% · 40Hz · IqLimit 10A
IqLimit가 상단 진폭을 잘라냄 → 비대칭 파형
✅ SlewRate 150으로 올린 경우
20kg · 3kg · 30% · 25Hz · SlewRate 150
필요 변화율=471kg/s > 150 → 아직 클리핑이지만 사인에 가까움
SlewRate vs 주파수 × 진폭 관계:
완전 사인파 조건: 2π × freq × vibKg ≤ SlewRate
→ SlewRate 50에서 vibKg=1kg이면 ~8Hz, vibKg=3kg이면 ~2.7Hz까지 완전 사인
→ 진폭이 작으면 SlewRate를 덜 올려도 안전 — 실기 테스트로 적정값 탐색
📡 BLE 프로토콜 요약
파라미터 설정 (0xF5 서브코드 0x05)
[FF FF] [06] [F5] [05] [paramId] [val_H] [val_L] [CHK]
0x01 Hydro_Vref (mm/s) 0x03 Hydro_n (÷100)
0x02 Hydro_Vmax (mm/s) 0x04 Hydro_minRatio (÷100)
0x10 Iso_Vtarget (mm/s) 0x11 Iso_Kgain (÷100)
0x20 SlewRate (kg/s) 0x40 IqLimit (÷100 → A) NEW
0x30 Vib_Freq (÷100 → Hz)
0x31 Vib_AmplitudeKg (÷100 → kg) 변경: %→kg
0x32 Vib_MaxRatio (÷100) 변경: AbsMaxKg→비율
⚠️ 체험 안전 제한
| 제한 | 값 | 사유 |
| Vib 주파수 | 10~100 Hz | 10Hz 미만: 불규칙, 100Hz 초과: 모터 부담 |
| Vib 진폭 | 0.5~15 kg | 직접 kg 설정, MaxRatio로 이중 보호 |
| Vib MaxRatio | 10~50% | 기본무게 대비 진폭 비율 상한 |
| Iso K_gain | 2.0~8.0 | 10+ → 급정지 느낌 |
| Iso v_target | 100~600 mm/s | 이하 → 거의 움직이지 못함 |
| Hydro n | 0.5~2.0 | 3+ → 고속 시 부하 폭증 |
| IqLimit | 0~30A | 0=OFF, 소프트 전류 상한 |
| SlewRate | 10~200 kg/s | 토크 변화율 제한 |
WESPION · Roomfit · 2026-03-21