PDA

View Full Version : Servo not reaching full travel



ruijc
- 21st December 2007, 11:02
Hi guys,

I've made a circuit that i use to work with a futaba servo.

The problem is that i cannot get it to reach it's extremes.
The max i can get is a total of 90º from left to right ( and i know these servos move more that this ).

I'm running the code like this...

( sample )

Moving left:
if pos > 25 then
pos = pos - 50
servo =1
pauseus 1000+pos
servo =0

Moving right:
if pos <1300 then
pos = pos + 50
servo =1
pauseus 1000+pos
servo =0

I tryed to change the limits but the servo does not move pass it ( upper limit is 1300 and center is 700 )

Thanks in advance

Acetronics2
- 21st December 2007, 12:27
Hi ruijc

I'd be VERY surprised those lines give something you 'd waited for ...

<<
if pos > 25 then
pos = pos - 50
servo =1
pauseus 1000+pos
servo =0
>>

Now,

Which processor ?
Initialisation lines ???
variables ? ( plus which type: bit, byte, Words, longs ???? )

try a little effort ... for others to undunstand what you've done ( or tried to do ...)

Alain

ruijc
- 21st December 2007, 21:54
Hi Alan,

I tryed diferent pics like 16F84, 16F628, 16F88 and speeds of 3Mhz, 4Mhz and 8Mhz.

Here is the all code ( setting lines learned from you ;) ):

'************************************************* ****************************
'19/12/2007
'
'PWM experience to control servo
'
'PIC 16F628 @ 4Mhz

'************************************************* ****************************
'Config

PIE1 = 0 'off
PIR1 = 0 'off
CMCON = 7 'comparator off
VRCON = 0 'Vref Off
T1CON = 0


'************************************************* ****************************
'DEFINEs
'************************************************* ****************************

'OSC

DEFINE osc 4


'************************************************* ****************************
' variables

va1 var word
va2 var word
ser var word
pos var word
na var word
nb var word

CLEAR

'************************************************* ****************************
'I/O's

PORTA = %00000000
PORTB = %00000000

TRISA = %00000011
TRISB = %00000011

'************************************************* ****************************
'PINS

bu1 var PORTA.0
bu2 var PORTA.1
a2 var PORTA.2
a3 var PORTA.3
a4 var PORTA.4
MCLR var PORTA.5
a6 var PORTA.6
a7 var PORTA.7

b4 var PORTB.4
b5 var PORTB.5
b6 var PORTB.6
b7 var PORTB.7

bu4 var PORTB.0
bu3 var PORTB.1
led var PORTB.2
servo1 var PORTB.3


'************************************************* ****************************

Start:


Low servo1
Gosub center

mainloop:

If bu1 = 1 Then
Gosub left
Endif
If bu2 = 1 Then
Gosub center
Endif
If bu3 = 1 Then
Gosub right
Endif

servo1 = 1
Pauseus 1000 + pos
servo1 = 0
Pause 16

Goto mainloop

left:
high led
If pos < 1800 Then
pos = pos + 75
Endif
servo1 = 1
Pauseus 1000 + pos
servo1 = 0
Pause 16
low led
Return

right:
high led
If pos > 25 Then
pos = pos - 75
Endif
servo1 = 1
Pauseus 1000 + pos
servo1 = 0
Pause 16
low led
Return

center:
high led
High 5
Pause 500
pos = 700
Pause 500
servo1 = 1
Pauseus 1000 + pos
servo1 = 0
Pause 16
low led
Return

end

Jumper
- 22nd December 2007, 06:00
Let's just go over the basic idea:

Center position of futaba servo is 1.52ms puls length sent approx every 20 ms. To move it to min position 1 ms and to max position 2 ms.

But when I recently did a thingy for a RC receiver I found out that the pulses are acctually more in the 0.8 ms - 2.2 ms range to allow for trim settings.

If you plan to have more than one servo I would recommend you to have a look at DT software PWM.

If you want to have bigger movement try to change your limit values.

/me

ruijc
- 22nd December 2007, 11:10
Hi Jumper,

