Problems with Servo Power Regulation - Page 1
Forum section: electronics / general

author: kjs_21
author_rank: Newbie
timestamp: April 09, 2022, 04:40:06 am
content: Hello everyone,I guess this post could fit into a couple of categories, but this project has a large MCU component so I guess I'll ask it here.I have a UAV flight computer that needs to control 4+ servos to control aerodynamic surfaces. The board is 4 layers and implements a custom teensy 3.6 along with several accelerometers, gyros, and magnetometers for attitude determination. The servo power supply is causing me endless headache. It is a LM53603 regulating to ~8.3V nominally, and under low loads it does great. I am using BMS-A10H servos, but have tested with various sizes of servos with varying quality, all of which see the same problem. Under loads (particularly when multiple servos are changing position at the same time) the servo power rail voltage fluctuates +- 3-6V. When sine wave servo outputs are commanded, they update their position at about 2Hz instead of smoothly (I assume this is from servo brownouts or over voltage causing them to stop and restart every ~500ms). When a single servo is commanded to move, it does so smoothly (current limit not exceeded?). I have attached relevant parts of the schematic and listed the troubleshooting steps I have taken so far. I don't have easy access to a high-precision scope, so I haven't been able to see the output voltage waveform in detail to see if its behavior matches any of the common buck regulator symptoms. If I need to do so, I can make it happen though.The MCU and sensor power is provided by a TPS62111 and works great. Haven't seen any brown outs occur, they share a common ground, and so I haven't seen evidence to suggest that any MCU issues are the root cause. I've been tearing my hair out for several weeks trying to figure out what the problem is, so I was hoping you fine folks could give me some suggestions.Specification NotesServo power supply is provided by TI LM53603, regulating 12V LiPo down to 8.4Vhttps://www.ti.com/lit/ds/snvsa42b/snvsa42b.pdf?ts=1649478861149&ref_url=https%253A%252F%252Fwww.google.com%252FVCC Enable kept high in testing to ensure software wasn't causing VCC regulator to power on and offRF antennas operate in vicinity, so EMI could be a problem? However, when RF transceivers are not plugged in, behavior is the same so this is unlikely.MCU implements quasi-real time OS. Framerates are recorded, and commanded servo position changes match expected outputs. Actual servo position, only when multiple are controlled, exhibit 2Hz jumpiness. This leads me to believe software is not the root cause.4-layer PCB. layer 1 is primarily MCU and signals. 2 is GND. 3 is 3V3. 4 is servo power and more digital signals.Previous Troubleshooting StepsWhen regulating to 7.2V, performance was perhaps marginally better? This test was conducted with 2.2uH inductor and 66uH total output capacitanceOutput caps C21 and C20 replaced with 33uf ceramic caps, no noticeable change in behaviorInductor change to 4.7 uH I_sat of 5A, no noticeable change in behaviorAdditional 22ga wire tied between 8V side of C20 and 8V pin of first servo header, in attempt to remove inductor-driven problems with current PCB layout. No noticeable change in behaviorAdditional 22uf cap added between servo power header pins, no observable change in behaviorControl of just a single servo attempted, all others unplugged. Servo performed nominally, responded quickly to commanded position changes and servo voltage was stable.Technical Documentation (see attached)Regulator Schematic

author: bugnate
author_rank: Regular Contributor
timestamp: April 09, 2022, 07:11:52 am
content: Just spitballing here... (1) Your Cff (C19) doesn't look right, normally this is pF scale not nF. Check table 3 in the datasheet. (2) Do you have a p/n or datasheet for the inductor? (3) I would be tempted to force off "auto" mode (FPWM pin). (4) What is your gross calculation or how did you otherwise convince yourself the whole system (including battery) is appropriately sized?

author: kjs_21
author_rank: Newbie
timestamp: April 10, 2022, 04:46:52 am
content: Thanks for the input, I think you're right about Cff. Looks like Im off by a factor of 1000, i'll drop its value down and see how the system behaves. Forcing PWM mode is interesting, datasheet indicates it might have tighter voltage regulation. That pin is tied to ground under the device itself, but if the Cff adjustment doesn't help, I can pull up that pin and tie it to 3.3V and see if that changes anything.Here's the datasheet of the inductor I'm using now, 4.7uH with a saturation current of 5.9A. I'm not that experienced with buck converter implementation, so if there is another spec I need to be cautious of, let me know!https://www.bourns.com/docs/Product-Datasheets/SRP5030CA.pdfAs far as power supply sizing, I based it off of the assumptions of max transient servo current. I have seen some info on the web that indicated these little micro servos can have transient current draws of around 400mA, so if I needed to run four of them I would need 1.6A of supply. For 6 of them (including camera gimbal in development) I would need 2.4A of current supply. Of course these loads are transient and I would expect far less current requirements on average, so perhaps I could get away with less than 2.4A of supply but I figured I could over engineer a bit. LM53603 can supply 3A continuous current, so the thought is that gives me a good safety factor. Let me know if there is good reason to revisit some of those assumptions.The battery is a 700mAh LiPo (propulsion operates off of separate battery on common ground). Firing pyrotechnic devices to deploy parachutes off of the battery hasn't led to any current supply problems drawing upwards of 4A. Battery voltage at screw terminals dropped about 400mV when drawing 4A, battery itself is rated up to 10A continuous draw but I don't plan on going above 6A.I appreciate the input, keep you all informed!

author: kjs_21
author_rank: Newbie
timestamp: April 11, 2022, 07:00:05 am
content: Update: Made some progress?Changed Cff out to a couple of caps that add up to about 120pF, no noticeable change in behavior. With 1 servo connected, it performs well. With 2 or 3, they hiccup every 500ms, starting and stopping. Had some 47pFs and a 22pF laying around, so its a pretty disgusting little stack of MLCCs soldered onto the appropriate pad. I can get a dedicated 120 or 220 and see if that makes a difference.However,Reading flight computer datalogs tells a new story.1. It looks like we have fixed high voltage fluctuations! Servo voltage never goes above its 8.5V set point! Looks like the high Cff value was slowing down voltage regulation to a point where we got big spikes when transient loads stopped2. Occasional voltage dips during high loads do drop the servo voltage low still, sometimes as low as 2V. Perhaps I'm tripping the regulator overcurrent limit? That occurs with only 2+ servos attached3. An INA-260 current sensing IC sits on the path between the battery and servo regulator. It registers very high current flows sometimes, upwards of 2000mA @12V. Sometimes, these very low servo voltages are associated with these high current draws, other times they are not. Haven't pieced together what causes that yet. I have attached the readouts for some of the interesting frames below.4. While not every low regulated servo voltage is associated with a high current draw from the battery, every high current draw is associated with a low voltage. With only 1 servo plugged in, high current draws of about 1800mA were recorded, but the voltage did not drop. With 2 or 3 servos connected, voltage dropped to around 2V at times, with current draws of 1600mA - 2200mA. Strange...Next Steps?Lower voltage set point to around 8V, help to keep servos in their safe operating rangeI can order some 220pF caps for Cff, see if that helps.More bulk output capacitance? Less bulk output capacitance? Not sure at this pointMore bulk input capacitance? Should reduce load on the battery a littleLet me know if anyone has any thoughtsInteresting datalog frames:Datalog for a nominal frame:" alt="" class="bbc_img" />Datalog for a frame with 1 servo attached, high current draw and no voltage drop:" alt="" class="bbc_img" />Datalog for frame with 3 servos attached, high current draw but big voltage drop" alt="" class="bbc_img" />Three consecutive frames, showing nominal voltages and low current draw, then current spike and low voltage, then back to nominal" alt="" class="bbc_img" />