# Quasi - simultaneous temperature measurements on a metal rod

I am preparing teaching material for a thermodynamics laboratory for first year Physics students. The students at this point of their study are very capable with Python data analysis, plotting etc. I would like to introduce them to Micropython preferrably using the Pico microcontroller.

The experiment I would like to build is a temperature measurement on a metal rod at 10 points. One one hand the rod is kept at 0 C and on the other a surface heater will provide heat. The students will study heat diffusion and model the temperature profile fitting it to the measurements in order to get a diffusivity coefficient parameter.

The measurements should be (quasi) simultaneous. I have thought that an array of thermistors could serve the purpose but I can see that the Pico has essentially only one Analog input. I can use multiplexers but how fast can the data acquisition be then? I read that a delay of about 500 ms is recommended between every ADC operation. That would kind of kill the purpose as 10 points will take about 5 sec in order to complete the measurement of 1 profile.

Would a series of DS18B20's be faster for this purpose.

I certainly prefer having the students dealing with Volts and analog signals but the important thing here is to obtain some relatively fast measurements as close to simultaneous as possible. Acquiring one profile (ie ten point measurements) at 1Hz is adequate but slightly faster rates would be optional

Any suggestions would very welcome.

• Micropython runs on other, more useful (for your purpose), microcontrollers that do have more than one analog input Commented Feb 13 at 22:15
• @JaromandaX examples? Commented Feb 14 at 8:44
• pjrc teensy comes to mind for that many analog inputs - though micropython on that may be a little tricky ... but there's literally thousands of microcontrollers to choose from - just search Commented Feb 14 at 9:25
• You might start by reading the Pico datasheet. It has 3 accessible ADC with a conversion rate of 500 k samples per second. Commented Feb 15 at 6:27

## 1 Answer

Given the scenario, it sounds like you might want something that's flexible and can be used for other parts of the course too? For example,

The RP2040 has five ADCs, one is used internally, one is used by Pi Pico board leaving three available on the Pi Pico. The combined sample rate of 500kps as Milliways has pointed out. I find it a bit frustrating they didn't expand the multiplexor to more GPIO pins but it is what it is.

Some other observations:

• Ten inputs puts you beyond the six on the popular (non-MicroPython) Arduino UNO.
• The Arduino Uno R4 WiFi might be interesting as it may support more analogue inputs than the 6 labelled on the header. Not sure where MicroPython support is for this, though.
• Espressif ADCs need to be approached with caution as there's a lot of issues here with linearity and limits on minimum and maximum voltage. You can probably design around that but you need to know you can't just use the ADC value verbatim.
• Many ADCs on microcontrollers are noisy so you may need to oversample/process results to deal with that.
• A bit of a crazy wildcard is the KittenBot Meowbit. It's STM32 based and designed for MakeCode Arcade but they have MicroPython support for it and it has 8 (not 10) ADC inputs on its pinout diagram. You'd need an micro:bit edge connector adapter/breakout for this.
• I have not used it but the 8086 PicoADC16 might be for you, a pair of 10bit MCP3008 ADCs for the Pi Pico with some convenient screw terminals.

I've had a play with thermistors and they are remarkably sensitive. Walking past one on a breadboard will cause the values to shift around as the tiny air currents change. I'd start with thermistors as they are cheap and respond quickly and find a way to thermally bond them to your rod.