Hi. I'm using a Feather to gate control signals to three different servos. Each servo receives either the servo pulse from a separate source, or a 1.5ms pulse to put each servo to a neutral position.
When replicating the source signal to each servo, I get a lot of chatter. Comparing each source input to the Feather indicates an exact match between the original and mimicked control signals. The amplitude of the mimicked signal is 3.3V, which is within my servo specs.
I can't understand why chatter should occur when the servos are plugged into the mimicked outputs when from a timing perspective they appear to be exactly the same. I tried replacing one of the servos, but I got the same result.
Any suggestions as to what might be causing this chatter when driving a servo from the output of a Feather would be appreciated. Thanks!
Yep I think I see it, it is the third pin on the unit to the right. That is about an accurate answer you can get with the information given. What shield if using one, how is it wired, how is it powered all helps. A annotated schematic would have all of this information except the links to the hardware items technical information you also need to supply. Be sure to show the power source(s) as it sounds like a source impedance problem. Note any leads over 10"/25cm.
Measured how? You're looking at a 1.5 ms pulse every 20 ms, but 'chatter' can be caused by as little as 5 uS deviation. Even simple techniques with an o-scope could miss such a small variation.
I'd be very surprised if this isn't caused by background processes on your Arduino. How are you doing the replication? Please, post your code! To be clear, at this point, without posted code this thread is dead.
Many thanks to ALL of you for taking the time to respond. You were all on the right track... it did turn out to be jitter in my replicator... which I was eventually able to find with an oscilloscope, intermittently, upon the rising edge of my replicated pulse.
My replicator works by having the rising edge each of three servo signals generate an interrupt which causes the Feather to raise its corresponding output signal to each servo.
Depending upon whether a certain condition had been met, the Feather would either mimick the falling edge of the signal source, or ignore it and lower the signal 1.5 ms later (neutral position).
I had disabled interrupt response during the part of the sketch which ignores the signal source, but I'd left them enabled during the part that polls the input source to detect its falling edge.
Apparently, interrupts occurring during polling were occasionally messing up time calculations while polling, causing unintended transitions during the first 20 us of the Feather's output.
The fix was to disable interrupt responses during the timing calculations. Now the chatter is almost nonexistent. I was surprised to see that such a brief perturbation could cause such dramatic chatter, but this is consistent with what an earlier responder had stated.
That's what I would have been looking for, had you chosen to share your code. Making your code interrupt-immune for things such as this is very tricky.
Pity you didn't share, others finding this thread in future shall be disappointed. Sharing is what this community is all about, after all.