Just a few words about the LTC2983 chip I use for measuring EGT and CHT in my Engine management System (EMS)
Before I found LTC2983 I experimented with a few chips from Maxim like MAX31855, MAX31856 etc. These MAX chips are really good, however, they are single channel, so if you have a 6-cylinder engine like Jabiru 3300 you need 12 of these chips – one for EGT and one for CHT for each cylinder. The final PCB board would be a lot bigger than I wanted it to be and I’d have to use Arduino Mega instead of Nano to accommodate all 12 CS wires in addition to SPI. I have considered multiplexing the chips (just like the guys from Ocean Controls) but have come across some weird behaviour and unreliable temperature readings. I didnt like the complexity of the multiplexed solution either.
Then I found the LTC2983 – tiny 20 channel chip from Linear Technology.
This chip is not cheap comparing to MAX’s – about $40 USD from DigiKey but it worth every penny for 20 channel capability – 2 bucks per channel 🙂
It can handle all types of thermocouples you can think of. Even if your thermocouple is not a standard type, you can still program the chip to use it.
If handles thermistors, diodes or it can simply measure voltage with 24 bit accuracy. Pretty impressive!
It reports sensor failure and handles short or open circuit or sensor overlimit.
If a diode or transistor is used as a temperature sensor, the ideality factor can be adjusted to handle manufacturing variation. I found that transistors are pretty uniform in that regard. I have connected 10 of BC547s and the reading difference was less than 0.1C. Diodes were all over the place and ideality factor had to be adjusted for each individual channel. So in my EMS I use BC547 as a “cold junction” temperature sensor.
I expected a bit higher performance from the chip. It takes about 250ms to take a thermocouple reading. To be fair, the MAX chips are as slow.
I was hoping to use the chip as a high accuracy ADC, but later decided not to do it because the chip will be busy with thermocouples and I can get Arduino to take voltage reading within 10ms. Arduino accuracy wouldn’t be that great (10 bits), but it will do for most tasks.
Another observation – when the cold junction temperature is the same as the sensor’s end, the reading is not too accurate. It can be off by as much as 6 degrees C. When the temperature of the sensor end raises the accuracy seems to be OK. Type K sensor read my body temperature as 36.6C . I placed the sensor underarm 🙂
I’ll have some more accuracy tests done and will update the article.
I had a bit of trouble using cheap $2 Type K thermocouples. Those that dont have the junction insulated didnt want to play nice with CAN wires. As soon at CAN network got connected that thermocouple started picking up the noise from the CAN cable and giving me some crazy readings. So I need some work to do in interference reduction.
Overall I’m very happy with the LTC2983 chip. It is simple to program and not dramatically expensive. Check out the LTC2983 Datasheet.
Good people from Linear Technology have build a library for this chip along with various examples of Arduino code. You can download it here: http://www.linear.com/solutions/linduino
Their Linduino is pretty much Arduino Uno, so you can use their code with minimum modifications.
I have created a breakout board and it will be available for purchase it the Store. The boards has all the supporting circuits, bread-board friendly and ready to be connected to Arduino ) or other platform via SPI interface. All the inputs and outputs are marked of the board.