when you say change the limit values you mean the :

If pos < 1800 Then

and

If pos > 25 Then

right ?

I added a lcd and did some studies. I did increased the upper value but the servo just stops when it reaches +- 1500.

The center is 700

I cant work with numbers bellow 0 i'm affraid.

The plan is to have only one servo, but i need to use it with more travel ( not continuous ) as 90º is too short :(

.

Jumper
- 22nd December 2007, 12:45
Hi,

Hook up a 10k potentiometer (or whatever you have in your drawer) to i.e AN0. Vdd on one side of the pot. GND on the other and the wiper goes to AN0. Put a 0.1 uF cap between wiper and GND to reduce noice .Connect the servo on i.e PORTB.1 ... if you use a voltage meter on the wiper and adjust the voltage to ~3 V you should get a 1.5 ms pulse every 20ms. Now you can turn the pot and then you can try the end positions... your LCD will be great here.


DEFINE ADC_BITS 8

' DEFINE YOUR LCD SETTINGS HERE

SERVO1 Var PORTB.1
AD0 var word
SERVO1_Pulse var byte
Total_Delay var word
n var byte

TRISA 255 ' PORTA to input
?????????? 'set up as analog CHECK DATASHEET for you PIC
?????????? ' turn off comparators CHECK DATASHEET

n=0
Goto main


update_LCD:
n=0 'reset LCD loop counter
'Here you write your LCD code to send the Servo1_pulse value to your LCD
RETURN

main:

ADCIN 0, AD0 'READ POT
SERVO1_Pulse=AD0*10 'Scale value max = 2550 us
SERVO1=1 'Start the servo pulse
Pauseus(SERVO1_Pulse) 'wait a while
CH1=0 'Stop the pulse
Total_Delay=(20000-Servo1_Pulse) 'calculate loop delay so we
Pauseus(Total_Delay) 'get approx 20 ms loop time
N=n+1
if n>=50 then gosub update_LCD 'update LCD every 50 loops i.e once per second
goto main

end


try it and if it doesnt work let me know so I can help. This code is untested but should work if you set up the analog port correctly. After this you will atleast know how far your servo will travel.

/me

ruijc
- 22nd December 2007, 21:10
Hi Jumper,

Fist of all thanks for your help ;)

I had some issues with your code but i got the idea :) ( nice one by the way )

The problem is that even so the servo just moves a total of 90º

I've googled a bit and for futaba servos they state that you need :

center : 1,5ms
0º : 1ms
120º : 2ms
30º : 1.16ms

( stop time can vary from ~15ms to 30 ms - not critical )

I'm not being able to apply this to my servos :(

Even with a simple pauseus 1000 ( that should be 1ms and the servo should center ) this does not happen

.

Jumper
- 23rd December 2007, 06:19
Do you have more servos? Try a different one since the one you are using might be bad.

If you connect the servo to a normal RC receiver what result do you get then?


/me

skimask
- 23rd December 2007, 09:50
center : 1,5ms
0º : 1ms
120º : 2ms
30º : 1.16ms
Even with a simple pauseus 1000 ( that should be 1ms and the servo should center ) this does not happen
.

It looks to me like you might be confusing a couple of the values you stated above.
From what I'm seeing, you want 1000 to be center and work around that. That's all fine and dandy, but you want the rest of the program to work around it also, which it isn't doing.
Instead of thinking about it in terms of 0, 90, 120, whatever degrees, think of it in terms of -90 , 0 , +90, etc. degrees, where 0 is center.

Using your original code...with a few changes...



'.....set up your ports, adcon, cmcon, whatever else is required...

leftend = 1000
center = 1500
rightend = 2000
stepval = 50
pos = center

moveleft:
pause 19 'pause 19ms
if pos > leftend then
pos = pos - stepval
else
goto moveright
endif
servo = 1 : pauseus pos : servo = 0 : goto moveleft

Moveright:
pause 19 'pause 19ms
if pos < rightend then
pos = pos + stepval
else
goto moveleft
endif
servo = 1 : pauseus pos : servo = 0 : goto moveright

