Noise from 12v Actuator causing random reboot (even with fly-back diodes)
JohnR2010
Posts: 431
I have Solid State Relays optically connected to my Propeller's pins. The SSRs are driving a 12v DC 3.5A actuator with built in limit switches and fly back diodes. I have used this circuit and actuator combo for years without any issues (no noise). Currently I'm working on a circuit to monitor the current the actuator draws that is not optically isolated from the propeller and now noise is getting in and rebooting the propeller randomly. I was surprised to see this as the actuator has fly back diodes. I wonder if in the small window before the diodes turn on a voltage spike is hitting my new circuit causing the reboot.
I'm planning on putting a 300ohm resistor and .1uF cap across the motor's leads as a snubber. I know the snubber should go across the switch or the load but in this case it will be going across both the switch and the load as the limit switches are built into the actuator. For a second level of filtering I also plan on putting a MOV across the motor's leads. http://www.mouser.com/Search/ProductDetail.aspx?R=B72207S0110K101virtualkey59250000virtualkey871-B72207S110K101
I was going to go with a 1 watt resistor (for the RC snubber) I think that is overkill as it has to be a very, very quick spike it needs to dissipate.
Any suggestions as its been too long since I designed a filter circuit and thought I would run it by the forum for input?
I'm planning on putting a 300ohm resistor and .1uF cap across the motor's leads as a snubber. I know the snubber should go across the switch or the load but in this case it will be going across both the switch and the load as the limit switches are built into the actuator. For a second level of filtering I also plan on putting a MOV across the motor's leads. http://www.mouser.com/Search/ProductDetail.aspx?R=B72207S0110K101virtualkey59250000virtualkey871-B72207S110K101
I was going to go with a 1 watt resistor (for the RC snubber) I think that is overkill as it has to be a very, very quick spike it needs to dissipate.
Any suggestions as its been too long since I designed a filter circuit and thought I would run it by the forum for input?
Comments
I had a rebooting-problem with a solid-state relay. I added a small capacitor I don't remember exactly how the capacitor is connected
and the circuit is 500km off my place.
best regards
Stefan
Thanks.
I'm thinking you may have unexpected current paths forming. Such currents often cause digital latch-up and can be destructive. It's hard to be precise without seeing a board layout and wiring/schematic drawings.
Here is what I'm going to try
1) Snubber across the motor leads .1uF and 100ohm resistor
2) @erco's delta cap arrangement
3) shielded drive cable with ferrite
If this doesn't help I will post the schematic and PCB as well as hook up my scope and take a look at the noise on the reset pin.
It may be well into next week as my electronics lab now has a bunch of teak wood from my son's boat drying and waiting for the next coat.
Thanks everyone!!
Nope it is a 11.5" linear actuator.
By all means post this including photos (more than one) if you really want to solve it. Sometimes the schematic and pcb can look fine but the photos reveal wiring problems etc.
is much better at suppressing RFI from commutator arcing at source. Use a detuned AM transistor radio to
see how well this performs.
Remember there are two kinds of interference, capacitive and induction. The first thing to avoid
is running motor/actuator wiring alongside other wiring, that's where the electomagnetic
induction will happen. Avoid large loops in your circuit, use twisted pair for all power and motor wire
pairs too.
I think I'm okay here. I have the SSRs and the ground that is connected to the motors all on the left side of the PCB with huge traces running directly to the power source. All the logic circuits including the switching power supply are behind a diode on the right side. As I noted above this circuit board has worked great for years driving actuators I just recently added a new current sensing circuit that seems to be sensitive to the noise that was otherwise being blocked by optically isolated SSRs.
Thanks
Will do Peter I want to try a few things hook the scope up and get my ducks lined up. Stay tuned. Thanks
Have you tried disconnecting/removing the current sensing circuit to verify that is the source of the problem?
You can get cheap +-5A capable versions from RobotShop on a nice little module for about $4
If you are using OPTO-isolators (This includes the front end of a SSR) read the datasheet carefully for the reverse breakdown voltage of the internal LED. A reverse biased diode across the AK(<--Anode Cathode) input might also be necessary.
Connect one TVS between each actuator power connection and ground. This will suppress the voltage spikes to a maximum of 15 volts. The solenoid you're using to drive the actuator should be rated for a voltage that is at least twice the TVS voltage. I use Crydom CMX100D10 solid state relays in my application.
The research I've done indicates that a back to back zener diode configuration is most effective when driving solenoids because it forces the field to collapse quicker. Not sure about motors.
Sandy
Thanks Sandy! This sounds like a better option than the MOV I was going to use. I will take a look at it!
Now for the bad news: Not sure how bad this really is as it doesn't seem to cause any problems. With my scope on my 3.3V DC supply and I see about 40mV @ 500Hz ripple when the actuator is running. I just cant seem to get that noise out of the circuit with this board. So my question is should I be concerned with 40mv of noise? Heck the florescent lights in my shop are showing up around 25mV at 60Hz. The circuit is in a metal case and If I put the lid on I bet it will be less.
So I'm now doing reliability tests and so far it has out performed previous test by a long shot! Not sure I should worry much about the 40mV ripple on top of my 3.3v DC???
I have been reserving my opinion until I get to see some documentation on this setup......
However it sounds like your 12V rail might not have been adequately filtered in the form of high-frequency bypass caps, even inductors and transient protection diodes etc. In normal operation the flyback diodes will be shunting that spike back through the rails and if that looks like a fairly high impedance to the spike then it could be propagating through the rest of your system. By shorting the winding out rather than floating you are shunting the current through the ground and back through a "flyback" diode as only one SCR would effectively be conducting, the other blocking. If this works then fine but don't neglect simple transient protection for your 12V supply and maybe we might even get to see some photos and diagrams?
As for the ripple it doesn't sound like a problem at all, you only need to worry about those levels if you had some analog system running from it and even then it is easy to filter that part of it. Sometimes it's the way you have hooked up the scope that can mislead you as you may be creating a ground loop or something. I don't know what kind of regulators you are using but I normally like to switch down to 5V and have one or more linear regs for 3.3V for clean supplies.
The power supply for the board uses a switcher to drop it down from 12v to 5v and then a liner to take it to 3.3v. I did that because I needed 5v and 3.3v. In the new design I use a switcher to go from 12v all the way down to 3.3 as I don't need 5v for anything now.
As for a look at the PCB I'm going to post my new design and give you chance to look it over.
PCB layout:
The motor drive circuit is the lower left of the PCB. You can see the 4 SSRs and a two pin header to connect the two motor wires. In addition to the SSRs I also have a current monitoring circuit based on INA219 chip. I use two pins to communicate with the INA219 directly connected to the propeller. This is where the spikes were getting in before and causing the reboot. I fixed that with code by grounding both sides of the motor leads right after I turn off the SSR that is supplying 12v.
Notice in place of fly-back diodes across the motor leads I use two TVS to suppress any surge over 12v.
Schematic of Motor Drive circuit in lower left of above picture.
Power to the MCU through a 200 Ohm resistor and a 1F cap, just to give it backup-power for short amount of time if a power surge make voltage drop more than a 1Volt.
Also try different power sources, as some have over-current protection or a minimum power requirement.
In a H-bridge the diodes aren't connected across the motor but they are arranged across each switching element as in this example.
Sometimes the MOSFETs use their own internal substrate diodes if they are rated for that. As mentioned earlier this would also require at least a good high frequency cap on the 12V supply for the flyback spike but shorting the motor should work too.
I can't tell from the diagrams what the ground planes are like (as mentioned you need to keep the power and logic separated) but looking at the long long control lines it's easy to see how they could become nice little antennas. Even if you did run this as is you could have logic ground plane around it and even between the lines. The other simple thing is just put those series resistors not at the SSRs but back at the Prop where you could also add some protection if needed. However I don't think you should ever have those lines actually floating, just low or high outputs (in case I read you wrong).
I wonder how much galvanic isolation, if any. your current sensor is capable of withholding.... THAT could be a potential ground loop problem. Either way, I would at least move it so that it is on the supply side of the MOSFETs rather than a direct line with your motor. If you are needing to sense current direction, you should already know which direction your motor is going, since the micro is controlling it, making it a moot point to place it in direct line with the motor.
Beau, I like the idea of moving the current sensor's shunt resistor to the supply side of the SSRs. If nothing else it gets it a little further away from the motor's noise and won't hurt a thing. I don't care about the current direction, in fact in my code if it is a negative value I invert it so it is positive heck this will reduce a line or two of code.
Peter, I will put the diodes across the SSRs as you suggest in your H-Bridge configuration (thanks for the pic). I had them configured that way but I took them out and went the TVS route as I was concerned they would allow voltage spikes into the 12 volt power supply. I thought the idea of a fly-back across the motor is it will short the windings keeping the spike out of the circuit. Wont the diodes in the H-Bridge configuration let the spike onto the 12 Volt Buss. Maybe that is the idea, let it on the bus so it can be absorbed by the power supply?? I don't have a problem adding them just want to understand how they help. Any thoughts on the TVS wont they help with the spike? I have never worked with them.
Its easy to move the resistors closer to the prop I should also be able to extend the ground plane between them. Great Idea! Oh, and no I don't float the control wires to the SSRs I did say float in a earlier post but I was trying to say the SSRs are floated (off) and the control line to them is low.
Tony, I broke up my ground plane last night so the 4 SSRs and motor feed are now isolated off and it meets back at the power source as you suggest. That makes a lot of sense thanks!! The originally version of this PCB I made back in 2011 had a 5v ultra cap on the 5v buss that feed the 3v liner reg. It would run the prop including the xBee for over 2 minutes after the power was disconnected. Since they are little pricy I ended up taking them out of a few boards and everything seemed to work just fine. I will price out a 1F cap and get either that cap or an ultra cap back in the 3.3v line. I was able to get away with just putting the ultra cap in without a 200 Ohm current limiter, I had a 1A switcher and it seemed to charge it just fine. I have that same switcher now feeding 3.3v directly do you still think I need the 200 Ohm resistor? Or is that too much stress on the power circuit at start-up?
Motor leads including the shielded cable's drain wire connect to J301
View of my new isolated ground plane for the motor control components.
With the ground plane turned on:
This is all work in progress much fine tuning to do and I still want to add a 1F cap in the power rail as Tony suggested.
You can even parallel smaller caps which makes it easier to distribute them around on the pcb plus they tend to be lower profile than one big cap and they also have a lower ESR when paralleled.