Cylinder head temperature sensor?

I'm looking to make a few pieces of my gauge set up out of nixie tubes. I've already made a lovely clock out of the tubes so I know how to set up that portion of this..
So my issue is, how can I get the temperature from a cylinder head? C.H. gauges as far as I know are wrenched down with the sparkplug and then a wire goes to the gauge. I've been looking for a temperature sensor that would work the same, but all I can find is that ambient temperature transistor looking device.

It needs to be able to read 0-500 degrees Fahrenheit.

Any tips on what to do?

A thermocouple will do well over 500 degrees, as to how you mount it, no idea.


Rob

For high temperatures like that standard thermocouples are often used - Thermocouple sensor tutorial - the sensor you picture is probably a thermocouple fashioned as a washer.

Oh, very interesting! I was reading about thermistors and thermocouplers but was a bit confused, that link is absolutely perfect! This is great news indeed! At this point I'm debating if I want to use numbers to display the temperature or a bargraph. Hrmm...

A thermocouple would be a good choice, they are used for CHT (and EGT) measurement in light aircraft. Thermocouples produce a low voltage which needs amplifying before you can read it from an Arduino, and a specialist thermocouple amplifier chip is recommended. See e.g. Thermocouple Amplifier MAX31855 breakout board (MAX6675 upgrade) : ID 269 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits.

This is an old thread, but for those still looking for solutions to measure CHT (and since this comes up when searching for CHT and arduino in Google), be aware that the thermocouple amplifier breakout board linked above does not support probes with a grounded junction. IOW, those common washer style CHT probes won't work with the MAX31855 based amplifiers.

Holger

I think the MAX31855 will read the temperature OK if you connect the grounded side to the T- input (pin 2), because this input is connected to ground inside the chip during temperature detection. However, the fault detection circuitry will indicate a short to ground. I don't think this will affect the ability of the device to produce a temperature reading. So if you have a MAX31855, I suggest you try it out.

Alternatively, use an instrumentation amplifier such as INA122 to amplify the thermocouple signal.

Hmm, maybe you're right! I just checked the code for the Adafruit MAX31855 breakout board, and it has this:

if (v & 0x7) {
    // uh oh, a serious problem!
    return NAN; 
  }

  // get rid of internal temp data, and any fault bits
  v >>= 18;
  //Serial.println(v, HEX);

  // pull the bottom 13 bits off
  int16_t temp = v & 0x3FFF;

Tomorrow I'll comment out that first if block, and test again.

Just to be sure: those washer style CHT probes are grounded at the hot junction, not T-. *)

Holger

*) Well, AFAIK that is.

shadowbrush:
Just to be sure: those washer style CHT probes are grounded at the hot junction, not T-. *)

Provided that the output from the non-grounded side is positive, that should be OK. However, ground noise may be a problem - in which case the instrumentation amplifier is the way to go.

Bingo, with that code change I'm getting temperature readings with grounded probes. This is great, and I can't thank you enough to point me into the right direction! I was about to throw the towel with the cumuli towering up and my motorglider still on the ground without engine temps.

Yes, I've been fighting ground noise when using Auber Instruments pyrometers to indicate engine temps in the past, and learned a bit about ground loops. I hope this won't be a major issue again this time. I'm fine averaging readings in 10 second intervals, still fast enough to warn about engine overheating.

Thanks,
Holger

I'm glad you got it working! You might want to reinstate the code you commented out, modified so that it is still sensitive to the open-circuit bit, because thermocouples do sometimes go open-circuit - although it's usually the EGT ones rather than the CHT ones in my experience (of a PA28R with a turbocharged Continental engine). That's on the assumption that the fault detection can still detect an open circuit thermocouple when the T- pin is grounded - but you can easily test that.

Another good thought. The Adafruit library still provides the error through readError(). That part was unaffected by my commenting out. In my case it's of little relevance, because any value below 100ºC is not a valid engine temperature (while it's running). Yeah, both probe types seem to break occasionally. Or worse, go out of calibration with the tendency to read low.

I'm curious how the Arduino based data collection performs out in the field. It's my first attempt.

Thanks,

Holger

shadowbrush:
Bingo, with that code change I'm getting temperature readings with grounded probes. This is great, and I can't thank you enough to point me into the right direction! I was about to throw the towel with the cumuli towering up and my motorglider still on the ground without engine temps.

