While this website is geared towards my Brewno controller, this page is dedicated to an Arduino RTD shield for the Arduino Uno that can be used for any application. Before designing my Brewno Controller, I started with an Arduino RTD shield as proof of concept. All files that you need to build your own Brewno V2 RTD Shield are available in the Download section.
The Brewno V2 RTD shield can interface with up to 4 separate 3-wire PT100 RTDs. It communicates to the shield using I2C meaning it only takes up two pins (A4 and A5). Because it’s I2C, other devices that use I2C on pins A4 and A5 can still be used with this shield as long as they have a different I2C address (these can typically be adjusted with most devices).
The shields are stack-able if you want to read more than 4 RTDs. All that is required is that the I2C address of any additional shield must be changed to a unique address to avoid communication conflicts.
A bit of background on how this Arduino RTD Shield came to be. When I set off designing my brew controller, I had no intention of building my own RTD shield. I considered a number of options:
The primary candidate was to use an existing Arduino RTD shield commercially available. Unfortunately it did not work out. The commercially available board is so susceptible to noise that you cannot obtain usable readings in any sort of real world environment. That is because the commercial shield has no hardware filtering on the RTD circuitry. The commercial board has some excellent design features when it comes to how the software has been setup and provides a lot of flexibility for types of RTDs that can be used; unfortunately the designers were not aware of the electrical design requirements for RTDs. I am far from an expert on RTDs and circuit design, but what I did was leverage off of people who do know what they are talking about. Texas Instruments has some excellent technical papers on RTD circuits and design of hardware filters and this is what the Brewno V2 shield was based on. Pictures are worth a thousand words though; here are actual readings I took using the commercial board and the Brewno V2 shield:
I tried to make the commercial board work by applying additional digital averaging in my program but this required so much averaging due to the variation of readings that it caused the readings to react very slowly. Much too slow for my application; and I still didn’t trust the reading. There are many excellent features incorporated into the commercial board, It’s just unfortunate that excessive noise is being interpreted as extreme accuracy.
The other option I considered, and what I still think about once and a while, is going to a more readily available RTD transmitter that outputs a standard 4-20mA signal. There are a lot of things I like about this option, but the downside ultimately is cost for me. Search for RTD transmitters and you’ll find they’re not cheap. You need one per RTD. You can find some cheap ones out of China now (~$15 a piece) but I’m not sure how well they would work. In addition to these transmitters you still need another shield on the Arduino to read the 4-20mA signal plus you often need a 24V source to power the transmitters.
If RTD transmitters come down in price, I think this could be the way to go as it potentially offers a lot of flexibility. For now, I still think a purpose built Arduino RTD Shield is best suited for hobby type applications.
The Brewno Arduino RTD Shield is built around the Texas Instrument ADS1220 Integrated Circuit. The shield contains one ADS1220 chip and one filter circuit; it reads up to 4 RTDs by using a switching IC. This slows down the sample rate (ie. if the ADS chip is set at 20SPS, you’re actually getting < 5 SPS per RTD) but adds a lot of functionality, while keep the shield costs lower and provides sample rates that are still plenty quick for most applications.
RTD Sensor Type: 4x 3-Wire PT100 RTDs
Temperature Range (Gain =32): -40°C to 145°C (-40°F to 293°F) – Max temperature is driven by the Board Design and the Gain Setting. The lower the Gain, the wider the temperature range but the lower the resolution of the reading. The higher the gain, the narrower the temperature range but the higher the resolution. With a Gain of 32, you can read up to 145°C. If you lower the Gain to 16, you can read up to 595°C . For more information see the Excel calculation sheet provided in the download section.
Temperature Accuracy (Gain=32): ±0.2°C (±0.36°F) – note that overall reading accuracy will be impacted by sensor accuracy and wiring as well; these can be mitigated by applying an RTD offset value as described in the Library documentation
Temperature Reading Shield Sample Rate: 5 – 20 SPS / RTD – note that the ADS1220 can be set anywhere from 20SPS to 2000SPS via the included library; however in testing the code run time was longer and I did not see any improvement in sample rates going beyond 180SPS. 20SPS, 40SPS, 90SPS and 180SPS all provide excellent stability.
Temperature Standard Deviation (@90SPS): ±0.01°C (±0.02°F) – will change based on Sample Rate settings
Shield Communication: I2C – Default address of 0x08 but can be changed to any other valid I2C address via software to allow stacking of multiple shields (RTD shields or other shields that use I2C)
Shield Microprocessor: 8-Bit PIC utilizing 32-bit float values for calculations
For more information on the ADS1220 chip, please see the datasheet from Texas Instruments.
If there is enough interest, I may yet offer some assembled units for sale on this site. For now it’s more of a build your own deal. Everything you need is below and in the Download section.
The real content is on the download page, the intent of this section is to provide some guidance on how it all goes together.
- A GOOD soldering iron. I don’t recommend trying to use a cheap iron. Set yourself up for success for this type of soldering. I highly recommend the Hakko FX888D. The Weller WES51 or WESD51 are also good options
- Chisel Tip (one should come with your soldering iron) and a Fine Point tip for the small 0603 components (Shape S for HAKKO)
- (Optional) Horseshoe or Bevel Tip – Nice to have for drag soldering fine pitch parts (I use Shape C for HAKKO)
- (Optional) Magnifying Glass for fine pitch soldering – good for checking for solder bridges
- (Optional) Soldering Station w/ clamps – a nice to have
- Flux and Solder (lots of options here. I use a 63/37 Sn/Pb 0.8mm and 0.38mm Solder – the latter for small components – and I prefer liquid flux….just don’t use plumbers flux)
- Tweezers – A nice set specifically for PCBs work best
- First you’ll need the bare PCB (Printed Circuit Board). That’s the typically green circuit board we’ve all seen and is what we will install all of our electric components onto. If you’re real adventurous you can actually make your own at home; however, I don’t recommend it unless you already have experience doing so. I think it’s more trouble than it’s worth. Instead there are a number of companies that will make these for you. In Calgary I use APC (Alberta Printed Circuits) for small quantities. I have to purchase 2 minimum at a time and the cost is about $95 CAD total for the Brewno PCB. Most default options for board thickness, copper pours, etc are good as is. Many offer solder masks as optional; I highly recommend you get the solder masks. This will make assembly much easier.
- So now you may be wondering how do you go about ordering the correct PCB? For this, you will need the Gerber files from the download sections. You do not need to download any software, the Gerber files are compiled in a .ZIP file to download and send to your PCB manufacturer of choice. For more information on how to use the Gerber files, there is plenty of information on the internet. I’ve provided one particularly useful link in the Resource section.
- Once you’ve ordered your PCB, next you need all the components that will be installed onto the board. Go to the Download section and grab the RTD BOM (Bill of Materials). This provides all the components needed. I order these from Digi-Key but you can source these from other suppliers as well. Using the exact part numbers will ensure the proper components, but there are definitely other options. I stuck with higher quality and higher precision components for anything related to the RTD circuit. If you want to look for cheaper alternatives, make sure you refer to the ADS1220 datasheet for minimum component requirements (For example, the 2.5kΩ reference resistor needs to be high precision and have a have a temperature coefficient of ±10ppm/°C). Selecting inferior components will impact reading accuracy.
- Once you have all your materials you can start to assemble! I personally prefer to start with the simple surface mount components like the resistors and capacitors. This lets you ease into it as they can be removed if needed and re-soldered. I chose 0602 size components for spacing; they look really intimidating but aren’t too bad once you do a few. I won’t get into hand soldering techniques here as there are PLENTY of good videos out there showing how to do it. See the Resource section for links to a couple of useful videos on soldering required for this board. I’ll highlight a couple tips here still:
- Soldering the fine pitch ADS1220 is not as hard as it looks. There are a few tricks to do it successfully. See the soldering videos in the Resource section on fine pitch soldering. I personally use the technique near the middle where you tack a pin, apply solder to the tip and then drag across the pins. The hardest part is getting the chip aligned on the pads properly before tacking that first pin.
- If you end up getting solder bridging across the ADS1220 pins (too much solder!), don’t mess around with a solder pump or wick. Just apply lots of liquid flux and “wipe” the excess solder away. A video link is available in the Resource section.
- This last item sounds pretty basic…but I’ve made this error more than once. When soldering the header pins make sure they’re perpendicular to the PCB board and full inserted and then tack one pin and make sure everything looks good. You still have a chance to correct with only one pin soldered (just reheat and adjust). This will ensure the shield plugs nicely into the Arduino.