end


And with that code, when pos = 1500, the servo should be centered. pos decreases to leftend, servo moves left, pos gets to leftend, jumps to other loop, pos increases to rightend, servo moves right, pos gets to rightend, jumps to other loop, and over and over.
Change the value of stepval to change how fast the servo moves back and forth. Simple enough.
But if it really doesn't work, and your ports are set up correctly, you've got the right config fuses set, etc.etc., then, as Jumper said, it sounds to me like a goofy servo. What kind of Futaba servo are you using? A standard S148 or what?

ruijc
- 23rd December 2007, 11:38
Jumper, skimask,

i did some more digging but all returning to the same thing...

I tryed skimask's code and the servo uses no more same travel than before.

I'm using a Futaba's S3152 which is a good servom ( IMO ) ...and so i left the "bad servo" mark to the end.

I tryed it with a receiver and same thing.

I'm guessing the servo is really goofy.

.

skimask
- 26th December 2007, 03:58
Jumper, skimask,
i did some more digging but all returning to the same thing...
I tryed skimask's code and the servo uses no more same travel than before.
I'm using a Futaba's S3152 which is a good servom ( IMO ) ...and so i left the "bad servo" mark to the end.
I tryed it with a receiver and same thing.
I'm guessing the servo is really goofy.
.

Does it move equal distances to the 'left' and 'right' as measured from 'center'? Or is one more than the other? What happens if you change 'leftend' to 500 and 'rightend' to 2500? Does it bind at one end or the other?
Are you sure you're PIC is running at the same oscillator speed as you have DEFINE'd?

I haven't done any checking lately, but, is a Futaba S3152 a 'standard' servo? Is it one of the new digital servo's? I don't have any of those, I haven't played with them, so I don't know about their operational characteristics. I'd ASSUME they would operate the same if they're backwards compatible, but I could be wrong...

Jumper
- 26th December 2007, 09:18
http://www.futaba-rc.com/servos/digitalservos.pdf

the s3152 is a digital servo but as the link sais... it is more or less the same thing. No special codeing and other stuff. Have you torn it apart and had a look at the feedback potentiometer. That pot is the one that feedbacks the position of the servo-horn to the MCU inside the servo (since it is a digital servo).

Did you try with some other servo yet?

/me

BrianT
- 26th December 2007, 09:51
1. Centre adjustment.
In most better class servos there is a centre adjustment. To access this, take the servo horn off and use a very small flat blade screwdriver to tweak the potentiometer at the bottom of the servo horn screw mount. This allows you to make an electrical zero adjustment instead of the normal linkage length adjustment.

2. Digital servos will self destruct if driven against their internal stops.
Analog servos are fairly benign when driven past their normal stops. They will stall and draw a few hundred milliamps which is tolerable for a few tens of seconds. A digital servo however draws several amps when moving to the command position and if up against the stops the servo motor will get so hot it melts the plastic coil former used in the coreless motor in seconds. Been there, done that - costs hundreds of dollars when the code in a UAV gets it wrong at power up and burns out aileron and flap servos.

3. Left Right rotation limits.
1.5 mSecs seems to be the universal centre position. 1 mSec is guaranteed to work for one direction and 2 mSec for the other direction with all brands and types of servos. Outside the 1 and 2 mSec limits you are on your own - it might work with brand/type A but not necessarily with brand/type B. There is NO agreement on normal rotation angles - even within one manufacturer. Servos can have +/- 45, +/- 60 and +/- 90 degrees as their internal design limits. Attempting to push a servo past that will shag the servo quick smart.

4. PulsOut is a toggle.
If your code uses the pulsout command to drive the servo make certain you preset the state of the servo drive pin before calling the pulsout command. This command is a toggle and merely sets the pin to the opposite state for the command period. You might be expecting the pin to be low and go high for the pulsout period but real world interference can trip you up and give you the opposite effect. Been there - done that.

Use
Low ServoPin
Pulsout ServoPin, 150 'etc

