Arduino控制16路PWM舵机驱动板(PCA9685)

最近买了块16路PWM舵机驱动板,测试后做个总结。

舵机原理网上资料很多就不详细介绍了,一般以9g舵机为例,一个20ms的周期内通过0.5ms到2.5ms的脉冲宽度控制舵机角度。

板子为16通道12bit PWM舵机驱动,用2个引脚通过I2C就可以驱动16个舵机。

修改例子为可以通过串口设置舵机角度

 1 #include <Wire.h>
 2 #include <Adafruit_PWMServoDriver.h>
 3
 4 //默认地址 0x40
 5 Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
 6
 7 //9g舵机 高电平宽度在20ms内通过控制脉冲宽度范围0.5ms~2.5ms
 8 #define SERVOMIN  102 // this is the ‘minimum‘ pulse length count (out of 4096) 0度
 9 #define SERVOMAX  512 // this is the ‘maximum‘ pulse length count (out of 4096) 180度
10
11 void setup() {
12   Serial.begin(9600);
13   Serial.println("16 channel Servo test!");
14   pwm.begin();
15   pwm.setPWMFreq(50);  //频率 50Hz,最高60Hz
16 }
17
18 void setServoPulse(uint8_t n, double pulse) {
19   double pulselength;
20   pulselength = 1000000;   // 1,000,000 us per second
21   pulselength /= 50;   // 50 Hz
22   Serial.print(pulselength); Serial.println(" us per period");
23   pulselength /= 4096;  // 12 bits of resolution
24   Serial.print(pulselength); Serial.println(" us per bit");
25   pulse *= 1000;
26   pulse /= pulselength;
27   Serial.println(pulse);
28   pwm.setPWM(n, 0, pulse);
29 }
30 //设置9g舵机角度
31 void servo_9g_write(uint8_t n,int Angle)
32 {
33   double pulse = Angle;
34   pulse = pulse/90 + 0.5;
35   setServoPulse(n,pulse);//0到180度映射为0.5到2.5ms
36 }
37 void loop()
38 {
39   unsigned char serialRead;
40   if (Serial.available() > 0)
41   {
42     serialRead = Serial.read();
43     servo_9g_write(0,serialRead);//控制第一路度数
44   }
45 }

原文地址:https://www.cnblogs.com/zealot527/p/10178382.html

时间: 2024-10-29 11:42:17

Arduino控制16路PWM舵机驱动板(PCA9685)的相关文章

arduino+16路舵机驱动板连接测试

用Arduino类库驱动舵机并不是一件难事,如果需要驱动很多电机,就需要要占用更多的引脚,也会影响到Arduino的处理能力.专门的舵机驱动板很好的解决了这个问题. 此舵机驱动板使用PCA9685芯片,是16通道12bit PWM舵机驱动,用2个引脚通过I2C就可以驱动16个舵机.不仅如此,你还可以通过级联的方式最多级联62个驱动板,总共可以驱动992个舵机! 大多数的舵机设计电压都是在5~6V,尤其在多个舵机同时运行时,跟需要有大功率的电源供电.如果直接使用Arduino 5V引脚直接为舵机供

控制AVR单片机5路PWM波形

现开发了单片机控制5路PWM波形,也可以同时控制15路直流三色灯板,按触摸屏顺序点亮的电路和程序,供大家参考. 电路为 单片机ATMEGA128控制5路PWM方波,按照74HC08逻辑编码输出15路PWM信号,一次按照迪文触摸屏点亮3种颜色灯板的5路发光信号.ULN2003提供12V电压.每个灯板通过一个CMOS管IR3205输出功率.一个74HC08通过一路PWM,这路PWM通过74HC08控制的继电器控制IR3205的开关,进而控制24V,13V,36V灯板的开关,灯板的亮度通过PWM波形的

混杂设备驱动--输出两路PWM

尝试用2440的TOUT0和TOUT1输出PWM驱动两个电机,电机的硬件驱动电路是使用L298N. 先单独测试TOUT0的PWM输出: (1)驱动程序:使用misc混杂设备驱动模型,当然也可以使用基本的字符设备模型. 使用misc设备驱动模型步骤: ①初始化一个struct miscdevice结构体:主要是file_operation结构体成员和name ②使用misc_register和misc_deregister注册和注销这个结构体 代码示例: #include <linux/modul

