Chinese AC servo encoder failing: fixing or replacing
- DEVILHUNTER
- Offline
- Junior Member
Less
More
- Posts: 29
- Thank you received: 8
13 Feb 2024 16:27 #293234
by DEVILHUNTER
Chinese AC servo encoder failing: fixing or replacing was created by DEVILHUNTER
I have several chinese AC servos on my machines (with A1-SVD15 servo drivers) and 3 of them failed on my this summer. One of them gives me an overload alarm when I try to move the motor (but is related to the encoder not working), the other two give me an encoder alarm at startup. So I'm writing this post to share my venture tryinig to fix them (or replace them with the help of LinuxCNC) and get ideas from other users.
Options to go on:
-Try to fix the encoders if possible (and gain some extra knowledge)
-Replace the encoder. They are NEMICON (copy) U48-T09-2500L-62C and U48-T09-2500L-62-03. Found a similar copy one but not exactly the same code. Price is not much less than the whole servo.
-Replace the ABZ signals with a linear glass scale and the UVW with a simple encoder/hal sensors.
-Replace the ABZ signals with a linear glass scale and replicate UVW with LinuxCNC using the BLDC component.
After checking that was not a drive problem, I fed 5V to the encoder and started measuring the outputs. 2 of the servos had the right voltajes at the otputs but were not responsive to shaft movement, also consumed current was steady and low. The other servo did respond to shaft movement in all lines, although voltages were a bit low in some, so this will be a great candidate to try to repair the encoder.
Opened the encoder and it haves a pretty simple electronics. Two Avago AELT5000 ICs convert the photodiode signal into a diferential output. One of them is used on the ABI signals and the other in UVW. Input voltage at the chip is fine. Interestingly I could not find anywhere the IC datasheet, but after checking the pintouts, it's a standar quad output diferential drive.
Since the lines with lower voltages were on the ABI, the IC might be slightly damaged giving lower voltages and replacing it could solve the issue. So got both a replacement IC (AM26C31Q) and a RS-422 0.1um glass scale. While witing for the replacement IC, I installed the glass scale on the X axis of my lathe and rewired the servo driver so the glass scale feeds the ABI signals and the encoder the UVW ones. This "kinda" worked: I could moove the servo at slow speeds but sometimes it just keep stalling and going into alarm. At higher speeds I could see how the plate that holds the servo was bending and asumed this made the servo loop unstable, so ordered the material to make a better support.
While waiting for the material I kept messing with the encoder. Changed the ABZ diferential driver IC with other AELT5000 from the other faulty encoders (that IC should be fine) but didn't work. Put the wiring to use again the glass scale and, what it was working before, didn't now. Weird, I could have damaged something else. So fired up my new oscilloscope for the first time and took a look to the signals. They were a bit low on voltage (something more than 2V) but sharp and clear. Enabled the motor and... oh man, here comes the noise, lots of noise. Highest spikes were around 75% of signal voltage, as I understand not enough to disrupt the diferential signal. Encoder wires are shielded (globally, not each pair) twisted pair, but motor ones are not. Changed back the diferential IC with one an AM26C31Q but I don't remember if I checked the noise after it.
So asked myself how was the servo driver receiving the diferential signals so opened a spare one I have. Like with many other electronics, the chinese company have put some black epoxy on the ICs to avoid getting reverse engineered. With some carefull sanding and a digital microscope I was able to see the ICs numbers. The signals are received by two 26LS32ACG4 RS-422 differential receivers. There is also a 74HC14 inverter with Schmitt-Trigger inputs. On the other side of the PCB there are a couple of 74HC86, XOR gates. The XOR gates detects if there is something wrong in the diferential signal. The Schmitt-Trigger give some signal cleaning, but have not checked if for the line driver or the XOR gates. So a radical option to make this encoder work would be to desolder the XOR gates from the servo driver and force an OK signal.
Decided to take a working servo and start exchanging the encoder signals until I found the faulty one. Happened to be the B signal, so I used a MAX490 module as buffer. Connected the diferential output of the encoder to the diferential input of the MAX490, then both TTL input and output together, and finally the diferential output of the module with the input in the servo drive. Worked an I went happy into chrsitmas holydays. Cambe back, turned on the lathe, meanwhile I was servicing other machine, went back to the lathe and the alarm was on again...
Since I was suspecting that random noise could be causing the problem, I decided to exchange the motor into another axis of my lathe (and took out the B signal buffer), were I could separate the power and encoder cables easily. Everything turned on right and I could move the motor, but after a few minutes the alarm popped. Power cycled the drive and the alarm was still there. Turned it off again, waited some minutes and turned back on. There was not alarm and I could move the motor again, but after a few minutes (less than the first time) it gave me the alarm. This is an interesting behaiviour and I think it could be key. Seems that, when the servo driver has been shut down for a while, I turn the on the power and it works for a few minutes. Power reseting don't clear the issue, but waiting some time does, like some component is heating and need some time to cool down. Powering the drive and just waiting wihtout moving the motor causes the same issue.
If this hypothetical heating is caused by excesive current consumption on the encoder, I have not notice any component temperature being excesive. Could be the drive (keep in mind I have tested several) encoder 5V power supply getting overload an making micro cuts. This micro cuts might be seen as several channels changing at the same time, this could be read by the drive MCU as an encoder exception. I have to think how I could try to detect the moment of the failure. I can power the encoder with an external 5V power supply too.
Did tested buffering all the signal with 6 MAX490 modules, but same result. Will try again beause found one wire getting loose. Any other idea of what could be the cause, how to solve or what to test is really welcome!
Options to go on:
-Try to fix the encoders if possible (and gain some extra knowledge)
-Replace the encoder. They are NEMICON (copy) U48-T09-2500L-62C and U48-T09-2500L-62-03. Found a similar copy one but not exactly the same code. Price is not much less than the whole servo.
-Replace the ABZ signals with a linear glass scale and the UVW with a simple encoder/hal sensors.
-Replace the ABZ signals with a linear glass scale and replicate UVW with LinuxCNC using the BLDC component.
After checking that was not a drive problem, I fed 5V to the encoder and started measuring the outputs. 2 of the servos had the right voltajes at the otputs but were not responsive to shaft movement, also consumed current was steady and low. The other servo did respond to shaft movement in all lines, although voltages were a bit low in some, so this will be a great candidate to try to repair the encoder.
Opened the encoder and it haves a pretty simple electronics. Two Avago AELT5000 ICs convert the photodiode signal into a diferential output. One of them is used on the ABI signals and the other in UVW. Input voltage at the chip is fine. Interestingly I could not find anywhere the IC datasheet, but after checking the pintouts, it's a standar quad output diferential drive.
Since the lines with lower voltages were on the ABI, the IC might be slightly damaged giving lower voltages and replacing it could solve the issue. So got both a replacement IC (AM26C31Q) and a RS-422 0.1um glass scale. While witing for the replacement IC, I installed the glass scale on the X axis of my lathe and rewired the servo driver so the glass scale feeds the ABI signals and the encoder the UVW ones. This "kinda" worked: I could moove the servo at slow speeds but sometimes it just keep stalling and going into alarm. At higher speeds I could see how the plate that holds the servo was bending and asumed this made the servo loop unstable, so ordered the material to make a better support.
While waiting for the material I kept messing with the encoder. Changed the ABZ diferential driver IC with other AELT5000 from the other faulty encoders (that IC should be fine) but didn't work. Put the wiring to use again the glass scale and, what it was working before, didn't now. Weird, I could have damaged something else. So fired up my new oscilloscope for the first time and took a look to the signals. They were a bit low on voltage (something more than 2V) but sharp and clear. Enabled the motor and... oh man, here comes the noise, lots of noise. Highest spikes were around 75% of signal voltage, as I understand not enough to disrupt the diferential signal. Encoder wires are shielded (globally, not each pair) twisted pair, but motor ones are not. Changed back the diferential IC with one an AM26C31Q but I don't remember if I checked the noise after it.
So asked myself how was the servo driver receiving the diferential signals so opened a spare one I have. Like with many other electronics, the chinese company have put some black epoxy on the ICs to avoid getting reverse engineered. With some carefull sanding and a digital microscope I was able to see the ICs numbers. The signals are received by two 26LS32ACG4 RS-422 differential receivers. There is also a 74HC14 inverter with Schmitt-Trigger inputs. On the other side of the PCB there are a couple of 74HC86, XOR gates. The XOR gates detects if there is something wrong in the diferential signal. The Schmitt-Trigger give some signal cleaning, but have not checked if for the line driver or the XOR gates. So a radical option to make this encoder work would be to desolder the XOR gates from the servo driver and force an OK signal.
Decided to take a working servo and start exchanging the encoder signals until I found the faulty one. Happened to be the B signal, so I used a MAX490 module as buffer. Connected the diferential output of the encoder to the diferential input of the MAX490, then both TTL input and output together, and finally the diferential output of the module with the input in the servo drive. Worked an I went happy into chrsitmas holydays. Cambe back, turned on the lathe, meanwhile I was servicing other machine, went back to the lathe and the alarm was on again...
Since I was suspecting that random noise could be causing the problem, I decided to exchange the motor into another axis of my lathe (and took out the B signal buffer), were I could separate the power and encoder cables easily. Everything turned on right and I could move the motor, but after a few minutes the alarm popped. Power cycled the drive and the alarm was still there. Turned it off again, waited some minutes and turned back on. There was not alarm and I could move the motor again, but after a few minutes (less than the first time) it gave me the alarm. This is an interesting behaiviour and I think it could be key. Seems that, when the servo driver has been shut down for a while, I turn the on the power and it works for a few minutes. Power reseting don't clear the issue, but waiting some time does, like some component is heating and need some time to cool down. Powering the drive and just waiting wihtout moving the motor causes the same issue.
If this hypothetical heating is caused by excesive current consumption on the encoder, I have not notice any component temperature being excesive. Could be the drive (keep in mind I have tested several) encoder 5V power supply getting overload an making micro cuts. This micro cuts might be seen as several channels changing at the same time, this could be read by the drive MCU as an encoder exception. I have to think how I could try to detect the moment of the failure. I can power the encoder with an external 5V power supply too.
Did tested buffering all the signal with 6 MAX490 modules, but same result. Will try again beause found one wire getting loose. Any other idea of what could be the cause, how to solve or what to test is really welcome!
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19188
- Thank you received: 6433
13 Feb 2024 17:06 #293237
by tommylight
Replied by tommylight on topic Chinese AC servo encoder failing: fixing or replacing
Looong ...
Do the motor wires have ferite doughnuts on them at the drive side?
That is the first thing to add, if not present.
Using a "line filter" is also a good idea, be it for each drive power input or one for the whole machine if it can handle the current.
Also, check if the encoder/commutation wiring has shield connected to ground at the drive side.
Do the motor wires have ferite doughnuts on them at the drive side?
That is the first thing to add, if not present.
Using a "line filter" is also a good idea, be it for each drive power input or one for the whole machine if it can handle the current.
Also, check if the encoder/commutation wiring has shield connected to ground at the drive side.
Please Log in or Create an account to join the conversation.
13 Feb 2024 17:10 #293240
by jmelson
Replied by jmelson on topic Chinese AC servo encoder failing: fixing or replacing
Some servo drives may have PTC thermistors (self-resetting fuses) to protect the drive from damage if the encoder cable shorts out. An encoder that draws too much current may cause the PTC to heat up to near the trip point, so it takes a while to cool. In this case, the +5V at the encoder will sag when the PTC gets hot. You could measure that when the drive faults.
You may need to tinker with the grounding and or shielding of the encoder cable to eliminate the noise when the drive is powered on. Connecting a heavy ground wire between the drive frame and the motor frame might help, or even floating the encoder body with an insulating material, to keep noise on the motor frame from affecting the encoder signals. Also, the scope may be "lying" to you, as it might pick up noise from the mains plug.
Jon
You may need to tinker with the grounding and or shielding of the encoder cable to eliminate the noise when the drive is powered on. Connecting a heavy ground wire between the drive frame and the motor frame might help, or even floating the encoder body with an insulating material, to keep noise on the motor frame from affecting the encoder signals. Also, the scope may be "lying" to you, as it might pick up noise from the mains plug.
Jon
Please Log in or Create an account to join the conversation.
13 Feb 2024 17:13 #293241
by jmelson
Replied by jmelson on topic Chinese AC servo encoder failing: fixing or replacing
Tommylight is right about the mains filter. I had to put a mains filter on the power input to the VFD on my mill, it was causing communications errors between the computer and motion interface. Never had an issue since I put the filter in.
Jon
Jon
The following user(s) said Thank You: tommylight
Please Log in or Create an account to join the conversation.
- DEVILHUNTER
- Offline
- Junior Member
Less
More
- Posts: 29
- Thank you received: 8
14 Feb 2024 10:16 #293318
by DEVILHUNTER
Replied by DEVILHUNTER on topic Chinese AC servo encoder failing: fixing or replacing
You are right tommylight, the post is quite long and my apologies about that. I know is not the best way to get an straight answer since many people will not take the time to read it, but I wanted to explain all test I have done to give the knowledgeable people all the info I could. Plus writing it donw might be usefull fore somebody in the future. So many thanks to everybody who bothered to read it.
Motors don't have ferrite toroids on the wires, would be easy to install. I will take a look at installing some line filters. I guess one per drive would be better, right? I don't have much space on the cabinet for that, but one for the whole machine is easy. Since my mill has been working withot them and no problem, never really looked into them.
Encoder cable is shielded and connected on the drive side. Is not connected on the encoder side and I cannot see where the shield end. Motor power cables have a ground. I could check if the encoder body is connected to pcb ground.
The PTC thermistor makes a lot of sense. This "working" encoder was consuming around 90mA, while the two non working ones aroun 25mA. I will measure a working encoder to compare. I can also try to catch the issue with the multimeter or use the trigger function of the oscilloscope. My concern if I use an external PSU is that the encoder could overheat.
Motors don't have ferrite toroids on the wires, would be easy to install. I will take a look at installing some line filters. I guess one per drive would be better, right? I don't have much space on the cabinet for that, but one for the whole machine is easy. Since my mill has been working withot them and no problem, never really looked into them.
Encoder cable is shielded and connected on the drive side. Is not connected on the encoder side and I cannot see where the shield end. Motor power cables have a ground. I could check if the encoder body is connected to pcb ground.
The PTC thermistor makes a lot of sense. This "working" encoder was consuming around 90mA, while the two non working ones aroun 25mA. I will measure a working encoder to compare. I can also try to catch the issue with the multimeter or use the trigger function of the oscilloscope. My concern if I use an external PSU is that the encoder could overheat.
The following user(s) said Thank You: tommylight
Please Log in or Create an account to join the conversation.
15 Feb 2024 07:45 #293366
by vre
Replied by vre on topic Chinese AC servo encoder failing: fixing or replacing
I have repaired encoder that had failed bearings with axial / radial play so the clearance distance of optical disc from
pulses photodetector was not stable giving random results.
Also repaired another encoder by recalibrating
the trimpots in oscilloscope.
Check these first.
pulses photodetector was not stable giving random results.
Also repaired another encoder by recalibrating
the trimpots in oscilloscope.
Check these first.
Please Log in or Create an account to join the conversation.
- DEVILHUNTER
- Offline
- Junior Member
Less
More
- Posts: 29
- Thank you received: 8
10 May 2024 07:49 #300298
by DEVILHUNTER
Replied by DEVILHUNTER on topic Chinese AC servo encoder failing: fixing or replacing
A little update on this topic.
The encoder of that motor is mechanically perfect, no problem on that side.
Tested feeding 5V with the PSU instead of the servo drive, but the problem is still there, after a while working I get the error in the drive. Changed the other diferential driver, same issue.
Created a HAL component that takes axis position and generates the UVW signals. So far it does what it has to do. My main concern was what could happen after powering up the machine if it's left out of machine home, but with the position_file to remember where is left does work well. Unfortunatelly I have not been able to test it with the servo because during the tests I crashed the glass scale to it's limit. Broke the reading head guide and the cables that go from the interpolator PCB to the LEDs and photodiodes. Already repaired both but is refusing to give me values. If I induce noise on the photodiodes, the interpolator IC gives me measurements so I will have to do some checking with the oscilloscope.
In the meantime I asked the servo vendor if they could get the encoder, but the manufacturer said no. Found another chinese encoder with the same ABZUVW signals at a decent price to give it a chance. Soldering to the old encoder connector was a pain because the new encoder cables were too short, but it did work. This new encoder logic is reversed and just had to change one of the motor phases. To couple this encoder to the servo I wired the oscilloscope to one phase of the motor and the U signal and left the encoder loose so it would slip while rotating the saft.
So far the lathe is working again, that was my main concern. I will probably get a couple of the new encoders to repair my other servos, even If I don't have them in use for now. I will continue exploring the way to over pass the encoder with the help of LinuxCNC as I think that it will be usefull for somebody.
The encoder of that motor is mechanically perfect, no problem on that side.
Tested feeding 5V with the PSU instead of the servo drive, but the problem is still there, after a while working I get the error in the drive. Changed the other diferential driver, same issue.
Created a HAL component that takes axis position and generates the UVW signals. So far it does what it has to do. My main concern was what could happen after powering up the machine if it's left out of machine home, but with the position_file to remember where is left does work well. Unfortunatelly I have not been able to test it with the servo because during the tests I crashed the glass scale to it's limit. Broke the reading head guide and the cables that go from the interpolator PCB to the LEDs and photodiodes. Already repaired both but is refusing to give me values. If I induce noise on the photodiodes, the interpolator IC gives me measurements so I will have to do some checking with the oscilloscope.
In the meantime I asked the servo vendor if they could get the encoder, but the manufacturer said no. Found another chinese encoder with the same ABZUVW signals at a decent price to give it a chance. Soldering to the old encoder connector was a pain because the new encoder cables were too short, but it did work. This new encoder logic is reversed and just had to change one of the motor phases. To couple this encoder to the servo I wired the oscilloscope to one phase of the motor and the U signal and left the encoder loose so it would slip while rotating the saft.
So far the lathe is working again, that was my main concern. I will probably get a couple of the new encoders to repair my other servos, even If I don't have them in use for now. I will continue exploring the way to over pass the encoder with the help of LinuxCNC as I think that it will be usefull for somebody.
Please Log in or Create an account to join the conversation.
- jg00163206
- Offline
- Premium Member
Less
More
- Posts: 92
- Thank you received: 4
12 May 2024 20:36 #300471
by jg00163206
Replied by jg00163206 on topic Chinese AC servo encoder failing: fixing or replacing
i bought this drive and motor from a vendor on ebay, en.bergerda.com/filedown.php?id=49, and it came with an error when i turn it on it flashes 9 and then 69 and i am unable to clear it. i am wondering if anyone has any ideas.on how to clear this error, or if it is even clearable. i'm sure there's a reason they didn't want it back. they sent me another drive but i would like to get this one working if i could. another drive is like $300. the motor works, i checked it with the other drive. i have gone through all the diagnostic procedures in the manual. and there is no error code in the manual for error 69 any help would be greatly appreciated. i did contact the manufacturer but they were little (if any) help.
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19188
- Thank you received: 6433
12 May 2024 21:09 #300473
by tommylight
Replied by tommylight on topic Chinese AC servo encoder failing: fixing or replacing
9 says is encoder error, no 69 there.
Please Log in or Create an account to join the conversation.
- jg00163206
- Offline
- Premium Member
Less
More
- Posts: 92
- Thank you received: 4
12 May 2024 23:29 #300479
by jg00163206
Replied by jg00163206 on topic Chinese AC servo encoder failing: fixing or replacing
yeah thats the conclusion i came up with too. thanks for responding. i guess is no free lunch. i am going to have to bite the bullet and buy a drive. you guys are amazing on this site. thank you all for all the advice and guidance you provide.
Please Log in or Create an account to join the conversation.
Time to create page: 0.088 seconds