HTH
Brian

ruijc
- 26th December 2007, 20:23
Hi all,

skimask,

i'm not really sure if the servo moves equally to both sides because it will depend on where the center is.
In my program the center is at pos = 700

The servo never came to the point of hitting it's internal stops and "keeping the motor running" ( if you know what i mean ) ;)

I can increase the pos value but the servo stops when reaching pos +- 1300.

I think that the minimum value could be the key here...i mean...the min value is 25...can i go lower than this ( minus ) ???

Jumper,

I did not opened the servo yet.

BrianT,

My servos do not have the center adjustment screw. Were did you see this ? I have never seen this in any of my servos ( hitec, futaba, digital/analog ).

About the pulsout method...i tryed once that but for some reason it didnt worked as well as my code above...will try it again though

.

BrianT
- 26th December 2007, 21:52
Not all servos have a centre adjustment. To check, remove the philips head screw that holds the servo arm on. Look down the hole in the splined shaft that holds the servo arm. If your servo has a centre adjustment, you will see a very small flat blade screwdriver slot. That is the centre adjustment.

HTH
Brian

skimask
- 26th December 2007, 21:54
Hi all,
i'm not really sure if the servo moves equally to both sides because it will depend on where the center is.
In my program the center is at pos = 700

Put a mark on the servo horn and eyeball it.


The servo never came to the point of hitting it's internal stops and "keeping the motor running" ( if you know what i mean )
Stalling perhaps?


I can increase the pos value but the servo stops when reaching pos +- 1300.
I think that the minimum value could be the key here...i mean...the min value is 25...can i go lower than this ( minus ) ???

Somehow, I think you're Oscillator and you're DEFINE's don't match up. Grab an LED, and try a simple one second per flash LED flasher type thing and see what happens.
I still get the feeling that you're a magnitude or two off the mark here.
The servo stopping at 1300, tells me that if your oscillator was off by a factor of 2, that the 1300 might actually be 2600. A pulse width of 2.6ms on a servo is 'off the scale' at one end by quite a bit, I don't think it's completely unreasonable that you'd be hitting a stop there rather than around 2-2.1 ms like it should be.

And another thing...You also said that your center is 700.
Well, 700 (.7ms) x 2 = 1400 (1.4ms) ....pretty close to 1500 (1.5ms) dontcha think!

Double check your oscillator settings, frequency, code, etc.etc.etc. I'm sticking with that theory for now....in the absense of better information of course...

ruijc
- 26th December 2007, 22:47
skimask ,


just a note:
When i say the center is pos = 700 means that it's 1700 (pauseus 1000+pos ) which is equal to say 1.7ms, right ? ( pretty close to those 1.5ms ).

About the osc you are right because i already did some work there. I started with a define for a 4mhz speed and ended at a 3 mhz define ( with a define osc 3 i got closer to the real thing )

this is because i noticed that using define osc 3 i could get more travel with the lower limit ( pos = 25 ) rather than with define osc 4

.

Jumper
- 27th December 2007, 01:37
Hi

DEFINE OSC 4

you must use capital letters in the define line.

/me

ruijc
- 27th December 2007, 09:04
Opps...i did not knew that

Does that mean that if i use like :

DEFINE osc 3

it will not work ?

shouldnt pbp recognize it anyway ?

.

Jumper
- 27th December 2007, 09:42
All definitions must be in UPPER CASE .... or the compiler MAY not recognize them.

This goes for the entire DEFINE STATEMENT. It has to be exactly as stated in the PBP manual or ....... but I guess the warning in the manual about this has to be for a reason.

I have not spent any time to figure out what if this and what if that. I just stick to the manual and spend my time with writing the code instead.


shouldnt pbp recognize it anyway ? - May or may not...

I really don't know but I am sure DEFINE OSC 3 will do the job.

/me

skimask
- 27th December 2007, 15:10
When i say the center is pos = 700 means that it's 1700 (pauseus 1000+pos ) which is equal to say 1.7ms, right ? ( pretty close to those 1.5ms ).
Ok, that makes a bit more sense now...


