Developing a Measurement System of Fluid Velocities in ...

31
Department of Physics Ume˚ a University SpinChem AB June 26, 2016 Developing a Measurement System of Fluid Velocities in Rotating Bed Reactors ans Sterner Bostr¨ om ([email protected]) Abstract SpinChem AB’s rotating bed reactor (RBR) is a small cylindrical centrifuge that allows for effective convective reactions between chemical substances. The aim of my master’s dissertation was to develop a measurement system that could estimate the fluid velocity in- side the RBR. This report covers a quick pre-study of different fluid measurement methods, details how we designed and constructed the system using integrated circuits and other elec- tronic components, and illustrates calibration results and final velocity measurements. The system design was based on the architecture of hot-wire constant temperature anemometry (CTA), a technique that measures the fluid velocity over a heated metal wire. The results of this project is the measurement system itself, and the calibration and velocity measure- ments gathered from experimentation. Two issues we encountered was that the calibration process resulted in an overestimation of the velocity in the order of 4000 cm/s, and that the response to changes in velocity rates was quite slow. However, a slight tuning of the two calibration constants A 0 & B 0 smoothed the velocity estimation out to 40 cm/s, which is more what we would expect. This illustrated how sensitive the results were to errors in the calibration. Further investigation of the slow response, and a more stringently executed calibration setup, could make the CTA a potential candidate for estimating the fluid velocity inside the RBR. Acknowledgements I would first like to thank my supervisor Erik L¨ ofgren at SpinChem AB. He always had time whenever I needed help or had a question regarding this project, and still understood the importance of independence and allowed this to be my own work. I would also like to thank Krister Wiklund, Ove Andersson, Johan Haake, and Hans Forsman of Ume˚ a University, whose counseling has been invaluable at times when the work came to a halt. Thank you, Edith and Emelie, for sharing this time with me and for making these last few months easy-going and fun. Finally, I must express a very special thanks to my family, and to my girlfriend Josefin, for encouraging me not only throughout this dissertation but in my everyday life. It is with their unconditional support that I’ve been able to get through five years of study and the process of writing this dissertation. Thank you. Master’s Dissertation Supervisor: Erik L¨ ofgren, Examiner: Alexandr Talyzin

Transcript of Developing a Measurement System of Fluid Velocities in ...

Department of PhysicsUmea UniversitySpinChem AB June 26, 2016

Developing a Measurement System

of Fluid Velocities

in Rotating Bed Reactors

Mans Sterner Bostrom ([email protected])

Abstract

SpinChem AB’s rotating bed reactor (RBR) is a small cylindrical centrifuge that allowsfor effective convective reactions between chemical substances. The aim of my master’sdissertation was to develop a measurement system that could estimate the fluid velocity in-side the RBR. This report covers a quick pre-study of different fluid measurement methods,details how we designed and constructed the system using integrated circuits and other elec-tronic components, and illustrates calibration results and final velocity measurements. Thesystem design was based on the architecture of hot-wire constant temperature anemometry(CTA), a technique that measures the fluid velocity over a heated metal wire. The resultsof this project is the measurement system itself, and the calibration and velocity measure-ments gathered from experimentation. Two issues we encountered was that the calibrationprocess resulted in an overestimation of the velocity in the order of ∼4000 cm/s, and thatthe response to changes in velocity rates was quite slow. However, a slight tuning of thetwo calibration constants A′ & B′ smoothed the velocity estimation out to ∼40 cm/s, whichis more what we would expect. This illustrated how sensitive the results were to errors inthe calibration. Further investigation of the slow response, and a more stringently executedcalibration setup, could make the CTA a potential candidate for estimating the fluid velocityinside the RBR.

Acknowledgements

I would first like to thank my supervisor Erik Lofgren at SpinChem AB. He always hadtime whenever I needed help or had a question regarding this project, and still understoodthe importance of independence and allowed this to be my own work.

I would also like to thank Krister Wiklund, Ove Andersson, Johan Haake, and HansForsman of Umea University, whose counseling has been invaluable at times when the workcame to a halt.

Thank you, Edith and Emelie, for sharing this time with me and for making these lastfew months easy-going and fun.

Finally, I must express a very special thanks to my family, and to my girlfriend Josefin,for encouraging me not only throughout this dissertation but in my everyday life. It is withtheir unconditional support that I’ve been able to get through five years of study and theprocess of writing this dissertation. Thank you.

Master’s DissertationSupervisor: Erik Lofgren, Examiner: Alexandr Talyzin

Mans Sterner Bostrom ([email protected]) June 26, 2016

Contents

1 Introduction 21.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Pre-study of measurement systems . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Theory 32.1 Hot wire anemometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1.1 Constant temperature anemometer . . . . . . . . . . . . . . . . . . . . . . 42.2 Resistance overheat ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Volumetric flow rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.4 Expected velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.5 Arduino microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Code 83.1 Function calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4 Experimental 94.1 Equipment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.2 Wiring the ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.3 The CTA circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.4 The probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.5 Assembling the system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.6 The Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.7 Calibrating the flow velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.8 Measure velocity inside the RBR . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5 Results 185.1 Velocity calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.2 Full scale tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195.3 Altering the coefficients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6 Discussion 236.1 Calibration analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236.2 Circuit deficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

7 Conclusions 24

A Appendix A 26A.1 Arduino code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

B Appendix B 27B.1 Full case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27B.2 Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

C Appendix C 29C.1 Instructions for running tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

D References 30

1

Mans Sterner Bostrom ([email protected]) June 26, 2016

1 Introduction

1.1 Background

In the field of chemistry it is often of interest to let a solution react with a solid phase, such asan enzyme, or ion exchangers. Typically, the solution and solid phase is put into a tank andstirred until the desired reaction is reached. SpinChem AB is a company that sought to maximizethe efficiency of these types of reactions in heterogeneous chemistry, using their own developedRotating Bed Reactor (RBR). The RBR, shown in Figure 1 below, is a cylindrical centrifuge thatholds the solid phase in place while forcing the solution to flow through it, creating an improvedmass transfer between the two substances. The solution flows into the RBR through inlets at thetop and bottom, and escapes through holes in the outer perimeter, which are covered with a finefilter. Since the solid phase is held in place, while the solution is cycled through the RBR, therate of the desired reaction may be improved and the solid phase is protected from degradation.1

