Quantcast
Channel: MSP430 Technical Forums
Viewing all articles
Browse latest Browse all 2077

Quad Thermocouple BoosterPack (MAX31855)

$
0
0

This was a project begun last winter in the hopes of having an array of thermocouples to monitor my old woodstove when operating it ... Well I never got around to finishing it, but I have a fancy new woodstove as of this fall, and I would love to monitor its temperature curves likewise!

 

This BoosterPack is fancied as a baseboard plugging underneath the LaunchPad, with four holes for mounting studs in case I ever decide to fix it inside a permanent enclosure (probably one made of aluminum due to the heat).  I could have pushed the Thermocouple terminal blocks out a little further to fit more launchpads, as I feel this is a bit tight.  I chose a Tiva-C LP for my pics because it fits nicely but the BoosterPack is designed with low-power features, contrary to the MAX31855's own design.

 

This BoosterPack features the Maxim MAX31855 thermocouple receiver chip; this is a precision IC with built-in ADC and digital logic which performs continuous conversions of the thermocouple data and exposes the latest data at the master MCU's demand over SPI.

 

As the MAX31855 never really "shuts down", I have introduced logic to allow the MCU to switch on/off the entire thermocouple (MAX31855) power domain, utilizing a TI TXB0108 Level Shifter as a bus transceiver to disconnect all the SPI and four Chip Select lines from the MAX31855's to prevent parasitic power from the I/O lines from clandestinely powering the chips when they're not needed.  TI TPS27081A positive-logic PFET power switches are used to switch the Thermocouple power domain on/off and for slew-rate control of the TXB0108's OE pin.  (I bought a bunch of these for cheap from avnet a couple years ago, figured I should use them!)

 

The BoosterPack features my own "remappable" design, where the 40-pins have breakout pads just inside the BoosterPack layout and each of the user-configurable circuit nets (TC power switch, TC#1, 2, 3, 4 SPI Chip Select) can have their default boosterpack pin assignments cut (cut solder-jumper) and a jumper wire soldered from the function's pad to a BoosterPack pad of choice.

 

While this doesn't use any standard connector for the thermocouples, I have found dismantling a standard connector and snipping the terminals down to suitable width allows one to shove them into the terminal block without having to splice the thermocouple's wires or insulation.  I'll post a pic of that later on when I get a setup going with my woodstove.

 

20160108_222735_resized.jpg

 

20160108_222508_resized.jpg

 

20160108_222525_resized.jpg

 

 

DipTrace Schematic (PDF): Attached File  DipTrace_Schematic_-_Multi-Thermocouple-BPak.pdf   80.45KB   2 downloads

 

DipTrace EDA files (schematic, PCB layout): Attached File  Multi-Thermocouple-BPak_draft1_0.zip   69.43KB   1 downloads

 

Elecrow 10x10 PCB Gerbers: Attached File  Quad_Thermocouple_BoosterPack_v1_0_10x10.zip   53.77KB   1 downloads

 

I don't plan to sell any of these at the moment, but if anyone's got a burning desire to have one I might be willing to have my arm twisted to buy more BOM and build some :)

 

I haven't got a real thermocouple attached yet, but I was able to confirm that I can read what appears to be valid MAX31855 data from the one populated, including watching the "ambient temp" reading rise as I held my finger against the chip:

Quad Thermocouple BoosterPack Test #1
TC#1 Result: 7FFD16F1
(sleep 2sec)
TC#1 Result: 7FFD1701
(sleep 2sec)
TC#1 Result: 7FFD1701
(sleep 2sec)
TC#1 Result: 7FFD1701
(sleep 2sec)
TC#1 Result: 7FFD1811
(sleep 2sec)
TC#1 Result: 7FFD1A61
(sleep 2sec)
TC#1 Result: 7FFD1B51
(sleep 2sec)
TC#1 Result: 7FFD1BB1
(sleep 2sec)
TC#1 Result: 7FFD1BF1
(sleep 2sec)
TC#1 Result: 7FFD1C31
(sleep 2sec)
TC#1 Result: 7FFD1B71
(sleep 2sec)
TC#1 Result: 7FFD1A41
(sleep 2sec)
TC#1 Result: 7FFD19A1
(sleep 2sec)

Energia sketch:

#include <SPI.h>


static const int TC_POWER = 40;
static const int TC1_CS = 39;

void setup()
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Quad Thermocouple BoosterPack Test #1");
  SPI.begin();
  SPI.setDataMode(SPI_MODE0);
  SPI.setClockDivider(SPI_CLOCK_DIV16);
  
  delay(2000);
  
  // Init TC#1 Chip Select high so it's not selected
  pinMode(TC1_CS, OUTPUT);
  digitalWrite(TC1_CS, HIGH);
  
  // Activate TC power domain
  pinMode(TC_POWER, OUTPUT);
  digitalWrite(TC_POWER, HIGH);
}

void loop()
{
  // put your main code here, to run repeatedly:
  int i = 0;
  uint32_t res = 0;
  uint32_t b = 0;
  
  // Wait 300ms for TC#1 to do a conversion
  delay(300);
  // Select TC#1 and read its 32-bit contents.
  digitalWrite(TC1_CS, LOW);
  for (i=0; i < 4; i++) {
    b = SPI.transfer(0);
    b <<= 8 * (3-i);
    res |= b;
  }
  digitalWrite(TC1_CS, HIGH);
  
  Serial.print("TC#1 Result: ");
  Serial.println(res, HEX);
  
  Serial.println("(sleep 2sec)");
  delay(2000);
}

Viewing all articles
Browse latest Browse all 2077

Trending Articles