A few years ago, I wanted to be able to read thermocouples for controlling an oven for powder coating, so I bought 4 of the Maxim MAX31855PMB Thermocouple to Digital Converter eval boards. That project got pushed to the back burner when I realized that powder coating is not very critical with respect to temperature. The boards sat in their little boxes since then.
It is hard to tell from this picture, but there is a stack of 4 of these boards mounted between two pieces of Delrin with slots cut in them as card guides.
Here, you can see all 4 boards.
These boards use a 3 wire SPI interface, 3.3V and ground. The power, ground, Chip Select and Clock signals were all bussed, with the Data Output line from each board kept separate.
The WIFI board that I built a couple of years ago, has all the features that I wanted to add to this box, and I have pretty good low level driver software written for it. Desired features include Non Volatile Memory (NVM) for machine setup, a Clock Calendar chip for easy time keeping in log files. parallel output for a 40 x 2 line character LCD display, and a power supply that accepts 8 - 15VDC input to make powering it easy. At this time, I am not planning to use the WIFI module on the board. Also, this module has an internal antenna, so it would have to go into a different enclosure or have the module swapped for one with an external antenna.
An additional bonus is that I have a mechanical drawing for a box that is easy enough to fabricate.
The picture shows the back side of the box. Thermocouple boards are on the right side, the LCD is under the thermocouple and the processor boards, the processor board and a USB to UART board in the upper left corner.
Hardware SPI interfaces all support 8 bit transfers, many support 16 bit transfers, but longer than that, you usually have to deal with the chip select in software and play games with the interface. Since I had 4 boards to interface, and they return a 32 bit word, it seemed just as easy to implement a 4 input "bit banged" SPI interface as it would have been to deal with the hardware interface. The processor is an Atmel ATSAM3S4C M3 processor, so this interface will not tax it at all.
A number of years ago, I picked up a box of 40 character x 2 line LCD displays very cheaply at a hamfest. When a project will tolerate the physical size of these display, they are a good choice.
For the software, I started with the latest version of the code from my WIFI board and stripped out the old data input code, the radio manager and associated data structures in the user interface and NVM. All math done in this system is done in fixed point integer format.
The MAX31855 boards return two integer values in fixed point format and a few flags in the 32 bit word. Dealing with signed, fixed point numbers is kind of a pain, and getting that part working was the longest part of the software development. I added individual gain and offset values to the conversions, so that the individual thermocouples could be calibrated. The NVM data structure now includes space for each channel's gain and offset data, system output format (F or C) and measurement period. Right now, all of the NVM values are set to defaults. The last major task for the software is to add the input functions to set the new NVM values.
Data is available for logging on a PC through the USB serial port. All 4 thermocouple temperature values, the internal temperature (cold junction reference temperature) of one of the converter chips, and time of day are spit out on a line. The default interval between measurements is 2 seconds, but that will be adjustable when I get the user interface software written.