(a) Outside view of the RBR. (b) The inside of the RBR.

Figure 1: SpinChem’s Rotating Bed Reactor is used to allow for closer interaction between liquidsand solid phases in chemical reactions.

1.2 Pre-study of measurement systems

The aim of this master’s dissertation was to develop a system to measure the fluid velocity insidethe RBR, and study the suitability and effectiveness of this system. It then seemed reasonableto do a quick pre-study of what measurement applications would be appropriate.

During this study we looked at three different methods: Laser Doppler Anemometry (LDA),Particle Image Velocimetry (PIV), and Hot-wire Anemometry (HWA). Briefly explained, LaserDoppler Anemometry is a non-intrusive, optical technique where two (or more) laser beamsare aimed at a point, and measures the frequency shift that occurs in the reflecting light whenseeding particles flow past that point. It measures the velocity with both high spatial andtemporal resolution, and requires no calibration.2

Particle Image Velocimetry also utilizes lasers, but rather than focusing on a point the tech-nique is to illuminate a two dimensional cross section and capture the flow of seeding particleswith a high speed camera. A big advantage of this is that we get a whole map of the velocity

2

Mans Sterner Bostrom ([email protected]) June 26, 2016

field, not just at a specific predetermined point. This method, however, seems to require quite abit of image processing.3

The principle of Hot-wire Anemometry is to heat up a conducting wire and measure thecooling due to convection when the fluid flows past. There are two types of hot-wire anemometers:the constant current anemometer (CCA), which applies a constant current to the probe andmeasures the variation in temperature due to cooling, and the constant temperature anemometer(CTA), where the temperature, and therefore the resistance, is held constant and the voltageis measured. Modern hot-wire anemometers are almost exclusively CTAs, since the frequencyresponse of the CCA is limited to the convective cooling of the medium.4

The setup of the hot-wire anemometer allows for point wise measurements, using short wiresas a measuring probe, and is relatively simple to implement. A negative aspect of this system isthat the probe needs to be thoroughly calibrated, and this process is quite sensitive to errors.

We decided to base our measurement system on the architecture of hot-wire constant tem-perature anemometry (CTA). Not only was it a cheap but the probe allowed for measurementsinside the RBR, something that the two optical methods would not be able to do. Another bigproblem that we had to take into consideration was that the glass chalice that surrounds theRBR with water had a non uniform surface, which means that the surrounding glass would be anightmare for the precision of any optical setup. Furthermore, the seeding particles required forthe optical techniques would present a problem due to the filter covering the holes of the RBR.

In addition to the CTA circuit, we used an analog to digital converter (ADC) was used totransfer the measured signal to a micro-controller called Arduino Uno, where the data was loggedon an SD card for post-processing. The main results of this study are calibration curves, thesampled velocity measurements yielded from test runs, and of course the measurement systemitself.

Next, in section 2, we will examine the working theory of the CTA circuit and briefly intro-duce the Arduino microcontroller. Then, in section 3, we will go through the code driving theArduino Uno and sampling data using the ADC. Section 4 details the working procedure of theproject, and section 5 presents obtained results from the calibration and velocity measurements.Finally, in sections 6 & 7 we discuss the validity of our results, suggest future investigations ofimprovements, and state our conclusions to summarize the project.

2 Theory

2.1 Hot wire anemometry

When a wire of temperature Tw is submerged into a liquid of temperature Tf , the heat lossdue to convection is proportional to the heat transfer coefficient h. Denoting the temperaturedifference as ∆T ≡ Tw − Tf , we have

Qconv = πDL∆Th, (1)

where Qconv is the heat loss due to convection, and D and L is the diameter and length of thewire respectively.

By running a current through the wire it heats up. We call this Joule heating, and it iscommonly described by

Qjoule = I2Rw, (2)

where I is the current running through the wire, and Rw is the wire resistance. Assuming thatL >> D, and Tw ∼ 100, we can neglect heat losses to the end points of the wire, and due to

3

Mans Sterner Bostrom ([email protected]) June 26, 2016

radiation, so that the heat loss is mainly due to convection. Now, when the wire is in energyequilibrium we can equate eq. (1) and eq. (2):

I2Rw = πDL∆Th, (3)

or, after multiplying by Rw and using Ohm’s law E = RI:

E2w = RwπDL∆Th, (4)

where Ew is the voltage drop over the wire. Now, to relate the electrical potential Ew to thefluid velocity over the wire we have to introduce an expression for the heat transfer coefficient,known as King’s law:5

h = a+ bUn, n ≈ 0.5, (5)

where U is the fluid velocity normal to the wire, and a, b and n are experimentally determinedcoefficients. Now, the resistance of the wire is dependent on its temperature according to

Rw = Rref [1 + α(Tw − Tref )] , (6)

where Rref is the resistance of the wire at some reference temperature Tref , and α is the tem-perature coefficient of resistance for the wire. If we assume that the wire is held at a constanttemperature Tw then the resistance Rw will be constant as well.

Then, for simplicity we define two constants A and B, and re-write eq. (4) using eq. (5)

A ≡ RwπDL∆Ta, B ≡ RwπDL∆Tb

E2w = A+B

√U.

(7)

The square of the potential drop over the wire is thus proportional to the square root of thevelocity of the fluid, and the coefficients A and B can be estimated by calibration.

2.1.1 Constant temperature anemometer

To ensure that the wire is held at a constant temperature a so called constant temperatureanemometer circuit can be constructed. Figure 2 below illustrates the basic principles for thiscircuit. Now, to better understand this circuit, let us omit the offset voltage source Eos for amoment. The circuit is then driven by an operational amplifier (op-amp), that drives a feedbackcurrent i to what is called a wheatstone bridge. The wheatstone bridge is essentially two voltagedividers in parallel, where the resistors R1 & Rw constitute the left leg, and R2 & Rp constitutethe right leg of the bridge.

4

Mans Sterner Bostrom ([email protected]) June 26, 2016

+

5 V

Ep

+−

Eos

Eout

R2

i2

i

R1

i1

Rw

i1

