USB版SSC32_32路舵机控制器__SKU_DRI0006_ - jimaobian/DFRobotWikiCn GitHub Wiki

概 述

USBSSC32路舵机控制是专为人形机器人、蜘蛛机器人、机械手等多舵机使用而量身定做的多路舵机控制器。该控制器不但保留了原版的所有功能,还在原版的基础上作了升级,将原来的RS232串口改成了USB接口,方便电脑没有串口的用户使用。控制器还增加了无线数传接口,兼容我们的蓝牙模块和APC220无线数传,可实现无线远程控制。USBSSC32路舵机控制控制方式包括实时、定时、定速控制等,与 lynxmotion 的RIOS Arm Control 和 SEQ Visual Sequencer等控制软件完全兼容。

技术参数

1.输出通道:32路(脉冲调制输出或TTL电平输出);

2.舵机供电:根据所接舵机额定电压供电,典型DC4.8V~6V;

3.逻辑供电:DC6V~12V或USB供电(具有自恢复保险丝,调试时使用);

4.驱动分辨率:1uS, 0.09°;

5.驱动速度分辨率:1uS/秒,0.09°/秒;

6.通讯接口:USB/TTL串口接口;

7.串口波特率:2400、9600、38.4k、115.2k可设置;

8.电路板尺寸:58.5 x 76.2mm;

性能描述

1.目前市面上功能最强、可靠性最高的USB版32路舵机控制器,采用FT232RL USB芯片工作稳定兼容性好,核心控制部件采用了高性能、低功耗的ATMega168 单片机,具有功能强大、命令执行速度快、控制精度极高、I/O 端口驱动能力更强等特点;

2.电路布局紧凑合理,采用贴片式设计使电路板体积大大缩小,同时具有很强的抗干扰性能;

3.目前市面上的电脑都很少提供串口,而较多的是USB接口,所以本产品采用了USB接口,方便没有串口的台式电脑和笔记本使用;

4.使用2位DIP拨码开关设置波特率;

5.提供 4 个模拟/数字信号输入端子,可设为静止或者锁存;

6.提供蓝牙模块和APC220无线数传接口,可实现远程控制;

7.提供ISP程序下载端口,可供二次开发;

8.支持Futaba、Hitec、辉盛以及大部分常见舵机;

9.舵机电源与控制电路电源可共享或者独立供电或控制电路使用USB供电(通过跳线设置),为使用者调试带来方便的同时更能适应不同的设计方案;

10.舵机可控范围:0~180°(360° 连续旋转需对舵机进行改装);

11.舵机模式:单舵机控制,群舵机控制,群控制中,被编入同一群的舵机可以在旋转角度大小不同的时候能做到自动协调速度,同启同止,此功能在设计多自由度仿生机器人时非常实用,可使动作平滑、流畅;

12.控制方式包括:即时、定时、定速控制等;

13.可使用 RIOS 和 Sequencer 编辑好动作步骤,然后下载到板载EEPROM里,便可实现脱机工作,为DF-USBSSC32增添了实用性和趣味性!

14.与 lynxmotion 的RIOS Arm Control 和 SEQ Visual Sequencer等软件完全兼容;

引脚定义

1 - USB接口:使用USB电缆连接电脑USB口;

2 - USB供电选择跳线:当使用USB电缆连接电脑调试时,逻辑电源可以使用USB供电(5V),可以将 “18 USB/TTL串口选择跳线” 上的短路帽拔下插到 “2 USB供电选择跳线”上(不用时短路帽插回 插针上备用)。当使用USB供电的时候,“10 逻辑电源输入端”不能接电源,“11 VL和VS1连通跳线”不能插短路帽;

3 - 串口数据指示灯:使用电脑USB调试时,有数据交换串口数据指示灯就会闪烁;

4 - 舵机通道16 - 31路:16-31路舵机接口, 那行表示舵机地(黑色线)、VS2那行表示舵机电源(红色线)、PULSE那行表示舵机控制脉冲(黄色线);

5 - ISP程序下载接口:32路舵机控制器控制芯片程序下载端口,在不确定程序来源和功能时,请勿使用该端口;

6 - 数字输入端或模拟输入端:可以通过命令读取从该端口输入的数字信号或模拟信号;

7 - 拨码开关用于波特率设置:可以通过拨码开关设置波特率;

8 -16 - 31路电源输入端VS2:典型供电范围为4.8V-6V,具体请根据所使用的舵机而定,当“9 VS1和VS2连通跳线”短接时,电源可以从VS1或VS2接入,效果都一样;

9 - VS1和VS2连通跳线:该跳线让VS1和VS2连通,使32个舵机都用同一个电源供电;