Arduino CNC Shiled 和 DRV8825驱动板的注意事项

首先说明硬件:1) Arduino CNC Shiled V2.6 2)DRV8825驱动板 3)光驱步进电机  4)Arduino  uno R3 下图是本次主角是Arduino CNC Shiled 和 DRV8825驱动板. 来张三明治图 Arduino CNC Shiled的信息 注意点: 1)比较容易让人忽略的是步进电机的接口,也就是图上的的电机插口(A1A2B1B2),A1A2一组,B1B2一组.具体如何与步进电机对应继续往下看 2)上左图标出了EN和GND对应的位置,DRV8825

nRF51822使用Timer制作4路PWM波详解

Date:2015.5.8 Author:杨正  QQ:1209758756 <[email protected]> 一.            pwm简介 PWM英文名叫Pulse Width Modulation,中文名叫脉宽调制.那它到底是什么呢?其实它是由定时器产生的,比普通的定时器多了一个比较寄存器.PWM里面有一个词叫占空比,即一个周期内,高电平持续时间与周期的比值.如下图: 占空比(dutycycle) = t/T. PWM用途:控制电机调速,控制蜂鸣器播放音乐,控制led灯亮度

一种具有12路PWM直流电机的串口遥控机器人

技术领域本实用新型涉及一种一种具有12路PWM直流电机的串口遥控机器人,尤其是一种可以用串口无线WIFI遥控的智能机器人.背景技术现有常规遥控机人按照无线电信号的遥控进行动作,也可以按照存储在寄存器里面的程序动作,但是动作电机较少,一般只有4路PWM直流电机,这对机器人的行动带来很大的不便.一种具有12路PWM直流电机的串口遥控机器人是一种具有12路PWM直流电机的机器人,操作者可以使用计算机串口WIFI信号对它的12路直流电机进行遥控,它也可以按照其控制电路中的24C04铁电存储器里面的数据,

nRF51822 的两路 PWM 极性

忙了一阵这个PWM,玩着玩着终于发现了些规律.Nordic 也挺会坑爹的. nRF51822 是没有硬件 PWM 的,只能靠一系列难以理解的 PPI /GPIOTE/TIMER来实现,其实我想说,我醉了. 幸好SDK有这个的demo,不然真的很醉.这里说的是SDK9.0.0. 即便是有SDK,相信很多人都像我一样,看下去会觉得晕头转向的,不过知道几个函数的应用就可以了. 先记下怎么开始用一个PWM.这里我要用2路极性相反的PWM. 先来初始化两个个PWM实例,名字是PWM1.PWM2,用硬件Ti

关于16路及以上的X86服务器架构

关于16路及以上的X86服务器架构 INTELX86架构的CPU,很少有16路以上的.HP之前有基于安腾(非X86架构) CPU的32路服务器,但是安腾架构的软件后来HP自己也不支持了.接着 华为.浪潮也在国家项目里 搞了 基于安腾的32路 服务器.由于INTEL ,HP 都放弃对安腾的支持,所以这国家项目也仅仅是技术的一些积累,很难在生态圈有很好的成长. 如今不一样了,随着至强CPU(X86)性能不断提升,HP凭借自身在芯片互联方面的技术能将原本只能组成2路的CPU变成16路或以上的,而且扩展

Arduino从零开始的高手之路0——引言:Arduino是世界上最好的开发板!

开篇先比比: 虽然我们的老会长一直强调Arduino是个很菜的东西,但是的确是嵌入式入门的不二法宝啊. 现在其实我已经学了stm32了,arduino自认为比较精通了,但是其实实践上手的机会还是很少 然后最近发现proteus的神奇之处:嵌入式仿真!这个平时被老师们用来做各种理论研究的东西竟然主要卖点是用来做嵌入式仿真....顿时感觉被proteus被大材小用了..... 疫情期间别乱跑,呆在家里,整点汉堡凑个饱! 要觉得,还嫌少,博客园里到处大gay老,碰到大湿问声好,今天大湿就带你来带你走进