PCA9685舵机驱动板怎么接线?I2C让Arduino控16颗舵机教程

2026-10-18 13:06:21 47阅读

做六足机器人、机械臂,或者想让一堆舵机同时动起来,Arduino自带的PWM脚根本不够用——总共就没几个能输出PWM的数字脚,还得供电。PCA9685就是为这种“控很多舵机”设计的扩展板:它用I2C两根线,就能驱动16路舵机,还能级联到好几百路。这篇文章把接线讲明白。

板子和引脚总览:一根I2C总线顶16路PWM

PCA9685核心是一颗16路脉宽调制芯片,板子上通常并排两排共16个三足舵机接口,每个接口有GND、VCC(舵机电源)、SIG(信号)三个脚。另外还有一对I2C口,就是SCL和SDA——靠这一对就能控制整块板,这是它“两根线控16路”的秘密。

板子上通常还带一个3.5mm或排针的跳线接点,做地址选择(A0-A5),多块板级联时靠这个设置不同地址错开。还常有逻辑电平转换,方便对接不同逻辑电压的主控。

接线:逻辑电源和舵机电源最好分开

接Arduino时,PCA9685的VCC接5V(逻辑电源,给芯片),GND接地,SCL接到Arduino的A5、SDA接到A4(Uno的I2C脚),跟接其它I2C器件一模一样的套路。舵机电源(V+接口)单独接一个能给全部舵机供电的外部电源,5V或按你舵机需要的电压。

重点提醒:几个舵机同时动作的峰值电流很大,别指望靠Arduino那点5V去喂满一路板的舵机。舵机电源和Arduino要共地(GND接到一起),这样信号参考电位一致,舵机才不乱抖。

软件上就三步:库里设好再write角度

驱动PCA9685建议用Adafruit_PWMServoDriver库。初始化时指定I2C地址(默认0x40)和PWM频率(舵机一般是50Hz),然后给每一路调用写角度的函数,把0到180度映射成对应的脉宽,就能让接在上面的舵机转到指定角度。

库会把“一个舵机角度”帮你算成脉冲宽度,你只管指定通道和角度。所以拼机械臂、六足时,每只脚对应一个通道,代码里写各关节的角度就行,不用一个个去管底层PWM。

应用:多舵机机构的核心骨架

有了它能轻松支撑:六足机器人每次迈腿要同时控好几条腿的多个关节角,靠PCA9685一张板子上铰接;机械臂的每个关节一路信号;还能配合一个上位机或者姿态传感器,让各关节按序协调动作。多块板级联,则能支撑更多自由度的大机构。

它虽然叫“舵机驱动板”,本质是一颗多路PWM发生器,所以不只控舵机,控制灯带、直流电机(配合驱动)也有应用,只是舵机场景最有代表性。

抖动、地址和供电三个高频坑

最常见的问题是“舵机乱抖、或接了不动”。先查供电:是不是多舵机同时动作导致电源被拉低,给足外部电源试试;再查共地:舵机电源和主控没共地,信号参考不稳表现就是抖或漂;还有地址:默认0x40,如果改了A0-A5跳线,地址要对应改,写错就找不到设备。

另外留意,板子逻辑侧别接成3.3V和5V混接造成电平问题,模块一般带转换,按丝印来接。级联多块时,各板地址要设成不同值,同一地址会被当成同一块,导致通道冲突。

PCA9685是把“多路舵机控制”从引脚不够的困境里解出来的一块好板。I2C两根线、一路舵机外供电源、一个Adafruit库,从六足到机械臂,多关节协调就有了骨架。


作者:舵机老炮
链接:https://www.aiddithome.com/p/6f1b61100ecf5.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
拆开看看再说
1楼 · 2026-10-18 13:06:23

Adafruit那个库设好频率写角度就行,上手挺快

参数党小马
2楼 · 2026-10-18 13:06:22

舵机外置电源别省,多舵机一起动那电流Arduino扛不住

调参到凌晨
3楼 · 2026-10-18 13:06:22

级联多块要错开地址,同地址会当成一块导致通道乱

只看不说话
4楼 · 2026-10-18 13:06:21

两根I2C线控16路,做六足正好派上用场