Idea for Servo noise and power control.
David Boccabella
Moderator
in Animatronics
Hi Folks.
When wearing one of my animatronic masks I notices there was a lot of servo noise. Not just the whine of movement but also when the servo was trying to seek that fraction of a millimeter,
So I wondered if there was a way to turn of a specific servo or bank of servo's after the move.
Here are my idea's (and I am in the process of making one of these)
I currently use an ESP32 as a base processor. It's great since there are 240Mhz processors, plenty of I/O, it has BLE, Wifi, 64K of memory, and another 4M+ of flash memory that can be used akin to an sd drive.
Also for the servo's there is the I2C PCA9685 PWM Controller that is used in the Adafruit 16 Channel Servo Driver.
Since I will be using the servo in an organic mode where fractional position is not essential (like in ailerons) I can affort for the servo to move a little. So turning off a servo will not be an issue and letting it rest.
To do this I use 2 x 74HC595 Shift Register that also has a Latch.. so you can set the pattern and then Enable it. This is sent to a bank of N-Channel MOSFETS which then are turned on to enable power for a servo, or off to disable the servo.
The Arduino already has several Shift Register Libraries and you can chain as many of these as you want together to turn on additional functions.
Just an idea..
Dave
When wearing one of my animatronic masks I notices there was a lot of servo noise. Not just the whine of movement but also when the servo was trying to seek that fraction of a millimeter,
So I wondered if there was a way to turn of a specific servo or bank of servo's after the move.
Here are my idea's (and I am in the process of making one of these)
I currently use an ESP32 as a base processor. It's great since there are 240Mhz processors, plenty of I/O, it has BLE, Wifi, 64K of memory, and another 4M+ of flash memory that can be used akin to an sd drive.
Also for the servo's there is the I2C PCA9685 PWM Controller that is used in the Adafruit 16 Channel Servo Driver.
Since I will be using the servo in an organic mode where fractional position is not essential (like in ailerons) I can affort for the servo to move a little. So turning off a servo will not be an issue and letting it rest.
To do this I use 2 x 74HC595 Shift Register that also has a Latch.. so you can set the pattern and then Enable it. This is sent to a bank of N-Channel MOSFETS which then are turned on to enable power for a servo, or off to disable the servo.
The Arduino already has several Shift Register Libraries and you can chain as many of these as you want together to turn on additional functions.
Just an idea..
Dave
0
Comments
I've experienced servo jitter in the past. Are you using the new programmable servos? I have not used them but they may have a "jitter control" to decrease sensitivity. As for cutting power to a servo, I would think the issue would be powering back up. You would need to immediately sending the previous position to the servo or it would return to its neutral position. I just guessing.
David
Sadly programmable servos are beyond my price range. And much of what I am making is like wises aimed at Cosplayers and other lower price range area's.
So if the servo is powered down - when it powers up again it will automatically receive the new position pulse.
Many thanks for commenting We are all explorers in this area.
snippet:
However, generally speaking, Arduino-based servo control solutions suffer from servo jitter and twitching due to the 8-bit micro not being able to maintain precise timing required on the Pulse-Width-Modulation (PWM) signal that controls the servo. If the tight timing required to maintain absolute servo position is not met, the servo will jitter between locations until refreshed from the micro. This can cause significant issues where accurate, stable servo performance is required.
Their board although expensive can single handedly handle up to 12 servos if those are on a separate power supply.
I am looking at switching to micro python as that language is much more easily ported to the newer, faster, boards and processors that are coming to market.
I suspect like my projects yours are doing multiple things at once and that seems to give the Arduino based hardware fits when multitasking is required within the code itself.