YFROBOT创客社区
标题: SSC32路舵机控制器使用说明 附原理图及测试软件 [打印本页]
作者: YFRobot 时间: 2014-3-26 19:42
标题: SSC32路舵机控制器使用说明 附原理图及测试软件
本帖最后由 YFRobot 于 2014-3-27 08:35 编辑
概述:
USBSSC32路舵机控制是专为人形机器人、蜘蛛机器人、机械手等多舵机使用而量身定做的多路舵机控制器。该控制器不但保留了原版的所有功能,还在原版的基础上作了升级,将原来的RS232串口改成了USB接口,方便电脑没有串口的用户使用。控制器还增加蓝牙接口,可实现无线远程控制。USBSSC32路舵机控制控制方式包括实时、定时、定速控制等,与 lynxmotion 的控制软件完全兼容.
参数:
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可设置;
接口描述:
SSC32舵机控制板接口如下图所示:
[attach]856[/attach]
1. 16-31号舵机信号控制引脚,其中G表示GND(黑色排针);V表示VCC(红色排针);S表示信号控制引脚(白色排针)。使用时不要把线接反。
2. 0-15号舵机信号控制引脚,其中G表示GND(黑色排针);V表示VCC(红色排针);S表示信号控制引脚(白色排针)。使用时不要把线接反。
3. 主控制芯片,采用DIP28脚的Atmega8L单片机,工作频率14.7456MHZ。
4. 16-31号舵机控制电源输入,可以用来驱动一般的模拟或者是数字舵机。工作电压4.8V-6V,可以使用5片镍氢电池组供电,其中VS2接电源正极,GND接电源负极。
5. 0-15号舵机控制电源输入,可以用来驱动一般的模拟或者是数字舵机。工作电压4.8V-6V,可以使用5片镍氢电池组供电,其中VS1接电源正极,GND接电源负极。
6. 逻辑供电输入端,输入电压范围7.5-15V,通过内部的降压给电源提供稳定的5V电源,其中VIN接电源的正极,GND接电源的负极。
7. 通信速率选择,通过两组指拨开关选择不同的通信波特率,对应关系如下:
8. ABCD四组模拟/数字输入端子,可以设置为静止或者是锁存。
9. FT232rl通信芯片,提高通信的稳定性。
10. 串口选择,默认通过跳线帽连接T、R引脚,去除引脚可以将串口留作它用。
11. USB接口,用来连接控制板到电脑。
12. 内部降压模块,采用78D05降压模块为控制单元提供稳定的5V电源。
13. 扩展功能,暂时用不到。
14. 蓝牙接口,可以通过额外的蓝牙模块轻松实现无线控制。
15. VS1与VS2短接跳线,当两组都插有跳线时,VS1=VS2.这时只需要在VS1或者VS2任意输入一组舵机电源即可;如果去除跳线,VS1与VS2为两组不同的电源输入,不同的舵机电源从VS1与VS2分别输入。
单个舵机和舵机群运动命令
# <ch> P <pw> S <spd>... # <ch> P <pw> S <spd> T <time><cr>
<ch> :舵机通道号,0 – 31。
<pw> :脉冲宽度,单位微秒(us),500 – 2500。
<spd> :单通道的运动速度,单位us/秒。(可选)
<time> :所有通道的速度,单位毫秒(ms),最大65535。(可选)
<cr> :结束回车符,ASCII码中的13。(必选)
<esc> :取消当前的命令,ASCI码中的27。
一. 单个舵机运动实例:
#5 P1600 S750 <cr>
通道5将以750us/秒的速度移动到1600us位置。为了更好的理解速度这个概念,举个例子,当舵机从-90度到0度时,脉冲宽度为1ms时间即1000us,也就是说1000us脉冲宽度舵机就会转90度,那么100us/秒的速度就表示舵机花10秒的时间就可以转到90度,2000us/秒的速度就表示舵机花0.5秒的时间就可以转到90度。公式:运行时间(秒)=脉冲宽度(us)/速度(us/秒)。
#5 P1600 T1000 <cr>
通道5将在1秒内从任何位置移动到1600us位置。
舵机群运动实例:
#5 P1600 #10 P750 T2500 <cr>
通道5移动到1600us位置,通道10移动到750us的位置,2个都同时在2500us内完成,这个命令能协调多个舵机的速度,即使2个舵机的初始位置相差很远,都可以使他们同时开始转动并同时停止到指定位置上。这条命令非常适合人形双足机器人多舵机同时运动,可自动协调所有舵机的速度,完成复杂步态的同步。 你可以使用该命令进行速度和时间组合,组合必须根据下面的规则:
1.所有通道的开始和结束将同时完成。
2.如果某个通道指定了速度,那么它将不会快于指定速度(可以根据需要调节移动速度)。
3.如果某个通道指定了时间,那么它将在指定的时间移动到指定位置(可根据需要调节移动时间)。
#5 P1600 #17 P750 S500 #2 P2250 T2000 <cr>
通道5移动到1600us位置,通道17移动到750us的位置,通道2机移动到2250us的位置,整个动作需要2000us,但是通道17的舵机不会按500us/秒的速度运行,这个需要取决于通道17的初始位置。假设通道17的初始位置在2000us,它被指定移动1250us,超过500us/秒的限制,那么他将至少花2500us完成动作,再假设通道17初始位置在1000us,只需要它移动250us,那么在500us/秒以内,那么他将花2000us完成动作。
注意:第一条定位命令不能包含速度和时间的,格式为“# <ch> P <pw>”,例如先发送一条“#0 P1500 <cr>”指令,确定舵机位置后,才可以发送带有速度和时间控制的指令,否则会发生不可意料的动作。
二.数字输出:
#<ch><lvl> ... # <ch> <lvl><cr>
<ch> :舵机通道号,0 – 31。
<lvl> :通道输出逻辑电平,高‘H’或低‘L’。
<cr> :结束回车符,ASCII码中的13。
该通道将在接受到回车指令20ms内输出电平。
数字输出实例:
#3H #4L <cr>
该命令使通道3输出高电平(+5V),通道4输出低电平(0V)。
三.字节输出:
#<bank> : <value><cr>
<bank> :0 = 通道0-7,1 = 通道8-15,2 = 通道16-23,3 = 通道24-31。
<value> :十进制输出 (0-255),Bit0=LSB。
该命令允许一次性写入8位二进制,并将同时更新bank里的所有通道,更新将在接受到回车符号后20ms内完成
字节输出实例:
#3:123 <cr>
该命令使bank 3输出十进制123,123(十进制)= 01111011(二进制),bank 3为通道24-31,那么bank 3中通道26和31为0,其他通道为1。
四.查询运动状态:
Q <cr>
如果舵机正在转动,返回值为“+”,如果移动到指定位置,返回“.”。
这条命令的返回值可能延迟50us至5ms。
五.查询脉冲宽度:
QP <arg><cr>
返回值为一个字节(二进制),表示舵机当前的脉冲宽度,分辨率10us,比如脉冲宽度是1500us,那么返回为150(二进制)。
该命令可查询多个舵机的脉冲宽度,每个舵机一个字节,返回值将延迟50us至5ms,典型为100us。
六.数字输入读取:
A B C D AL BL CL DL <cr>
控制器上的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 <cr>
读取A,B,C和D(带锁存),如果A=0,B=1,C=1,D=0,那么返回值为“0110”。
八.模拟输入读取:
VA VB VC VD <cr>
控制器上的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 <cr>”后,将配置为模拟输入并禁止内部上拉。在设置成模拟输入后的第一次返回值无效。
模拟输入读取实例:
VA VB <cr>
以A、B为例,将会返回2个字节,比如A输入2V,B输入3.5V,那么返回102(二进制)和179(二进制)。
控制器的测试:
SSC32舵机控制器使用之前需要安装USB驱动程序,否则无法使用。
下面将介绍使用Lynx Terminal软件来进行测试,软件安装步骤省略,完成后如下图所示:
[attach]854[/attach]
1. 端口选择,在驱动安装完成后,系统硬件设备管理里会多出一个虚拟COM口,根据实际映射端口号选择,例如这里显示"COM197".
2. 通信参数设置,如右图所示,波特率默认115200,通过板上的指拨开关设置,数据通信格式为8N1。[attach]855[/attach]
3. 通信参数设置完成后,点击“Connect”连接控制板。
4. Timeouts可以用来检测版本号,及“VER”测试。
5. 命令行输入区,以键盘上敲击回车键结束,此命令行内不需要加<cr>。
6. 清空命令行显示。
*在命令行内所有指令均以敲击回车键发送,不需要再加<cr>。
连接成功后,测试就正式开始了,在黑色框中输入命令:
#0 P1500 #1 P1500 #2 P1500
回车后,你会看见L指示灯会闪烁,同时通道0、1、2的舵机会转动到中间位置。
#0 P750 #1 P1000 #2 P2000 T3000
回车后,你会看见通道0比通道1和2运动的慢一些,但都会同时到达指定位置。
现在来测试查询运动状态,在黑色框中输入命令:
#0 P750
回车后,通道0舵机转到接近最小位置,接着输入下面的命令,使通道0舵机花10秒转到接近最大位置。
#0 P2250 T10000
舵机正在运动时,输入下面的命令:
Q
如果舵机正在运动,将返回“+”,如果舵机到达指定位置将返回“.”。
接下来测试舵机的运动速度,在黑色框中输入命令:
#0 P750 S1000
这条命令将使舵机从2250us移动到750us(大概170度),一共耗时1.5秒。
#0 P2250 S750
这条命令将使舵机从750us移动到2250us(大概170度),一共耗时2秒。
Arduino与32路舵机控制器串口通讯实例:
使用Arduino的串口和32路舵机控制器的串口通讯,实现舵机动作控制。将Arduino的TXD引脚接到舵机控制器的RXD引脚,GND接到舵机控制器的GND。
测试代码:
- void setup()
- {
- Serial.begin(115200);//32路舵机控制器拨码开关都置1
- }
- void loop()
- {
- Serial.println("#0 P750 T500");// 舵机接到 0 号口
- delay(1000);
- Serial.println("#0 P2200 T500");
- delay(1000);
- }
复制代码
下载:[attach]859[/attach]
[attach]860[/attach]
[attach]861[/attach]
作者: zhangylelec 时间: 2015-10-10 14:14
谢谢楼主 正需要这个来测试
作者: zhangylelec 时间: 2015-10-10 14:14
谢谢楼主 正需要这个来测试
作者: weiqi0911 时间: 2016-1-6 18:35
作者: genisibao 时间: 2016-11-12 11:05
USB驱动怎么装啊?
作者: genisibao 时间: 2016-11-12 11:12
是不是不支持Win10系统的?
作者: firegod01cn 时间: 2017-8-16 14:55
多谢了~~~~~~~~~~~~喜欢啊
作者: 破碎虚空 时间: 2018-5-10 09:33
好的上手 试试
作者: 18846181635 时间: 2018-10-27 11:04
感谢大佬!
作者: kuailedexuexi 时间: 2018-12-13 09:53
xiexie
欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) |
Powered by Discuz! X3.1 |