电子说
在机器人设计领域,随着机器人规模的增大,对伺服电机和I/O的需求也随之增加。Parallax Servo Controller(PSC)就是一款能有效解决这一问题的产品,下面就为大家详细介绍这款控制器。
文件下载:28023.pdf
Parallax Servo Controller(#28023)Rev B是一款16通道的伺服控制器,具备斜坡控制功能。它可以控制多达16个伺服电机,还能通过网络连接,让两个PSC使用单条I/O线控制32个伺服电机。该控制器能管理所有伺服脉冲,减轻主机控制器的负担,同时斜坡功能可单独设置每个伺服电机的速度,实现“设置后无需再管”的功能。
拿到产品后,我们需要核对包装内的物品是否齐全,清单如下:
PSC处理器需要5VDC电源,而伺服电机需单独使用4 - 7.5VDC的电源。要确保伺服电源能在合适的电压下提供足够的电流,且不会损坏伺服电机。
PSC支持通过RS - 232串行协议发送的多个命令,串行线的电压摆幅为0 - 5VDC(TTL电平)。每个串行命令必须以感叹号“!”和字母对“SC”开头,形成前导码“!SC”,用于区分PSC命令和其他消息。命令和相关参数发送后,第八个也是最后一个字符是$0D(CR),用于终止字符串。如果命令使PSC回复,将在1.5mS延迟后发送一个三字节的回复。
'{$PBASIC 2.5}
Sdat PIN 15
' Serial Data I/O pin
Baud CON 396
' Constant for 2400 baud
buff VAR Byte (3)
' temporary variable
FindPSC: ' Find and get the version
DEBUG "Finding PSC", CR ' number of the PSC.
SEROUT Sdat, Baud+$8000, ["!SCVER?",CR]
SERIN Sdat, Baud, 500, FindPSC, [STR buff3]
DEBUG "PSC ver: ", buff(0), buff(1), buff(2), CR
STOP
'{$PBASIC 2.5}
' Serial Data I/O pin
Sdat PIN 15
' Constant for 2400 baud
Baud CON 396
' temporary variable
buff VAR Byte (3)
SetBaud:
DEBUG "Setting Baudrate", CR
SEROUT Sdat, Baud+$8000, ["!SCSBR",1,CR]
SERIN Sdat, 6,500, SetBaud, [STR buff3]
DEBUG "Baud reply: ", buff(0), buff(1), DEC1 buff(2), CR
STOP
'{$PBASIC 2.5}
ch VAR Byte
ch
pw VAR Word
pw
ra VAR Byte
ra
Sdat
Sdat CON 15
baud CON 396
ra = 7
ch = 11
DO
pw = 1250
SEROUT Sdat, Baud+$8000,["!SC", ch, ra, pw.LOWBYTE, pw.HIGHBYTE, CR]
PAUSE 1000
pw = 250
SEROUT Sdat, Baud+$8000,["!SC", ch, ra, pw.LOWBYTE, pw.HIGHBYTE, CR]
PAUSE 1000
LOOP
'{$PBASIC 2.5}
ch VAR Byte
pw VAR Word
ra VAR Byte
x VAR Byte
Buff VAR Byte(3)
Sdat CON 15
baud CON 396
ch
pw
X
Sdat
baud
ra
ra
pw=
Init:
ra = 15: ch = 0
pw = 1240: GOSUB WRservo
DO
pw = 240: GOSUB WRservo
LOOP
WRservo:
SEROUT Sdat, Baud+$8000,["!SC", ch, ra, pw.LOWBYTE, pw.HIGHBYTE, CR]
FOR x = 0 TO 4
PAUSE 1000
SEROUT Sdat, Baud+$8000, ["!SCRSP", ch, CR]
SERIN Sdat, Baud, 1000, Init,[STR Buff3]
DEBUG "Servo ", DEC buff(0), " ", HEX2 buff(1), " :", HEX2 buff(2), CR
NEXT
RETURN可以将两个PSC连接在一起,最多控制32个伺服电机。只需使用第二条三芯电缆将两个PSC串联,如图6所示。通过分流器区分Unit 0(通道0 - 15)和Unit 1(通道16 - 31)。需要注意的是,在这种配置下,向一个单元发送串行命令时,两个单元都会接收。设置伺服位置的命令会被另一个单元忽略,其他命令都会引发回复,Unit 0先回复,Unit 1大约3mS后回复。由于所有回复固定为3字节长度,需要将SERIN命令配置为接收6字节。
| Hardware | Firmware | 说明 |
|---|---|---|
| Rev A | 1.0 | (仅发布了测试版)90度旋转,4μS分辨率,1 - 2mS脉冲,8位PWM,15种可能的斜坡值,位置轮询,38k4波特率的串行接口。可串联,但只有一个通信连接,实现较困难。丝印大部分在PCB底部。去除了Ch0和Ch8的干扰。 |
| Rev B | 1.1 | 2004年3月1日发布,连接器略有更改,便于实现串联方案。丝印修正,相关信息位于PCB顶部。串行接口扩展为支持2400或38k4波特率。 |
| Rev B | 1.2 | 2004年3月16日发布,固件增强,支持16位PWM,180度旋转,2μS分辨率和63种斜坡速率。串行代码优化,能比BS2更快地接收消息。 |
| Rev B | 1.3 | 2004年4月19日发布,修复了固件中的报告位置错误。具体来说,轮询伺服位置时,无论请求的通道号如何,都会报告最后写入的伺服位置。 |
| Rev B | 1.4 | 2005年1月12日发布,解决了PSoC芯片内的中断争用问题,该问题导致部分输出通道出现小干扰,使一些伺服电机在应静止时振荡。PWM通道重构,中断争用不再影响PWM性能,输出干扰从±2μS降低到小于±100nS。 |
PSC是可重新编程的,如果固件不是最新版本,可以寄回Parallax进行免费固件升级,只需支付运费。
大家在使用过程中有没有遇到什么问题呢?或者对于这款控制器的应用,你有什么独特的想法吗?欢迎在评论区分享交流。
全部0条评论
快来发表一下你的评论吧 !