本文记录本项目使用的 NanoPi K2、PCA9685 和普通三线舵机接线。所有插拔和改线必须在 NanoPi K2 与外部舵机电源均断电时完成。
板上丝印和器件数据手册优先于网络图片、杜邦线颜色和“第几根针”的记忆。PCA9685 克隆板的接口方向可能不同。
系统供电分成两部分
PCA9685 板上存在两套供电:
- 逻辑电源 VCC:给 PCA9685 芯片和 I²C 逻辑供电,本项目接 K2 的 3.3V;
- 舵机电源 V+:给 CH0~CH15 排针上的舵机供电,本项目使用独立 5–6V 电源。
不能把 VCC 和 V+ 当成同一个端子。
NanoPi K2 3.3V ─────> PCA9685 VCC(逻辑)外部 5–6V 正极 ─────> PCA9685 V+(舵机)外部舵机电源不得接到 K2 的 3.3V、SDA 或 SCL。
NanoPi K2 到 PCA9685 的四根逻辑线
本项目使用 K2 40Pin 排针的物理针脚:
NanoPi K2 Pin 1 (3.3V) -> PCA9685 VCCNanoPi K2 Pin 3 (SDA) -> PCA9685 SDANanoPi K2 Pin 5 (SCL) -> PCA9685 SCLNanoPi K2 Pin 6 (GND) -> PCA9685 GND只连接这四根线时,PCA9685 芯片已经能够参与 I²C 通信,不需要舵机外部电源,也不需要插舵机。
不要连接 K2 的 5V Pin 2 或 Pin 4 到 PCA9685 VCC。K2 信号是 3.3V 逻辑,错误的 5V 连接可能损坏处理器引脚。
K2 排针方向
按本次实物摆放:USB 和网络接口在下方、40Pin 排针位于右侧时:
- 靠散热器的内侧列是奇数针;
- 靠机壳边缘的外侧列是偶数针;
- 排针最上方、远离 USB 的一端是 Pin 1/Pin 2;
- 第二行内侧是 Pin 3;
- 第三行内侧是 Pin 5,第三行外侧是 Pin 6。
不同机壳和观察方向容易造成镜像误判。插线前应对照 FriendlyELEC 的 NanoPi K2 官方 40Pin 图,并用万用表确认 3.3V 与 GND。
PCA9685 控制排针
常见 6 针控制排针包含:
V+ VCC SDA SCL OE GND但排列方向必须看板上白色丝印。K2 只接:
VCC SDA SCL GND本项目中:
V+:控制排针上的该针留空,舵机电源从绿色螺丝端子接入;OE:留空;PCA9685 板上的上拉通常使输出保持启用;VCC:接 K2 3.3V;GND:接 K2 GND;SDA/SCL:分别接 K2 Pin 3/Pin 5。
不能因为四根线“看起来连续”就判断正确。SCL 与 GND 之间往往隔着 OE,实际插法可能不是连续四针。
外部舵机电源
舵机电源接 PCA9685 绿色螺丝端子:
外部 5–6V 正极 -> PCA9685 绿色端子 V+外部电源负极 -> PCA9685 绿色端子 GND先看绿色端子旁边的 V+ 和 GND 丝印,再拧紧导线。极性反接可能损坏 PCA9685、舵机和电源。
电源选择应满足:
- 输出电压符合舵机规格;
- 持续电流能覆盖两个舵机的正常负载;
- 瞬时电流能承受启动、加速和堵转冲击;
- 导线和端子额定电流足够;
- 最好具有限流、短路和过温保护。
不要用 K2 的 5V 排针直接为两个舵机供电。舵机启动电流和堵转电流可能使 K2 掉压重启,也可能烧坏细导线或连接器。
为什么必须共地
K2 通过 SDA/SCL 向 PCA9685 发送逻辑电平,PCA9685 又使用外部电源驱动舵机。两个电源系统必须共享参考地:
K2 GND │ ├── PCA9685 逻辑 GND │ └── PCA9685 绿色端子 GND ── 外部电源负极PCA9685 板上的逻辑 GND 与舵机 GND 通常已经在 PCB 上相连;K2 GND 接控制排针 GND,外部负极接绿色端子 GND,即形成共地。
无共地可能表现为:
- I²C 偶发失败;
- 舵机抖动或随机动作;
- 接入外部电源后系统行为变化;
- SDA/SCL 电压参考不稳定。
舵机三线插头
常见舵机线色:
黄 / 橙 / 白:信号红:V+黑 / 棕:GND颜色只是常见约定,不是绝对标准。以舵机说明书和 PCA9685 通道排针丝印为准。
PCA9685 通道排针通常分为三排:
S / PWM:信号V+:舵机电源正极GND:地插反三针插头可能造成短路或损坏舵机。通电前从插头线色一路追到板上 S/V+/GND 丝印,不要只看其他通道的方向。
CH0 与 CH1
项目初始约定:
CH0 -> 下层/底座舵机 -> Pan 水平轴CH1 -> 上层舵机 -> Tilt 俯仰轴对应配置:
servo: pan: channel: 0 tilt: channel: 1若实物动作轴相反,可以断电后交换插头,或修改配置中的通道编号。不要一边通电一边拔插舵机。
分阶段接线
阶段 1:只验证逻辑与 I²C
连接:
- K2 Pin 1 -> VCC;
- K2 Pin 3 -> SDA;
- K2 Pin 5 -> SCL;
- K2 Pin 6 -> GND。
保持以下内容断开:
- 绿色端子外部电源;
- CH0/CH1 舵机;
- 控制排针 V+;
- OE。
此时运行 i2cdetect,目标是确认正确总线上的 0x40。
阶段 2:验证项目后端初始化
仍不接舵机,使用 Pca9685ServoBackend 打开总线、读取和写入配置寄存器。确认没有 I/O 异常后关闭后端。
阶段 3:只接一个舵机
断电后:
- 接外部 5–6V;
- 只把水平舵机接 CH0;
- 清理云台周围障碍;
- 扶稳底座,但手指远离运动夹点;
- 从 1500 微秒中位开始;
- 只测试 1475/1525 微秒等小范围;
- 观察发热、噪声、限位和供电稳定性。
CH0 成功后再断电,单独测试 CH1。
推荐通电顺序
首次联调:
- 检查所有接线和极性;
- 保持舵机外部电源关闭;
- 启动 K2,确认 I²C 与项目后端;
- K2 服务先使用 simulated 后端;
- 停止服务并断电;
- 接一个舵机;
- 开启 K2 和 PCA9685 逻辑;
- 开启外部舵机电源;
- 运行专用小范围测试脚本;
- 测试完成后先停输出,再关舵机电源。
不要在未知中心值和大范围默认值下直接启动完整跟踪服务。
立即断电条件
出现以下任何情况,先切断外部舵机电源,再排查:
- 舵机突然猛撞机械限位;
- 持续大声嗡鸣或无法转动;
- 舵机、导线、端子或电源明显发热;
- 有焦味、烟雾或火花;
- K2 重启、断网或反复掉电;
- PCA9685 或电源指示异常;
- 电源进入保护或输出电压明显下降;
- 杜邦线松脱或短路。
机械堵转时,即使软件脉宽仍在“常见范围”,舵机也可能持续吸收高电流。软件限位必须按实际云台结构标定。
常见危险接法
把外部 5–6V 接到 VCC
会把高于 3.3V 的电压送入 PCA9685 逻辑和可能的 K2 I²C 上拉,存在损坏 K2 的风险。
把 K2 5V 接 VCC
同样可能让 SDA/SCL 被上拉到 5V。逻辑 VCC 应使用 K2 Pin 1 的 3.3V。
外部电源正负反接
可能立即损坏板和舵机。绿色端子极性必须以丝印为准。
不共地
I²C 和 PWM 缺少共同参考,可能出现随机动作和通信失败。
舵机插头反向
可能使 V+ 和 GND 对调,或把电源接到信号脚。通电前逐线核对。
带电插拔舵机
瞬态电流和接触抖动可能导致复位、错误脉冲和端子烧蚀。
万用表检查
只接逻辑线时,以 PCA9685 GND 为参考测量:
VCC:约 3.3VSDA 空闲:通常接近 3.3VSCL 空闲:通常接近 3.3VV+:未接外部电源时不应作为逻辑供电来源接外部舵机电源后:
绿色端子 V+ 对 GND:应符合舵机电源额定值测量时避免表笔滑动短接相邻针脚。没有万用表时,不应通过反复试插供电线来猜测接口。
首次通电检查清单
- K2、PCA9685 和外部电源全部断电后完成接线;
- Pin 1/3/5/6 与 VCC/SDA/SCL/GND 一一对应;
- 控制排针 V+ 和 OE 未接;
- 外部电源只接绿色端子 V+/GND;
- 已确认共地;
- 舵机插头信号、V+、GND 方向正确;
- 首次只接 CH0 一个舵机;
- 云台周围无障碍和夹点;
- 测试脉宽从 1500 开始,动作范围很小;
- 随时可以快速切断外部舵机电源。
参考资料
- FriendlyELEC NanoPi K2:https://wiki.friendlyelec.com/wiki/index.php/NanoPi_K2
- NXP PCA9685 数据手册:https://www.nxp.com/docs/en/data-sheet/PCA9685.pdf
- Adafruit PCA9685 引脚说明:https://learn.adafruit.com/16-channel-pwm-servo-driver/pinouts
- 项目 K2 示例配置:https://github.com/zh19990906/yolo-gimbal-tracker/blob/main/configs/k2.example.yaml