About the osc you are right because i already did some work there. I started with a define for a 4mhz speed and ended at a 3 mhz define ( with a define osc 3 i got closer to the real thing )
You do realize that DEFINE OSC 3 doesn't really define 3Mhz, it's actually 3.58Mhz, (14.31818 / 4, for use with colorburst crystals, which used to be dirt cheap and easy to find and accurate).

ruijc
- 27th December 2007, 15:22
Thanks for the warning Jumper,

i have to be more carefull with that from now on

skimask,

i've checked my pbp manual and you are right. Osc 3 is really 3.58 Mhz.

I will try with lower speeds...maybe using the internal oscilators and see what happens

.

skimask
- 27th December 2007, 17:22
skimask,
i've checked my pbp manual and you are right. Osc 3 is really 3.58 Mhz.
I will try with lower speeds...maybe using the internal oscilators and see what happens
.

That's the thing...you shouldn't have to do that.
I can run servo's just as happily running 48mhz on the 18F4550 as I can at 4mhz on the same PIC, same program, same everything, just a different DEFINE OSC at the beginning.
You've got something else going on that's preventing you from doing so.
Port not set right, interrupt's bugging something, register not set up right or something...

And if I remember right, I don't think I've seen your FULL code yet...just fragments.
That doesn't work so good.
Time and time again, somebody says, 'well, the problem can't be over there, 'cause that's got nothing to do with anything over here'.
Well, guess what.....the problem was over there because it had everything to do with all of it over here in one way or the other...

If you run the servo to an endpoint (at least an endpoint that you've found using the PIC and it's software), how much farther (if any) can you make it move after removing power by manually turning it?

ruijc
- 27th December 2007, 21:25
skimask ,

the full code with settings is in my 2nd post.

I ran the program again and moved the servo to the far right and then i moved it with my fingers and yes...it moved a bit more !

this means that it can move a bit more to the right but it's limited with the low 25 ( 1025 ms ).

To the left it goes all the way !

This also means that center is not where i though it was .

.

skimask
- 27th December 2007, 22:18
This also means that center is not where i though it was .

How are you quantifying 'CENTER' on the servo right now? I mean how are you determining 'center'?
Are you trying to let the program do it for you?
Are you moving it manually from end to end and splitting the difference and making a mark at that 'center'?
If you're looking at center and saying that's 'CENTER' because you want it to be center, well, that ain't gonna work.
Take that manual method described above of moving the servo and write a program to send the servo a 1.5ms pulse and see how far off the two marks are. Let the servo tell YOU where center is.

If you are still running that code in your second post, I think you should abandon that code until you figure out how to get full left and right out of your servo's first, before you start adding in buttons and stuff...
Go back to that code in Post #9 and play with that.
Using those values, the servo should move equally left and right (not just a little left and a lot right, 'cause that would mean that your idea of center and the servo's idea of center are two different things, which I think is wrong) and it should do that without binding at either end.

ruijc
- 28th December 2007, 15:42
skimask,

i ran my code and yours ( as transcribed bellow ) and this was what i got ( please see attached pic ):

Manually found left and right limits of this servo and marked it's true center

Fisical center matches the 1500 ms impulse

With my code:
max right = +- 2150ms
max left = +- 1025 ms

With your code :

max right = +- 1950 ms
max left = +- 1025 ms

both are far from servo fisical limits ( fisical limits marked with in red )



your code :

'************************************************* ****************************
'19/12/2007
'
'Skimask's servo code
'
'PIC 16F628 @ 4Mhz

'************************************************* ****************************
'Config

PIE1 = 0 'off
PIR1 = 0 'off
CMCON = 7 'comparator off
VRCON = 0 'Vref Off
T1CON = 0

' internal osc selected in IC prog
' MCLR ON selected in IC prog

'************************************************* ****************************
'DEFINEs
'************************************************* ****************************

'OSC

DEFINE OSC 4

'************************************************* ****************************
'
'LCD

' DEFINE LCD pins
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4

