I’ve been working with the ssc-32 timed servo moves and am having problems getting consistant timed moves. I’ve made a simple program that has a servo make a three second timed move between two positions. During the move, an analog input is monitored, and when the desired value is exceeded, the servo is given a “stop” command. Then the servo is returned to the origional start position, and the timed sequence is repeated. The problem I’m having is that ~20% of the time, the servo immediately goes to the final position instead of making a timed move. Since the timed move failure is not consistant, I’m not sure what might be the problem. I’m using a simple free programming application called Justbasic (link below) for running the test setup. Since the servo moves to the final position, I assume the position is correctly seen by the ssc-32 as well as the required carrage return on the end. The command is “#0P1100T3000” and a carrage return/line feed is automatically appended to the end. I’m just wondering if anybody else has seen this type of issue. I’m using the v2 ssc-32 with the latest update installed.
i also got the same problem. i’m using the ssc32 with atmega168 chip.v2. i’m using the ssc32 to control 18 servo of my hexapod robot. when i use a timed group move, it comes with problems. the servo arrives at the end posisition tat i desired not in the same time. there is a few servo that looks like not being maintained with the speed.
A clue to what might be going on here is that sometime it ignores the time parameter. Are we isolating the VL terminals from the VS so we know the SSC-32 isn’t resetting? If the SSC-32 is resetting then the T command is ignored as the first command after startup. If you can provide me with enough information that would allow me to reproduce the problems here then we can do something about it. But I’m guessing it’s just a brownout problem with the power delivery system.
there is no problem when i’m not use the T parameter. but when i use the T parameter, sometimes there is a several servo that move in high speed. seems like the T parameter doesnt work for that servo but the ssc is not reset. maybe i can give you the video from my problems.
Zoomkat, I’m trying to duplicate your problem.
edi14_10, Well in addition to the video I would be interested in seeing images of the wiring, examples of the code, just more information in general.
I created some macros in LynxTerm and duplicated as best I could your sequence of commands. I did not notice anything unusual. Perhaps we could see the basic program you are using?
Below is some code I was testing with just basic. The intent was to stop the servo timed movement when the servo pot was at a certain position and to stop movement when a simple switch is closed. I never noticed the ssc-32 led indicating that it had reset, and only one servo with no load was being used. I did not get around to using portmon to see exactly what was being sent out the serial port. A lot of stuff commented out from various testing.
[code]open “Com5:9600,n,8,1,ds0,cs0,rs” for random as #comm
Print #comm, “#0P2200” '; chr$(13); 'initial position
y=0 'outside loop counter
[loop]
timer 2000, [delay2] 'iniial delay before timed move
wait
[delay2]
timer 0
x=0 'inside loop counter
'start 3 second move
Print #comm, “#0P1100T3000” 's$
'Print #comm, “#0P1100S367”
[loop1] 'inside loop
x=x+1
y$ = “VC”
Print #comm, y$ '; chr$(13);
timer 20, [delay] 'read return delay
wait
[delay]
timer 0
dataRead$ = input$(#comm, lof(#comm))
'print dataRead$
'print " ";ASC(dataRead$)
num = ASC(dataRead$)
print num
if num > 100 then Print #comm, “STOP 0”
if x < 100 then [loop1] 'set for 10 samples
'Print #comm, “#0”; chr$(27) 'stop servo move
Print #comm, “QP0” 'get analog servo pot value
timer 50, [delay3]
wait
[delay3]
timer 0
dataRead$ = input$(#comm, lof(#comm))
print dataRead$ 'print out servo position
print ASC(dataRead$)
Print #comm, “#0 P2200” '; chr$(13); 'send servo to start position
print “”
y=y+1
if y < 10 then [loop] 'set for 3 loops
print “done”
Close #comm
[/code]
I just want to make sure that it is understood that the servos will move at different speeds when the T command is used. The greater the distance a servo has to travel, the faster it will move.
Zoomkat, I am drawing a blank right now what might be the cause of the symptoms you are seeing. The T command has been in the SSC-32 since day 1 and has not changed in a long time. The STOP command is new, so I am wondering if there might be some problem with it that didn’t turn up in my testing. Have you seen this problem in cases where you weren’t using the STOP command?
Thanks,
Mike
From the outside it looks like when “#0P1100T3000” is sent, the controller performs “#0P1100”. This was happening 20-50% of the time. I was interested to see if it was something with my computer or the Just Basic programming language. In the past I’ve used Portmon to look at what is sent out the com port, and have noticed that what is seen in just basic is somewhat different than what is seen sending bytes using a batch file. I don’t think the stop command is the issue as the servo has already moved rapidly before the program detects the stop value and issues the stop command. This issue cripples some of the capabilitys of the latest version of the ssc-32.