Arduino Based Temperature Controller
Our goal is to develop a 4-channel temperature controller based on the Arduino Nano Every (external link). Why pick the Nano Every? It's very inexpensive, so if we burn out a board (which has happened), we aren't out a lot of money. It's also very compact. Since much of our casing/finishing boxes will be 3D printed, the smallness of the Nano Every allows us to make the boxes smaller. There are just enough pins for us to do what we want, meaning we don't have a lot of unused resources on the board. A successful project from the student working on it will be
What we need to do
- Read temperature from a sensor (NTC thermistor as first go).
- Control PWM output on a resistive heating element.
- Program a PI loop (we aren't using the derivative part) to control heater output and verify setpoint temperature is maintained.
That will create a basic single channel temperature controller. From a faculty perspective, a successful project will be
- Get the Arduino to communicate with a computer running a Python script.
- Have Python tell the Arduino what setpoint we are aiming for, and verify the condition is met.
- Create a progam that controls multiple channels on the Arduino.
So far Richard has figured out how to do the student part once. Then we had to take a long-ish break, so we're back trying to get things going again.
- 1 Nov 2024: We have a single channel controller functioning as expected. Yesterday Richard tried it on an aluminum heater block with a 100 Ω heater. All that was done was swapping the heater and thermometer connection from our mineral oil bath to a setup that is almost ready for the cp setup. Richard had the genius idea to use tape as the first go for holding the sample stage and thermometer. That will be constructed soon, and we'll be moving on to the relaxation calorimeter. I'll keep working on the multichannel aspect of this project, though.
- 26 Oct 2024: The Arduino is now communicating effectively via the serial bus. We can send different commands (identify instrument, read temperature, change setpoint) and everything responds as expected. The next step is to create Python code that will do the communication and incorporate other instrumentation so we can record data.
- 19 Oct 2024: We have a command protocol where we can change the setpoint by sending a string over the serial bus. An important step was to establish start/stop bytes so we were not mixing trash in the buffer with useful stuff.
- 12 Oct 2024: This week we verified that our controller will hold the temperature of approximately 150 mL of mineral oil at temperatures up to 50 C.
Updated 1 November 2024