Shop Learn
Propeller Application: Proportional feedback from a Standard Hobby Servo (Upda - Page 2 — Parallax Forums

Propeller Application: Proportional feedback from a Standard Hobby Servo (Upda



  • greenthumbgreenthumb Posts: 1
    edited 2009-09-22 21:19
    thanks for this post. i think i have encountered the same problem. im also looking if someone does servo drive repair or if anyone does this for free?
  • Nishi .Nishi . Posts: 23
    edited 2010-03-04 18:15
    This sounds really interesting, Ive been trying to get my lynx brat walking smoothly with a PRCB, I'm going to try and integrate this idea now.
  • LawsonLawson Posts: 870
    edited 2010-03-04 20:04
    @Nishi: I read through your other thread, and think my circuit could be easily simplified to add a teach mode to your robot. A lot of the complication in the attached circuit is due to multiplexing position sensing and servo power control onto a single pin. Using an manually controlled switch or jumper for power control would allow the circuit to be simplified greatly. I.e T501 would be replaced with a jumper and R502, R503, R504, T500, and D500 could be removed. My latest single pulse code should still work just fine with the reduced circuit.


    P.S. I assume you are using analog servos? digital servos likely won't work, while "micro" analog servos use a different internal circuit that requires code changes to work.

    Lunch cures all problems! have you had lunch?
    439 x 395 - 4K
  • ercoerco Posts: 20,159
    edited 2011-08-19 15:12
    This is an ingenious approach which works with unmodified servos.

    Less ingenious and more brute force (but equally effecive)is to tap into the servo's internal pot and read that voltage with an ADC.
  • thinkpadingthinkpading Posts: 4
    edited 2011-09-02 21:56
    I read your schematic about "Proportional feedback from a Standard Hobby Servo ".But some little hard to me to understand that all.
    Now , I'm doing some subject . I need to get the servo's pulse width value in real time knowing the robot's gesture.You said it could be done by detecting the current or voltage drop supplied to servo, and someone advised to add an external encoder.However, I still can'tget the principle of these idears, so can I get your sugestion about how to connect the external encoder for my aim ?
    Thank you !
    Here is an interesting application that allows you to accurately sense the position of a standard Hobby Servo without modifying the servo.
    Note: This could also be accomplished with a BS1,BS2, SX, etc.


    With a simple modification to the schematic... using PNP transistor acting as a switch across the 470 Ohm resistor, you can also "drive"
    the servo you are sensing.

    One application might be for a robot to "learn" or record a sequence of movements simply by positioning the servo where you want it to be,
    so at a later time your robot would replay the "learned" motion.

    Have fun!

    Beau Schwabe

    IC Layout Engineer
    Parallax, Inc.

    Post Edited (Beau Schwabe (Parallax)) : 4/20/2006 10:35:06 PM GMT
  • thinkpadingthinkpading Posts: 4
    edited 2011-09-02 22:00
    erco :
    Your work sounds wonderful! Can you post some image or detailed schematics ? Thank you !
  • Beau SchwabeBeau Schwabe Posts: 6,487
    edited 2011-09-02 22:22

    " can I get your sugestion about how to connect the external encoder for my aim ? " - I'm not sure how I would do it, since that would be defeating the topic of this thread. There are several external mechanical methods to read a position of a rotating shaft, it's beyond the scope of a simple answer.

    erco mentioned tapping into the servo's POT and reading it with an ADC which would involve dismantling the servo, but that's only one option.

    With the method that I describe, you must sweep a range of all of the valid servo pulse widths from 1ms to 2ms, but lets backup a moment.... first we need to think about what happens inside the servo when you give it a signal.

    The POT that was mentioned earlier that is inside the servo is part of a free running oscillator circuit. It provides a pulse or frequency that is proportional to the current position of the servo. When you send an external pulse to command a position the circuit inside of the servo compares it to it's internal signal. If the two signals are in agreement then nothing happens, the motor is not updated to a new position because it's already there. If however the two signals are in disagreement the servo electronics determine which direction the motor needs to move so that the internal signal matches with the command signal. When the motor moves it draws much more current than when the motor is idle. It is this principle that allows us to detect the position of the servo. If you supply enough current for the servo electronics to operate but not enough to turn the motor, then when the servo electronics attempt to move the motor you see a measurable increase in current.

    Think of it like tuning a radio dial and making note of where there was a station... it's a similar approach to measuring the current as the servo pulse is swept across the 1ms to 2ms 'dial'.
Sign In or Register to comment.