树莓派+PCA9685+舵机控制:wiringPi实现

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

树莓派+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()
1.1python软件的安装 先安装python软件优先,因为其他步骤如果用到sudo apt-get update 会导致python程序不是py2而是py3,就用不了我们的程序了 树莓派鼓励用户使用python和C++作为其开发语言,所以原则上可以不用安装python的编译器,但是树莓派自带的python(IDLE)和Thonny python IDE都过于简陋,不太适合python使用者进行复杂的OpenCV开发。在这里推荐Spyder作为树莓派python IDE。这种编译器相对上述两种编译器略显笨重,但是对内核和运算值的控制更加灵活。   树莓派安装Spyder非常的方便,在命令行输入: sudo apt-get install spyder 下载时间可能比较长,因为在安装spyder3的同时很多python开发开发必要的依赖也一并被安装到树莓派里了,这也说明牺牲一定的空间下载spyder3是值得的。此时,我们已经可以在树莓派的开始菜单-programming中看到编译器了。注意: 1、 在下载spyder之前请不要输入 “sudo apt-get update/upgrade”, 否则会下载适用于python3.6的spyder,无法正常使用,比如图1-0中的spyder的python版本就是3.6,说明下载出现错误。 2、 如果看不到编译器说明安装过程出错,尝试重新执行:sudo apt-get update和 sudo apt-get install spyder3两条命令。   图 1-0下载完成后,在“start”中已经能看到Spyder编译器了     图 1-00 Spyder3的Python3.6版本 我们可以在preference/syntax coloring scheme中更换自己喜欢的主题,怎么样?是不是已经觉得树莓派和普通PC一样方便了呢?现在我们已经可以用在树莓派上舒适的开发python了。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值