设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9277|回复: 7

SSC32路舵机控制器使用说明 附原理图及测试软件

[复制链接]

签到天数: 7 天

[LV.3]偶尔看看II

发表于 2014-3-26 19:42:13 | 显示全部楼层 |阅读模式
本帖最后由 YFRobot 于 2014-3-27 08:35 编辑

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

参数:
1.输出通道:32路(脉冲调制输出或TTL电平输出);
2.舵机供电:根据所接舵机额定电压供电,典型DC4.8V~6V
3.逻辑供电:DC6V~12VUSB供电(具有自恢复保险丝,调试时使用);
4.驱动分辨率:1uS, 0.09°
5.驱动速度分辨率:1uS/秒,0.09°/秒;
6.通讯接口:USB/TTL串口接口;
7.串口波特率:2400960038.4k115.2k可设置;

接口描述:
SSC32舵机控制板接口如下图所示:
接口描述.png
1.  1631号舵机信号控制引脚,其中G表示GND(黑色排针);V表示VCC(红色排针);S表示信号控制引脚(白色排针)。使用时不要把线接反。
2.  015号舵机信号控制引脚,其中G表示GND(黑色排针);V表示VCC(红色排针);S表示信号控制引脚(白色排针)。使用时不要把线接反。
3.  主控制芯片,采用DIP28脚的Atmega8L单片机,工作频率14.7456MHZ
4.  1631号舵机控制电源输入,可以用来驱动一般的模拟或者是数字舵机。工作电压4.8V6V,可以使用5片镍氢电池组供电,其中VS2接电源正极,GND接电源负极。
5.  015号舵机控制电源输入,可以用来驱动一般的模拟或者是数字舵机。工作电压4.8V6V,可以使用5片镍氢电池组供电,其中VS1接电源正极,GND接电源负极。
6.  逻辑供电输入端,输入电压范围7.515V,通过内部的降压给电源提供稳定的5V电源,其中VIN接电源的正极,GND接电源的负极。
7.  通信速率选择,通过两组指拨开关选择不同的通信波特率,对应关系如下:
指拨开关选择表.png
8.  ABCD四组模拟/数字输入端子,可以设置为静止或者是锁存。
9.  FT232rl通信芯片,提高通信的稳定性。
10. 串口选择,默认通过跳线帽连接TR引脚,去除引脚可以将串口留作它用。
11.  USB接口,用来连接控制板到电脑。
12. 内部降压模块,采用78D05降压模块为控制单元提供稳定的5V电源。
13. 扩展功能,暂时用不到。
14. 蓝牙接口,可以通过额外的蓝牙模块轻松实现无线控制。
15. VS1VS2短接跳线,当两组都插有跳线时,VS1=VS2.这时只需要在VS1或者VS2任意输入一组舵机电源即可;如果去除跳线,VS1VS2为两组不同的电源输入,不同的舵机电源从VS1VS2分别输入。

单个舵机和舵机群运动命令
# <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-71 = 通道8-152 = 通道16-233 = 通道24-31
<value> :十进制输出 (0-255)Bit0=LSB
该命令允许一次性写入8位二进制,并将同时更新bank里的所有通道,更新将在接受到回车符号后20ms内完成
字节输出实例:
   #3:123 <cr>
该命令使bank 3输出十进制123123(十进制)= 01111011(二进制),bank 3为通道24-31,那么bank 3中通道26310,其他通道为1

四.查询运动状态:
   Q <cr>
如果舵机正在转动,返回值为“+”,如果移动到指定位置,返回“.”
这条命令的返回值可能延迟50us5ms

五.查询脉冲宽度:
   QP <arg><cr>
返回值为一个字节(二进制),表示舵机当前的脉冲宽度,分辨率10us,比如脉冲宽度是1500us,那么返回为150(二进制)。
该命令可查询多个舵机的脉冲宽度,每个舵机一个字节,返回值将延迟50us5ms,典型为100us
六.数字输入读取:
   A B C D AL BL CL DL <cr>
控制器上的ABCD作为数字输入端,以二进制方式读取,输入低电平(0V)时返回ASCII“0”,输入高电平(5V)时返回ASCII“1”
ALBLCLDL将以ASCII方式返回数字输入读取值,如果输入为低电平(0V)或者自前一个*L指令后该端口曾经出现过低电平,则返回值为ASCII“0”。如果输入一直是高电平(5V)并且自前一个*L指令后一直保持高电平,则返回值为ASCII“1”
上电后ABCD初始被配置为数字输入口,有50K的弱上拉,平均每1ms检测输入值一次,去抖动需要15ms 。读出的逻辑电平在新的逻辑电平维持15ms前不会改变。该读取指令可以群发,支持8个指令同时发送。
数字输入读取实例:
   A B C DL <cr>