DEFINE LCD_COMMANDUS 2000

'************************************************* ****************************
' variables

va1 var word
va2 var word
ser var word
pos var word
na var word
nb var word
stepval var word
center var word
leftend var word
rightend var word

CLEAR

'************************************************* ****************************
'I/O's

PORTA = %00000000
PORTB = %00000000

TRISA = %00000011
TRISB = %00000011

'************************************************* ****************************
'PINS

bu1 var PORTA.0
bu2 var PORTA.1
R_S var PORTA.2
E var PORTA.3
a4 var PORTA.4
MCLR var PORTA.5
a6 var PORTA.6
a7 var PORTA.7

DATA1 var PORTB.4
DATA2 var PORTB.5
DATA3 var PORTB.6
DATA4 var PORTB.7

bu4 var PORTB.0
bu3 var PORTB.1
led var PORTB.2
servo1 var PORTB.3


'************************************************* ****************************
'************************************************* ****************************

pause 200 'init LCD
lcdout $fe,1 'clear LCD

Start:

leftend = 1000
center = 1500
rightend = 2000
stepval = 20
pos = center

moveleft:
pause 19 'pause 19ms
if pos > leftend then
pos = pos - stepval
else
goto moveright
endif
servo1 = 1 : pauseus pos : servo1 = 0 : goto moveleft

Moveright:
pause 19 'pause 19ms
if pos < rightend then
pos = pos + stepval
else
goto moveleft
endif
servo1 = 1 : pauseus pos : servo1 = 0 : goto moveright

end




EDIT:

I just changed your settings to :
leftend = 500
center = 1500
rightend = 2500

and i got more travel to the right ( more that i got before with mine )
This means that the servo is working bellow 1ms

ruijc
- 28th December 2007, 16:10
Just an update of my previous post:

I changed the values as far as :

leftend = 200
center = 1500
rightend = 3000

( the servo moved a bit more but stopped before reaching it's fisical limits. Also, these values do not represent the true extreme limits )

The new max travel made by the servo is marked in this new picture.

.

skimask
- 28th December 2007, 16:22
I'm thinking (supposing really) that maybe just because a servo has a physical limit, doesn't mean that the electronics inside will let it reach those physical limits. I don't know.
Those marks you made, the black ones, look like a halfway decent 90 degree angle.

How about trying this out for grins:


....all the setup you've already got...it looks like it should work just fine....
Start:
leftend = 100 : center = 1500 : rightend = 2900 : stepval = 20 : pos = center

moveleft:
pauseus 20000 - pos 'pause 20ms - servo pulse width, should keep a more constant refresh rate closer to 50hz
if pos > leftend then
pos = pos - stepval
else
goto moveright
endif
servo1 = 1 : pauseus pos : servo1 = 0 : goto moveleft

Moveright:
pauseus 20000 - pos 'pause 20ms - servo pulse width, should keep a more constant refresh rate closer to 50hz
if pos < rightend then
pos = pos + stepval
else
goto moveleft
endif
servo1 = 1 : pauseus pos : servo1 = 0 : goto moveright

end


I changed it a bit, added a bit of code to keep the refresh rate a bit closer to 50Hz. Maybe the newer servo's are a bit more sensitive to that sort of thing.
Also, I changed leftend and rightend to EXTREME values. They're almost GUARANTEED to bind your servo's at the extreme's.
See what happens.
Are you actually using a real 16F628 or a 16F628A?

ruijc
- 28th December 2007, 20:32
Hi skimask,

i'm using a 16F628A.

With your new code the servo moves all the way up to the new red marks ( as showned in pic # 2 ).

It is still not at it's fisical limit but i think that probably these are the electronic limits of the servo.

.

skimask
- 28th December 2007, 20:47
Hi skimask,
i'm using a 16F628A.
With your new code the servo moves all the way up to the new red marks ( as showned in pic # 2 ).
It is still not at it's fisical limit but i think that probably these are the electronic limits of the servo.
.

Could be the electronic limit thing saving the servo and the gears themselves. Maybe get your hands on an older analog type (i.e. S148) and see what happens.

Also, you said that your center isn't quite right. Could be because you're using the internal oscillator and it's not quite on spec. Datasheet says you could have up to about 5% slop on that (Table 17-5).

Acetronics2
- 29th December 2007, 10:05
Hi,

Just remember this is a DIGITAL Servo, and digital servos have "software" programmed travel limits ...

from the Datasheet ...

<< This digital servo cannot be used with the following * AM *
transmitters as the servo neutral signal is: 1310us).
CONQUEST AM, FG Series (T4FG, T5FGK,T6FG, T6FGK, T7FGK), New Terratop,
T3EGX, T3PGE, T2NL, T2LGX, T2FR, T2PK series.

***** Do not use digital servos with older AM systems *****
>>

Some brands, like hitec, sell the programming box to trim your own parameters ( travel, speed ... etc.)

They also can recognize a valid signal frame ...

so, shortly said, they do not allow you to make "uncontrolled things" ...

Once more reading the servo DATASHEET could have helped !!! ...

Alain

ruijc
- 29th December 2007, 12:10
Acetronics,

true about that...

BUT

If it wasnt for skimask i woudnt be able to get that extra travel ;)


PS. - do you have the link for the s3152 datasheet ?
.

mister_e
- 29th December 2007, 12:22
http://www.gpdealera.com/cgi-bin/wgainf100p.pgm?I=FUTM0311

ruijc
- 29th December 2007, 12:45
Thanks mister_e,

" the neutral is at 1310ms " ... weird :)

