最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序

该系列文章介绍了如何使用51单片机通过PCA9685模块控制舵机集群,涉及蓝牙遥控、串口控制、舵机控制器设计等多个方面。通过I2C总线控制PCA9685,实现对多个舵机的独立且同步操作,详细解析了PCA9685的硬件实现和软件设计,包括I2C通信协议、舵机控制代码等,并提供了代码示例和视频演示。

51单片机物联网智能小车系列文章目录


第一篇:最简单DIY的51蓝牙遥控小车设计方案
第二篇:最简单DIY串口蓝牙硬件实现方案
第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车
第四篇:最简单DIY基于51单片机的舵机控制器
第五篇:最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器
第六篇:最简单DIY基于Android系统的万能蓝牙设备智能遥控器
第七篇:最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序



前言

    daodanjishui物联网核心原创技术之最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序。
    市面上有各种开源智能舵机集群控制器,但是有复杂的有简单的,如果想快速入门51单片机集群控制sg90舵机,这个方案会给你一个快捷高效的方案。


一、最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序是什么?

    在第五篇完成了51单片机多个舵机控制的设计的遥杆,读者好奇当时为什么不写控制多个舵机的程序呢?那是因为学习是一个循序渐进的过程,掌握基本的技能才能去举一反三。到现在来看,我第七篇博文是第五篇博文的升级版,可以使用同一个51单片机控制两个舵机云台,并且互相不受影响。舵机控制代码相当精妙,部分是自己的原创代码,如果不好好专研深入思考,是不可能写出这样的代码的,物联网技术就需要万物互联,那能不能用一个模块来控制多个舵机呢?答案是肯定的,这次需要用到PCA9685模块来直接控制舵机,51单片机通过I2C总线控制PCA9685模块。
    第四篇是用定时器0控制一个舵机,第五篇是用定时器0控制两个舵机;它们都是用定时器0产生并控制PWM波最终控制舵机的;现在不再用定时器0直接控制舵机了,用I2C总线来操控PCA模块来控制舵机,全方位开源原创,现在用文字的形式记录下来,这次源码进行了大幅度的升级,代码写得非常精简和奇妙,现在用文字的形式记录下来,对自己童年时代深刻地回忆和对未来技术的展望。“闭门造集群控制”虽然有点痛苦,但是当你看到自己亲手做的舵机集群在上电后自动跑起来的时候,你会发现一切的付出都是值得的!全家福如下图所示:
在这里插入图片描述
作品优酷视频演示地址:https://v.youku.com/v_show/id_XNTAwNTYyMDE4MA==.html

直接观看视频

51单片机IIC驱动PCA9685控制四个舵机

二、原理分析

1.现有技术

    这一次我打算采用舵机控制模块来间接控制舵机,很多老外的arduino项目都是用PCA9685来控制舵机的,在电路城很多的卖家都采用这个arduino库来控制舵机,优点有几个:1.直接调用现成的库,如下图所示:
在这里插入图片描述
在这里插入图片描述
2.直接用arduino集成的IIC的库控制IIC总线直接控制PCA9685,非常方便,配置几个参数就可以搞定多个舵机控制了。 那么我就隆重介绍一下缺点:
(1)51单片机不能使用这些库,stm32也不能用这些库,所以电路城卖的都是免费的arduino舵机程序为主,含金量不是很高。(2)就算可以使用arduino单片机,这个舵机响应速度还是比较慢的,如果我用stm32来控制舵机,会发现流畅很多,几十个舵机一起用都没有压力。(3)网上用51单片机移植Adafruit-PWM-Servo-Driver-Library 的arduino库到51单片机上成功的代码不多,也没有详细注释和说明。

2.我使用的技术

    我用了这个PCA模块一共控制了四个舵机,组合成两个云台。视频中可以看到,这两个云台动作是一样的,先转0度再转60度最后转到80,一直循环下去,因为我在程序中写了一个按照时间顺序来实现彩排效果的舵机动作操,读者可以学到我是怎么按照时间顺序来控制一堆舵机的,绝对够简单暴力,程序简单注释详细老少皆宜。不买云台单单控制舵机也是没有问题的!
    代码说明:这次代码不拖泥带水,直接用51单片机的普通IO口模拟IIC通信协议实现替代arduino的IIC通信库程序,移植arduino的舵机控制库到51单片机上使用,代码含金量不低,除了可以学会如何使用IIC总线之外,还能学会用51控制PCA9685模块从而控制多个舵机。下面是代码的截图:
在这里插入图片描述
在这里插入图片描述

3.软硬件准备

硬件说明:这次的材料比前两篇博文不一样的地方,多了PCA9685,云台可以不用买,反正我们的重点是控制舵机嘛,某宝上可以十块钱左右买到。舵机的结构和参数如下:
在这里插入图片描述

二、程序设计

1.设计软件逻辑

(1)程序采用自动化流水重复执行同一个动作,不需要外加控制指令。那么就需要在死循环一直执行某段程序。

while(1){
   
   
								 setPWM(0, 0, SERVO000);//舵机0先转到0度
								 delayms(1000);//延时1S
								 setPWM(0, 0, 239);//就是让舵机0转到60度
								 delayms(1000);//延时1S
								 setPWM(0, 0, SERVO80);//#define SERVO80   284 //80度
								 delayms(1000);//延时1S		                
									
								 setPWM(1, 0, SERVO000);//舵机1先转到0度
								 delayms(1000);//延时1S
								 setPWM(1, 0, 239);//就是让舵机1转到60度
								 delayms(1000);//延时1S
								 setPWM(1, 0, SERVO80);//#define SERVO80   284 //80度
								 delayms(1000);//延时1S	
									
									
									
									//如果需要控制其他的舵机,可以以此类推,呵呵,注意了一个PCA9685最多可以控制16个舵机
								 setPWM(14, 0, SERVO000);
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daodanjishui

你的鼓励将是我输出原创的大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值