I am using Arduino Mega 2560

I have built an structure with plastic 3D pieces to move this water tap.:


I am using the "Servomotor Parallax Inc 140 mA, 4 6 V" to rotate the tap:


Some more images to show how I mounted it:

mounted piece_for_thetap another_piece

Video 1. I tried to use the power of the arduino directly (5V). But the motor is not steady in all the positions I set, in some positions the noise you hear in the video do not stop, and my impression is that the motor will burn soon because it keeps pusshing all the time.

Video 2. Without almost any load, the motor is also making a small sound. I don't know if you can appreciate it in the video. They are like cracks or clicks

Possible solutions:

  • Is there a way to cut the power supply when the motor already moved the tap? Or just to stop the motor to keep pushing?
  • Using a external power should solve the problem? I found this tutorial where they use that system. Which will be the benefits of that? It will fix the problem?
  • Using another stronger servomotor?
  • A stepper motor?
  • Is my servomotor faulty?
  • Would I need some controller?

Any other suggestion?

  • You must have exceptional hearing. I can't hear any noise... – Majenko Feb 21 '20 at 11:39
  • @Majenko Don't you hear it? Here, almost at the end of the video, the sound is clear, just turn up the volume of your speakers. I could have edited the sound of the video to make it more clear. The sound is a humming quite like this other one – ChesuCR Feb 21 '20 at 12:22

When you set a servo motor to be in a specific position it is constantly and actively striving to keep in that position. The feedback from the internal potentiometer is constantly being processed and the motor adjusted to ensure that it remains at the right position. Potentiometers, of course, aren't 100% perfect, and there will always be a certain amount of "noise" in the signal that means the motor will always be making really tiny adjustments.

That's perfectly normal.

The simple way to stop it trying to keep precisely to one position is to stop telling it to be in that position.

  1. .attach() the motor
  2. Move it to the desired position
  3. Wait long enough for the motor to get to that position
  4. .detach() the motor

When you call servo.detach() the PWM signal is terminated and the motor no longer has a position to keep to - so it just stops doing anything and goes to sleep.

The down-side of this is that if you have a load under tension (for example if you are lifting a weight with the servo) the tension is then free to move the motor.

  • Thanks for your interest !! I like your idea, I will try it when I buy another servo because I have burnt out the one in the pictures haha. I put the terminal poles of my external power supply in the wrong position for some seconds – ChesuCR Feb 21 '20 at 12:28
  • ElectronSurf suggests in his answer that I cannot plug the servomotor directly to the Arduino. I believe I can connect up to 40mA to each pin, but I have a capacitor of 100μF 25V to make it work. Do you think I would need to use an external supply to make it work better (or to prevent from burning the Arduino board), or the result would be the same? – ChesuCR Feb 21 '20 at 12:47
  • I have tried and it worked !! – ChesuCR Feb 24 '20 at 11:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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