五指灵巧手 · 单指舵机仿真教学台 Dexterous-Hand Servo Simulator

三种写法对照,底层都是 STM32 真实引脚(TIM3:PA6 / PA7 / PB0 三个舵机)的 PWM 舵机驱动: ① STM32 裸机(HAL)是真实工程师要写的定时器+引脚代码; ② 模块化 servo(编号, 角度)是老师把 HAL 封装成的一行,学生最易学; ③ 渐变弯曲用 HAL_Delay 调速。舵机固定编号 1 / 2 / 3(1=MCP · 2=PIP · 3=DIP),没写的舵机纹丝不动。

① STM32 裸机(HAL·真实引脚)
② 模块化(SmartHand 库)
③ 渐变弯曲(STM32·HAL_Delay)
💻 PC— ST-Link/V2 —▶🔧 STM32F103
点击「⚙ 编译下载」把程序烧录到 STM32,再点「▶ 运行启动」运行
🦾 单指实时仿真
3 × 位置舵机 0–180°
舵机 1 · MCP
0°
舵机 2 · PIP
0°
舵机 3 · DIP
0°
真实手指最大屈曲角限制:你在代码里写的 servo(id, angle) 中的 angle 就是程序目标角度,仪表直接显示这个角度。 但手指关节真实可弯曲范围有限:MCP ≤ 90° / PIP ≤ 110° / DIP ≤ 90°, 所以视觉上手指不会弯过真实极限;当程序目标角度 达到/超过该上限(MCP≥90 / PIP≥110 / DIP≥90)时,对应仪表和关节圆会红色闪烁提醒。
⚠️ 已达真实关节极限:
舵机 1(MCP 根关节,决定整指朝向) 舵机 2(PIP 中关节,主弯曲) 舵机 3(DIP 末关节,指尖微调)
舵机转角范围说明:本仿真用标准位置舵机(0°–180°)——内部有电位器做位置反馈、机械限位半圈, 靠 PWM 脉宽精确定位(约 500µs→0°、2500µs→180°),手指关节正是需要这种角度可控的舵机。 360° 连续旋转舵机另属一类:去掉了限位但失去角度定位,只能控正/反转与速度(像轮子电机),不能"转到 137°", 故灵巧手关节不采用。代码里角度若超过 180 会被自动夹到 180。