0
\$\begingroup\$

I am trying to use a 555 timer to create the PWM signal for a servo motor. I found and constructed the circuit in the attached image. It does work as advertised, and I can adjust the servo's position via the potentiometer (labeled VR1 in the circuit). However, when outside torque is applied to the servo, it does a poor job holding its position. I can turn it several degrees at which point it jitters.

I know this is not a power supply problem because using the same setup and a signal generated by a microcontroller, the servo can hold its position perfectly against any torque I can apply. So I am guessing there is some noise generated by the servo under load that is causing the timer to misfire. If this might actually be the problem, where that noise would be, and how to suppress it I do not know. So, my question is: how can I modify this circuit so the servo has more stable performance under load?

circuit

\$\endgroup\$
5
  • \$\begingroup\$ How exactly does the micro drive the same pin to the servo as is driven by the 555? Not just a direct connection, right? There's a circuit of some kind? \$\endgroup\$
    – jonk
    Commented Jul 8, 2020 at 6:48
  • \$\begingroup\$ Please provide details of the motor. Does the motor have built-in electronics? \$\endgroup\$
    – user105652
    Commented Jul 8, 2020 at 21:18
  • \$\begingroup\$ @jonk I am not clear on which component you are referring to as the 'micro' but the wiring matches the diagram exactly. The timer pin 3 is directly connected to the servo's signal pin, if that's what you were asking. \$\endgroup\$
    – bsch2734
    Commented Jul 9, 2020 at 2:27
  • \$\begingroup\$ @Sparky256 yes, this is a standard generic micro servo motor with built in electronics. I don't have 'real' datasheet but this is an ok overview \$\endgroup\$
    – bsch2734
    Commented Jul 9, 2020 at 2:31
  • \$\begingroup\$ @bsch2734 I don't know anything about your servo's signal pin requirements. But if you can drive it directly from an MCU's timer output then it can't require much. So the 555 output would have no problem in that regard. That's all I was curious about. This does mean, however, that Sparky's response is probably not germane to your issue. \$\endgroup\$
    – jonk
    Commented Jul 9, 2020 at 3:34

2 Answers 2

1
\$\begingroup\$
  • Try adding a second LM7805 and use it just for the servo power.

  • Use a "star" ground connection.

  • 100nF ceramic capacitor bypass near the 555 in addition to the 100uF

  • In conjunction with the first point, bypass pin 5 on the 555 to ground with a 10nF ceramic capacitor.

\$\endgroup\$
0
\$\begingroup\$

In addition to Spehro's answer the 555 can only source about 10 mA, but can sink about 100 mA. That would be the CMOS TLC555, not the weaker NE555. The NE555 also has a bjt output so maximum output voltage is Vcc -1.2 volts, or 3.8 volts. Suggest increasing the regulator to 12 volts to overcome voltage drop. Also adding a booster to the output of the 555 using 2N3904 and 2N3906 transistors. Increase C3 to 1,000 uF to have a deeper current reservoir, which should prevent the motor from "bucking" under load.

This low-cost current booster should help with motor torque.

If PWM signal is already buffered in the motor then it seems you are lacking power. If the motor has a higher voltage rating then use a regulator that matches that voltage. Also try a 3 amp version of the LM7805 series, or use a pre-made switch-mode regulator set to 5 volts. Many can supply several amps of current.

schematic

simulate this circuit – Schematic created using CircuitLab

\$\endgroup\$
5
  • \$\begingroup\$ Interesting, I was not aware of this limitation of the NE555 (which is what I have). The current booster did not seem to have any effect on performance, although just having a 1mF cap from vcc to gnd made things vastly better but still not as good as my benchmark of a microcontroller generated signal. I think I will try powering the 555 off 12 volts and then using a voltage divider to bring the output down to the 5 that the servo requires. \$\endgroup\$
    – bsch2734
    Commented Jul 9, 2020 at 2:41
  • \$\begingroup\$ That is actually good to hear, as it points to a power problem, as in not enough power. Under load the motor is gasping for extra current it cannot have. I wish your spec sheet had the fine details of motor start/run current and maximum voltage. \$\endgroup\$
    – user105652
    Commented Jul 9, 2020 at 2:43
  • \$\begingroup\$ I disagree that this is a lack of power problem or at least a lack of servo power problem. 1st, as I stated in my initial post, the same power supply can handle this motor perfectly when the PWM is coming from a microcontroller instead of the timer. 2nd, I just tried hooking up a second servo in parallel to the first one. When one is placed under load, both will jitter in the same pattern. The second servo would have no reason to move just because it experienced a voltage drop. The fact the they jitter in the same pattern also indicates a signal problem as they share a signal. \$\endgroup\$
    – bsch2734
    Commented Jul 9, 2020 at 3:02
  • \$\begingroup\$ Power problem could mean that the 555 lacks power when the motor is under load, thus the PWM signal is too weak to drive the motor. The suggestion by Spehro to power the 555 with its own LM7805 is a good idea and worth a try. \$\endgroup\$
    – user105652
    Commented Jul 9, 2020 at 3:06
  • \$\begingroup\$ Inserting a 10 K ohm resistor from pin 3 to Vcc will help the 555 output go to a bit higher voltage when it is HI. It does not affect output = low as low is close to zero volts. \$\endgroup\$
    – user105652
    Commented Jul 9, 2020 at 3:12

Not the answer you're looking for? Browse other questions tagged or ask your own question.