Rp

i2

Ew

Figure 2: Schematic of a typical CTA circuit, where an op-amp feedbacks a current i proportionalto the difference in potential of its inputs (Ep + Eos) − Ew. The measurable potential Eout is

indicative of the fluid velocity U according to E2out ∝

√U .

Now, if the bridge ratios are equal R1/Rw = R2/Rp, the electrical potentials connected to theop-amp inputs will also be equal Ep − Ew = 0, which in turn means the op-amp outputs nocurrent. However, if the resistance of the probe wire Rw decreases, such that Ep − Ew > 0,the op-amp will output a current i to the wheatstone bridge. This current introduces Jouleheating in the wire Rw, which is chosen to be of a metal more sensitive to heat than the oppositeresistor Rp. The Joule heating effectively increases the resistance of Rw until the resistance isincreased to the point where the bridge ratio is balanced again. The working principle is then asfollows: the wire resistance Rw is decreased by cooling due to a fluid flowing past the wire, whichintroduces an imbalance in the input voltages Ep − Ew > 0, and in turn increases the op-ampoutput.

There is a problem with this setup, however. During the operational conditions of this circuitthe wheatstone bridge is balanced, and no current is outputted by the op-amp, which meansthere is no voltage difference Ep − Ew to be measured. To overcome this a subtle voltage offsetEos is introduced in series with the right leg and positive input (see Figure 2) such that theop-amp output never goes to zero.6

Now, to relate the measurable potential Eout of the op-amp to the potential drop of the wireEw is easy. Remembering that the left leg of the wheatstone bridge is simply a voltage dividerwe use the voltage divider formula

Ew = EoutRw

R1 +Rw= EoutR

′, (8)

to re-write eq. (7) as

E2w = E2

outR′2 = A+B

√U, (9)

or

5

Mans Sterner Bostrom ([email protected]) June 26, 2016

E2out =

1

R′2

(A+B

√U)

= A′ +B′√U, (10)

where A′ and B′ are still constant coefficients yielded by calibration. Given an output Eout wecould then estimate the fluid velocity by

U =

(E2

out −A′)2

B′2. (11)

2.2 Resistance overheat ratio

To heat up the probe wire Rw to a temperature Tw, an overheat must be applied to the circuit.The overheat is sort of a predetermined imbalance in the bridge that forces the op-amp to outputa current, thus heating up the wire to create a temperature difference ∆T . Now, let us definethe resistance overheat ratio:

aR ≡Rw

Rref− 1 = α∆T, (12)

which is a measure of how much the wire is heated from its original temperature. The practice ofapplying this overheat is to first measure the ’cold resistance’ of the wire, i.e. the wire resistanceRref when it is submerged in the fluid, then increase the variable resistor Rp to a value

Rp = R0p (1 + aR) , (13)

where R0p is the resistance that balances the wheatstone bridge respective to the probe cold

resistance, i.e. Rp/R0p = Rw/Rref . Typical operational values for aR is 0.5 − 0.9 for hot wire

measurements.6

2.3 Volumetric flow rate

When water flows out of a tube we say that the volumetric flow rate H is

H = U · S, (14)

where U is the average flow velocity normal to the cross section area S. The time it would takefor this volumetric flow rate to fill up a tank of volume V is

t =V

US. (15)

Thus, by knowing the volume V of the tank, cross section area S of the tube, and measuring thetime t, we could estimate the average water velocity U .

2.4 Expected velocity

To get some measure of what velocity magnitude we would expect we look at the flow of a fluidparcel in the RBR analytically.

6

Mans Sterner Bostrom ([email protected]) June 26, 2016

Figure 3: Schematic of a fluid parcel inside the RBR, at a distance r from the axis. The RBRrotates at a rotational speed of ω, accelerating the parcel in the radial direction until it passesthe probe wire with speed vR.

The centrifugal acceleration of a fluid parcel, located at a radial distance r from the rotatingaxis, is quantified by

ar = ω2r, (16)

where ar is the acceleration in the radial direction and ω is the rotational speed of the RBR. Wecan relate the acceleration to the radial velocity vr by

ar =dvrdt

=dvrdr

dr

dt= vr

dvrdr

, (17)

or, by rearranging the equation in terms of r and vr, then integrating:

ω2

∫ R

0

rdr =

∫ vR

0

vrdvr, (18)

where we assume the fluid parcel originating from the center with vr = 0, and accelerate to vRas it reaches r = R (the distance to the probe wire). The velocity can then finally be estimatedanalytically by

vR = ωR. (19)

2.5 Arduino microcontroller

The Arduino Uno is a pocket sized microcontroller that has 14 digital input/output pins, 6 analoginput pins, a connection for power supply, and a USB connection for uploading schematics basedon a set of C/C++ functions. The Arduino is a great tool for reading electrical inputs andprocess the information according to user specified code.

The microcontroller has an integrated analog to digital converter with an 8-bit resolution,which means it can represent a 5V signal in increments of 5/28 ≈ 19.5 mV. To get higher reso-lution measurements an external ADC, in this case the ADS1115, must be used. The ADS1115has a maximum resolution of 15 bits for single ended channel samples, i.e. it can represent a 5Vsignal in increments of 5/215 ≈ 0.153 mV.

7

Mans Sterner Bostrom ([email protected]) June 26, 2016

The Arduino Uno is powered by a simple 9V battery, and can in turn supply the external ADCwith either a 3.3V or 5V pin. By direct communication using an I2C protocol we can control theADC using code uploaded onto the Arduino. Essentially, the code receives data of Eout, sampledby the ADC, and stores it on an SD card. The SD card is inserted into a data-logging shield,i.e. a compatible circuit board that can be mounted on top of the Arduino. Together, the CTAcircuit, ADC, Arduino Uno and SD card form a small system that measures the output of theop-amp and stores it for post processing. Figure 4 below illustrates the concept.

Figure 4: A conceptual diagram of the measurement system. The CTA circuit outputs a voltageEout. The op-amp then converts Eout into bits that are read by the Arduino and stored on theSD card, inserted into the data-logging shield. The data can then be translated into velocity Uusing eq. (11) and software such as MatLab. The sampling using the ADC, and writing ontothe SD card, is controlled by the program uploaded on the Arduino.

