The drop-in replacement has worked fine for several months and I built a second prototype to address some items I wanted, in particular a temp readout without having to connect a serial data wire to a laptop. The second build has an LED display that indicates the thermistor temp when the engine is on and alternates between temp and fan timer when the fan is running. If the display reminds you of an old HP calculator, it’s because they’re from HP and apparently remain unchanged since the 70s. This required a dedicated 7-segment driver or micro-controller (uC) with more pins and I opted for a 28-pin Atmega328.
I added a DIP switch to allow four user-selectable modes (e.g., aftermarket thermistor with different NTC curve, different temp thresholds for different years, for using a 76/77 thermal "klixon" switch rather than a thermistor). There is a trimpot rather than a fixed resistor in the voltage divider so if the thermistor is not where it is designed to be, you can slew the NTC curve to correct for the change. In other words, if you measure the temp near the carb with a thermocouple to be 100C but the thermistor at its location is only at 90C, you could adjust the controller to compensate for the difference.
The relay was replaced with a power MOSFET. This allows the fan to run at speeds less than 100% if desired. It doesn’t generate much heat but I over-engineered it to dissipate the heat through the ground plane of the PCB anyway.
For troubleshooting, the green fan LED is powered by the fan wire so if you have a green LED on and the fan isn’t running, you know it’s a problem with the fan or fan wiring. If you don’t have a red LED when the key is switched on, the connection from the ignition to the controller is bad. If the red LED goes out (board shuts off) when the engine is hot (>100C) and the key is switched off, then the 12V connection from the battery is bad. If the LED display shows four dashes, the thermistor or its wire is the problem. (If the sensor is missing but the wire is grounded as a workaround, the controller reads a very low resistance corresponding to a temp over 999.9C, too large to display. If the wire is not connected, the resistance will be too high corresponding to a temp below 0C, which cannot be displayed.)
There’s still a two-pin data connection where you can read from the EEPROM how long the fan ran and the highest sensor temp the previous time the engine was shut off and there’s a six-pin in-system programmer so the uC can be reprogrammed without removing it from the board.
I think I’m finished with this project for now. Thoughts and constructive criticism are welcome. Although I like the inherent troubleshooting abilities of the second board, I appreciate the simplicity of the first. One thing I have yet to do is put my sensor on the stove and create a detailed lookup-table style NTC graph to compare with the theoretical Steinhart-Hart calculations I’m using. Someday…