.

Acetronics2
- 29th December 2007, 13:04
Hi, Ruijc

Having tortured ( also build and modified ...) dozens of servos ...

I can tell you EVEN Analog ones do not meet your requirements , as the linear response of futaba analog servos is only about 1/2 of the physical range ...

for the full mechanical travel of a S3001, I've measured the pulse width from 200 µs ( full left ) to 2500µs ( full right ) with an awful ( LOL ) non-linearity between 200 and 800 µs ...

Now ... Digital. " a 1.3 ms neutral won't work... " ... as classical travel is +/- 0.5 ms
that means roughly only .9 to 2.1ms range will be accepted by the digital "amplifier" ... or will give a proportionnal output.


STOP DREAMING this servo will NEVER REACH ITS PHYSICAL LIMITS !!! otherwise, that would mean you can burn the output stage of the amp ...


Skimask's lines permit you to measure the input range of your servo ... cause exploring from 100 to 2900 µS.
You're then sure you've seen ALL the travel your servo gan give ... no need to try to get more, unless modifying the servo amp factory settings !!!

Alain

Acetronics2
- 29th December 2007, 13:08
Thanks mister_e,

" the neutral is at 1310ms " ... weird :)

.


Nooooooooooooo,

Those OLD systems HAD a 1310 µs neutral ... from Robbe ( German brand ); Lextronic ( French brand ) and Multiplex had a 1.65 ms neutral, KRAFT ( US ) had a 1.70 or 1.80 ms neutral ...

Now, it's 1500µs for Everyone !!!

Alain

skimask
- 29th December 2007, 21:55
Thanks Alain...a lot of good info I wasn't even aware existed...
I would've figure since these were servos in fast moving vehicles that they would've been a bit 'tighter' from day 1, with all the damage they could possibly inflict.
More info to stuff in the head for future use...

Acetronics2
- 31st December 2007, 12:44
Hi,

a little gadget for your servos ...

xxx...84 shows the auto left>right>left>right ...etc. function
xxx...84+ shows no auto function but allows a different neutral setting and memorizing ... and 1500µs recovering.

note ... C4 is a little 1206 size CMS .22µ capacitor placed just between V+ and GND PIC pins, ... on the copper side !!!

a Happy new year to Everyone !!!

Alain

ruijc
- 31st December 2007, 12:48
Thanks Alain :)

Will have a look ;)

.

Acetronics2
- 31st December 2007, 14:59
Will have a look ;)

.

Service, Sir ...