3 Code

The Arduino Uno is configured by uploading code, specifying its duties, using the Arduino IDEsoftware. The open source code is based on the C & C++ programming languages, and theprogram structure is made up by the two functions ’setup()’ and ’loop()’. The way the Arduinoworks is that it runs the ’setup()’ function once, then continues to run the ’loop()’ functionforever, or until it is either powered off or reset.

3.1 Function calls

In this section we will briefly describe the essential function calls in the code. In appendix A youwill find the complete code that is uploaded on the Arduino.

8

Mans Sterner Bostrom ([email protected]) June 26, 2016

• RTC_DS1307 RTC;

Creates an instance of the real time clock, essential for accurate time keeping.

• Adafruit_ADS1115 ads(0x48);

Creates an instance of the ADC, specifying its address in hexadecimal to ’0x48’.

• logfile = SD.open(filename, FILE_WRITE);

Creates a file ’filename’ for storing data and opens a connection, ’logfile’, to the SD card.

• adc0 = ads.readADC_SingleEnded(0);

Samples channel ’a0’ from the ADC and assigns the value to variable ’adc0’. This can bedone for all four channels respectively.

• logfile.print(adc0);

Writes the value of the sample ’adc0’ to the SD card.

• logfile.close();

Saves and closes the connection to the text file.

The code that is uploaded is a combination of the Adafruit R© guides for the data-logger shield,and ADS1115 ADC, respectively, modified for this project.7,8

4 Experimental

In this section we will list the components used to construct the measurement system, go throughthe steps needed to create the prototype, describe the steps of calibrating the probe, and testingof the velocity inside the RBR.

4.1 Equipment

The construction of the measurement system consisted of the following components:

• An Arduino Uno microcontroller.

• A data logger shield with SD card storage, compatible with the Arduino Uno.

• An ADS1115 analog to digital converter.

• A low noise AD8655 operational amplifier capable of outputting over 200 mA of current.

• An Arduino Uno compatible protoshield for soldering the CTA circuit.

• An assortment of resistors and potentiometers of values between 2.5− 220 Ω.

• A gold-plated tungsten wire with a diameter of ∼ 15 µm.

• An 11.1 V lithium-ion rechargeable battery pack, and a simple 9 V alkaline battery.

In addition to the components described above, a 3D-printer and soldering station was at disposal,as well as the CAD software DesignSpark, and the software MatLab for processing data.

9

Mans Sterner Bostrom ([email protected]) June 26, 2016

4.2 Wiring the ADC

Since both the ADC and data-logging shield were manufactured by Adafruit R©, we used theirtutorials9,10 both as guides for writing our own program, and as a reference how the ADC shouldbe wired to the Arduino. Figure 5 below shows the data-logging shield mounted on top of theArduino, with the SD card inserted and ADC soldered on top.

Figure 5: The Adafruit R© Data-logging shield with inserted SD card and ADC soldered to theprototype area.

The color coding for the wires connecting the ADC to the Arduino was as follows: red connectingVDD to 3.3V, black connecting GND to GND, and yellow and blue connecting the SCL to SCLand SDA to SDA respectively, enabling I2C data transfer between the two devices. The white wirewas used to short the ADDR and GND pins on the ADC, to specify its address to ’0x48’ accordingto the Adafruit R© guide.9 Finally, the green and orange cables allowed for the connection of upto two CTA circuits through channels A0 and A1 respectively.

4.3 The CTA circuit

We constructed the CTA using resistor values: R1 = 33 Ω and R2 = 220 Ω. A potentiometerof range Rp = 2 − 220 Ω was used to emulate the variable resistor, and the probe itself wasmade of a short, gold coated tungsten wire soldered to the ends of two jumper wires. The coldresistance Rref of the probe was in the order of Rref ∼ 14 Ω, i.e. the bridge was balanced

when the potentiometer was around R0p =

RrefR2

R1≈ 93 Ω. Turning the potentiometer up to

Rp = 1.5R0p ≈ 140 Ω then corresponded to an overheat of aR ≈ 0.5.

Figure 6 below details the CTA circuit and denotes what resistor values were used.

10

Mans Sterner Bostrom ([email protected]) June 26, 2016

+

5 V

Ep

+−9 V

2.4K Ω

3 Ω Eos + Ep

Eout

220 Ω

i2

i

33 Ω

i1

14 Ω

i1

140 Ω

i2

Ew

Figure 6: Circuit diagram of the CTA, detailing resistor values and power sources.

In addition to detailing the CTA structure, Figure 6 illustrates how a voltage divider using a9 V battery emulated a voltage source of order Eos ∼ 10 mV. Note that this offset voltage Eos

is with respect to the cathode of the battery (not ground), i.e. the potential with respect toground, that connects to the non-inverting input of the op-amp, is Eos + Ep.

The offset voltage made sure that the inputs of the op-amp were imbalanced during the startof operation, causing the op-amp to output a current i. However, we designed it to be smallenough to be neglected whenever the wheatstone bridge was fed an output current, such thatEp + Eos ≈ Ep. Assuming an output of Eout ∼ 3.7 V we would expect the voltage drop of the

potentiometer to be Ep ≈ 1.44 V . The offset voltage then contributes aroundEos

Ep + Eos≈ 0.7%

of the total non-inverting input.Soldering all the components on the protoshield we ended up with a circuit that could easily

be mounted on top of the Arduino Uno and data logging shield. Figure 7 below shows thiscircuit, based on the diagram from Figure 6.

11

Mans Sterner Bostrom ([email protected]) June 26, 2016

Figure 7: The CTA circuitry fully assembled on the Arduino compatible protoshield.

Figure 7 shows the fully wired CTA circuit, based on the schematic in Figure 6. The two circuitsare equivalent, with exception to a few jumper wires that only serve the purpose of extendingthe reach of some components.

4.4 The probe

We required the probe to be compatible with the RBR, and somehow be fixed in position withrespect to the rotating axis. To solve this we 3D printed a small cartridge made to fit the insideof the RBR, where we then glued the tungsten part of the probe. Figure 8(a) below shows theprobe glued across the cartridge, and Figure 8(b) shows the cartridge inside the RBR.

