任务介绍
题目要求:设计一款多舵机驱动模块
- 设计一款多舵机驱动模块,可驱动至少两个10kg/cm扭矩舵机
- 板卡尺寸:小于60mmx40mm
- 包含信号:信号输出口,电源接口、GND
- 主要器件:需在DigiKey官网上有货且正常售卖
请注意:PCB设计工具需用KiCad(官方邮件赠送了课程),或最终提交的文件需是KiCad文件,详见大赛主页阶段1要求和项目提交内容。
模块介绍
根据任务要求本次我选用的是PCA9685PW,118芯片设计了一款多舵机驱动模块,此模块可驱动至少两个10kg/cm扭矩舵机。
PCA9685PW,118芯片DigiKey链接:https://www.digikey.cn/zh/products/detail/nxp-usa-inc/PCA9685PW-118/2034325
PCA9685是一款由NXP半导体公司设计的16通道12位PWM控制器。它通过I2C接口与主控芯片通信,能够独立控制多达16个舵机或LED。由于PCA9685内部集成了25MHz的振荡器,它能够生成稳定的PWM信号,使得舵机或LED的控制变得更加精准和灵活。
PCA9685通常用于机器人、无人机、智能家居等需要多路PWM控制的场景。与STM32等单片机结合使用时,可以大大减少PWM通道的占用,使得主控芯片的资源更加充足。
I2c通信,只需要几根i2c线就可以控制16路pwm,周期和占空比都可控。
可以多个模块级联。
可控制16路通道的四种工作模式:关、开、pwm、可变pwm。
精度是12位:
工作频率 | 时间分辨率 | 通常舵机500~2500us可分成份数 | 通常舵机500~2500us,旋转角180°的角度分辨率 |
---|---|---|---|
50Hz | 4.88us | 410份 | 0.439° |
60Hz | 4us | 492份 | 0.366° |
驱动方式可以选择开漏输出或推挽输出。
原理图和PCB模块介绍
原理图
PCB
3D效果图
模块主要性能指标和管脚定义
主要性能指标
1、电压
数字电路电压范围可接受3.3和5v电平。
此外还有一个v+引脚,这个引脚是给舵机供电用的,可以接稍微高一点的电压。
2、i2c地址
有6个地址控制脚,通过这些引脚可以控制设备的i2c地址。
7位的I2C地址为:0x40 + A5:A0,A5到A0如果不做任何处理的话是0,想要把哪一位置1就把那个引脚焊到一起。
另外用i2cdetect检测出还有一个0x70地址一直存在,这是一个通用地址,可以给所有从机下达指令。
3、使能脚
模块有一个OE反使能脚,这个引脚低电平使能,不接的话模块内部默认已经接地使能了,所以正常使用可以不接。
PCA9685的核心功能是生成PWM信号。PWM信号的频率和占空比决定了舵机的角度或LED的亮度。PCA9685通过I2C接口接收主控芯片的命令,然后根据预设的频率和占空比生成PWM信号。
1. 时钟与频率
PCA9685内置25MHz振荡器作为时钟源,PWM信号的频率通过配置PRE_SCALE寄存器来设置。PWM的频率计算公式如下:
其中4096是定时器12位分辨率的最大计数值。通过调节PRE_SCALE值,可以设定从24Hz到1526Hz的PWM频率。
2. PWM信号生成
PCA9685使用12位分辨率来生成PWM信号。每个通道的PWM信号通过两个寄存器设置:on和off。on寄存器决定PWM信号开始的时间点,而off寄存器决定PWM信号结束的时间点。通过设置这两个值,可以精确控制每个通道的PWM占空比,从而控制舵机的转角或LED的亮度。
管脚定义
各个模块的分析:
eZ-PLM上新建物料和项目的截图
使用了eZ-PLM系统上传了自己的工程文件,方便保存记录各个版本,也可随时查阅,系统里查阅不到的物料也支持手动添加。
物料添加展示图
项目详情图
心得体会
本次的模块为一款多舵机驱动模块,一共有十六路可以驱动16个10kg/cm扭矩舵机,最后希望自己的技术越来越好!