ff7fe704ab1d3256cf06fcafda9b3b99a8626f57
[web/gag.com] / bdale / blog / posts / RF_Immunity.mdwn
1 [[!tag tags/rockets]]
2 [[!tag tags/hamradio]]
3 We've had sporadic [Altus Metrum](http://altusmetrum.org/) customer reports 
4 about RF susceptibility issues with their 
5 [TeleMetrum](http://altusmetrum.org/TeleMetrum/) installations.  In almost
6 every case, these problems have been completely resolved by either making
7 sure the system battery has sufficient charge before launch, or through the 
8 application of standard engineering techniques such as twisting wire pairs
9 to reduce differential coupling.  However, even when every technique we could
10 think of had been applied, once in a while someone still has issues.
11
12 Around the time of LDRS this year, the incidence of such reports seemed to 
13 increase.  One customer, in particular, had an installation in which he 
14 virtually always saw continuous resets of the board once his 54mm airframe 
15 was put on a launch rail, and several customers reported seeing board resets 
16 during ejection charge firing.  [Keith](http://keithp.org) and I saw a board 
17 reset during main charge firing happen in person at 
18 [NCR](http://ncrocketry.org)'s Oktoberfest, and with a couple days available
19 to work together after that launch, we decided it was time to figure out 
20 what was really going on. 
21
22 Here's what we've learned.
23
24 In bench testing, it quickly became clear that the problem was the 3.3
25 volt power supply rail getting pulled down far enough to reset the CPU.
26 This most frequently happened during ejection 
27 charge firing, when the input of the LDO regulator is pulled down by the 
28 near-short presented by the e-match when a pyro FET is turned on.  To keep 
29 the 3.3 volt rail voltage up during firing, we include a 100uF bulk capacitor
30 on the regulator's output.  In all of our prior bench testing, we never saw 
31 the 3.3 volt rail droop significantly.  Clearly something had changed... or 
32 maybe several things had changed?  
33
34 The first thing I wondered about was whether the new Kalman filtering code,
35 which requires more compute cycles from the processor, might be consuming
36 enough more power to pull the rail down faster during charge firing.  After
37 poking around at it, though, we have no data to suggest the new code makes a 
38 measurable difference in power consumption.
39
40 The next thing we pondered was that at least some of the e-matches we and 
41 others are using in the hobby now come from the fireworks industry, where it 
42 is apparently considered a feature for the match to retain continuity after 
43 firing.  This means the input of the LDO gets held down for longer than with
44 the e-matches we used to use and Quest Q2G2 igniters that open when fired.
45 But that still didn't make sense as the root cause, as we chose the FET 
46 firing time such that even with a dead short across the igniter terminals, 
47 the 3.3 volt rail wouldn't be pulled down far enough to cause trouble during 
48 firing.
49
50 One of the big changes between v1.0 and v1.1 on TeleMetrum was that the newer
51 boards incorporate a better reset circuit.  This helps ensure the GPS chip 
52 always comes up running at power on, which was a problem at temperature 
53 extremes with older boards.  However, a side-effect of this change is that 
54 a v1.1 board will reset any time the 3.3 volt rail drops below 3.15 volts, 
55 whereas older boards didn't trip until a much lower voltage.  So the recent 
56 increase in reports might just be related to more v1.1 boards being placed 
57 in service?
58
59 While experimenting on the bench, we observed that injecting RF energy into
60 the input of the LDO regulator had the effect of pulling down the output
61 voltage, presumably because the internal reference source accumulates charge
62 and is fooled into thinking the output is too high.  Since our designs all
63 have the power switch contacts ahead of the LDO, the wires going out to the
64 switch and back are effectively an antenna... as are, to a lesser extent,
65 the wires going to the e-matches.  There is some variability from part to 
66 part in just how badly the LDO reacts.  But by attaching a tuned length of
67 wire as an antenna to the LDO input and playing around, we were finally able 
68 to reproduce the problem reliably on a test board at my bench!
69
70 On further analysis, we realized that the output of the USB battery charger 
71 chip and the input of the LDO both expect a 1uF bypass cap to ground.  At 
72 some point, those looked redundant and we eliminated one of the two.  
73 Unfortunately, we weren't internalizing the fact that the switch leads were 
74 between the two caps, and the one we left was on the output of the charger 
75 and not at the input of the LDO.  Placing a suitable bypass cap right at the 
76 input of the LDO turns out to have a truly dramatic effect on RF immunity!
77
78 Once we realized that RF getting into the LDO input was the problem, Keith
79 pointed out that we used to see "noise" in the accelerometer data on earlier 
80 boards that was caused by the 3.3 volt rail moving slightly during radio
81 transmit, which we fixed with a hardware change on v1.1.  We are now 
82 convinced that this was at least party related to RF coupling to the LDO 
83 input, not just the change in power consumption on the LDO output.  We 
84 didn't realize what was going on in earlier testing because we often didn't 
85 have ematches wired up, so RF coupling was minimal.  But going back to 
86 flights logged with v1.0 boards that included deployment, and studying the 
87 magnitude of the "steps" in acceleration data observed when the transmitter 
88 was on, Keith was able to compute the amount the 3.3 volt rail must have 
89 sagged if the real acceleration wasn't changing... which in some cases was 
90 as much as 180mV!  We think this proves that RFI could cause the LDO to 
91 drop its output voltage below the reset controller set point on v1.1 boards.
92
93 Based on these observations, I'm making two hardware changes for the next
94 version of TeleMetrum (version 1.2), and Keith is also making a software 
95 change.  We have tested all of these changes on real boards both on the 
96 bench and in test flights, and the net effect is a major improvement in 
97 the RF immunity of TeleMetrum.
98
99 The first hardware change is moving to a slightly lower trip voltage on the 
100 reset controller.  Instead of 3.15, the new part trips at 3.00 volts nominal.
101 This gives us more "headroom" to tolerate 3.3 volt rail droop during charge 
102 firing, and will allow the board to operate longer on a given battery 
103 charge.  This change is not relevant for v1.0 and prior.
104
105 The second hardware change is adding an appropriate bypass capacitor right
106 at the LDO input.  This requires a PCB update, but it's possible for me to 
107 update existing production boards by adding an 0402 cap right across the 
108 appropriate pins on the regulator chip.
109
110 The software change prevents our altimeters from turning on the radio 
111 transmitter while an ejection charge is firing.  Since the RF transmitter 
112 draws substantial additional power, this should help keep the 3.3 volt rail 
113 from drooping.  This may not really matter, but it feels like the right 
114 thing to do.  This change will be part of our next stable firmware release.
115
116 We think most TeleMetrum customers need not worry about these updates.  But 
117 if you have seen odd resets on the rail or during ejection charge firing in 
118 flight with a TeleMetrum v1.1, feel free to contact me about updating 
119 your existing board to include these improvements.