12

Mans Sterner Bostrom ([email protected]) June 26, 2016

(a) The probe was glued such that the tungstenstretched across the cartridge vertically.

(b) The cartridge was designed to fit inside theRBR and allow for the probe to be threadedthrough the top.

Figure 8: Pictured above is the barely visible, innocent looking tungsten wire, one of the mostimportant pieces of our measurement system.

4.5 Assembling the system

Finally, with all individual pieces constructed, they were assembled into a compact system.Starting with the Arduino Uno the data logger shield, and then the protoshield, were mountedon top. The ADC (soldered onto the logger shield) could be connected to the CTA circuit(soldered onto the protoshield) using modular cables with lugs on their ends. Figure 9(a)-9(c)shows the assembling of the three pieces.

13

Mans Sterner Bostrom ([email protected]) June 26, 2016

(a) The brain of the entire system was theArduino Uno.

(b) The ADC, soldered on the datalogger shield, was mounted on top ofthe Arduino Uno.

(c) Finally, the CTA circuit wired on the proto-shield was mounted on top, completing the three-piece set.

Figure 9: Together, the Arduino Uno, data logger, and protoshield constituted the compactsystem that was used to measure and store the velocity measurements.

Now, only the power supplies were missing. One powering the Arduino, which in turn poweredthe data logger and op-amp, and one for the offset voltage in the CTA circuit. We plugged the11.1 V lithium-ion battery pack to the Arduino Uno, and used the simple 9 V alkaline batteryfor the offset voltage.

Finally, as a safety measure, some exposed metal parts were taped to make sure nothingcould short circuit during tests.

4.6 The Case

To enable rotation of the system, as well as keep the batteries and Arduino system together,a custom designed case was 3D-printed. The design was constructed in the CAD softwareDesignSpark Mechanical, where consideration was taken to align the center of mass of the systemwith the axis as much as possible. The case, illustrated in Figure 10 below, was made to fit the11.1 V battery pack on one side, and the Arduino system and 9 V battery on the other side. A

14

Mans Sterner Bostrom ([email protected]) June 26, 2016

connecting piece made sure the case was thoroughly fastened, using screws that squeezed uponthe axis.

Figure 10: The balanced case, with the connecting piece clutching the axis, was able to rotateat angular speeds of up to 500 RPM.

The careful reader might notice two screws glued and taped on one side of the case. This is thecreative solution, the ’quick fix’, if you will, to an unfortunate misalignment of the center of masswith respect to the axis.

To fasten the case, the steel rod which acted as the rotating axis was inserted through themiddle, connecting piece. The screws in the middle were then tightened until the case was firmlyin place. For more detailed pictures of the case see appendix B.

4.7 Calibrating the flow velocity

To determine coefficients A′ and B′ in eq. (10) we 3D-printed a small calibration chamber forwater to flow through. We designed the chamber so that its dimensions allowed for a wire Rw ofthe same length as in probe cartridge. The wire itself was fastened at the outlet of the chamber.Figure 11 below illustrates this setup.

15

Mans Sterner Bostrom ([email protected]) June 26, 2016

Figure 11: The purpose of the calibration chamber was to direct a steady flow of water acrossthe probe wire.

Using a five liter tank we flushed water through the chamber with a constant flow rate, slowlyfilling up the tank. By noting the amount of volume V that filled up during time t, we used

eq. (15) to estimate the flow velocity as U =V

tS, where the cross section area of the chamber

was S = 1.37 cm2.

Figure 12: As the water level increased the calibration chamber was raised accordingly, keepingit at a fixed angle throughout the measurements.

This procedure, illustrated in Figure 12 above, was repeated for eight different flow rates, eachtime logging the corresponding output Eout on the SD card. Special care was made to submergethe outlet of the chamber in the water, so that the formation of air bubbles was limited. Further,we tried to keep the chamber in an angle of about 30 for all flows, so as to avoid flow variationsbecause of changes in angle.

We then paired each output to its estimated flow rate, and plotted E2out vs

√U . According

to eq. (10) this should have the form of a straight line, where A′ and B′ corresponds to the

16

Mans Sterner Bostrom ([email protected]) June 26, 2016

intercept and slope respectively. Therefore, fitting a line to the data yielded our estimations ofthe two coefficients.

4.8 Measure velocity inside the RBR

After strapping the complete case on to the axis, and connecting the RBR with the probe inside,we fastened the steel rod to a rotating motor. The motor could be set to rotate up to and beyond300 RPM, which was suitable for our tests. We then submerged the RBR in a glass chalice filledwith water and powered up the measurement system. Before running any tests we waited for∼15 minutes for the probe to stabilize its temperature. A complete list of instructions can befound in appendix C.

Figures 13(a)-13(b) below illustrate the complete setup used during the velocity tests.

(a) The setup of the measurement system and RBR,before the velocity tests.

(b) Live test of the water flow inside theRBR.

Figure 13: The compact system allowed for low intrusion measurements.

A complete test run lasted for little over three minutes, sampling around 5000 measurements over195 seconds. During the 195 seconds we ran five tests in succession. For the first 67 seconds weset the motor to 100 RPM, then increased it to 200 RPM for the next 33 seconds, i.e. between67 to 100. Between 100 and 142 seconds we increased the RPM to a maximum of 300, afterwhich we decreased it to 200 again. The system rotated at 200 RPM between the 142 and 160second mark, to then settle at 100 RPM until the total of 195 seconds were up.

Using eq. (19), with ω = 5 (300 RPM) and R ≈ 4 cm, we estimated the maximum velocitymagnitude to be around vR ≈ 5 · 4 = 20 cm/s.

17

Mans Sterner Bostrom ([email protected]) June 26, 2016

5 Results

The results of this project is not only in form of data, as the measurement system itself is abig part of the project. In this section, however, we will focus on presenting the post-processeddata yielded from calibration, and velocity estimations, as the system itself has already beenpresented innately in section 4.

5.1 Velocity calibration

The calibration procedure described in section 4.7 yielded logs, with sampled output voltagesEout over time, for each successive flow rate U . Each of the eight tests were plotted individuallyto discern what output corresponded to the flow. Figure 14 below illustrates one such log plottedin MatLab.