10 - 逻辑电源输入端VL:供电范围6V-12V,典型使用9V叠层电池供电,当“11 VL和VS1连通跳线”短接,并且“12 0-15路电源输入端VS1”有6V电源输入时,“逻辑电源输入端VL”可以不需要接电源;

11 - VL和VS1连通跳线:使逻辑电源和舵机电源共用一组电源,逻辑电源需要大于6V;

12 - 0-15路电源输入端VS1:典型供电范围为4.8V-6V,具体请根据所使用的舵机而定,当“9 VS1和VS2连通跳线”短接时,电源可以从VS1或VS2接入,效果都一样;

13 - 逻辑电源指示灯:当逻辑部分有电源输入或使用USB供电时,逻辑电源指示灯便会亮;

14 - 动作存储芯片:动作存储扩展;

15 - 舵机控制指示灯:当控制器收到有效的控制命令后,该指示灯就会亮;

16 - 蓝牙模块和APC220数传接口:该接口是我们的USB版32路舵机控制器特有的,可以直接使用我们的蓝牙模块和APC220无线数传,构成无线远程控制;

17 - 舵机通道0-15路:0-15路舵机接口, 那行表示舵机地(黑色线)、VS2那行表示舵机电源(红色线)、PULSE那行表示舵机控制脉冲(黄色线);

18 - USB/TTL串口选择跳线:当跳线短接时,就是用USB通讯来发命令控制舵机,断开后可用单片机的串口和RX连接,使用单片机来控制舵机

电源连线示意图

舵机旋转角度与PWM信号的关系

控制器命令集

一.单个舵机和舵机群运动命令

 #  P  S ... #  P  S  T    :舵机通道号,0 – 31。   :脉冲宽度,单位微秒(us),500 – 2500。   :单通道的运动速度,单位us/秒。(可选)   :所有通道的速度,单位毫秒(ms),最大65535。(可选)   :结束回车符,ASCII码中的13。(必选)   :取消当前的命令,ASCI码中的27。

单个舵机运动实例:

  1. 5 P1600 S750

通道5将以750us/秒的速度移动到1600us位置。为了更好的理解速度这个概念,举个例子,如上图所示的舵机与脉冲信号(PWM)的关系,当舵机从-90度到0度时,脉冲宽度为1ms时间即1000us,也就是说1000us脉冲宽度舵机就会转90度,那么100us/秒的速度就表示舵机花10秒的时间就可以转到90度,2000us/秒的速度就表示舵机花0.5秒的时间就可以转到90度。公式:运行时间(秒)=脉冲宽度(us)/速度(us/秒)。

  1. 5 P1600 T1000

通道5将在1秒内从任何位置移动到1600us位置。

舵机群运动实例:

  1. 5 P1600 #10 P750 T2500

通道5移动到1600us位置,通道10移动到750us的位置,2个都同时在2500us内完成,这个命令能协调多个舵机的速度,即使2个舵机的初始位置相差很远,都可以使他们同时开始转动并同时停止到指定位置上。这条命令非常适合人形双足机器人多舵机同时运动,可自动协调所有舵机的速度,完成复杂步态的同步。 你可以使用该命令进行速度和时间组合,组合必须根据下面的规则:

1.所有通道的开始和结束将同时完成。

2.如果某个通道指定了速度,那么它将不会快于指定速度(可以根据需要调节移动速度)。

3.如果某个通道指定了时间,那么它将在指定的时间移动到指定位置(可根据需要调节移动时间)。

  1. 5 P1600 #17 P750 S500 #2 P2250 T2000

通道5移动到1600us位置,通道17移动到750us的位置,通道2机移动到2250us的位置,整个动作需要2000us,但是通道17的舵机不会按500us/秒的速度运行,这个需要取决于通道17的初始位置。假设通道17的初始位置在2000us,它被指定移动1250us,超过500us/秒的限制,那么他将至少花2500us完成动作,再假设通道17初始位置在1000us,只需要它移动250us,那么在500us/秒以内,那么他将花2000us完成动作。 注意:第一条定位命令不能包含速度和时间的,格式为“# P ”,因为在初始状态下,控制器不知道舵机当前位置在什么地方,所以必须这样做。

二.脉冲偏移:

  1. PO … # PO

:舵机通道号,0 – 31。

: 100 到 -100us.

:结束回车符,ASCII码中的13。

对某个通道的脉冲宽度进行校正,这样人形机器人就可以不用通过机械硬件来进行位置校正。

三.数字输出:

  1. ... #

:舵机通道号,0 – 31。

:通道输出逻辑电平,高‘H’或低‘L’。

:结束回车符,ASCII码中的13。

该通道将在接受到回车指令20ms内输出电平。

数字输出实例:

  1. 3H #4L

该命令使通道3输出高电平(+5V),通道4输出低电平(0V)。

四.字节输出:

  1. :

:0 = 通道0-7,1 = 通道8-15,2 = 通道16-23,3 = 通道24-31。

