Noise on the reset signal
ManAtWork
Posts: 2,176
I have some trouble with a propeller in a CNC controller. There are two relay outputs where the user can connect various types of loads. Everything works well if the load is a milling motor, vacuum cleaner or any device with an SMPS. However, some customers drive solenoid valves without proper surge suppressors and they cause arcing at the relay contacts. The resulting EMI is strong enough to cause the propeller to reset.
It is difficult to find out what actually happens. The EMI is so strong that I can "measure" voltage spikes of >5V when connecting the ground clip to the tip of the scope probe in a loop directly! So I disconnected the ground clip (~4 inches) and tried to connect the tip and shield directly (<1/2" wires) to the rest signal and the ground plane. I can still measure a series of bursts around 200ns altogether consisting of short glitches of ~5ns and 1..3V amplitude at the reset signal.
Is a pulse <10ns enough to cause a reset to the propeller? Or do I have to search for other causes, maybea brown out due to power fluctuations? The supply is a TS1117-3.3 running from a 12V input. I could tell the customers to use solenoids with surge suppressors. But I also want to make my product more robust. (BTW, it already passed the EMI tests for T
It is difficult to find out what actually happens. The EMI is so strong that I can "measure" voltage spikes of >5V when connecting the ground clip to the tip of the scope probe in a loop directly! So I disconnected the ground clip (~4 inches) and tried to connect the tip and shield directly (<1/2" wires) to the rest signal and the ground plane. I can still measure a series of bursts around 200ns altogether consisting of short glitches of ~5ns and 1..3V amplitude at the reset signal.
Is a pulse <10ns enough to cause a reset to the propeller? Or do I have to search for other causes, maybea brown out due to power fluctuations? The supply is a TS1117-3.3 running from a 12V input. I could tell the customers to use solenoids with surge suppressors. But I also want to make my product more robust. (BTW, it already passed the EMI tests for T
Comments
I have done some EMC but a lot of the tests are more "continious" RF sweeps and the tranient ones are ESD and surges on the power supply, depending on what enviroment it was tested for there could have been surges on the signal ports and the protective earth port.
The earth currents are always a problem and you do say that SMPSUs are better, but I would have expected the earth paths to be carried through on them too.
If you put a capacitor across the /RST pin then that would affect the programming of the Prop (if that is ever done out in the field) I suppose a removable link could be put in to account for it.
I always get resets on Props, here on the bench, when I switch on/off my old Hitachi 'scope.
Alan
It seems that the scope is not much help. The noise might get induced or at least influenced by the ground loop of the probe. I fear all I can do is trying out different things "blindly".
http://ww1.microchip.com/downloads/en/devicedoc/reset.pdf
http://ww1.microchip.com/downloads/en/devicedoc/35007b.pdf
I suspected that what you were seeing might not be the reality or cause, it's hard to trust test instruments when they themselves and the test hookup are also affected as well. Since you are familiar with EMI requirements you must also know that if you have a system where you cannot prevent the EMI such as with the unfiltered solenoid then you must shield your system. EMI does not have to work on an external pin such as reset and possibly could be affecting the chip directly. However, one sure way to find out where it's coming in is to be brutal with the test pcb and lift/cut Prop signal pins including the reset until it stops although that in itself is not conclusive enough. Before that you could run the logic off a small battery pack just to see if there is an issue from or via the power-supply and/or regulation. Just a couple of very quick things that you can try. If you do cut pins (it's clean) then it's also easy enough to replace the Prop. I'm assuming you are using surface-mount and not the DIP pack that comes with internal antennas.
yes, interesting. I wished there would be such detailed descriptions about the reset for the propeller. The datasheet doesn't say much about this topic. Is the reset signal really edge sensitive?
Hello Peter,
yes, the propeller is surface mounted. Actually, there are two of them on the board. They are wired as master/slave. The (system) reset signal goes to the master only. The slave is held in reset all the time until the master explicitely releases it by activating one of its outputs. The board is two layer only which might not be optimal. But the ground plane (blue) is almost solid with small cut-outs for signals that I couldn't route on the top layer.
The relay connections are in the lower left corner and are well isolated from all other circuits. The whole assembly is inside a well shielded metal box, but that doesn't help much against noise on the lines routed through the inside of the box, of course.
Some news: an additional low-ESR electrolytic cap (330uF, in parallel to two SMT ceramic caps 4.7u and many 0.1u ones) doesnt help. So I think it's no power glitch. But a 10nF ceramic cap from reset to ground reduces the probability of false resetting considerably from around 90% to 10%. I'll try out if a larger value or closer to the IC pins helps better. But the problem is that the current design requires reset to be driven by an LM339 comperator an the prog plug, so it has to be an open collector signal with pullup. I could change this and drive it with a low impedance CMOS buffer in the next board release.
Take a look at this thread:
http://forums.parallax.com/showthread.php/137407-Hardware-problems...-RESn-gets-triggered-by-touching-it-with-a-bit-of-wire
I had multiple issues with resets in a electrically noisy environment until I added the suggested 22nf cap.
Walter
The 300W lamp will represent a very high surge current from cold. It will go from 300K to 3000K and change its internal resistance and its power take too. So it is not just plain resistive but a dynamic resistance. That's the reason they always blow on switch on.
I was having reset problems with my "Poor" quality plug boards I usually work with which had problems with micro static discharges in the vicinity during dry conditions.
I greatly reduced this by connecting the reset cap to +3.3V, VCC, instead of ground, since the reset is usually sitting at 3.3V normally.
My theory is that very short noise pulses on the VCC bus can pulse VCC high enough to cause the voltage on the normal cap to drop bellow the trip point.
With the reset cap connected to VCC even in the presence of pulses on VCC the reset pin will follow VCC and cause no reset problems.
Note! Relay contacts can produce very fast rise time pulses. Easily in the 50pS range. Even the best buss capacitors filter these poorly. This is why those simple low cost relays can be such a headache. Properly sized RC snubbers across the contacts can absorb much of the energy in the pulse. The fast rise time pulse is unaffected but the snubber catches it before it gets away. This stuff is near magic. It takes an alchemist with lots of experience to get this under control.
Personally, I just don't go there. I use solid state switches, MOSFETs, SCRs, TRIACs, and SSRs which have more predictable and controllable rise times.
Duane J
You mean on the relay outputs ?
This is probably a good idea, even without the reset issues, as leaving a totally free (unclamped) inductor, can stress the winding insulation.
Some uC have internal spike filters on the RST line, the Prop it seems is not one of those, so you need to add an external one, in spike prone environments.
Treat the pin like any sensitive analog node - which means no long traces directly connected, and you place a RC filter with smallest possible PCB area on the RST Pin trace. Vdd is closer than Vss to RST, so a cap to there makes sense.
0603 or even 0402 parts will keep pickup areas small.
I would expect a QFN package to be the most immune, but they are not as easy to handle.
The relay contacts may look like they are isolated, but even femto-farads, and sub ns rise times, represent significant energies.
Add: I can see Murata have some nice 3 terminal capacitors, if you are serious about knocking spikes - these work in a feed thru basis, and with a series resistor or bead, would give very high immunities. NFM18PS series, one example NFM18PS474R0J3D
Could be used on Vcc and RST lines,
Good point, I'll try that.
I know. The problem is, the controller is for milling machines and lathes. While a failed relay is normally stuck at the last state it had before the failure an SSR can theoretically fail at any time with any resistance across the contacts. A motor suddenly starting for no reason could cause serious injuries. Personally, I could live with this extremely small risk, but in germany we have something called "Produkthaftungsgesetz" and that means in the case of an accident it's up to the manufacturer to proove that he did anything possible to avoid accidents, otherwise he's guilty no matter what was the actual cause (lightning...). That's why we have choosen mechanical relays.
This is a very real problem. Discussed recently http://forums.parallax.com/showthread.php/148103-Propeller-reset-problems?highlight=propeller+reset and the working solution was in post #24.
Remove all wires that connect to the reset pin, especially a wire that might go to a reset switch on a front panel. The reset pin is high impedance and this means any wire, even more than 1-2cm, is an antenna. It will pick up RF, motors, solenoid, even a fluorescent light turning on in the same room. Keep the wires to the reset pin very short. Ideally, if you want to reset the propeller from a switch or any other device that is more than 1cm from the actual chip, use a transistor or other switching device physically next to the propeller chip. Even PCB layout is important - if there is a reset switch on the PCB, put it right next to the propeller chip.
Even that may not be enough.
Actually, I don't think we have discussed enough the use of the propeller chip in industrial environments. The chip is NOT reliable with respect to resetting and it resets far to easily and this could really result in harm in some situations. More experiments are needed.
http://www.ti.com/lsds/ti/power-management/supervisor-reset-ic-products.page?family=analog&familyId=527&uiTemplateId=NODE_STRY_PGE_T
I have to strongly disagree with the last statement as I use Props in all kinds of environments over the years in many different products and the chip is very very reliable. I however do not leave the reset line to float and even though there is a weak pullup when the BOE is tied low I still add a 10K pullup as well. Also, my reset line is not run very far or in harms way. But as I mentioned elsewhere I don't have USB built into the design directly and therein may lie the problem with some designs that are pressed into "industrial" service. Many of the OTS Prop boards have inadequate power supplies as well and simply rely on simple LDO regulators. Typically I will diode isolate perhaps with an additional polyfuse into a couple of small 100uf caps which then feed into my SMPS down to 5V and then into one or more 3.3V LDOs that are suitably distributed as required. The other point of sensitivity is the crystal and typically I see boards with HC49 crystals and the tracks run far and wide whereas they need to be very short and tight which necessitates either the cyclindrical or sub-miniature SMD crystals (<50c). Of course good pcb grounding and ground and power planes are in order as well as some kind of guard ring around the crystal.
Agreed.
No! This is workshop machinery, no aircraft. A reset should always lead to a safe state. Only unexpected changes from a safe to an unsafe state must be avoided.
An unreliable product (it resets, stops working...) is annoying to the customer and a probably a good reason he want's his money back. But if the system is properly designed even complete failure of any (single) sub-system should not cause an accident.
(you know the joke that the safest machine is a broken one that doesn't work...)
But thanks for the link. I think the over-sensitive reset logic of the propeller wouldn't be a real problem if it was documented better in the data sheet and example schematics.
The reset signal also goes to both of the CPLDs (the QFP-100 ICs next to the propellers). One of the traces is relatively near the pads of the relay coils. When the relays are switched off, their coil connections are effectively floating:
T4 and T5 are high impedance. The signal "ESTOP" comes from a mechanical NC switch and is grounded but over a relatively long trace from the other corner of the board and a 4" wire to the front panel. So this is also a high impedance HF-wise. If noise from the relay contacts are coupled to the low voltage side there is no low impedance path to dampen the spikes and they can cross-talk to the reset signal.
So I'm going to do this:
a) filter the reset signal with an RC combination near the propeller pin (already done, helps a bit)
b) connect a ceramic cap between the relay coils and ground (HF-short)
c) route the reset signal away from the relays
See, absolute confirmation that the reset signal is sensitive! These threads sometimes go off on a tangent I find just because some designs are sensitive to spikes yet many others are not but it's easier to point the finger at some perceived weakness of the Prop. Reset does what resets are supposed to do and although it could be made with a glitch filter it normally doesn't get glitches on the reset line unless something like this happens. Whose fault is that?
BTW, glad to see you found the fault. I did see those traces running past the coil in the lores pcb layout but I couldn't confirm if this was the reset line. A highlight of the net before screenshot would have made that stand out like a sore thumb.
BTW again: I have had some enquiries from a big German company but after reading about "Produkthaftungsgesetz" I have become a little shy...... shoot first, find out if they were innocent later
Before that the signals at the coils looked really horrible. They bounced randomly between 0 and 24V (and if no clamping diodes were there probably much higher) for several 100µs with rise times of few ns. The scope display looked like a big red filled rectangle instead of a single trace line. Now there is still some noise (L + C = ringing oscillator, of course) but with much less energy in the HF range.
And yes, Peter, you are right. It wasn't the fault of the propeller but my bad layout. I never claimed something like "...the propeller chip in industrial environments. The chip is NOT reliable...". But on the other hand, live would have been much easier if the data sheet contained some information about trigger threshold and minimum pulse width for the reset pin. If I had knewn that this is so sensitive I would have payed more attention to it.
Sorry about the way I worded my comment prior to that. I had a grumpy moment and should have said it more diplomatically.
And of course, all of those design features will fix the problem, so with good design, there should be no problems.
I think it comes down to impedance. If you have a high impedance pin, the length of any wire connected to that pin can be shorter and still pick up interference. Taken to extremes, put a long wire antenna up in the trees and even with 100R or less, it is going to pick up thunderstorms etc and cause resets. So - long wire, low impendance. Shorter wire, higher impedance, still get resets.
Even the standard wires running around on a PCB with the USB download circuit might be too long. I was surprised to see how short a wire is needed to pick up a reset from a nearby flourescent light. 5cm of wire on the reset pin and a flouro light 1 metre from the propeller and it will reset. Flouros are nasty. They seem even worse than the 3.6kw 3 phase pump I was switching that was also 1 metre away.
Solution to me is all what Peter says, plus maybe thinking more about reducing impedance while still transmitting a signal. The simplest solution might be a transistor right up on the reset pin, and then everything goes into the base of that transistor (with a low value resistor on the base, maybe 470R or something?). So instead of having a pushbutton reset going directly to the reset pin, have the pushbutton going to the base of the transistor via that low value resistor? And ditto the download circuit - might need two transistors as there is an inversion going on there.
Or maybe a non inverting buffer and really pull the line definitely high with a similar low value resistor?
This is made worse by the lack of any Reset filter on chip, so very short pulses will generate Resets.
Because fast edges can couple across femto Farads, the smallest possible pick-up area, and highest practical distance are what is needed in the design. (hence the fixes mentioned above).
There is an opening for a single gate schmitt, that is deliberately s l o w.
Well, as mentioned before you could use a transistor reset right at the pin and not worry about schmitt gates. The transistor's gate is very low impedance and will not respond to very short glitches anyway so it is intrinsically slow. But once again, I use the Prop's in noisy environments and I don't have these problems. A small cap from reset to ground is never a bad idea either and if you allow for it on a pcb then you always have a choice as to whether or not to use it and what value it should be.
Transistors are prone to RF rectification, are not Zero static power devices, and are Low output impedance in one direction only, plus they invert a signal.
So sure, they can be used - you can even use a Dual Digital transistor in SOT363, if you want no logic inversion - but they are not quite an ideal solution.
Smarter would be a 1G17 style device, with a deliberate internal spike filter. Alas, I know of no such device.
CMOS Output impedance is low, so that clamps dV/dT effects straight into the reset pin, and the deliberate filter (say 100ns?) would give high tolerance to longer trace effects on the other side.
None of which applies to the point of discussion, we are talking about EMI glitches, aren't we? Plus an NPN that's not turned is zero power in my book although this once again does not apply. Using an external gate only shifts the problem off the chip when all that's required is good design practices in the first place otherwise you may have seen me pulling my hair many years ago.
Any solution needs to be robust in all 'attack' environments, not just dV/dT ones.
Sure, but it is then not driving anything either, so your sensitive pin, has the highest impedance.
Well, yes, if Prop had a built in low pass filter, then this would be less necessary.
My points are for a way to best add in, what should have been designed in.
The bad news is that a perfect single gate part to solve this, does not exist that I know of.
A standard 1G17 is close, but is really too fast to make a good filter, and adding an external filter, now has another 'sensitive pin' to worry about. The nearest part is probably the TC4S584F - nice and slow, but inverting.
Would you agree that if the reset pin was not routed anywhere expect to maybe a nearby pull-up resistor that it would be highly noise resistant? Therefore place the NPN (actually a DDTD digital transistor with resistors) next to that and you still have a highly resistant reset line that now needs more of a punch to generate a reset.. However, if you are looking for a "slow" single gate then look no further than those tiny micros in either SOT23 or DFN packs as I have used them before to monitor the receive line and control the reset line (as well as the I2C lines). The same micro monitors the DTR line too and generates a nice clean reset signal from it. You can use it as a watchdog too that doesn't activate until you say so.
Looking at my homebrew propeller board in front of me and thinking about it with the information Peter has given. I conclude that my layout is all wrong! My reset transistor is 6cm from the reset pin, and I have a track fully 8cm long going to the reset switch in the far corner of the pcb. All of those tracks are antennas. No wonder my boards are prone to resets!
'Highly' is rather subjective, and package dependent.
It is still a high Z pin, so is still susceptible to dV/dT injection. (You have lowered, but not eliminated, the coupling C value.)
That is why posts above report adding Caps at the pin help, and adding a C plus lower impedance drive (allows larger C) will help even more.
I recall first generation AVR's had similar reset pin issues, that were very resistant to 100% cures.
Spice is great for getting a handle on impulse injection :
Create a high voltage, fast edge and then try some few femto-farads of coupling, into a few nH of track inductance, and a few pF of pin capacitance and load resistors.
Add in some common mode nH, and series / parallel R, and check the injection results.