Opto-Isolator for Thermocouple

Hello,

Does anyone have a good solution to isolate a thermocouple. Any recommendations for an opto-isolator. I have searched the internet, and can't find much info.

Thanks!

http://ruggedcircuits.com/html/circuit_-24.html

You could use a modified version of the flying capacitor circuit.

http://ruggedcircuits.com/html/circuit_-24.html

This circuit is what I am looking for. I am looking at the datasheet for the IL300, and it looks like it needs a drive current of 5ma to 20ma to output a linear signal. I will measure the current output of a thermocouple, but I am thinking it is much less than this. Another issue is the thermocouple reads both negative and positive, depending on if the temp is - or +. I just found this chip, AD8494ARMZ. It looks like it may work. It has built in esd, and over voltage protection, but still unsure of which rout I should take. Right now I am using a low pass filter. It works, but I feel like its just a duck tape solution. I might have to buy some chips, and just try a couple different things.

You could use a modified version of the flying capacitor circuit.

I'm a little unsure of what this circuit even does. Sorry for being a noob, but I'm not seeing how I could implement it.

I just found this Isolated, ADuM5401. I’m thinking I might be able to use this to power the Max6675, and isolate all the SPI pins. This would totally Isolate the Max6675, and thermocouple from the microcontroller. What do you guys think?

Thermocouple Isolation.pdf (13.9 KB)

Do you have a URL with specs for your thermocouple ?

Why do you need to isolate the thermocouple?
Jack

I'm a little unsure of what this circuit even does. Sorry for being a noob, but I'm not seeing how I could implement it.

In this case it is good for only +o/p voltages.

Basically when the relay (or fets) is/are de-energized the 1uf capacitor is charged by your temperature o/p cct.
Then the Arduino energizes the relay and the capacitor is transferred to it's analog i/p where it is converted.

The temperature cct. is never connected to the Arduino.

Houser636:
I just found this Isolated, ADuM5401. I'm thinking I might be able to use this to power the Max6675, and isolate all the SPI pins. This would totally Isolate the Max6675, and thermocouple from the microcontroller. What do you guys think?

I've used the ADUM6401, which is a similar chip but rated at double the isolation voltage. I can recommend it. The only disadvantage is that the output pins are not 3-state. This means that if you want to use one to interface an isolated SPI device to a microcontroller, and you want to connect other devices to the mcu SPI bus as well, then you need to put a 3-state buffer on the ADUM6401 output pin that you use for the MISO signal.

Do you have a URL with specs for your thermocouple ?

Why do you need to isolate the thermocouple?
Jack

It's a K Type Thermocouple. I am reading temperatures on a small engine. The module throws out a huge magnetic field. Voltage builds up, and zapps the microcontroller. I can filter it out with a low pass filter, but that's only for the one engine. I want to be able to measure temperature anywhere. I am kind of surprised more people have not had this problem.

You could use a modified version of the flying capacitor circuit.]

I did some research, and looks like a pretty good option. I found the LTC1043 from Linear Technology, that is used for thermocouples. Do you know if the output could go right into the Max6675 chip, as long as I use a fast enough switching frequency? Is it still considered an analog voltage that comes out of a circuit like this?

The only disadvantage is that the output pins are not 3-state.

How about using a SN74AHC1G125, and just tie OE to the CS line?

Did you use this for a thermocouple? Also, by any chance do ya have a wiring diagram?

Thanks for all the help guys! I know I am going to have to buy some stuff, and just start experimenting soon. I just want to make sure I do my research so I don't throw to much money away.

Houser636:

The only disadvantage is that the output pins are not 3-state.

Even if I use a different CS for each slave? I was under was under the impression that when the CS line is high the slave will be in an idle state. Are you talking about a system that is daisy chained together, or a Master with independent slaves?

When the CS line of a slave device is high, the slave's MISO line will be 3-state. This normally allows you to connect multiple SPI slaves to the 3 common SPI pins, with an additional CS line for each slave. However, if you use the ADUM5401/6401 to isolate one of the slaves, then the ADUM output feeding MISO from the isolated side slave device back to the mcu is not a 3-state output. Hence the need for a 3-state buffer if you want to share the SPI bus on the non-isolated side with other devices.

Houser636:
Did you use this for a thermocouple? Also, by any chance do ya have a wiring diagram?

I used it for measuring temperature with a thermistor. An easy (but expensive) way to use these devices if you don't want to design your own pcb is to buy the evaluation board, http://uk.farnell.com/analog-devices/eval-adumqsebz/icoupler-isolator-evaluation-board/dp/1897086. The isolated side has a prototyping area where you can put your MAX6673 (or its replacement, the MAX31855).

I just spent a couple hours crawling the web, and now I see exactly what you are talking about. I will use a tri state buffer. I am also going to use a adg609 multiplexer, controlled by opto-couplers, to make a 4 channel input. I will use a isothermal block to keep the compensation correct at the cold junction point. I will post the circuit as soon as I can to get some input.

I attached my design as a PDF. Let me know what you think. I added the multiplexer, and the tri state buffer.