0 20 40 60 80 100 120 140 160 180 200

time (s)

0

0.5

1

1.5

2

2.5

3

3.5

4

Eout(V

)

Logged data

Figure 14: Logged data of one measurement during the velocity calibration. The output betweent = 15 and t = 130 corresponds to when water flowed through the chamber at a constant flowrate.

For each plot, the mean value of Eout was recorded, and paired with the corresponding valueof U . We then plotted E2

out against√U and fitted a first order polynomial to yield estimations

of A′ and B′, corresponding to the intercept and slope of the line. Figure 15 below shows theresulting linearization.

18

Mans Sterner Bostrom ([email protected]) June 26, 2016

0.25 0.3 0.35 0.4 0.45√

U (m/s)1/2

13.9

14

14.1

14.2

14.3

14.4

14.5E

2 out(V

2)

Calibration data

Linear regression: 14.1 + 0.192√

U

Figure 15: Linear regression of E2out vs

√U .

Figure 15 shows quite a bit of spread in the calibration data, whereas the linear fit is almosthorizontal. Table 1 below details the yielded statistic for the coefficients.

Table 1: Estimates, 95% confidence intervals, and p-values for the calibration coefficients A′

and B′.

Estimate Confidence interval p-value

A′ 14.1 [ 13.4, 14.8] 4.60 · 10−9

B′ 0.192 [−1.84, 2.22] 0.824

Based on the calibration results detailed in Table 1 we cannot be assured that the fluid velocityaffects the output, or rather that

√U has an impact on E2

out. This is indicated both since theconfidence interval for B′ includes zero, and because the p-value is well above 0.05.

5.2 Full scale tests

We conducted five successive tests, using rotational speeds of 100, 200, and 300 RPM, as describedin section 4.8. Figure 16 below shows the logged output over time, as well as vertical linesindicating points in time when the RPM was changed.

19

Mans Sterner Bostrom ([email protected]) June 26, 2016

0 20 40 60 80 100 120 140 160 180 200

time (s)

3.63

3.64

3.65

3.66

3.67

3.68

3.69

3.7

3.71

Eout(V

)

Logged data

Figure 16: The vertical lines indicate, in order, when the revolutions per minute was changedfrom 100→200, 200→300, 300→200, and from 200→100 again.

In Figure 16 we clearly see changes in the output corresponding to when the velocity was increasedor decreased. Ideally, we would see a near constant value for each constant rotational speed.However, in between the speed changes we can see a non-linear drift of the output, at a supposedlyconstant average velocity. The transient output between the speed changes seems to convergetowards a stable value after each change, albeit very slowly.

We also note an output variation of ∆Eout ≈ 0.09, at a mean output of Emean ≈ 3.68. The

variations then comprise∆Eout

Emean≈ 2.5% of the output signal.

Below we have plotted the estimated velocity, using eq. (11) to convert the output.

20

Mans Sterner Bostrom ([email protected]) June 26, 2016

0 20 40 60 80 100 120 140 160 180 200

time (s)

1000

1500

2000

2500

3000

3500

4000

U(cm/s)

Figure 17: The estimated velocity U was yielded by simply converting the output using eq. (11).The coefficient values in Table 1 were used to estimate A′ and B′.

From Figure 17 it is clear that the system overestimates the velocity U by at least an order of102, and that the velocity unexpectedly decreases as the RPM increases, as if the data has beeninverted.

5.3 Altering the coefficients

The unexpected results in Figure 17 prompted an investigation of the coefficients A′ and B′.Using MatLab we tuned the constants slightly to see how the shape and magnitude of thevelocity changed. In Figure 18 below the coefficients have been set to A′ = 13.2 and B′ = 0.8.

21

Mans Sterner Bostrom ([email protected]) June 26, 2016

0 20 40 60 80 100 120 140 160 180 200

time (s)

5

10

15

20

25

30

35

40

45U

(cm/s)

Figure 18: Manually tuning A′ and B′ dramatically changed the velocity conversion, demon-strating the sensitivity of the calibration process.

Figure 18 illustrates that a slight tuning of the coefficients drastically changed the resultingvelocity estimation.

22

Mans Sterner Bostrom ([email protected]) June 26, 2016

6 Discussion

The purpose of this project was to develop a measurement system and test how well it could beapplied to SpinChem’s rotating bed reactor. Not only did we expect to find some measure ofthe fluid velocity, but also be able to build a complete measurement system that was easy to useand well suited for SpinChem’s existing product.

In this section we will discuss the validity of the calibration results and velocity measurements,discuss what kind of results were expected, analyze potential contributors for errors, and suggestpossible improvements.

6.1 Calibration analysis

The thing we noticed first was that the system reacts very clearly to changes in physical media,i.e. transferring the probe from air to water prompts a near immediate, evident response, asseen in Figure 14. Furthermore, the system is fast enough to yield ∼25 samples per second, anacceptable rate in terms of estimating an average velocity over time. Then again, if only theaverage velocity is estimated we could have also explored the implementation of a CCA.

When plotting E2out vs

√U in Figure 15, we expected the data to fall closer to a line than

it did. Indeed, the data does not seem to exhibit a linear behavior at all. In other words,the calibration seemed to output E2

out ∼ 14 almost by default, and did not show any clearindications that it responded to differences in velocities (

√U). Theoretically, the output should

increase when the velocity increases. This is not the case here though, as the slope coefficientB′ has a confidence interval that allows for negative values (see Table 1), meaning we cannotneglect the possibility of a negative slope.

Regarding the calibration, we tried to use very low velocity rates, as they are important whenfitting a line to E2

out vs√U . With that said, the velocity should not be zero, since then the

convective heat flow is minimized and the diffusive heat flow would become more influential,thus forcing us to adjust the theoretical model. In fact, it would have been more appropriate tocalibrate using rates of flow more closely to what we would expect, i.e. around ∼ 20 cm/s, sincethat is our region of interest.

