-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
A possible cause is a conflict with the GPIO15 required pull-down resistor, HSPI using GPIO15 for SS, and SPI modules having pull-up resistors on SPI Chip-Select. See ESP8266 Will Not Boot for more details and solutions.
A fluctuating reading that only goes low. Infrequently swinging below the real value. Monitored over time it may even go near zero or negative. If you take the maximum value of a set of recent samples, you have a realistic value. This characterizes my observation of when I had problems with SPI Bus ringing.
- I see a lot of ringing at each SCK and SS transition. And, each one couples into the other signals.
- The Maxim reference design for the MAX3155 shows 150Ω Series Resistors on each SPI Bus pin. After adding these, my erratic readings went away. So far, the Maxim evaluation board is the only board I have seen that uses these.
- The Ringing, in this case, appears to be a (classical unterminated) transmission line effect, even though the SPI Bus wires were very short. The period of the Ringing changes with wire length. The GPIO pin Rise/Fall times are better than 3ns. I say better than 3ns because my 50MHz oscilloscope cannot measure it accurately. (As I understand it, to measure 3ns would have required at least a 150MHz oscilloscope.) As the wire length increased the period of the oscillation increased. The magnitude of the overshoot/undershoot also increased. In a test with just a series resistor and a 10MΩ/10pF scope problem for a load, a 200Ω resistor worked well for reducing the ringing.
- I think it is worth noting that in Espressif's Hardware Design Guideline, section 1.5. Slave SDIO/SPI, shows the use of series resistors (R8, R10, R12, R13) on the SPI Bus signals. I think CS should be included in that set; they did not. It is also telling that in "Table 1-2. ESP8266EX Pin Definitions" It indicates that when those pins are used as SD signals they are connected to 200Ω resistors.
- Also, ESP8266 Hardware Design Guidelines, 1.4.3. Flash reports using a 200Ω resistor in series with the SPI Flash Clock signal. The text says "..., which reduces the drive current and eliminates external interruption." I think their intended meaning was "lost in translation." It is easy to imagine that ringing on a clock signal could create read or write failures during a SPI bus transfer and they expressed this as an "external interruption". A high drive current with steep rise/fall times would lead to ringing and a series resistor would help resolve that. Without a series resistor, the board background noise would increase and could contribute to making a logic level undefined.
If the temperature goes lower when it should be rising or goes higher when it should be falling, check the polarity of the Thermocouple connection. The wiring color code depends on the standard agency the manufacturer chooses to follow. This appears to align with the country of origin. This should not be a problem when using a Thermocouple with a pre-attached connector. The thermocouple plugs and sockets are polarized. For US ANSI 96.1 Type-K Thermocouple: + Yellow, – Red. For International IEC 584-3 Type-K Thermocouple: + Green, – White.
- A noisy environment appears to be an issue with the MAX31855 as it is with many microvolt measuring devices. The Maxim reference design for the MAX31855K shows using two ferrites and a 0.01μF capacitor on the thermocouple input pins to the MAX31855. As well as, pads for shunt capacitors. Not all of the breakout boards, that I have seen on the Internet, have a filter circuit. I think having an onboard filter circuit should be a selection criteria for picking a board or a strong consideration when laying out a PCB board.
- Noise pickup will show as a fluctuating reading. Swinging above and below the real value.
- Keep thermocouple and wire away from power line runs.
- For reference point of what can be achieved, my good result: When properly placed, I see readings with a maximum delta change of 0.5 degrees C. The maximum value is the difference in the maximum and minimum readings from a continuous running sample list of 16 entries that spans a 4.7-second period. The list is rescanned for a new maximum difference with the addition of each new sample. That new maximum is std::max() with a running maximum to form the measurement. This allows a measurement free from the influence of a slow-changing room temperature.
- Keep thermocouple and wire away from any electrical devices that may radiate RFI.
- References
- K Type Thermocouple Connector with Noise reduction Filter board - Uhh, J336 is a 33μF/6.4V Tantalum CAP. And they have two on the board.
- Thermocouple Noise Filtering - wow they used 10μF caps
I got these for a while. I tried several MAX31855 boards, all would do this and there was no real short-circuit to the ground. The problem appears to be tied to one USB Power Adapter. I discovered that the problem would disappear when I connected the oscilloscope ground to the ESP8266 power gound. In the end, all it took to make the problem disappear with that adapter was a 100pF capacitor between the ESP8266 power ground and earth ground. I don't fully understand this. It seems that possibly some RF noise present from a USB Power source can fool the MAX31855 SCG detection method into thinking it has a short to ground.
Grounded thermocouple vs “grounded” thermocouple
Thermocouple noise causing spurious reading with Solid State Relay (SSR)
Reference for self-study on thermocouples - good background information