I’m having trouble analyzing the feedback signal from my FEETECH ultra-high-torque, high-voltage digital giant servo. The oscilloscope shows a very noisy DC signal. I was wondering if the output signal should look like this or not because it is hard to effectively use the signal to detect small changes in position with the noise. The max - min value of the noise is usually around 0.5 V, and the values are constantly changing within a 0.3 V range for each position. We want to know the position of the servo with relative accuracy using the feedback signal.
What should the feedback signal look like, and what are normal values for it? What is the best way to measure it? How should an Arduino process this feedback signal?
The feedback voltage should vary linearly between around 1.7V at 1000µs down to around 0.8V at 2000µs. That amount of noise definitely sounds unusual. Could you post your oscilloscope captures? Also, what are you using as a power supply? Could you try monitoring your power supply voltage while the servo is moving as well?
I’m using a 110 VAC to 0-12 VDC power supply, and we currently have it set to output 6 V. We’ve also connected the oscilloscopes to the power supply to make sure it is outputting the correct DC signal, and it is. No noise in that signal. I’ve attached a picture of one of the oscilloscope captures for the feedback signal. This was for a 1200us signal.
Is the servo showing any other signs of problems (e.g. jittering, buzzing, or struggling to keep position) while being sent the 1200µs signal?
Could you tell me more about your power supply, such the current rating (a link to a spec sheet or product page would be preferable)? Additionally, could you post pictures of your setup that show all of your connections (including your oscilloscope probes)? Also, could you post the scope captures of the operating voltage while the servo is holding? Does the behavior change if you increase the operating voltage to 7.4V?
The servo isn’t showing any other problems or noises. It was grinding after finishing a rotation, but we fixed that by using oscilloscope probes with a ground pin.
Here is the product page of our power supply: Amazon.com
The output voltage is adjustable from 0-12VDC, and the current depends on the load but can range from 0-40A.
Here are some pictures of our setup for testing. The power pin of the servo is connected to the V+ terminal of the power supply. The ground of the servo is connected to the Arduino ground which is also connected to the power supply V- terminal. Channel one of the oscilloscope is connected on the breadboard to the servo feedback pin. Channel two is connected to the power supply output. The oscilloscope capture is for a 1200us signal at 7.4V (yellow is feedback, and blue is power).
The behavior of the servo didn’t change from 6V to 7.4V. After looking that the power waveform closer, I do notice spikes in the signal, especially when the servo is actively rotating. Plus, I’ve noticed that the power supply’s output varies within 20 mV of the set value. This variation could be creating some noise in the feedback.
Do you recommend using a low pass filter to clear out some of the noise? The frequency on the feedback signal is on the order of kilohertz.
The noise might be induced from your setup. Before settling for adding a low-pass filter, could you try clipping the scope probe directly to a wire from the servo’s feedback wire (i.e. without the breadboard and preferably a different wire than you were using just in case)?
Additionally, could you post scope captures of your servo signal just to make sure it is steady and looks as expected?
Here is the oscilloscope capture with the feedback just connected with one pin, plus a picture of the setup.
The oscilloscope picture with the 6.17 V mean is our power supply set to 6.10 V.
Unfortunately, I still do not know what could be causing that noise. You mentioned that the servo seems to work properly despite the noise you’re measuring; is the noise a problem in your application in some other way? For example, is it causing problems when you try to use it for feedback with a separate microcontroller?