Go Down

Topic: Cylinder head temperature sensor? (Read 4895 times) previous topic - next topic

Rocky_arduino

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?




Graynomad

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

______
Rob
Rob Gray aka the GRAYnomad www.robgray.com

MarkT

For high temperatures like that standard thermocouples are often used - http://www.ladyada.net/learn/sensors/thermocouple.html - the sensor you picture is probably a thermocouple fashioned as a washer.
[ I won't respond to messages, use the forum please ]

Rocky_arduino

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...

dc42

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. http://www.adafruit.com/products/269.
Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

shadowbrush

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

dc42

#6
Jun 04, 2013, 10:36 am Last Edit: Jun 04, 2013, 10:39 am by dc42 Reason: 1
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.
Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

shadowbrush

#7
Jun 04, 2013, 10:59 am Last Edit: Jun 04, 2013, 11:06 am by shadowbrush Reason: 1
Hmm, maybe you're right! I just checked the code for the Adafruit MAX31855 breakout board, and it has this:

Code: [Select]

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.

dc42


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.
Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

shadowbrush

#9
Jun 05, 2013, 08:11 am Last Edit: Jun 05, 2013, 08:13 am by shadowbrush Reason: 1
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

dc42

#10
Jun 05, 2013, 10:18 am Last Edit: Jun 05, 2013, 10:20 am by dc42 Reason: 1
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.
Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

shadowbrush

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

ScottG


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.

shadowbrush

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:
Code: [Select]
  // 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

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:
Code: [Select]
  // 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.

Go Up