Reducing ripple current in PWM controlled DC Servo motor. - Page 1
Forum section: electronics / projects

author: morris6
author_rank: Regular Contributor
timestamp: August 27, 2024, 07:15:33 pm
content: Putting this in the Projects section and not in Mechanical & Automation since my question is more electronics related than mechanical.Some ten years ago I assembled a driver system for an old industrial robot. It's an ASEA IRb 6 that I obtained without the original power and control unit. The idea at the time was to control it with a pc running LinuxCNC. The robot has 5 axes with 5 identical DC Servo motors. Position feedback was by means of rotary transformers, synchro's. These I replaced with optical encoders and the servo motors were driven by GeckoDrive G320X servodrives. So basically to control the robot movements step and direction pulses are to be send to each of the servodrive axes.So far, so good.., however.., when motion is held stopped and the servomotors are dithering around the last step position, a considerable amount of electrical power seemed to flow through the motor windings. The servomotors are rated 35 V, 6.5 A, 3000 rpm, 0.168 kW and are good for continuous operation, S1 Service. The motors got hot quickly. I guess the heating is caused by Eddy current losses due to the 20kHz 50%ish PWM power. My conclusion was these servo's were not suited for PWM control and I got distracted by another project. The robot ended in a corner of my workshop.Last week SWMBO suggested to put the orange obstacle in the workshop up for sale and free the corner. Looking for ideas for the text of the advertisement I searched through my old notes and schematics. An idea popped up: PWM control of a motor has a lot in common with a class D audio amplifier controlling a loudspeaker. Class D amplifiers have low pass filters at the output, for EMI control but also to limit ripple current. Googling around I found that inductors are indeed used to limit ripple current in low impedance servo's when using PWM control. So, the robot is not for sale yet.., let's do some experiments..!One of the motors and a G320X servodrive are on the bench connected to a power supply. The power supply is indicating 4.2 A, so about 150 Watt power while the motor is stopped. First trial is with a fat 5 V output toroid coil from an old pc supply. This brings the supply current down to about 0.2 A while the motor is holding position. Inductance of this coil is ~180 uH. This is a nice result, however, this coil gets rather hot. Most probably the toroid coil has an iron powder core and is not ideally suited here. Second trial is with a ferrite E type inductor out of the horizontal section of an old CRT monitor. It remains nice and cool. Inductance of this one is 500 uH, supply current now only some 30 mA. The motor can still reach its max rpm, maybe needing some changed PID settings at the GeckoDrive.For the reader that has followed along until now is my question: What could go wrong if I assemble some ferrite core inductors of about 200 uH and use these to limit the ripple current in the servo motors? And the follow-up questions: When the motor is running and a substantial DC current is flowing the ferrite core can saturate but is that really a problem here? What kind of ferrite core is good for 20 kHz PWM, low loss, low hysteresis?Last but not least: how to convince SWMBO that the old robot is a fun project? Or sell it after all..?Some pictures:The main rotation axis servo motor, optical encoder, ferrite coil, current waveform with coil.

author: H.O
author_rank: Frequent Contributor
timestamp: August 28, 2024, 06:31:39 pm
content: I'm surprised you get that much ripple current to begin with - the motors must havereallylow inductance. Or you have WAY to high D-gain causing excessive dithering. Burning 150W with the motor unloaded isn't quite right :-)The G320X is a "simple" PWM drive and there is no real current control loop, just cycle by cycle current limit so placing a sensible value inductor in series with the motor should not pose any issues I don't think. After all, that's what they did with old SCR-type drives back in the day. Unfortunately I can't help with the type of core material but the 5mH 22A inductors that was on my Indramat servo drive system looks like a good old E-core transformer.Many years ago I wanted to use the G320X for a project. The motor in question had an inductance of 0.42mH and I had the current limit of the drive set fairly close to max. If I loaded the motor shaft slowly evertyhing was fine and the drive limited the current but if I applied torque to the motor shaft quickly the drive just faulted (not due to following error). Geckodrive determined that it was due to ripple current caused by the low inductance and said that their manual calls for a minimum motor inductance 1mH - a figure I've never been able to find in their manual....not then and not now.[End anecdote]If you're adding external inductors I'd try to get the total inductance if not all the way to 1mH at least close to it - especially so if you plan to have the current limit trim pot anywhere near max.

author: jmelson
author_rank: Super Contributor
timestamp: August 28, 2024, 10:16:15 pm
content: I make servo drives using a full-bridge switching topology. But, for the exact reasons you are experiencing, I designed the modulation differently. The Gecko 320X uses a synchronous antiphase modulation scheme. This puts a ~25 KHz square wave across the motor at idle.My preferred scheme is to use a sign-magnitude scheme, so no transistors are ever on at idle, and whenever the motor is being driven, the polarity does not flip, but just the duty cycle of the high-side transistor is varied. This avoids the heating of the motor and output filter components.Jon

author: langwadt
author_rank: Super Contributor
timestamp: August 28, 2024, 11:14:10 pm
content: Quote from: jmelson on August 28, 2024, 10:16:15 pmwith the low sides on you get slow decay and possibly less ripple, (yellow)https://www.motioncontroltips.com/wp-content/uploads/2018/12/Current-Decay-Modes-768x471.jpg

author: morris6
author_rank: Regular Contributor
timestamp: September 13, 2024, 07:48:54 pm
content: @H.O.Thank you for your comment and anecdote. Some follow up here:Measuring the motor with my AU2011 LCR meter gives 1.5 ohm in series with 40 uH at 1 kHz.On Robot-Forum I found a partial schematic of the IRB6 robot. Between the power amplifiers and the servo motors there is a "reactor unit" containing an inductor or choke for each motor channel.., hmm.A search on google with "F9M4H", the first characters of the "TYPE" number found on the ident plate of the servomotor surprised me with some results. Amongst others a catalog of PARVEX brand where this type of motor is found as AXEM type F9. This is a "disc-servomotor" or, as called elsewhere, "moving coil" or "pancake" motor. The catalog also mentions that "the very low inductance" makes it compulsory to use a coil when the motor is driven under PWM. An inductance of 1 mH is prescribed. The type number given (SF02031) leads to a choke that is used with the PARVEX RTS/RTE drives. It is a differential mode choke with total inductance of 0.9 mH at 17 kHz. An E I 60 laminated iron core is used here with a gap of 2 mm. (picture from the site of a spare parts dealer). Another picture I found shows the F9M4H rotor disc as a service part.So, the servomotors used for the old ASEA IRB6 robot are indeed something special. And, it looks as if these motors are still being produced on order.Before I found this info I had already some ferrite cores (EPCOS ETD34/17/11 N870L) on the way. The coils I wound on these are "tuned" to 1 mH using an air gap of 0.45 mm. On the test bench the supply current with this coil between servo motor and GeckoDrive is about 30 mA while the servo is holding position. And everything stays cool and quiet.Next step is to put the motor back in the robots belly and run some trials.Some more pictures:Rotor disc for F9M4H servo motor, SF02031 choke, DIY 1 mH coils.