Yes, I've been fighting ground noise when using Auber Instruments pyrometers to indicate engine temps in the past, and learned a bit about ground loops. I hope this won't be a major issue again this time. I'm fine averaging readings in 10 second intervals, still fast enough to warn about engine overheating.

What exactly did you change in the code? I have three thermocouples connected to three Adafruit breakout boards. One is connected to a motor housing. The other to are in thermowells measuring water temp. I have had lots of problems (mostly reading 32F) maybe this grounding issue is the cause.

ScottG:
What exactly did you change in the code? I have three thermocouples connected to three Adafruit breakout boards. One is connected to a motor housing. The other to are in thermowells measuring water temp. I have had lots of problems (mostly reading 32F) maybe this grounding issue is the cause.

I commented out Adafruit_MAX31855.cpp, line 71-74:

  // if (v & 0x7) {
  //   // uh oh, a serious problem!
  //   return NAN; 
  // }

The MAX31855 will return the type of error that would get you the 32F reading. Use Adafruit_MAX31855::readError(). I don't have the error codes here, but it will tell you whether the probe is open or grounded.

Holger

shadowbrush:

ScottG:
What exactly did you change in the code? I have three thermocouples connected to three Adafruit breakout boards. One is connected to a motor housing. The other to are in thermowells measuring water temp. I have had lots of problems (mostly reading 32F) maybe this grounding issue is the cause.

I commented out Adafruit_MAX31855.cpp, line 71-74:

  // if (v & 0x7) {

//   // uh oh, a serious problem!
  //   return NAN;
  // }



The MAX31855 will return the type of error that would get you the 32F reading. Use Adafruit_MAX31855::readError(). I don't have the error codes here, but it will tell you whether the probe is open or grounded. 

Holger

Just tried your suggestion, but it didn't help. My temp reading are fine when I only have one thermocouple hooked up, but as soon as I have more then one, I have problems. I'm giving up on thermocouples and am going to switch to 1-wire temp sensors.

Hey, before you give up, have you checked the error that the MAX31855 returns? Are you sure it's a grounding issue? I determined that by removing one TC from the engine and then getting valid readings from 2 TCs. Then I touched the removed TC to the engine block, and zap! - got the grounding error. Removing the TC, the readings came back on.

OTOH, if your temperature ranges are good for thermistors, I'd not bother with TCs.

Holger

I'm not getting an error, I'm getting inaccurate temperature readings, mostly in the 30s, when it should be in the 70s.

I'm measuring pool water temperature. I chose thermocouples because you can easily buy a thermocouple temperature probe that you can thread into a pipe and has an enclosure at the top for the wiring. And can be outdoors. See attached picture for an example.

Thermocouple Probe.jpg

Ah! Different problem than mine then. Are your readings fluctuating, or just off? You'll want to calibrate any TC/amplifier combination before trusting their output. Put it in ice water and boiling water.

It took me quite a while to get solid readings from my TCs because of ground noise. Eventually fixed by eliminating a ground loop or two. That was with commercial pyrometers, before I went Arduino. The photo of your probe almost looks like it could be ungrounded.

ScottG:
I'm not getting an error, I'm getting inaccurate temperature readings, mostly in the 30s, when it should be in the 70s.

I'm measuring pool water temperature. I chose thermocouples because you can easily buy a thermocouple temperature probe that you can thread into a pipe and has an enclosure at the top for the wiring. And can be outdoors. See attached picture for an example.

Errors of that magnitude could be from improper wiring material. What kind of wire are you using from that TC connection head in that picture to the electronics that reads the TC voltage?

Lefty

retrolefty:

ScottG:
I'm not getting an error, I'm getting inaccurate temperature readings, mostly in the 30s, when it should be in the 70s.

I'm measuring pool water temperature. I chose thermocouples because you can easily buy a thermocouple temperature probe that you can thread into a pipe and has an enclosure at the top for the wiring. And can be outdoors. See attached picture for an example.

Errors of that magnitude could be from improper wiring material. What kind of wire are you using from that TC connection head in that picture to the electronics that reads the TC voltage?

Lefty

I don't think it's the wiring because it works fine with any one thermocouple hooked up. It's only when I have more then one T/C connected that I have a problem. To answer your question, I have the breakout board in the head of the thermocouple connected directly the the T/C probe wires. I have an unshielded 5 conductor 18 gauge stranded cable running between breakout board an Arduino. Cable is about 10 feet long.