What we would expect of the calibration is to yield a slightly lower estimate of the interceptand a strictly positive estimate of the slope. For example: setting A′ ≈ 13.2 and B′ ≈ 0.8 seemsto yield a more reasonable velocity estimation, suggesting that A′ has been overestimated andB′ has been underestimated. Although this value for A′ lies outside of its confidence interval,it is possible that the setup, or circuit, somehow introduces a consistent error that increased allcalibration points. Judging by eq. (11), an overestimation of A′ is responsible for the data being”inverted”, in Figure 17, and B′ affects the order of magnitude of the velocity estimation.

Examining Figure 15 we can argue that the linear fit changes drastically if we were to remove acarefully chosen data point. This indicates that the calibration process itself should be improvedbefore we can confidently rely on the coefficient estimates. Another important thing to note isthat whatever solution that is to be used during the full scale testing must also be used duringthe calibration, at the same temperature.

6.2 Circuit deficiency

Overall, there seems to be two main issues: the lack of a clear influence of the velocity duringthe calibration, and the drift, or slow response, of the circuit. The first run of 100 RPM inFigure 16 is still increasing after 60 seconds, at an expectedly constant average velocity. Whatis noteworthy in that same plot is that the data corresponding to the same RPM, take the first

23

Mans Sterner Bostrom ([email protected]) June 26, 2016

and last section of data for example, seem to converge towards the same value. In other words,in the first section the output is increasing but with a decreasing second derivative, and in thelast section the output is decreasing, but with an increasing second derivative, i.e. in both cases

we have:∂

∂t

∣∣∣∣∂Eout

∂t

∣∣∣∣ < 0. It’s as if the circuit is trying to balance itself out, just too slow to be

of practical use.What is the culprit of this slow response? Well, looking back to the beginning, already at

eq. (3), we assume equilibrium of heat transfer. But what if the cooling somehow is greater thanthe heating? With that assumption in mind, let’s look at the data in Figure 16. When the probeis being cooled the CTA outputs a current to maintain the temperature difference ∆T . Now, withan insufficient heating the probe would steadily cool down, decreasing the temperature differenceand thus prompting an increased output from the op-amp to compensate. However, the probewould not cool down forever, which means at some point the temperature would stabilize, as theoutput goes up. This increasing, yet slowly stabilizing output, is indeed what we see in Figure 16.

The argument of an insufficient heating can be applied to the last sections in Figure 16 aswell, where the output is decreasing, but slowly stabilizing. At this point the probe wire issuddenly too hot, since the RPM was just cut in half (200→ 100), so the op-amp decreases theoutput to balance the circuit.

An interesting experiment would be to increase the resistance values of the right leg, i.e. R2

& Rp, while maintaining the ratio R2/Rp. This would increase the amount of current i1 runningthrough the probe without altering the output.

Besides insufficient heating of the probe wire, there is another reasoning behind the slowresponse. In the construction of the CTA circuit we used a simple potentiometer acting as thevariable resistor Rp. What if not only the probe wire Rw is heated up significantly by the feedbackcurrent, but the potentiometer as well? Most metals have a positive temperature coefficient ofresistance, such that heating of the potentiometer would mean increasing its resistance, which inturn increases the voltage in the op-amp’s non-inverting input. This forces the op-amp to outputa higher current, heating both the potentiometer and probe wire even more. Since the probe ismore receptive to heat than the potentiometer it would heat up faster and eventually balancethe circuit out.

Two other potential issues would be if either R1 is heated by the current i1, which would”contradict” the heating of Rw, or if the water itself was heated, by the rapid stirring of theRBR. Investigating other, more heat resistant resistors could be worth looking into, as well asmaybe run the rest in a larger water tank, such as to negate any heating effects of the water.

During the latter sections of Figure 16 the system would then be waiting for the potentiometerto cool down, which is a slower process than the cooling of the probe, since it is suspended inair, not submerged in water.

Finally, let us direct our attention to the offset voltage Eos in Figure 6. Previously, we statedthat the offset voltage represented around 0.7% of the non-inverting input, and thus could beneglected. It is interesting to note though, that the output variations only represent 2.5% of the

mean output, i.e.∆Eout

Emean≈ 0.025. Is it then appropriate to assume Eos is small enough to not

play a significant role on the output? Either way, it could be interesting to apply an even smalleroffset voltage, e.g. Eos ∼ 1 mV , and see how it impacts the output during tests.

7 Conclusions

As we stated previously, there are two main issues with the measurement system: the calibrationprocess, which sensitivity impacts the velocity estimations quite heavily, and the slow response

24

Mans Sterner Bostrom ([email protected]) June 26, 2016

of the output. Further investigations should therefore focus on increasing the response rate ofthe system, and perhaps this would improve the calibration as a consequence. Another thing toconsider is to look for commercial alternatives for the probe and calibration. If the cost outweighsthe effort of improvements it might be a suitable option.

Overall, the system was quite cheap, since it didn’t require any expensive components, andallowed for us to adapt the system to the RBR setup. Although the initial velocity estimationswere quite unreliable we still think that the system design shows promise, if the issues at handcan be solved. As an alternative, buying a commercial CTA system with automatic calibrationand integrated noise filtering is quite expensive, and would still require some modification to fitthe RBR.

25

Mans Sterner Bostrom ([email protected]) June 26, 2016

A Appendix A

Here we disclose the full code uploaded on the Arduino Uno. Many code snippets are directlytaken from: https://learn.adafruit.com/adafruit-4-channel-adc-breakouts/programmingand https://learn.adafruit.com/adafruit-data-logger-shield/using-the-real-time-clock-3,and combined into something that is suited for our purposes.

A.1 Arduino code

/** Program for sampling an ADC connected to a CTA circuit, and* logging the data onto an SD card.*/

#include "SD.h"#include <Wire.h>#include "RTClib.h"#include <SPI.h>#include <Adafruit_ADS1015.h>

RTC_DS1307 RTC; // define the Real Time Clock objectAdafruit_ADS1115 ads(0x48); // create instance of ADS1115

// we use digital pin 10 for the SD cs lineconst int chipSelect = 10;

// the logging fileFile logfile;

// error function for when something Really Bad happenedvoid error(char *str)

Serial.print("error: ");Serial.println(str);

// haltwhile(1);

void setup() Serial.begin(57600);Serial.println();

// initialize the SD cardSerial.print("Initializing SD card...");// make sure that the default chip select pin is set to// output, even if you don’t use it:pinMode(chipSelect, OUTPUT);

