by PaulL » Wed Aug 01, 2012 3:25 am
by PaulL
Wed Aug 01, 2012 3:25 am
It's not stated anywhere I know of, so here's some info:
Hitec HSR-8498HB Servo uses 1800 uS (+ / - 2 uS) for 180 degrees of rotation. In RoboIO, the high and low pulse limits are 2450 / 550 uS. These appear to be well within the physical travel range of the HSR-8498 (you won't be asking the servo to move to a position it physically can not if you stick to these limits). The servo I am testing right now is "trimmed" for 0 degrees / 180 degrees using about 625 uS to 2425 uS, well within the pulse limits specified on Roboard.
The HSR-5498SG Servo is VERY similar to the HSR-8498HB.
There were some differences between these servos, but these are very minor. The 5498 I tested is a bit less precise than the 8498HB, with about 10 uS added to the 1800 uS range for 0 to 180 degrees of throw.
I'm using the 10000 uS period as used in RoboIO.
As expected, the resolution of the Roboard PWM circuitry is higher than the resolution of these servos. This basically means you will experience a "dead zone" if you are fiddling in the microsecond range. this "dead zone" varies from about 3 microseconds to 7 microseconds. Essentially this means that if changes are less than 3 to 7 microseconds, you will not see any motion from the servo.
And, if you are using continuous mode for PWM pulses, setting the Servo Enable bit to 0 (turning off the servo from continuous mode) on the servo's control register (base address + 14h for servo 0) can cause glitching. What appears to work is to turn off continuous mode, then disable the servo.
Testing was performed with a portion of a Robonova Servo bracket clamped and CA'd to about an 8 inch lenth of thin brass rod. This position indicator was used in conjunction with two vises, one of which is a precision machinist's vise (more precise than the servo could ever be, this vise was used to determine parallelism at 0, 90, and 180 degrees relative to the brass rod). The other vise was used to hold the servo with rotation axis parallel to the table.
Why the testing?
Well, I'm about to FINALLY unleash my servo move code on my RN-1, and I needed to check the 0 / 180 degrees of rotation in order to scale between the stock move data used with the MRC-3024 and the uS values needed for the Roboard. All I need to do now is figure the servo - to - Roboard mapping (wire length forces certain physical plug locations), test each servo in the standard pose (make sure dir and calcs are good), adjust my offsets (tool built and ready for that), and then start doing some bot motion.
The scaling calculation I'm using could technically be applied to each servo to individually calibrate 0 / 180 rotation uS values for each one, but that's just being too picky at the moment.
One could even fiddle with linearity calibration, but I think in a digital servo that's being way too picky.
Take Care,
Paul
It's not stated anywhere I know of, so here's some info:
Hitec HSR-8498HB Servo uses 1800 uS (+ / - 2 uS) for 180 degrees of rotation. In RoboIO, the high and low pulse limits are 2450 / 550 uS. These appear to be well within the physical travel range of the HSR-8498 (you won't be asking the servo to move to a position it physically can not if you stick to these limits). The servo I am testing right now is "trimmed" for 0 degrees / 180 degrees using about 625 uS to 2425 uS, well within the pulse limits specified on Roboard.
The HSR-5498SG Servo is VERY similar to the HSR-8498HB.
There were some differences between these servos, but these are very minor. The 5498 I tested is a bit less precise than the 8498HB, with about 10 uS added to the 1800 uS range for 0 to 180 degrees of throw.
I'm using the 10000 uS period as used in RoboIO.
As expected, the resolution of the Roboard PWM circuitry is higher than the resolution of these servos. This basically means you will experience a "dead zone" if you are fiddling in the microsecond range. this "dead zone" varies from about 3 microseconds to 7 microseconds. Essentially this means that if changes are less than 3 to 7 microseconds, you will not see any motion from the servo.
And, if you are using continuous mode for PWM pulses, setting the Servo Enable bit to 0 (turning off the servo from continuous mode) on the servo's control register (base address + 14h for servo 0) can cause glitching. What appears to work is to turn off continuous mode, then disable the servo.
Testing was performed with a portion of a Robonova Servo bracket clamped and CA'd to about an 8 inch lenth of thin brass rod. This position indicator was used in conjunction with two vises, one of which is a precision machinist's vise (more precise than the servo could ever be, this vise was used to determine parallelism at 0, 90, and 180 degrees relative to the brass rod). The other vise was used to hold the servo with rotation axis parallel to the table.
Why the testing?
Well, I'm about to FINALLY unleash my servo move code on my RN-1, and I needed to check the 0 / 180 degrees of rotation in order to scale between the stock move data used with the MRC-3024 and the uS values needed for the Roboard. All I need to do now is figure the servo - to - Roboard mapping (wire length forces certain physical plug locations), test each servo in the standard pose (make sure dir and calcs are good), adjust my offsets (tool built and ready for that), and then start doing some bot motion.
The scaling calculation I'm using could technically be applied to each servo to individually calibrate 0 / 180 rotation uS values for each one, but that's just being too picky at the moment.
One could even fiddle with linearity calibration, but I think in a digital servo that's being way too picky.
Take Care,
Paul