futaba S3003 servo
2004-06-19 by jay marante
Yahoo Groups archive
Index last updated: 2026-04-28 22:41 UTC
Thread
2004-06-19 by jay marante
Do you Yahoo!?
Yahoo! Mail is new and improved - Check it out!
2004-06-19 by David VanHorn
At 09:27 AM 6/19/2004 -0700, jay marante wrote: >i don't know much bout the servo motor except that i have to use PWM to make it rotate. i need some basic info bout it. can i rotate it back-and-forth? also, what should i do to make it rotate more than 360 degree? thanks... Most RC servos can't do 360 degree. Typically, a pulse of 500uS to 1500uS will drive them from end to end of their range. The pulse width tells the servo what position you want.
2004-06-19 by Phil
Servos can be modified to make them rotate 360. I've done it for a number of GWS servos. If the FS3003 uses plastic gears (and I think it does) then its pretty easy. you will have to remove the "nub" that prevents rotation and disconnect the feed-back pot. google for servo modification - there are numerous pages on this topic. PWM control of the servo typically is a 1-2 mS pulse within a 10 mS window. A 1.5 mS pulse is neutral (no rotation), a 1.0 mS pulse is full speed one direction and 2.0 mS is full the other. Proportional values for proportional speeds (i.e. 1.75 mS is half speed, approx). --- In AVR-Chat@yahoogroups.com, David VanHorn <dvanhorn@c...> wrote: > At 09:27 AM 6/19/2004 -0700, jay marante wrote: > > >i don't know much bout the servo motor except that i have to use PWM to make it rotate. i need some basic info bout it. can i rotate it back-and-forth? also, what should i do to make it rotate more than 360 degree? thanks... > > Most RC servos can't do 360 degree. > > Typically, a pulse of 500uS to 1500uS will drive them from end to end of their range. > > The pulse width tells the servo what position you want.
2004-06-19 by Phil
--- In AVR-Chat@yahoogroups.com, David VanHorn <dvanhorn@c...> wrote: > At 07:12 PM 6/19/2004 +0000, Phil wrote: > ... > > Modified, yes. Stock, no. agreed, but he asked how... > > The ones I've seen, have been 500 - 1500uS Interesting, which servos did you see this in? I know that futaba, gws and several others use 1-2 mS. I thought it was a standard. Here's a page that describes the mods for the S3003 and talks about the PWM pulse lengths. http://www.kronosrobotics.com/an116/GAN116_3003.htm By the way, the instructions call for a snipper to cut off the rotation stop nub but I used a heated xacto blade to get a smoother result. order a replacement gear set, by the way. if you dont need it good but if you do you'll be glad you did. they are pretty cheap. Phil
2004-06-19 by David VanHorn
At 07:12 PM 6/19/2004 +0000, Phil wrote: >Servos can be modified to make them rotate 360. I've done it for a >number of GWS servos. If the FS3003 uses plastic gears (and I think >it does) then its pretty easy. you will have to remove the "nub" >that prevents rotation and disconnect the feed-back pot. google for >servo modification - there are numerous pages on this topic. Modified, yes. Stock, no. >PWM control of the servo typically is a 1-2 mS pulse within a 10 mS >window. A 1.5 mS pulse is neutral (no rotation), a 1.0 mS pulse is >full speed one direction and 2.0 mS is full the other. Proportional >values for proportional speeds (i.e. 1.75 mS is half speed, approx). The ones I've seen, have been 500 - 1500uS I did see enough variability that I added the ability to set min and max pulse width per servo, and the firmware then calculates pulse widths for an 8 bit zero to full scale motion per servo. The sync gap can be shortened, to get more torque, up to a point.
2004-06-19 by David VanHorn
> >Interesting, which servos did you see this in? I know that futaba, >gws and several others use 1-2 mS. I thought it was a standard. ;For Futaba Servos .equ Futaba_Min = 1000 ;Microseconds for minimum position .equ Futaba_Max = 2000 ;Microseconds for maximum position .equ Futaba_Range = (Futaba_Max - Futaba_Min) ;For Cirrus Servos .equ Cirrus_Min = 400 ;Microseconds for minimum position .equ Cirrus_Max = 2000 ;Microseconds for maximum position .equ Cirrus_Range = (Cirrus_Max - Cirrus_Min) ;For JR Servos .equ JR_Min = 1000 ;Microseconds for minimum position .equ JR_Max = 2000 ;Microseconds for maximum position .equ JR_Range = (JR_Max - JR_Min) Pulled from my GSV5 code that does eight mix-and-match servos with 8 bit control
2004-06-20 by jay marante
ok... assuming phil's data, this is what i sofar understand: i should send a signal to the servo with 2ms (5V) to rotate it at maximum position and 1ms (5V) for minimum position. should i send this signal once (just sigle pulse) for the servo to rotate, say for maximum position? or should i send a continuous signal of 2ms length of 5V? and if that should be the case, what should be the length of the 0V in between the 5V signals? thanks... David VanHorn <dvanhorn@cedar.net> wrote: > >Interesting, which servos did you see this in? I know that futaba, >gws and several others use 1-2 mS. I thought it was a standard. ;For Futaba Servos ..equ Futaba_Min = 1000 ;Microseconds for minimum position ..equ Futaba_Max = 2000 ;Microseconds for maximum position ..equ Futaba_Range = (Futaba_Max - Futaba_Min) ;For Cirrus Servos ..equ Cirrus_Min = 400 ;Microseconds for minimum position ..equ Cirrus_Max = 2000 ;Microseconds for maximum position ..equ Cirrus_Range = (Cirrus_Max - Cirrus_Min) ;For JR Servos ..equ JR_Min = 1000 ;Microseconds for minimum position ..equ JR_Max = 2000 ;Microseconds for maximum position ..equ JR_Range = (JR_Max - JR_Min) Pulled from my GSV5 code that does eight mix-and-match servos with 8 bit control Yahoo! Groups SponsorADVERTISEMENT --------------------------------- Yahoo! Groups Links To visit your group on the web, go to: http://groups.yahoo.com/group/AVR-Chat/ To unsubscribe from this group, send an email to: AVR-Chat-unsubscribe@yahoogroups.com Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. --------------------------------- Do you Yahoo!? New and Improved Yahoo! Mail - Send 10MB messages!
2004-06-20 by David VanHorn
At 05:20 PM 6/19/2004 -0700, jay marante wrote: >ok... assuming phil's data, this is what i sofar understand: > >i should send a signal to the servo with 2ms (5V) to rotate it at maximum position and 1ms (5V) for minimum position. > >should i send this signal once (just sigle pulse) for the servo to rotate, say for maximum position? or should i send a continuous signal of 2ms length of 5V? and if that should be the case, what should be the length of the 0V in between the 5V signals? thanks... I've always heard this delay referred to as the "framing delay". If you were outputting for a transmitter, with 8 servos, you would send P.P.P.P.P.P.P.P_____ with the "_" part as the framing delay, and each "P" is a pulse for a different servo. I think there is some minimum delay between the pulses as well, but I never had to deal with this. The individual servo only sees P_____P_____ and every pulse is "for me". I tried various framing delays from 20mS (very "steppy") to <10mS which didn't seem to show much improvement over 10mS. Basically, the servos I tried, start running after the pulse finishes, then stop running if they don't get another pulse within 10-15mS
2004-06-20 by jay marante
maybe i'll just have to go for some trail-and-error. next, i don't know how thw PWM works. i'll use mega16L. in general, how does the PWM work? and in AVR, how should i do this? thanks for the help. David VanHorn <dvanhorn@cedar.net> wrote: At 05:20 PM 6/19/2004 -0700, jay marante wrote: >ok... assuming phil's data, this is what i sofar understand: > >i should send a signal to the servo with 2ms (5V) to rotate it at maximum position and 1ms (5V) for minimum position. > >should i send this signal once (just sigle pulse) for the servo to rotate, say for maximum position? or should i send a continuous signal of 2ms length of 5V? and if that should be the case, what should be the length of the 0V in between the 5V signals? thanks... I've always heard this delay referred to as the "framing delay". If you were outputting for a transmitter, with 8 servos, you would send P.P.P.P.P.P.P.P_____ with the "_" part as the framing delay, and each "P" is a pulse for a different servo. I think there is some minimum delay between the pulses as well, but I never had to deal with this. The individual servo only sees P_____P_____ and every pulse is "for me". I tried various framing delays from 20mS (very "steppy") to <10mS which didn't seem to show much improvement over 10mS. Basically, the servos I tried, start running after the pulse finishes, then stop running if they don't get another pulse within 10-15mS Yahoo! Groups SponsorADVERTISEMENT --------------------------------- Yahoo! Groups Links To visit your group on the web, go to: http://groups.yahoo.com/group/AVR-Chat/ To unsubscribe from this group, send an email to: AVR-Chat-unsubscribe@yahoogroups.com Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. --------------------------------- Do you Yahoo!? New and Improved Yahoo! Mail - 100MB free storage!
2004-06-20 by David VanHorn
At 05:38 PM 6/19/2004 -0700, jay marante wrote: >maybe i'll just have to go for some trail-and-error. >next, i don't know how thw PWM works. i'll use mega16L. >in general, how does the PWM work? and in AVR, how should i do this? >thanks for the help. I didn't use PWM in my implementation. I started the pulse by taking an I/O port high, then loaded timer 1 with the appropriate time interval. When T1 overflowed, I got an interrupt, and all I had to do there was shut off all the RC servo outputs, and increment to the next servo. Today, I would probably be more gutsy, and pulse all 8 servos at once, with the timer telling me when and which pulse to turn off. I posted the code, written for the 8515, but you can port it, on dontronics, and I think it's also in the yahoo web site for avr-chat.
2004-06-20 by jay marante
At 05:38 PM 6/19/2004 -0700, jay marante wrote:
>maybe i'll just have to go for some trail-and-error.
>next, i don't know how thw PWM works. i'll use mega16L.
>in general, how does the PWM work? and in AVR, how should i do this?
>thanks for the help.
I didn't use PWM in my implementation.
I started the pulse by taking an I/O port high, then loaded timer 1 with the appropriate time interval. When T1 overflowed, I got an interrupt, and all I had to do there was shut off all the RC servo outputs, and increment to the next servo.
Today, I would probably be more gutsy, and pulse all 8 servos at once, with the timer telling me when and which pulse to turn off.
I posted the code, written for the 8515, but you can port it, on dontronics, and I think it's also in the yahoo web site for avr-chat.
Yahoo! Groups Sponsor ADVERTISEMENT
Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages!