It’s been a while since I’ve made any blog entries. The last couple weeks have mostly consisted of troubleshooting our PCWS board and normal McMurdo life. This post will focus primarily on a challenge I’ve faced with the hardware of the PCWS Datalogger. Things have been eventful for the grant. Since I’ve finished the SPI interface code for our master processor to talk to our ADS1258 analog to digital converters, I’ve found a problem with the analog to digital converter hardware and come up with a solution. Lee and I had been testing PRT, Thermistor & RH sensors and found that our boards PRT values were 1-2 degrees Celsius higher, and Thermistors almost 8 degrees Celsius lower, than the CR1000s values. The CR1000 is a datalogger made by Campbell Scientific. It viewed as the standard to compare our measurements. PRT and Thermistor sensor measurements come down to a voltage measurement across two points. Those voltages can then be put into equations to generate temperatures.
After lots of troubleshooting the PRTs and Thermistors, and not understanding why the PRTs temperature values were significantly offset than the Thermistors output values, I moved on to testing the HMP155 Relative Humidity sensor. This is also an analog sensor measured in a similar way to PRTs and Thermistors. The values outputted by it were spot on with the CR1000, and with the Thermistors. After looking at the schematic of the PRT and the internal circuitry of the HMP155A, the PRT and Thermistor offset problem made some sense. The HMP155 uses circuitry and an operational amplifier buffer to generate its analog output signal. PRTs and Thermistors generate their output signals through a parallel combination across special resistors, whose resistance varies with temperature. The ADS1258’s channel input impedance is only 65k ohm, which I theorized was causing a parallel resistor combination / voltage divider between PRT or Thermistors load resistors and the channels input impedance. Resistors in parallel combination create a lower total resistance than each by itself. Lower total resistance seen from the analog to digital converter might have been causing a lower analog output voltage measurement across the load resistor. As a consequence, the sensor impedance value calculated was increased, possibly causing the offset in values I was seeing.
After coming up with this, I calculated and inputted the new impedance values (channel impedance in parallel with load resistor) into the PRT & Thermistor resistance equations. During testing, the both sensor values ranged between a half degree Celsius of each other. This was close, but still a half degree to 1 degree Celsius higher offset than the CR1000. I had seen in the ADS1258 datasheet that engineers use operational amplifiers to create a high impedance input and low impedance output voltage follower for the sensor signal before measuring. This is a way to measure a relatively un-modified voltage because it changes the impedance seen from the sensor. The way this works is based on the how parallel resistors work. For example, if you have a 10k ohm resistor in parallel with another 10k ohm resistor, the new total resistance is 5k ohm. However, if you have a 10k ohm resistor in parallel with a 1 million ohm resistor, the new total resistance is 9900 ohms. The 1 million ohm resistor does not cause much change in the overall resistance of the circuit, because the same amount of current will pass through the 10k resistor, and very little through the 1 million ohm resistor. The total current between the two is nearly the same. Now think of the operational amplifier as a 1 million ohm resistor in parallel with the “10k resistor” sensor. The operational amplifier subtracts very little to the total effective resistance across the sensor being measured, so the voltage across it also changes very little. The output of the operational amplifier should then be close to equal to actual voltage across the sensor and this output is driven directly into the analog to digital converter at a low impedance. Now the circuit seen from the analog to digital converter becomes two series resistors: the operational amplifiers output impedance (very low) and the analog to digital converters input impedance (relatively high). Resistors in series will see the most voltage across the resistors with higher resistance. Because of this, most of the voltage drop I am looking for is then seen across the channels input impedance, creating an accurate sensor measurement at the moment of analog to digital conversion.
Now I had a new problem: I’m 7,000 miles from Wisconsin, with no way to immediately test my theory. There was no way I could get a parcel shipped here in time, and I couldn’t wait for our other researcher Taylor to arrive in Antarctica Dec 30th to begin testing. I might have been screwed. Luckily, I had been talking to Lee about this at the time Jim Buckley from Super Tiger was in the room speaking with IT. He overheard my conversation and jumped in to offer help. I told him the situation and asked him what he thought. He said my idea was solid, and that he might be able to bring some spare instrument op-amps from LDB the next day. I then started researching into op-amp configurations and analyzing their behaviors in as many datasheets so I could properly troubleshoot a circuit when I would build one. The next day, Lee ran into Jim at lunch. Jim passed him the op-amps and an Arduino SOIC fan out breadboard, then Lee gave them to me later that day in the lab. Jim gave us two OPA-787s, and two AD8667s. Both of these are high-end JFET input instrument op-amps. The AD8667 seemed more suitable of the two because comes with a dual package (2 in 1 chip) and is stable in unity-gain (1 to 1 input to output gain) with no feedback resistor. This simplicity made testing in the lab with limited resources much easier.
It was now time to build the circuit. I soldered one AD8667 to the Arduino SOIC fan out board, setup the circuit configuration I drew out, and gator clipped a sensor to the input. I hooked in the 5V power to the a 5V power terminal on the PCWS board and watched the sensor input and op-amp output with an oscilloscope. It was spot on. With that test complete, I soldered in the inputs and outputs into the PCWS board, updated the code with the original sensor impedance, ran code, and watched my computers terminal. The values seemed reasonable! I then asked Lee to hook up the thermistor to the CR1000 and verify its values. The new values were within 0.1 degree Celsius of the CR1000. I had done it! This had proven that the ADS1258 analog to digital converters lower input impedance was in-fact effecting the measurement of the sensors output voltage.
The next day, Lee and I called Andy to talk about this new development. He advised me to draw up a schematic in PADS and make a bill of materials, then he would make a PCB board layout and ship them down with Taylor. Andy suggested if the boards included terminals connected to the inputs and outputs, we could then easily wire in the necessary leads with little effort. I emailed the design to Andy, then he found parts, created the PCB and submitted the board order on rush order to Pro-Active Engineering. Now I must wait for Taylor to arrive, and I’m praying that everything works as it has in the lab. This is the only solution to the ADS1258s input impedance problem.