:十进制输出 (0-255),Bit0=LSB。

该命令允许一次性写入8位二进制,并将同时更新bank里的所有通道,更新将在接受到回车符号后20ms内完成

字节输出实例:

  1. 3:123

该命令使bank 3输出十进制123,123(十进制)= 01111011(二进制),bank 3为通道24-31,那么bank 3中通道26和31为0,其他通道为1。

五.查询运动状态:

Q

如果舵机正在转动,返回值为“+”,如果移动到指定位置,返回“.”。

这条命令的返回值可能延迟50us至5ms。

六.查询脉冲宽度:

QP

返回值为一个字节(二进制),表示舵机当前的脉冲宽度,分辨率10us,比如脉冲宽度是1500us,那么返回为150(二进制)。

该命令可查询多个舵机的脉冲宽度,每个舵机一个字节,返回值将延迟50us至5ms,典型为100us。

七.数字输入读取:

A B C D AL BL CL DL

控制器上的A,B,C,D作为数字输入端,以二进制方式读取,输入低电平(0V)时返回ASCII“0”,输入高电平(5V)时返回ASCII“1”。

AL,BL,CL和DL将以ASCII方式返回数字输入读取值,如果输入为低电平(0V)或者自前一个*L指令后该端口曾经出现过低电平,则返回值为ASCII“0”。如果输入一直是高电平(5V)并且自前一个*L指令后一直保持高电平,则返回值为ASCII“1”。

上电后ABCD初始被配置为数字输入口,有50K的弱上拉,平均每1ms检测输入值一次,去抖动需要15ms 。读出的逻辑电平在新的逻辑电平维持15ms前不会改变。该读取指令可以群发,支持8个指令同时发送。

数字输入读取实例:

A B C DL

读取A,B,C和D(带锁存),如果A=0,B=1,C=1,D=0,那么返回值为“0110”。

八.模拟输入读取:

VA VB VC VD

控制器上的A,B,C,D作为模拟输入端,读取输入的模拟信号,将返回一个8位的二进制数。

A,B,C,D做模拟口时,禁止内部上拉,同时开启数字滤波功能以减噪,滤波后只读取端口电压8ms内变化量的最终值,返回“0”表示0V,返回“255”表示4.98V。返回值=(输入电压*256)/5。上电初始A,B,C,D将配置为数字输入并有内部上拉,第一次使用“VA VB VC VD ”后,将配置为模拟输入并禁止内部上拉。在设置成模拟输入后的第一次返回值无效。

模拟输入读取实例:

VA VB

以A、B为例,将会返回2个字节,比如A输入2V,B输入3.5V,那么返回102(二进制)和179(二进制)。

序列命令集

USBSSC32控制器可以使用序列命令控制动作存储卡里的动作,可以实现播放、停止、改变速度等操作。USBSSC32控制器被划分2个播放器,可各播放1个序列动作,使舵机同时运动。

注意:当两个序列动作里面使用同一个舵机的时候,不要同时启动这两个动作序列;在舵机play过程中不要发出舵机控制命令,否则结果不可预见。

一.启动播放

下面的命令启动控制器按指定顺序播放。

表示命令必要参数;[xxx]表示可选参数。

 PL 

SQ [SM ] [IX ] [PA ] [ONCE]

 PL 

:指定播放器p,0 或1

 SQ :指定序列号s,0 到127  SM :指定全局速度参数m,-200 到 200  IX :指定开始索引 i ,0 到255  PA :指定步骤之间的停顿时间a,0 到 65535ms  ONCE:指定序列只播放一次   :结束回车符,ASCII码中的13。

SM值代表在基本速度的基础上对速度一个调节百分比,数字越大速度越快,可达到原来速度的两倍,如果SM这个值是负数那么是变慢,如果SM值没有指定代表100%。

IX值代表步态起始位置,控制器将从指定位置开始播放,如果没有指定,则默认为0。

PA参数是步骤之间的停顿时间的长度,单位毫秒,如果没有指定,则默认为0。

使用ONCE参数,序列动作只能播放一次,如果没有指定,控制器将无限次循环播放,直到发送停止指令才会停止。

二.停止播放

下面的命令可以立即停止控制器。

PL

:指定播放器p,0 或1 停止

三.设置播放器速度

下面的命令可以设置播放器的速度,播放的序列必须是有效的。

该参数可以设置为0,此时舵机将停止运动,但序列会继续播放,可以设置一个不等于0的值启动舵机。

PL

SM

四.设置播放器停顿时间

下面的命令可以设置播放器的停顿时间,播放的序列必须是有效的。

PL

PA

五.跳转到其他动作序列

下面的命令可以跳转到存储动作的任意动作序列和步骤,移动序列号、步骤和时间可以随意指定,播放的序列必须是有效的。T参数和控制指令T参数一致。

