Custom DAQ board based on Arduino Leonardo - Page 1
Forum section: electronics / projects

author: aiq25
author_rank: Regular Contributor
timestamp: September 18, 2019, 02:54:15 pm
content: Hi. I'm working on a custom DAQ (data acquisition) board that will be based on Arduino Leonardo. Below are my design goals and the IC's I'm thinking of using:- 4 channel single ended voltage measurement, 2 differential channels, TI ADS1115- 2 channel current sense, TI INA260- 4 channel temperature measurement (target for board to be used with K-type thermocouples), Maxim MAX31855- On board SD card for data loggingI'm still not sure but maybe a boost converter with litium ion charger and battery protection, so it can be used standalone (no need to power the board externally).Attached is a block diagram of what I'm thinking. The one thing I'm not sure I'm going to accomplish is having the 4 channel temperature measurement. I'm thinking of using two DPDT relay's to switch between 4 thermocouples using two MAX31855 IC's. I would like to get some feedback if this is feasible or is it better to use 4 MAX31855 IC's?Since this will be used for data logging I'm thinking 100ms minimum time to log each data would be fine.Thanks!

author: Kleinstein
author_rank: Super Contributor
timestamp: September 18, 2019, 04:29:04 pm
content: The Aduino is a 5 V system. AFAIK SD cards are 3.3 V and would thus need level shifters. It would be easier with a 3.3 V powered board / µC.The USB on the mentioned board is directly connected. So the is no isolation towards the USB / PC. This can be limiting.The MAX31855 uses the SPI bus, not I2C. So using multiple chips for the temperature inputs is possible (would be tricky to use several of the same chips on an I2C bus). Still temperature usually does not need to be measured so fast and one could use use just one chip and external switched. I would not use mechanical relay but more like a CMOS MUX like 74HC4052.For multiple channels there is also the option to use just 1 cold junction sensor and than maybe amplifier and a normal ADC. The µC could do the cold do the cold junction correction in software.For DAQ from external inputs one may want some extra protection. So it may not be such a good idea to directly connect external input to the ADC chip. This can be a problem especially with possible ground loops via USB.

author: aiq25
author_rank: Regular Contributor
timestamp: September 18, 2019, 07:23:42 pm
content: Quote from: Kleinstein on September 18, 2019, 04:29:04 pmThanks for noting this, I forgot about that. For the Arduino I was thinking of just placing it on this board (making my own Arduino onboard basically). I could just change it to 3.3V, I don't if the Leonardo comes with 3.3V variant but I will look more into this. Could be done using other uC, I was thinking it would be easy to use the Leonardo since it has built-in USB support.QuoteYeah, that is true. I will add in a USB isolator.QuoteThanks for noting this as well, I will update the block diagram. I wanted to use mechanical relay to completely isolate the different thermocouple inputs. There could be leakage current when using a MOSFET or MUX.QuoteYes, I will add a resistor divider with a diode clamp on it. I was wondering if I should buffer the inputs to the ADC chip using op-amps.

author: Kleinstein
author_rank: Super Contributor
timestamp: September 18, 2019, 08:19:59 pm
content: The ADS1115 input impedance is relatively high (e.g. MOhms range depending on "gain" setting). So there is no absolute need for extra buffers though they could make the inputs higher impedance. For a resistive divider the input impedance should be considered at least. Besides the input resistance, there might be also an effect from capacitance at the input. The input impedance depends on the gain - this can be confusing.With extra buffers one would tend to use a separate MUX instead of the ADC internal one.Mechanical relays give better isolation, but also a chance for thermal EMF errors. So one would need to look for low EMF contacts and preferably latching type relays to keep the power low.Modern COS MUX have pretty low leakage currents. The main limitation is the limited voltage range : even the not used inputs must be inside the supply range.So for thermo-couples I would tend to prefer a CMOS mux. Another slightly odd option are photofet elements - kind of special opto-couplers with fet switching. These alow isolation to higher voltage than normal CMOS switches, though with slightly more leakage.An USB isolator is relatively tricky and expensive due to the high speed. A work around is using an isolated UART and have a separate UART to USB bridge chip (or ready made module). With isolated USB one might want an extra DC/DC converter too, to still get power from the USB, even if used stand alone.

author: aiq25
author_rank: Regular Contributor
timestamp: September 20, 2019, 12:22:06 pm
content: Quote from: Kleinstein on September 18, 2019, 08:19:59 pmThanks for the suggestions. I think using an isolated UART might be the best choice. I have updated the block diagram.I changed the Arduino to Uno, since it will be cheaper and with moving to isolated UART, doesn't make sense to use the Leanardo now. Also added an RTC, I think since this will be used for data logging an RTC would be good idea.I'm not still not 100% sure what to do about the temperature measurements. I will think about it some more.

author: AlanS
author_rank: Unknown
timestamp: January 25, 2020, 06:39:07 am
content: Quote from: aiq25 on September 20, 2019, 12:22:06 pmFascinating. Probably for a different need, but I came up with the same ADS1115 and INA260 solution. How did you go?