树莓派+PCA9685+舵机控制
1舵机控制
1.1舵机介绍
淘宝直接搜索舵机,有90° 180° 270° 360°舵机,通过PWM来进行控制,如下所示:

1.2控制原理
如下图所示:一个脉冲周期为20ms,高电平为脉冲宽度,这个脉冲宽度决定舵机旋转角度,假设180°舵机旋转位于中间位置(90°)的脉冲宽度为1.5ms,则0°位置为1ms,180°位置为2ms,以此类推,得出一下公式:
舵机旋转1°= (最大脉冲宽度-最小脉冲宽度)/最大角度(最大位置)

2PCA9685设备
2.1PCA9685设备地址
地址分配是通过模块右上方的短接焊盘来确定的,从A0-A5表示地址的最低位到最高位,也就是最多可级联2^5=32个模块,地址为: 1+A5+A4+A3+A2+A1+A0+rw。如果不用短接的话Ax=0;短接的话Ax=1;rw为写的话rw=0;rw为读的话rw=1;所以写入数据不做短接则地址应该为1000 0000 =0x80
内部寄存器地址如下图所示:程序代码中有define定义,可以进行对照

2.2IIC通信
SCL接树莓派SCL0,SDA接树莓派SDA0,VCC接3.3V,GND接树莓派GND,V+单纯只是供电

2.3.树莓派 开启IIC功能
sudo raspi-config -> 5.Interfacing Options -> P5 I2C 设置enable使能,然后在/boot/config.txt中进行配置,如下所示:

重启树莓派之后进行测试:
执行命令安装i2c-tools:
sudo apt-get install i2c-tools
再运行:
sudo i2cdetect -y 1
显示:

即本地址为0x40,记录下来,后面写程序需要。
3.程序
3.1整体连接图

我这里选择的是最后一个通道,编码为15(第一个通道编码为0)
代码在i2c_pca9685.c中,请自行查看
参考链接:
https://blog.youkuaiyun.com/qq_41559171/article/details/87950642
https://blog.youkuaiyun.com/asmallwhite/article/details/83048091
https://blog.youkuaiyun.com/weixin_42866931/article/details/90676372
https://blog.youkuaiyun.com/asmallwhite/article/details/83048091
C版本:
#include <stdbool.h>
#include <stdio.h>
#include "wiringPi.h"
#include <wiringPiI2C.h>
#include <unistd.h>
bool PCA9685Init();
void ResetPca9685();
void PCA9685SetPwmFreq(unsigned short freq);
void PCA9685SetPwm(unsigned char channel, unsigned short on, unsigned short value);
void SetServoPulse(unsigned char channel, unsigned short pulse);
#define PCA9685_ADDRESS 0x40 //pca9685地址
#define PCA9685_CLOCK_FREQ 25000000 //PWM频率25MHz
#define PCA9685_MODE1 0x00
#define PCA9685_MODE2 0x01
#define PCA9685_PRE_SCALE 0xFE
#define PCA9685_LED0_ON_L 0x06
#define PCA9685_LED0_ON_H 0x07
#define PCA9685_LED0_OFF_L 0x08
#define PCA9685_LED0_OFF_H 0x09
#define PCA9685_LED_SHIFT 4
bool WriteByte(int fd, unsigned char regAddr, unsigned char data);
unsigned char ReadByte(int fd, unsigned char regAddr);
bool PCA9685_initSuccess = false;
int PCA9685_fd = 0;
int main()

本文详细介绍如何使用树莓派配合PCA9685模块控制舵机,包括舵机工作原理、PCA9685设备地址设定、IIC通信配置、树莓派IIC功能启用及测试方法,提供C语言和Python代码示例。
最低0.47元/天 解锁文章
936

被折叠的 条评论
为什么被折叠?