Thermocouple Isolation.pdf (18.2 KB)

Houser636:
I attached my design as a PDF. Let me know what you think. I added the multiplexer, and the tri state buffer.

OK, here goes:

  1. The MAX6675 is obsolete. Use MAX31855.

  2. You appear to have the CS and SCLK lines swapped between the input and the MAX6675.

  3. DO from the MAX needs to be connected to VID on the isolated side of the ADUM, not VOC.

  4. I don't see any point in driving the EN pin of the multiplexer. Why not just tie it to ground or local Vcc (whichever it needs)?

  5. Google couldn't find any results for ADG609RU - is that the right part number?

  6. Your capacitor values on the ADUM5401 power input and output look a little strange. I suggest 0.1uF ceramic in parallel with at least 10uF tantalum for both.

  7. 74G240 is an inverting buffer, but you probably want a non-inverting one. I used SN74LVC1G125.

  8. You have one spare channel in the ADUM from the mcu to the isolated side. You could use this to drive one of the multiplexer inputs, instead of the opto isolator.

I’m glad you caught all that! I updated it with your recomendations.

I checked the pin out on the Max6675, and 31855. They both look to be the same, so I should be able to use either. I already have a bunch of 6675 chips.

I also attached the datasheet for the multiplexer.

Is it ok for the MAX chip to be on the un-isolated side? Do you think I might end up with bad data on the Max chip still? Can the thermocouple be isolated directly before any conditioning?

Where you seeing the same problem with your thermistor?

Thermocouple Isolation.pdf (17.5 KB)

ADG608_609.pdf (161 KB)

Houser636:
Is it ok for the MAX chip to be on the un-isolated side? Do you think I might end up with bad data on the Max chip still? Can the thermocouple be isolated directly before any conditioning?

The ADUM chip isolates digital signals. The MAX converts the analog thermocouple signal to a digital signal. Therefore you can't put it on the non-isolated side.

btw you shouldn't need to isolate the thermocouples at all to read engine temperatures, provided that the thermocouples are not grounded to the engine block. I used to own a light aircraft which had thermocouples to monitor 6 CHTs, 6 EGTs and the turbine inlet temperature, and I am sure there was no isolation at the inputs of the display unit.

Houser636:
Where you seeing the same problem with your thermistor?

In my case, the isolation was needed to meet safety standards rather than to solve a particular problem.

It is grounded to an aluminum cylinder head, just inches away from the coil. Even if I hold the thermocouple a couple inches away from the metal it still resets after a period of time. As soon as I touch any metal it resets. I know this because I drop communication on the com port. I have tried with multiple boards, unos, megas. I'm all ears for any other ideas you might have.

And once again thanks for all the help! I still have quite a bit to learn, but this forum makes it much easier.

Houser636:
It is grounded to an aluminum cylinder head, just inches away from the coil.

That's a recipe for trouble. The only connection between the thermocouple and ground should be via the MAX6675.

Houser636:
Even if I hold the thermocouple a couple inches away from the metal it still resets after a period of time.

Holding the thermocouple that far away from the metal should not cause it to reset. Have you checked to see whether it resets with the thermocouple disconnected? Do you have the ends of the thermocouple connected directly to the MAX6675, or is there an extension cable between them? If so, is that extension cable a twisted pair?

Have you checked whether it resets after a period of time when you run it on the bench? (in case there is a problem with your sketch).

I will try holding the board close to it without the thermocouple today. I had not thought of that. I have a screw terminal the thermocouple goes into first. No extension cable. It will do it with a short(3 inch), or long(a couple feet), thermocouple. They are twisted, just the normal stuff sold on a spool from omega.
I don't think it is software related. I have ran it for hours on the bench logging data perfectly.

I added a low pass filter. Signal going into a resistor, then to a cap, and finally to ground. I pick up the signal in between the two. I have one for t+, t-, and engine gnd with a diode. With this set up I had it running for 8 hours, and still no problems. This set up just looks horrible, and I'm not even sure why it work's.

I always here about thing being optically isolated, and figured this is why my omega temp meter can read anything.

Just tested to see if the board resets without the thermocouple. The board is fine at about 6 inches away, but when I get closer in it resets. When i get a couple inches away from the spark plug it resets right away. The EMF must just be crazy around the whole engine. The board can be a couple feet away.

I'm thinking as long as the thermocouple is isolated, and references the same ground as the engine, the EMF will have the same effect on both +, and -. This should still allow me to reed the data.

The difference between both battery ground and engine ground must be huge!

You need to keep the board well away from the spark plugs, spark plug leads and ignition coil. It should be close to the Arduino. The thermocouple can be much closer to the ignition components, provided that the wires you use to connect the thermocouple ends to the board are twisted pair, and the thermocouple is not shorted to the engine block.

[Explanation: the board has many signal paths, some of them high impedance and therefore sensitive to capacitively-coupled interference. The thermocouple inputs are low-impedance, and therefor much less prone to picking up interference capacitively. Using twisted pair to connect the thermocouple avoids picking interference inductively.]