• 23.02.2026, 06:31
  • Registrieren
  • Anmelden
  • Du bist nicht angemeldet.

 

Speedy-VI

Senior Member

Freitag, 13. Februar 2026, 02:27

I made some progress today on the Arduino side of things. So I have a working prototype now.
This is exciting news. I read your last post a few days ago and started typing up a response but ran out of time and never finished it. I don’t know what temperature-resistance curve Aquacomputer products are calibrated for. I suspect their products are designed to work with B3950 thermistors, but Aquacomputer does not specify a Beta value, so measurements would have to be made to confirm. Most companies that sell temp sensors for computer cooling loops just say they are 10K NTC thermistors, but they don’t provide the Beta number.

The DS3502 has 128 steps (0-127) with a linear resistance range of approximately 79Ω (step 0) to 10kΩ (step 127). To emulate temperatures between 20°C and 60°C using a B3950K thermistor curve, you'd need a resistance range of 12.47KΩ to 2.47KΩ. The DS3502's 10kΩ maximum means it cannot reach the 12.47kΩ needed for 20°C emulation without additional external resistors. I thought the DS1841 would be a better choice, but it has a fatal flaw. It's a logarithmic digi-pot (256 positions) that better matches the exponential resistance curve of a thermistor. It also has a built-in 70-point Look Up Table (LUT) specifically designed for thermistor emulation, covering -40°C to 100°C. Instead of direct wiper control, you can use Temperature LUT Mode - send a temperature value, and the chip sets the appropriate resistance. There's also a Custom LUT mode for programming your own temperature-resistance curve. The problem - The DS1841 spec says its resistance range is 3.7kΩ to 22kΩ, and its temperature range is from -40°C to 100°C. If this is correct, the DS1841 is not using a B3950K temperature-resistance curve, so the LUT table would not have the correct values for the Quadro if the Quadro calibration is based on a B3950K thermistor. Even if you programmed a custom LUT, the device still cannot go below 3.7KΩ (49°C in the B3950 curve).

If you are going to stay with the DS3502, I think if you add a 2.2KΩ resistor in series with it (in rheostat mode), it will give you the required range to emulate from 20°C and 60°C using a B3950K thermistor curve. The problem is its a 128-step device. I did some digging but so far have not found an ideal digi-pot that has 256 steps, operates in the required range, and comes in an easy to work with package. The Microchip MCP41U83 is a 10-bit device available in several variants. I think the 10KΩ model would work well with a 2.2KΩ 1% resistor in series (each step is ~9.8Ω), but it is a TSSOP package that is very small and would be difficult to work with. The Microchip MCP4131-103E/P (10KΩ, 256 step, SPI, DIP package) with a 2.2KΩ 1% resistor would be easier to work with, but its SPI (4-wire) instead of I2C (2-wire). The best option I found so far is the Microchip MCP4018-203E/MS. It is 20KΩ so covers the required range, but it is 128-step. It is I2C and comes in a SOIC-8 package, so not too hard to work with. The temperature accuracy should be ~0.33°C at 20°C and ~1.73°C at 60°C, which is better than a 10K NTC thermistor. For an MCU, I would use an Espressif ESP32-S3 or a Raspberry PI RP2040 PICO. An UNO is fine for testing, but it's kind of big to put in a computer case. I will keep looking when I have time.

Teasuti

Junior Member

Sonntag, 15. Februar 2026, 12:27

I made some progress today on the Arduino side of things. So I have a working prototype now.
This is exciting news. I read your last post a few days ago and started typing up a response but ran out of time and never finished it. I don’t know what temperature-resistance curve Aquacomputer products are calibrated for. I suspect their products are designed to work with B3950 thermistors, but Aquacomputer does not specify a Beta value, so measurements would have to be made to confirm. Most companies that sell temp sensors for computer cooling loops just say they are 10K NTC thermistors, but they don’t provide the Beta number.