注意:该命令在2个播放器中是独立使用的。在舵机play过程中不要发出舵机控制命令。

SQ

[IX ] [T ]

六.查询播放器

下面的命令可以查询一个播放器状态信息。

QPL

返回数据有4个字节:

1.正在播放的序列号

2.从哪个步态索引开始

3.移动到的步态索引

4.剩下的步骤时间,100ms/bit。(例如还剩余700ms,返回值就是7)

控制器的测试

初次使用USBSSC32舵机控制器,都需要安装USB驱动程序,否则无法使用。驱动程序可到http://www.ftdichip.com/Drivers/VCP.htm下载,也可以向我们索取。

最简单的测试方法是使用Lynx SSC-32终端软件。首先安装该软件,然后如下图所示,连接USB电缆到控制器,将红圈1位置的短路帽插到红圈2位置,即使用USB电源给控制器逻辑部分供电,这是控制器上的逻辑电源指示灯PWR和舵机控制器指示灯L都会亮。接上几个舵机,舵机供电使用外部5V电源接到VS1或VS2,使用USB供电后红圈3要断开,DIP拨码开关都都拨到ON处,波特率选择为115.2K(也可选其他波特率,需要和软件一致)。

打开Lynx SSC-32终端软件,首先选择com口,然后点击Setup设置波特率为115.2K(也可选其他波特率,需要和控制器一致),其他默认。接着点击Connect连接控制器。连接成功后软件灰色部分都会点亮便可以使用了。如果不成功,首先检查com口是否选择正确,再检查控制器的波特率是否和软件设置一致。

连接成功后,测试就正式开始了,在黑色框中输入命令:

  1. 0 P1500 #1 P1500 #2 P1500 表示回车

回车后,你会看见L指示灯会闪烁,同时通道0,1,2上的舵机会转动到中间位置。

  1. 0 P750 #1 P1000 #2 P2000 T3000

回车后,你会看见通道0比通道1和2运动的慢一些,但不管他们的初始位置相差多远,都会同时到达指定位置。

现在来测试查询运动状态,在黑色框中输入命令:

  1. 0 P750

回车后,通道0舵机转到接近最小位置,接着输入下面的命令,使通道0舵机花10秒转到接近最大位置。

  1. 0 P2250 T10000

舵机正在运动时,输入下面的命令:

Q

如果舵机正在运动,将返回“+”,如果舵机到达指定位置将返回“。”。

接下来测试舵机的运动速度,在黑色框中输入命令:

  1. 0 P750 S1000

这条命令将使舵机从2250us移动到750us(大概170度),一共耗时1.5秒。

接着输入后面的命令:

  1. 0 P2250 S750

这条命令将使舵机从750us移动到2250us(大概170度),一共耗时2秒。

将编辑好的动作下载到USBSSC32舵机控制器动作存储卡中,然后可以通过串口助手发命令控制动作和运动步骤。

操作实例如下:

启动播放器0,动作序列5,100%速度,没有停顿时间,循环播放。

PL 0 SQ 5

改变播放器0,速度为-50%

PL 0 SM -50

暂停播放器0(设置速度为0)

PL 0 SM 0

改变播放器0,速度为200%

PL 0 SM 200

改变播放器0步骤间的停顿时间为1000ms(1秒)

PL 0 PA 1000

停止播放器0

PL 0

跳转到第3步序列号20

SQ 20 IX 3

跳转到第3步序列号20,到2000ms(2秒)

SQ 20 IX 5 T 2000

播放器1开始播放序列15.,步骤2设置为70%速度,只播放一次

PL 1 SQ 15 IX 2 SM -70 ONCE

Arduino与32路舵机控制器串口通讯实例

一.使用Arduino的串口和32路舵机控制器的串口通讯,实现舵机动作控制。

测试代码:

 void setup()  {    Serial.begin(115200);//32路舵机控制器拨码开关都置1  }  void loop()  {    Serial.println("#0 P750 T500");// 舵机接到 0 号口    delay(1000);    Serial.println("#0 P2200 T500");    delay(1000);  }

二.使用Arduino的串口和32路舵机控制器的串口通讯,实现存储的动作控制。

测试代码:

 void setup()  {    Serial.begin(115200);//32路舵机控制器拨码开关都置1  } void loop()  {    Serial.println("PL 0 SQ 5");//启动播放器0,动作序列5,100%速度,没有停顿时间,循环播放     delay(5000);    Serial.println("PL 0");//停止播放器0    delay(1000);  }

产品清单:

DF-USBSSC32 32路舵机控制器 1个

USB电缆 1根

9V电池扣 1个

电子版使用手册 1份

lynxTerm软件 1份

⚠️ **GitHub.com Fallback** ⚠️