// see if the card is present and can be initialized:if (!SD.begin(chipSelect))

Serial.println("Card failed, or not present");// don’t do anything more:return;

Serial.println("card initialized.");

// create a new file, ’LOGGER00.CSV’ ... ’LOGGER99.CSV’char filename[] = "LOGGER00.txt";for (uint8_t i = 0; i < 100; i++)

filename[6] = i/10 + ’0’;filename[7] = i%10 + ’0’;if (! SD.exists(filename))

// only open a new file if it doesn’t existlogfile = SD.open(filename, FILE_WRITE);break; // leave the loop!

if (! logfile) error("couldnt create file");

Serial.print("Logging to: ");Serial.println(filename);

// poking the RTC to see if its aliveWire.begin();if (!RTC.begin())

logfile.println("RTC failed");

// write txt headerlogfile.println("millis A0 A1 A2 A3");

// The ADC input range (or gain) can be changed via the following// functions, but be careful never to exceed VDD +0.3V max, or to// exceed the upper and lower limits if you adjust the input range!

// Setting these values incorrectly may destroy your ADC!// ADS1115// -------// ads.setGain(GAIN_TWOTHIRDS); // 2/3x gain +/- 6.144V 1 bit = 0.1875mV// ads.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 0.125mV// ads.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 0.0625mV// ads.setGain(GAIN_FOUR); // 4x gain +/- 1.024V 1 bit = 0.03125mV// ads.setGain(GAIN_EIGHT); // 8x gain +/- 0.512V 1 bit = 0.015625mV// ads.setGain(GAIN_SIXTEEN); // 16x gain +/- 0.256V 1 bit = 0.0078125mV

ads.setGain(GAIN_TWOTHIRDS);ads.begin();

int16_t adc0, adc1, adc2, adc3;int switchVal = 0;int cnt = 0;int LIMIT = 5000;

void loop()

while(cnt < LIMIT)

// log milliseconds since startinguint32_t m = millis();logfile.print(m); // milliseconds since startlogfile.print(" ");

// sample the ADC channelsadc0 = ads.readADC_SingleEnded(0);adc1 = ads.readADC_SingleEnded(1);adc2 = ads.readADC_SingleEnded(2);adc3 = ads.readADC_SingleEnded(3);

logfile.print(" ");logfile.print(adc0);logfile.print(" ");logfile.print(adc1);logfile.print(" ");logfile.print(adc2);logfile.print(" ");logfile.println(adc3);

cnt++;if (cnt == LIMIT)

Serial.println("Shutting down...");logfile.close();

26

Mans Sterner Bostrom ([email protected]) June 26, 2016

B Appendix B

B.1 Full case

Figure 19: An isotropic view of the full case designed in a CAD software.

Figure 20: Top view of the case, indicating important dimensions and measurements.

27

Mans Sterner Bostrom ([email protected]) June 26, 2016

Figure 21: The complete case from a side angle, showing its height, and diameter of the con-necting hole.

B.2 Connection

Figure 22: An isotropic view of the connecting piece by itself.

28

Mans Sterner Bostrom ([email protected]) June 26, 2016

(a) Isotropic view of a slice of the connecting piece. (b) Another angle showing im-portant measurements.

Figure 23: The connecting piece sliced to get a better view.

C Appendix C

C.1 Instructions for running tests

This section briefly describes the steps executed for testing using the complete system.

• Remove the SD-card and connect both the 9V and 11.1V batteries.

• A red light flickers a few times and shuts off. This indicates that the Arduino didn’t findan SD-card to write to, however the CTA circuit is still being warmed up to acclimate theprobe to a steady temperature.

• It is now safe to insert the SD-card into the data-logging shield. After sufficient time (15to 30 minutes) the system should be in balance, which allows us to press the reset buttonon the Arduino to start the logging process.

• The system logs for about 200 seconds, and it is important to let it complete the writingbefore we either unplug the batteries or press reset again. The writing has finished whenthe red light stops blinking. We can then either decide to unplug the device and extractthe SD-cart, or hit reset and run another measurement.

• By inserting the SD-card into a computer we get access to all the text files storing thesampled data. The text files include a header that indicates five columns, one keepingscore of the time in milliseconds, and four columns of raw data from the input channels ofthe ADC. By default all channels log simultaneously, but it is the second channel ’a1’ thatcontains the relevant information.

29

Mans Sterner Bostrom ([email protected]) June 26, 2016

D References

[1] SpinChem AB. Revolutionize your reactions. http://www.spinchem.com/technology/.[Online; accessed 16-April-2016].

[2] Dantec Dynamics. Measurement principles of lda. http://www.dantecdynamics.com/

measurement-principles-of-lda. [Online; accessed 20-May-2016].

[3] Dantec Dynamics. Measurement principles of piv. http://www.dantecdynamics.com/

measurement-principles-of-piv. [Online; accessed 20-May-2016].

[4] Hans H Bruun. Hot-wire anemometry: principles and signal analysis, page 36. OxfordUniversity Press Inc, 1995.

[5] Louis Vessot King. On the convection of heat from small cylinders in a stream of fluid:determination of the convection constants of small platinum wires with applications to hot-wire anemometry. Philosophical Transactions of the Royal Society of London. Series A,Containing Papers of a Mathematical or Physical Character, 214:373–432, 1914.

[6] S Tavoularis. Measurement in Fluid Mechanics, pages 255–256. Cambridge University PressInc, 2005.

[7] Adafruit. Adafruit data logger shield - code walkthrough. https://learn.adafruit.com/adafruit-data-logger-shield/using-the-real-time-clock-3. [Online; accessed 20-April-2016].

[8] Adafruit. Adafruit 4-channel adc breakouts - programming. https://learn.adafruit.

com/adafruit-4-channel-adc-breakouts/programming. [Online; accessed 21-April-2016].

[9] Adafruit. Adafruit 4-channel adc breakouts. https://learn.adafruit.com/

adafruit-4-channel-adc-breakouts/overview. [Online; accessed 21-March-2016].

[10] Adafruit. Adafruit data logger shield. https://learn.adafruit.com/

adafruit-data-logger-shield/overview. [Online; accessed 21-March-2016].

30