The DS3502 has 128 steps (0-127) with a linear resistance range of approximately 79Ω (step 0) to 10kΩ (step 127). To emulate temperatures between 20°C and 60°C using a B3950K thermistor curve, you'd need a resistance range of 12.47KΩ to 2.47KΩ. The DS3502's 10kΩ maximum means it cannot reach the 12.47kΩ needed for 20°C emulation without additional external resistors. I thought the DS1841 would be a better choice, but it has a fatal flaw. It's a logarithmic digi-pot (256 positions) that better matches the exponential resistance curve of a thermistor. It also has a built-in 70-point Look Up Table (LUT) specifically designed for thermistor emulation, covering -40°C to 100°C. Instead of direct wiper control, you can use Temperature LUT Mode - send a temperature value, and the chip sets the appropriate resistance. There's also a Custom LUT mode for programming your own temperature-resistance curve. The problem - The DS1841 spec says its resistance range is 3.7kΩ to 22kΩ, and its temperature range is from -40°C to 100°C. If this is correct, the DS1841 is not using a B3950K temperature-resistance curve, so the LUT table would not have the correct values for the Quadro if the Quadro calibration is based on a B3950K thermistor. Even if you programmed a custom LUT, the device still cannot go below 3.7KΩ (49°C in the B3950 curve).

If you are going to stay with the DS3502, I think if you add a 2.2KΩ resistor in series with it (in rheostat mode), it will give you the required range to emulate from 20°C and 60°C using a B3950K thermistor curve. The problem is its a 128-step device. I did some digging but so far have not found an ideal digi-pot that has 256 steps, operates in the required range, and comes in an easy to work with package. The Microchip MCP41U83 is a 10-bit device available in several variants. I think the 10KΩ model would work well with a 2.2KΩ 1% resistor in series (each step is ~9.8Ω), but it is a TSSOP package that is very small and would be difficult to work with. The Microchip MCP4131-103E/P (10KΩ, 256 step, SPI, DIP package) with a 2.2KΩ 1% resistor would be easier to work with, but its SPI (4-wire) instead of I2C (2-wire). The best option I found so far is the Microchip MCP4018-203E/MS. It is 20KΩ so covers the required range, but it is 128-step. It is I2C and comes in a SOIC-8 package, so not too hard to work with. The temperature accuracy should be ~0.33°C at 20°C and ~1.73°C at 60°C, which is better than a 10K NTC thermistor. For an MCU, I would use an Espressif ESP32-S3 or a Raspberry PI RP2040 PICO. An UNO is fine for testing, but it's kind of big to put in a computer case. I will keep looking when I have time.
Thanks for the suggestions! I haven't even considered what uC I'd use yet. The ESP32 variant looks great and it should fit nicely into the Arduino framework. That S3 version could be soldered straight onto a custom board with a handful of MCP41U83 pots. I was eyeing that digipot too. I was mainly thinking in the 0-20˚C range and with the default NTC properties I was estimating a 13k-33k range of resistance needed (20k pot + 13k resistor; or perhaps using two pots in series and in rheostat mode, which would increase the effective resolution and range). I haven't figured out yet what the Octo is calibrated to. I haven't looked at the numbers closely, but from what the calculated resistance in the serial monitor has shown and what temperatures the Octo actually registers, it can't be far off from what the simulators use for a typical NTC:


// Thermistor parameters (typical for a 10 kΩ NTC)

const float R0 = 10000.0; // resistance at 25 °C
const float T0 = 298.15; // 25 °C in Kelvin
const float beta = 3950.0; // β constant (K)

But tuning this would come in a later phase.

I'd like to run a few ideas by you.
Have you got any idea of other approaches for a variable resistor? I may want to try it with MOSFETs, Op-amps, etc, but admittedly my full extent of electronics knowledge is barely more than what the Starter Kit teaches you. :D
I see that the easiest way is likely to go with the digipot. But is there another way that could be considered an upgrade both in resolution and end-to-end resistance? I read a MOSFET driven in the triode region could fit the bill, but not without its caveats of non-linearity, noise, and instability.
I wonder how complex such a circuit would get, but building one is above my pay grade... Perhaps I should consider ganging up two digipots in series before I try more complex circuits.

Hmm, according to the Falstad simulator, if I put a 10k and a 20k digipots in series, plus a 3k3 resistor, I could get an effective range of 0-50˚C in rheostat mode (3.3k to 33k), which is not bad at all. Plus the 10k pot would have a small enough step size for fine tuning the temperature reading with an error less than 0.1˚C!
I might go with this idea. Having eight
MCP41U83s on a custom board with an ESP32 does no good to the Bill Of Materials. Having the dual channel variants would be even more expensive.
If this ever makes it into a product, I might as well just consider building an open-source fan controller instead. MOSFETs tend to be a lot cheaper. :) Perhaps that would be a more sane idea. But sane is not what we are here for. :D

The code would need to get creative though to say the very least - tuning two pots in series...
Writing a library for that would be a lot of fun, lol.

Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von »Teasuti« (15. Februar 2026, 13:38)