Thank you Fraser, and sure. It's a pretty simple build around an ESP32, a pair of MAX31865 ICs and PT100 RTDs in a 4-wire configuration and a 2x8 character LCD module. I used a random ESP32 board I had laying around but I think almost any ESP32 dev board will work fine (see notes below). Code was done in Arduino with the ESP32 add-on. It has a very simple serial interface available for logging temperature data on both the built-in HW serial and a Bluetooth SPP serial. See below for zip files with the sketch and the version of the Adafruit MAX31865 library I used. Also see below for a quick hand drawn schematic.
Parts1. I used a ESP32 WROOM module on a breadboard from circuitsetup.us (
https://circuitsetup.us/index.php/product/solderable-breadboard-esp32-esp8266-esp01-module-breakout-with-3-94-x-2-375-x-1-875-100x60x25mm-project-box-2-pack/). This requires an external FTDI cable pinout serial interface (and the corresponding manual pressing of IO0, press/release of RST, release of IO0 to enter bootloader mode). But any ESP32 board with the appropriate IO (see the sketch) will work.
2. A pair of Adafruit MAX31865 boards I got from Mouser (
https://www.mouser.com/ProductDetail/485-3328). They're ready for 4-wire connections. Just have to add the connectors and pin-header.
3. A pair of Hareaus 32208550 RTD sensors I also got from Mouser (
https://www.mouser.com/ProductDetail/956-32208550). They are connected up with 4 wires (2 wires per lead) - heat shrink tubing around the solder joints and covered with thermal paste when inserted into the extra screw holes on top of the IVAC 9000 forward-facing aluminum blocks (next to its own temperature sensor).
4. A 2 line, 8 character LCD module I had laying around (Hantronix HDM08216L-3). But any HD44780 type display should work fine. One might have to adjust the calls to lcd.begin() and lcd.setCursor methods in the sketch to match their display.
5. A couple of LDO regulators (whole system takes less than 100 mA). Either two 5V units or one 5V unit and 3.3V unit (see below).
I connected the input to the IVAC power supply on the main PCB (outputs of the ferrite beads going to the digital logic) and my IVAC power supply has been adjusted up to 6V.
6. Misc parts. Some 100 uF electrolytic, 1 and 0.1 uF ceramic caps, 10K pot, 10K resistor, resistor selected for the LCD module backlight, buttons as necessary, etc.
Power Supply ConsiderationsMy circuit.us board requires a 3.3V LDO for input->ESP32 conversion. I included a 5V LDO to provide power for the two Adafuit boards and the LCD module. The curcuit.us board has a terminal header for the FTDI cable for programming but only connects RX, TX and GND so the system must be powered externally for programming. (Plus the ugly manual entry and exit from bootloader mode).
Many ESP32 dev boards have a built-in USB Serial chip and 5V -> 3.3V LDO plus auto-bootloader circuitry making programming much easier. If you use one of these then you can replace the 3.3V LDO with a 5V LDO followed by a schottky diode to power the board's VIN terminal. The diode prevents conflict between USB supplied power and board supplied power (well ideally you'd like a schottky on the USB power in as well).
Some LCD modules are backlit and some are not. Some backlit models have a built-in current-limiting resistor and some don't so you'll have to match driving the backlight LED with an appropriate external resistor connected to 5V as necessary.
Firmware Command InterfaceSuper simple command interface available over serial and Bluetooth serial. Type 'H' followed by carriage return (or enter 'H' into the Arduino serial monitor and click Send) to get it printed out.
Temperature of sensor 0 (low-side)
T0<CR>
Temperature of sensor 1 (high-side)
T1<CR>
Log both temperatures at the log interval specified in mSec (minimum 500 mSec and 500 mSec increments, L=0 to stop)
L=<msec><CR>
Zero timestamp (useful when starting a log you want to import into something that will graph it since most of them want the X-axis to start at 0).
Z<CR>
Typical logging looks like
31726.07 26.04 64.05
31731.19 26.04 64.05
31736.31 26.04 64.05
31741.43 26.04 64.02
31746.55 26.04 64.05
31751.67 26.04 64.05
31756.79 26.04 64.05
31761.91 26.04 64.05
31767.03 26.00 64.05
Where the first column is seconds, the second column is temp 0 and the third column is temp 1.
This code could also be stripped of the bluetooth serial stuff and probably run just fine on any old Arduino as well with appropriate pin remapping.