I'm in the process of calibrating servos while constructing a new hobbyist robot arm. When testing the base rotation servo I noticed some unexpected noise in the PWM signal while the servo is in motion. There is no noise in the PWM signal when the servo is stationary. What causes the PWM noise? Is it likely to be significant? If so how would I filter it? The motion behaviour of the servo is exactly as expected, so the likely answer I'm expecting is to just ignore it, but I wanted to learn more about what I am seeing. Scope trace

The equipment in use is:

  • Arduino Uno as test MCU, powered by USB connection.
  • PCA9685 I2C PWM controller with a 470$\mu$F 16V electrolytic filter capacitor
  • an inline breakout in the servo connection for multimeter and oscilloscope connection
  • external bench power supply 6V limited to 2A
  • only one servo is connected to PCA9685 port 0
  • the servo is a GoBilda 2000-0025-0002 electronics

Update: Link to video of oscilloscope trace (as per the question description - no bypass capacitor between PWM signal and ground).

  • $\begingroup$ So after some more reading, I’m thinking it’s back EMF from the servo and that a bypass capacitor from signal to ground near the servo would suppress it. A 0.1 micro Farads ceramic bypass capacitor was suggested in the linked question, is this suitable for my situation? electronics.stackexchange.com/questions/275441/… $\endgroup$
    – RowanP
    Oct 16 '21 at 20:38
  • $\begingroup$ A 100nF ceramic capacitor from PWM signal to ground did not appreciably change the result. The shoulder joint servo (under no physical load) has similar results, but the PWM noise is less. I'll update my question with a video of the trace. $\endgroup$
    – RowanP
    Oct 16 '21 at 23:12
  • $\begingroup$ Would you mind share data in txt file or post them here? From the picture, a common assumption about this kind of noise would be Gaussian noise (i.e. zero mean and some variance) and you should not ignore it. Kalman filter would be a perfect choice here. $\endgroup$
    – CroCo
    Oct 20 '21 at 7:49
  • $\begingroup$ @CroCo I’ll work on exporting the data from the oscilloscope, may take me a while as I’ve not done that before. Can you tell me more about your thought? What makes you think the noise is Gaussian (i.e., normally distributed)? Why should it not be ignored (what are consequences you foresee)? $\endgroup$
    – RowanP
    Oct 20 '21 at 11:36

After a bit more reading and thinking, I think I’ll answer my own question. I’d like feedback on my logic if you have it.

My logic is this:

  • the PWM signal from the MCU is clean (evidenced by the trace when the servo is unpowered)
  • the noise is back EMF from the servo
  • no other device other than the servo needs to receive or read the signal
  • if the signal was to be filtered at some point the noise, having been generated at the servo, will always be present on the servo side of the filter
  • therefore the noise can be ignored.

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.