读取ABCD(带锁存),如果A=0,B=1,C=1,D=0,那么返回值为“0110”

八.模拟输入读取:
   VA VB VC VD <cr>
控制器上的ABCD作为模拟输入端,读取输入的模拟信号,将返回一个8位的二进制数。
ABCD做模拟口时,禁止内部上拉,同时开启数字滤波功能以减噪,滤波后只读取端口电压8ms内变化量的最终值,返回“0”表示0V,返回“255”表示4.98V。返回值=(输入电压*256/5。上电初始ABCD将配置为数字输入并有内部上拉,第一次使用“VA VB VC VD <cr>”后,将配置为模拟输入并禁止内部上拉。在设置成模拟输入后的第一次返回值无效。
模拟输入读取实例:
   VA VB <cr>
AB为例,将会返回2个字节,比如A输入2VB输入3.5V,那么返回102(二进制)和179(二进制)。

控制器的测试:
SSC32舵机控制器使用之前需要安装USB驱动程序,否则无法使用。
下面将介绍使用Lynx Terminal软件来进行测试,软件安装步骤省略,完成后如下图所示:
lynx term.png
1. 端口选择,在驱动安装完成后,系统硬件设备管理里会多出一个虚拟COM口,根据实际映射端口号选择,例如这里显示"COM197".
2. 通信参数设置,如右图所示,波特率默认115200,通过板上的指拨开关设置,数据通信格式为8N1 setup.png
3. 通信参数设置完成后,点击“Connect”连接控制板。
4.  Timeouts可以用来检测版本号,及“VER”测试。
5. 命令行输入区,以键盘上敲击回车键结束,此命令行内不需要加<cr>。
6. 清空命令行显示。

*在命令行内所有指令均以敲击回车键发送,不需要再加<cr>
连接成功后,测试就正式开始了,在黑色框中输入命令:
#0 P1500 #1 P1500 #2 P1500
回车后,你会看见L指示灯会闪烁,同时通道0、12的舵机会转动到中间位置。
#0 P750 #1 P1000 #2 P2000 T3000
回车后,你会看见通道0比通道12运动的慢一些,但都会同时到达指定位置。
现在来测试查询运动状态,在黑色框中输入命令:
#0 P750
回车后,通道0舵机转到接近最小位置,接着输入下面的命令,使通道0舵机花10秒转到接近最大位置。
#0 P2250 T10000
舵机正在运动时,输入下面的命令:
Q
如果舵机正在运动,将返回“+”,如果舵机到达指定位置将返回.”
接下来测试舵机的运动速度,在黑色框中输入命令:
#0 P750 S1000
这条命令将使舵机从2250us移动到750us(大概170度),一共耗时1.5秒。
#0 P2250 S750
这条命令将使舵机从750us移动到2250us(大概170度),一共耗时2秒。
Arduino32路舵机控制器串口通讯实例
使用Arduino的串口和32路舵机控制器的串口通讯,实现舵机动作控制。将ArduinoTXD引脚接到舵机控制器的RXD引脚,GND接到舵机控制器的GND

测试代码:
  1. void setup()
  2. {
  3.    Serial.begin(115200);//32路舵机控制器拨码开关都置1
  4. }
  5. void loop()
  6. {
  7.    Serial.println("#0 P750 T500");// 舵机接到 0 号口
  8.    delay(1000);
  9.    Serial.println("#0 P2200 T500");
  10.    delay(1000);
  11. }
复制代码

下载: SSC32原理图.pdf (587.43 KB, 下载次数: 267)

该用户从未签到

发表于 2015-10-10 14:14:20 | 显示全部楼层
谢谢楼主 正需要这个来测试
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2015-10-10 14:14:29 | 显示全部楼层
谢谢楼主 正需要这个来测试
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-3-11 15:46:49 | 显示全部楼层
谢谢楼主!!可否发一份舵机控制板所烧写的程序?想学习学习,自己写得问题好多
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-11-12 11:05:01 | 显示全部楼层
USB驱动怎么装啊?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-11-12 11:12:02 | 显示全部楼层
是不是不支持Win10系统的?
回复 支持 反对

使用道具 举报

签到天数: 15 天

[LV.4]偶尔看看III

发表于 2016-11-13 14:32:11 | 显示全部楼层
谢谢楼主 正需要这个软件来测试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135  

GMT+8, 2017-1-24 08:57 , Processed in 0.415736 second(s), 27 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表