Sei sulla pagina 1di 83

MICRO-CONTROLLER BASED POTENTIOSTAT

by
Ashwini Vittal Gopinath

A thesis

submitted in partial fulfillment

of the requirements for the degree of

Master of Science, Computer Engineering

Boise State University

September, 2004
The thesis presented by Ashwini Vittal Gopinath entitled “Micro-controller based

Potentiostat” is hereby approved:

____________________________________

Advisor Date

____________________________________

Committee Member Date

____________________________________

Committee Member Date

____________________________________

Dean, Graduate College Date

ii
DEDICATION

To my grandparents Sri V.H. Vittal Narasimhaiah and Smt. Ratnamma. I thank my

parents Sri V. Gopinath and Smt. C.N. Nagalakshmi for giving me the opportunity to

come and study at Boise.

iii
ABSTRACT

Remote detection and monitoring of environmental contaminants is a fast growing field

as it alleviates human interaction and decreases cost of operation. An embedded

potentiostat to detect the concentration of a chemical was built as part of an effort to

remotely detect and monitor environmental contaminants. A potentiostat is an electronic

instrument that allows the application of voltage waveforms of various shapes on a 3 or 4

electrode set-up and determine the current through the cell. In this work, the potentiostat

was used to perform cyclic voltammetry. Cyclic voltammetry is a technique in which a

triangular voltage is imposed on the electrochemical cell and the current through the cell

is analyzed. The current versus voltage curve of an electro-active chemical species that

undergoes red-ox behavior displays two prominent peaks, one in each direction of the

sweep voltage. The current peaks are indicative of the concentration of the chemical and

also provide other useful information. An embedded potentiostat system that extracts

the concentration of the chemical from the peak measurements was built. The entire

system was integrated on a printed circuit board of dimensions 3 cm X 13cm. The

correlation factor between concentration of chemical and current peak using the

embedded sensor system was found to be greater than 0.99.

iv
TABLE OF CONTENTS

DEDICATION.................................................................................................................. III

TABLE OF CONTENTS................................................................................................... V

LIST OF FIGURES .........................................................................................................VII

LIST OF TABLES......................................................................................................... VIII

LIST OF FLOWCHARTS................................................................................................ IX

CHAPTER 1: INTRODUCTION ....................................................................................... 1

CHAPTER 2: OVERVIEW................................................................................................ 3

2-2 SENSOR ELECTRODES .......................................................................................... 5

CHAPTER 3: PEAK CURRENT MEASUREMENT .................................................... 2

3-1 EXTRAPOLATION OF BASE LINE CURRENT............................................................ 5

3-1.1 L-method for finding the knee of a curve ....................................................... 5

3-2 REGRESSIVE LINE FITTING ................................................................................... 8

CHAPTER 4: INTERFACE DESIGN.............................................................................. 10

4-1 SCHEMATIC ....................................................................................................... 10

4-2 CIRCUIT OPERATION ........................................................................................ 13

4-2.1 Interface with serial D/A converter............................................................... 14

v
CHAPTER 5: MICRO-CONTROLLER SETTINGS AND SOFTWARE ...................... 16

5-1 MODULE SETTINGS ............................................................................................ 18

5-1.1 ADC settings................................................................................................. 19

5-1.2 Timer and CCP Module settings.................................................................. 22

5-1.3 SPI (Serial Peripheral Interface) module settings......................................... 23

5-2 ALGORITHMS .................................................................................................... 24

5-2.1 Control Flow for the system (the Main Subroutine)..................................... 25

5-2.2 Enable High Priority Interrupts..................................................................... 28

5-2.3 High Level Interrupt ..................................................................................... 29

5-2.5 Slope calculation........................................................................................... 32

CHAPTER 6: EXPERIMENTAL SET-UP ...................................................................... 36

CHAPTER 7: RESULTS.................................................................................................. 38

CHAPTER 7: FUTURE WORK ...................................................................................... 51

APPENDIX A: CODE...................................................................................................... 52

APPENDIX B: PCB LAYOUT ....................................................................................... 63

APPENDIX C: PARTS LIST ........................................................................................... 64

REFERENCES ................................................................................................................. 65

vi
LIST OF FIGURES

Figure 1: Block Diagram of Potentiostat Circuit ................................................................ 3

Figure 2: i-E curve of cyclic voltammetry measurements with varying scan rates ............ 6

Figure 3: Schematic of interface between micro-controller and electrochemical cell...... 11

Figure 4: Flow diagram for potentiostat control system................................................... 17

Figure 5: Equivalent R-C network of electrode solution interface ..................................... 2

Figure 6: Baseline current and anodic peak current measurement with respect to baseline

current........................................................................................................................... 4

Figure 7: i-E curve for 5mM concentration at 100 mV/s.................................................. 39

Figure 8: i-E curve for 2mM concentration at 100 mV/s.................................................. 40

Figure 9: i-E curve for 1mM concentration at 100 mV/s.................................................. 41

Figure 10: i-E curve for 0.5mM concentration at 100 mV/s............................................. 42

Figure 11: i-E curve for 0.2mM concentration at 100 mV/s............................................. 43

Figure 12: i-E curve for 0.1mM concentration at 100 mV/s............................................. 44

Figure 13: Alternate circuit............................................................................................... 46

Figure 14: Calibration curve of anode peaks for potassium ferri cyanide........................ 49

Figure 15: Calibration curve for cathode peaks of potassium ferri cyanide ..................... 50

Figure 16: i-E curves for potassium ferri cyanide at 100 mV/s....... Error! Bookmark not

defined.

vii
LIST OF TABLES

Table 1: List of parts ......................................................................................................... 12

Table 2: ADCON0 register settings.................................................................................. 20

Table 3: ADCON1 register settings.................................................................................. 20

Table 4: T3CON register settings ..................................................................................... 22

Table 5: CCP2CON register settings ................................................................................ 22

Table 6: SSPSTAT register settings ................................................................................. 23

Table 7: SSPCON1 register settings ................................................................................. 23

Table 8: Configuration of MAX5354 ............................................................................... 14

Table 9: Anode peaks after baseline current extraction.................................................... 48

viii
LIST OF FLOWCHARTS

Flowchart 1: Main Sub-Routine........................................................................................ 26

Flowchart 2: High Priority Interrupts .............................................................................. 28

Flowchart 3: High level interrupt handle .......................................................................... 29

Flowchart 4: Interrupt service sub-routine (ADC handle)................................................ 31

Flowchart 5: Slope Calculation......................................................................................... 33

ix
CHAPTER 1: INTRODUCTION

A potentiostat is an electronic instrument that imposes potential waveforms of

various shapes on an electrochemical cell and measures the resultant current through the

cell. A potentiostat uses a three or four electrode interface. In a three electrode system the

potentiostat controls the potential between the reference electrode and the working

electrode; the counter electrode provides the current through the cell but the amount of

current is limited by the electrochemical activity at the working electrode. The current

through the electrochemical cell is a function of the concentration of the electro-active

species, the voltage at the working electrode (with respect to reference electrode) and the

area of the working electrode. In this work, the potentiostat was used to carry out cyclic

voltammetric measurements. Cyclic voltammetry is a technique in which a triangular

voltage waveform is applied between the reference and working electrodes. An electro-

active chemical species that undergoes reduction-oxidation behavior produces a peak in

each scan direction; the peaks are called anodic and cathodic peaks. The current versus

voltage graph of a cyclic voltammamogram for a red-ox species resembles a duck curve;

the current builds to a peak, falls and levels off in each direction of voltage sweep. The

location of the current peak along the voltage axis is unique to a chemical and the height

of the current peak gives a measure of the concentration of chemical, provided the scan

rate and the area of working electrode remain constant.


1
Potentiostats currently in use are laboratory desktop equipment with relatively

large footprints, bulky and costing thousands of dollars. There has been a lot of research

to miniaturize potentiostats in the last decade. Richard & others [REAY94] have built an

integrated CMOS potentiostat , which they later used to determine heavy metal

concentration [REAY95]. Mark & others [SHUL94] built an implantable potentiostat

radiotelemetry system that used enzyme electrodes to indirectly measure glucose

concentration in animals; a similar effort was carried out by Richard & others [BEAC99].

In all these cases, data has been processed offline and in some cases off-site, there has not

been an attempt to analyze the data in-situ during chronoamperometric or voltammetric

measurements. A miniaturized potentiostat that performs in-situ data analysis and

transmits an 8-bit word corresponding to the concentration of the chemical is built in this

work. The entire system is integrated on a printed circuit board.

2
CHAPTER 2: OVERVIEW

A miniaturized potentiostat that uses cyclic voltammetric techniques to analyze

electro-chemically active red-ox chemical species was designed and built. The block

diagram of the potentiostat set-up is presented in figure 1.

VOLTAGE
CONTROL

MICRO- OP-AMP SENSOR


CONTROLLER CIRCUITRY ELECTRODES
(Section 2-1) (Section 2-1) (Section 2-2)

CURRENT
MONITOR

Figure 1: Block Diagram of Potentiostat Circuit

The micro-controller provides the control system for the potentiostat. There are two

interfaces between the micro-controller and sensor electrodes; the first interfaces is used

to apply the triangular voltage waveform to the electrochemical cell and the second

interface is used to apply analyze the current through the electrochemical cell. The op-

amp circuitry provides the interface between the micro-controller and sensor electrodes.
3
2-1 Micro-controller & Op-Amp circuitry

The micro-controller controls the voltage applied between the reference and

working electrodes and takes periodic current measurements. The current values are

averaged to improve signal to noise ratio. The micro-controller extracts the baseline

current in both directions (explained in detail in “Chapter 3: Peak current

measurement”) by determining the knee of the curve between the beginning of sweep in

each direction and the respective peak in that direction. The micro-controller then

determines the peak of the curve with respect to the baseline current in each direction, the

concentration of the chemical is determined from the calibration tables stored in the

micro-controller.

A 10-bit up-down counter is implemented in the micro-controller to generate a

triangular voltage. The 10-bit counter value is fed to a serial D/A converter using the

serial peripheral interface (SPI) of the micro-controller. The triangular voltage is level-

shifted to the requisite range [-0.1 to +0.4V for potassium ferri cyanide] by an op-amp

circuit and then applied to the electrochemical cell. The current through the

electrochemical cell is fed to a current to voltage converter and then level-shifted and

amplified/attenuated to meet the input voltage ratings of the analog port of the micro-

controller. For every increment in voltage (every increment in the 10 bit up-down

counter) a corresponding current reading is recorded; 8 consecutive current readings are

averaged to improve the signal to noise ratio of the current readings.

4
The op-amp circuits provide the signal processing necessary to interface the

voltage waveform from the micro-controller to the electrode interface. They also provide

the necessary signal processing to interface the current from the electrochemical cell to

the analog to digital (A/D) circuitry of the micro-controller.

2-2 Sensor Electrodes

The potentiostat interfaces with a platinum working electrode, a platinum counter

electrode and a silver reference electrode. The reference electrode is used to establish an

unchanging, constant potential in the electrochemical cell, against which other potentials

may be determined with relatively high precision. This is critical because the delta

change in peak location of 0.5mV can be important in precise electrochemical

measurements e.g. when determining thermodynamic or kinetic parameters for a red-ox

system. The working electrode is where the electron transfer of interest occurs. The

counter is usually a somewhat “sacrificial” electrode that merely serves to complete the

circuit. As long as the products of any electron transfer at this electrode do not interfere

at the working electrode, we don’t care what happens at this electrode. The counter

platinum electrode is larger in size compared to the platinum-working electrode so as to

prevent the limiting of current at the working electrode by the counter electrode. The

red-ox behavior observed during cyclic-voltammetry looks like a duck curve and is

shown in figure 2.

5
Figure 2: i-E curve of cyclic voltammetry measurements with varying scan rates

6
The location of the peak along the voltage axis is unique to a species; the height

of the peak correlates to the concentration of the electro-active species. The current peak

at 25 degrees centigrade is defined by the Randles Sevick equation:

ip = 2.69 * 105 * n3/2 * A * D1/2 * v1/2 * C amperes

where

n number of electrons transferred

A area of working electrode (cm2)

D diffusion co-efficient (cm/s)

V scan rate (V/s)

C concentration of chemical (M/cm3)

For a given set-up and electro-active species if the number of electrons, the area

of the working electrode and the diffusion co-efficient remain constant, then the peak

current can be varied either by varying scan rate or by varying concentration of electro-

active species. In this work, only the effects of change in concentration of electro-active

species are documented.

1
CHAPTER 3: PEAK CURRENT MEASUREMENT

In chrono-amperometric and voltammetric measurements, there is a baseline

current due to capacitive charging between the electrodes and the bulk solution. The

impedance due to the solution and due to the interface between the electrodes and bulk

solution can be modeled as an R-C network [BOCK23] shown in figure 3.

Figure 3: Equivalent R-C network of electrode solution interface

where

Rc + Ruc – solution resistance

Ruc – uncompensated resistance

Cd – double-layer capacitance

2
The charging current does not derive from any electron transfer process involving

the electro-active species and hence must be subtracted for proper estimation of anodic

and cathodic peak currents. The charging current also limits the detection limit of cyclic

voltammamogram to about 10-5M [KATZ04]. The baseline current and the anodic peak

current with respect to baseline current are shown in Figure 4.

3
Figure 4: Baseline current and anodic peak current measurement with respect to
baseline current

4
3-1 Extrapolation of base line current

The baseline current in both anodic and cathodic sweeps is found by finding the

point of maximum curvature between the beginning of sweep and the corresponding

peak; a line is then fit through all the points on the left hand side of the point of

maximum curvature. The L-method [SALV__] is used to find the point of maximum

curvature or knee of a curve.

3-1.1 L-method for finding the knee of a curve

In the L-method, the knee of a curve is determined by fitting a pair of lines to the

data that produces the least root mean square error. The point at which the two lines

intersect is the knee of the curve.

Let the total number of data points be ‘b’; the partitioning the of the data points be

‘c’, i.e., the left hand set of data points are described by the points 1,..c and the right hand

set of data points are described by the points c+1,..b. The total root mean square error is

given by equation 2.

5
RMSEc = 1/b {c * RMSE (Lc) + (b-c) * RMSE (Rc)} Equation 1

Where

RMSEc is the total root mean square error

RMSE (Lc) is the total root mean square error of the left hand side line

RMSE (Rc) is the total root mean square error of the right hand side line.

Since only the minimum of the root mean square value is used, root mean square

can be replaced with mean square error and since the divisor ‘1/b’ is a constant this also

can be removed, i.e. equation 2 can be simplified to equation 3

MSEc = c * MSE (Lc) + (b-c) * MSE (Rc) Equation 2

Where

MSEc is the total mean square error

MSE (Lc) is the total mean square error of the left hand side line

MSE (Rc) is the total mean square error of the right hand side line.

6
The steps involved in finding the knee of the curve are described below.

• Vary ‘c’ from 2 to ‘b-1’

• Fit the left hand line to points 1,..c and the right hand line to points c+1,..b

• Calculate the total mean square error for each value of ‘c’

The least mean square error gives the point of maximum curvature or ‘knee’ of the

curve. Regressive line fitting is used to fit a line to the given data set.

7
3-2 Regressive line fitting

In regressive line fitting, the slope and y-intercept of the line is found by

minimizing the mean square error between the data points and the line describing the data

points.

To find the slope and y-intercept of the best fit line through the given data points

The mean square error between expected and obtained values of data points has to

be minimized; i.e. (y - ỹ)2 has to be minimized, where ‘y’ is the given data set and ‘ỹ’ is

the expected data points or the values of the best fit line through the data points and is

given by equation 4.

ỹ = ax + b Equation 3

Where
‘a’ is the slope of the line

‘b’ is the ‘y-intercept’

To find the best fit line, we have to solve the set of simultaneous equations given below.

∂z / ∂a = 2 {a ∑x2 + b ∑x - ∑xy) = 0 Equation 4

∂z / ∂b = 2 {a ∑x + ∑b - ∑y) = 0 Equation 5

8
solving for ‘a’ and ‘b’ from the above simultaneous equations

a = covariance (xy) / {variance (x) – mean(x) mean(y)} Equation 6

b = a * mean(x) – mean(y) Equation 7

The peak with respect to the baseline current is calculated in both directions. The

concentration of the electro active chemical species is then extracted from the calibration

curve. The calibration curve is formed using a set of standard solutions covering the

entire range of possible (or expected) concentrations.

9
CHAPTER 4: INTERFACE DESIGN

4-1 Schematic

The micro-controller is interfaced to the electrode set-up of the electrochemical

cell using op-amp circuits. The op-amp circuitry provides the necessary signal

processing before feeding the triangular voltage signal to the electrode set-up as well as

the voltage equivalent current to the micro-controller. The schematic diagram of the

potentiostat showing the interconnections between the micro-controller and the op-amp

circuitry and between the op-amp circuit and the electrode set-up is shown in Figure 3.

10
Figure 3: Schematic of interface between micro-controller and electrochemical cell

11
A list of the components and a brief description of the components used in the

schematic are presented in table 1. The components can be acquired through Digikey and

more information is provided in Appendix C.

Part Part No. Description

U1 MAX5354 10 bit serial D/A converter

U2 CTX144 4 MHz ceramic resonator

U3 D6C 90 Push button for external resetting of micro-controller

U4 PT5061 Single input dual output voltage regulator

U5 LM148 Quad op-amp package

U6 LM741 Op-amp chip

U7 PIC18F452 Micro-controller

Table 1: List of parts

12
4-2 Circuit Operation

This section is divided into two parts, the voltage control between the micro-

controller and the electrode set-up is presented in the first part and the current monitoring

between the electrode set-up and the micro-controller is presented in the second part.

The micro-controller generates a triangular voltage waveform to be fed to the

electrochemical cell using a 10 bit up-down counter. The digital output word from the

micro-controller is fed to a serial D/A converter using serial peripheral interface of the

micro-controller. The output voltage swing of the serial D/A converter is variable and

depends on the voltage on the reference pin (Vref pin of the MAX5354). A

potentiometer is connected to the Vref pin and the output voltage swing of the D/A

converter is controlled by changing the potentiometer settings. The output voltage of the

serial D/A converter is given by

Vout = Vref * cnt / 1023

where

Vout – output voltage of serial D/A converter

cnt – 10 bit up-down counter value loaded in the serial D/A register

(The counter value varies between 0 and 1023)

Vref – voltage on reference pin of serial D/A

13
4-2.1 Interface with serial D/A converter

The serial D/A converter used in this work is MAX5354. The MAX5354 is a 10

bit serial D/A converter and uses a 16 bit serial word to update its registers. The 16 bit

serial word can be loaded in one block or it can be transmitted as two 8 bit words. The

16 bit serial word configuration is presented in table 2 from the MAX 5354 datasheet.

Table 2: Configuration of MAX5354

14
When the MAX5354 register contents are being updated, the CS pin needs to be

held low. The control to the serial DAC is provided by the port C pins of the micro-

controller. The RC3 pin of the micro-controller provides the serial clock, the RC5 pin

provides the serial data and the RC0 provides the CS for the MAX5354 DAC. The

micro-controller sends out the 16 bit configuration as two 8-bit words. The CS signal is

held low during valid data transmission. The detailed software interface with the serial

DAC is presented in [MAXI97]

The output of the serial D/A is unipolar; to change the output voltage to bipolar an

op-amp level shifter circuit is used. A buffer is inserted between the counter electrode

and the level-shifted voltage; the buffer prevents loading of earlier op-amp stages by the

current drawn by the electrochemical cell. The reference electrode is connected to the

non-inverting terminal of a voltage follower circuit. The voltage follower circuit helps in

maintaining a constant potential at the reference electrode without drawing much current.

The working electrode is connected to the inverting terminal of a current to voltage

converter; this in effect keeps the working electrode tied to ground and also produces a

voltage equivalent of the electrochemical current at the output of the voltage converter.

The electrochemical current, now converted to a voltage is level shifted and

attenuated/amplified to bring the voltage into the 0-5V range acceptable by the micro-

controller and fed to the analog input port of the micro-controller.

15
CHAPTER 5: MICRO-CONTROLLER SETTINGS AND SOFTWARE

The micro-controller used in this work is “PIC18F452”; the PIC18F452 was

chosen to provide the control system for miniaturized sensor systems under this grant in

an earlier work by Wesley A. Prouty [PROU03]. The PIC18F452 is a flash micro-

controller with 10 bit A/D converter and some of the features of the PIC18F452

[MICR04 b] are

• 32 KB program memory

• 1.5KB data memory

• Timer & Capture modules

• Serial interface module

• Interrupt priority levels

• Sleep mode of operation

16
The micro-controller uses the timer-capture module to provide interrupts at

periodic intervals, during an interrupt the 10 bit up-down converter values are updated;

the A/D measurements are taken and the serial D/A contents are updated. The heart of

this project is the determination of the anode and cathode peaks with respect to baseline

current (explained in detail in Chapter 3). The micro-controller takes periodic current

measurements, extracts baseline current and determines peak of the current curve and

then extracts the concentration of the chemical. A flow-diagram of the control system for

the potentiostat is presented in figure 4.

CONFIGURE A/D MODULE


(Section 4-1.1)

CONFIGURE TIMER
MODULE
(Section 4-1.2)

CONFIGURE SPI MODULE


(Section 4-1.3)

ENABLE INTERRUPT &


COLLECT DATA

PEAK DETECTION &


BASELINE CURRENT
EXTRACTION
(Section 4-2)

Figure 4: Flow diagram for potentiostat control system

17
The modules used and the algorithms implemented to design this functionality in

the micro-controller are presented in the following sections.

5-1 Module settings

The special events mode of the timer compare module is used for taking periodic

analog to digital measurements. The time period between two consecutive A/D

measurements is changed by loading different values into the compare register. When

the timer count equals the contents of the compare register, the go/done bit of the analog

to digital converter is set, thus initiating an A/D measurement. After the completion of a

A/D conversion, a high-level interrupt is generated. In the interrupt service routine, the

analog to digital value is read from the A/D conversion registers; 8 contiguous values are

averaged to remove noise and are stored in an array of length 256. After completion of a

scan (2048 counts, 1024 up counts and 1024 down counts), the interrupt is disabled and

the peak in both directions is computed. The knee of the curve [SALV__] in each

direction is computed and the slope of the left hand side of the curve is calculated. The

peak with respect to slope in each direction is calculated. The micro-controller stores the

calibration data of the curves in terms of slope and y-intercept of the best-fit line. The

concentration corresponding to the peak current value is determined by using the slope

and y-intercept of the calibration curve and an 8-bit data bit value corresponding to the

current is generated. The settings of the analog to digital module, timer module, compare

capture pulse width modulation module and master synchronous slave module are listed

here.
18
5-1.1 ADC settings

The micro-controller A/D converter module has 4 registers

• A/D control register 0 – ADCON0

• A/D control register 1 – ADCON1

• A/D result high register – ADRESH

• A/D result low register – ADRESL

ADCON0 and ADCON1 are the control registers used to power up the analog to

digital conversion circuitry, select the analog input port and initiate analog to digital

conversion. The ADRESH and ADRESL registers hold the upper and lower bytes of the

analog to digital conversion results.

19
The ADCON0 register bit settings used in this work are as shown in table 3, the bit

definition in detail can be found in the PIC18F452 datasheet [MICR04 b]. ADCON0

register powers up the A/D circuitry, selects the analog port for conversion and selects

the clock frequency for conversion.

Bit position 7 6 5 4 3 2 1 0
Function of bit ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE — ADON
Setting 0 1 0 0 1 — 1

Table 3: ADCON0 register settings

The go/done bit is set at the start of a new analog to digital conversion; the bit is

cleared by the micro-controller upon completion of an ADC measurement.

The ADCON1 register settings are as in table 4. The ADCON1 configures the

reference voltage for the A/D module and selects the output format of the 10 bit A/D

result.

Bit position 7 6 5 4 3 2 1 0
Function of bit ADFM ADCS2 — — PCFG3 PCFG2 PCFG1 PCFG0
Setting 1 0 — — 0 0 0 0

Table 4: ADCON1 register settings

20
The ADC conversion result is only 10 bits long and two formats are available to

store it – most significant 8 bits in ADRESH register and two least significant bits in

ADRESL register or 2 most significant bits in ADRESH register and the least significant

bye in the ADRESL register. The ADFM selects the format in which the ADC result is

stored; a ‘1’ indicates that the first 6 most significant bits in ADRESH are zeros. The

ADC result is stored in the registers ADRESH and ADRESL in the format shown below:

7 6 5 4 3 2 1 0 ADRESH
0 0 0 0 0 0 b9 b8

7 6 5 4 3 2 1 0 ADRESL
b7 b6 b5 b4 b3 b2 b1 b0

21
5-1.2 Timer and CCP Module settings

The micro-controller 16 bit timer is an up counter which can be run either with

the internal (micro-controller) oscillator or from an external trigger source. The timer is

used in conjunction with the compare facility of the compare capture pulse width

modulate (CCP) register to generate a “special event trigger”. The “special event trigger”

sets the GO/DONE bit in the ADCON0 bit that starts an A/D measurement; it also resets

the timer. The TIMER3 register settings are shown in table 5. T3CON register powers

up the timer, chooses the trigger source for the time and also pairs the timer with capture

3 module.

T3CON
Bit 7 6 5 4 3 2 1 0
position
Function RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON
of bit
Setting 1 0 1 1 0 X 0 1

Table 5: T3CON register settings

The compare/capture/pulse width module register settings are shown in table 6. The

CCP2CON register chooses between the compare/capture/PWM facilities of the module

and also enables special events mode.

CCP2CON
Bit position 7 6 5 4 3 2 1 0
Function of - - DC2B1 DC2B0 CCP2M3 CCPM2 CCP2M1 CCP2M0
bit
Setting X X X X 1 0 1 1
Table 6: CCP2CON register settings
22
5-1.3 SPI (Serial Peripheral Interface) module settings

The serial peripheral interface is used to send the 10 bit up-down counter values

to the serial analog to digital converter. The Master Synchronous Serial Port (SPI/I2C

module) has three registers – two control registers (SSPCON1 and SSPCON2) and a

status register (SSPSTAT). In SPI mode, the Master Synchronous Serial Port has four

registers – MSSP Control Register1 (SSPCON1), MSSP Status Register (SSPSTAT),

Serial Receive/Transmit Buffer (SSPBUF) and MSSP Shift Register (non-user

accessible). The settings of SSPCON1 and SSPSTAT register settings are detailed in

tables 7 and 8.

The SSPSTAT sets the clock edge for data transfer and other control information

for serial peripheral interface module.

SSPSTAT
Bit position 7 6 5 4 3 2 1 0
Function of SMP CKE D/A P S R/W UA BF
bit
Setting X 0 X X X X X X
Table 7: SSPSTAT register settings

The SSPCON1 register settings presented in table 8 selects the master/slave mode of

operation of the SPi.

SSPCON1
Bit 7 6 5 4 3 2 1 0
position
Function WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0
of bit
Setting 1 X 1 1 0 0 0 0

Table 8: SSPCON1 register settings

23
5-2 Algorithms

The configurations of the different modules, the interrupts, the algorithms used to

implement the potentiostat control system in the micro-controller are detailed in this

section. The algorithms are presented in the form of flowcharts with a brief description

on each section; the software codes is presented in Appendix A.

24
5-2.1 Control Flow for the system (the Main Subroutine)

The main sub-routine provides the control flow for the entire program. The

PIC18F452 micro-controller has one analog port – PORTA and four general digital

input/output (I/O) ports – PORTA, PORTB, PORTC and PORTD. Some of the ports

have special functions - PORTA is used for A/D conversions, PORTB is used for

hardware interrupts and PORTC is used for serial communications. For each cyclic

voltammetric measurement, the (I/O) ports of the micro-controller are configured. The

PORTC pins are configured as outputs, the serial peripheral interface uses PORTC pins

1, 3 and 5 for communication with the serial D/A converter. The PORTA pins are

configured as inputs, PORTA pin 1 is used for A/D conversion by the micro-controller.

The A/D conversions at periodic intervals are activated by enabling the special

events mode of the timer/capture module. The settings of all the modules - A/D module,

SPI module, and timer & capture modules are configured and then the interrupts for the

control system are enabled. The interrupt is disabled by the interrupt handler upon

reaching 2048 counts; the control is passed from the main program to the slope and peak

calculation sub-routine. Upon calculating the peaks in both directions and determining

the concentration of chemicals, the micro-controller switches off all the modules and

goes into sleep mode. In the sleep mode the micro-controller consumes less power and

thus helps conserve battery charge. The micro-controller configuration and the control

flow for the potentiostat is presented in flowchart 1.


25
Start

Configure port C as output


Configure port A1 as analog input

Enable special events mode for


CCP2/Timer2 combination

Enable High Interrupts

Configure Timer

Configure ADC

Configure SPI

Load variables

Enable ADC peripheral interrupt

Flowchart 1: Main Sub-Routine

26
2

Wait for the A/D interrupt to be disabled

Slope_area_peak

Close ADC

Close Timer3

Close SPI

Sleep

Disable all interrupts

Start

Stop

Flowchart 1b: Main Sub-Routine

27
5-2.2 Enable High Priority Interrupts

The High Priority Interrupt Enable subroutine presented in flowchart 2 enables

the global interrupts, configures different levels of priority and enables both low and high

priority interrupts.

Start

Enable interrupt priority


(Enable high and low priority
interrupts)

Enable all high priority


interrupts

Enable all low priority


interrupts

Stop

Flowchart 2: High Priority Interrupts

28
5-2.3 High Level Interrupt

The high level interrupt vector is located 0x008. Upon receiving an interrupt, the

program counter is loaded with the value of the interrupt service sub-routine; the control

flow is presented in flowchart 3.

Start

ADC_handle

Stop

Flowchart 3: High level interrupt handle

29
5-2.4 Interrupt service sub-routine (ADC handle)

The ADC handle sub-routine updates the contents of the 10 bit up-down counter

used to generate the triangular voltage waveform. The ADC handle also averages 8

contiguous current values and stores the result in a 256-byte array. Upon filling all the

elements in the 256 byte array, the ADC handle disables the interrupt. The control for the

ADC handle is presented in flowchart 4.

30
Start

Clear interrupt flag

Send 10 bit up-down counter values padded


with control information to serial peripheral
interface

Add ADC value to avg_ad_temp


Increment cnt

Is cnt % 8 =0?

Divide avg_ad_temp by 8 and store in


y_data array of size 256

Is cnt < 8?

Decrement up-down counter mem Increment up-down counter mem

Is cnt =2048?

Load up-down counter with all 1’s


Disable ADC interrupt enable

Stop

Flowchart 4: Interrupt service sub-routine (ADC handle)


31
5-2.5 Slope calculation

The Slope and Peak Calculation sub-routine calculates the peak in both anodic

and cathodic directions and finds the knee of the curve in both directions. It then

calculates the anodic and cathodic peak in both directions with respect to the left hand

side slope of the knee and is presented in flowchart 5.

32
Start

Declare
variables

i = 0;i < 256; i++

Is i = 0?

Initialize values for calculating peak Is y_data >


in each direction an_peak?
an_peak_loc <= 0
an_peak <= y_data [0]

an_peak_loc <= i
an_peak <= y_data[i]

i=128;i <256; i++

Is i = 256?

Initialize values for calculating peak Is y_data <


in each direction cat_peak?
cat_peak_loc <= 128
cat_peak <= y_data [128]

cat_peak_loc <= i
cat_peak <= y_data[i]

Flowchart 5: Slope Calculation

33
2

peak_loc <= an_peak_loc


increment <= 0

Knee

i = 2 + incr; i <peak_loc; i++

Loop i

Initialize x_mean, y_mean, var_x &


cov_xy to zero

j = 0+incr; j <= peak_loc; j++

Loop j

x_mean <= x_mean + x_data[j]


y_mean <= y_mean + y_data[j]
var_x <= var_x + x_data[j] 2
cov_xy <= cov_xy + x_data[j] * y_data[j]

Flowchart 5b: Slope calculation

34
3

Is j = i-1?

Calculate left hand slope Calculate right hand slope and y


and y interface interface
Initialize x_mean, y_mean,
var_x, cov_xy to zero

Calculate root mean square error of both left hand


and right hand slope and add them to get total root
mean square error

Calculate least mean square error among all


the iterations of i.
Store the left hand side slope and y
interface at the point of least mean square
error in slope and y_int

Loop j

Is incr = 0?

peak_loc <= cat_peak_loc Store slope and y_int in


incr <= 128 cat_slope and cat_y_int
Store slope and y_int in
an_slope and an_y_int
Calculate peak with respect to
slope
Loop i

Stop

Flowchart 5c: Slope calculation


35
CHAPTER 6: EXPERIMENTAL SET-UP

For testing the potentiostat, potassium ferri cyanide solution was used. The

potassium ferri cyanide solution was formed by dissolving potassium ferri cyanide

crystals in 0.1M potassium nitrate solution; a 1mL 0.1mM sodium hydroxide was added

to it. The potassium nitrate solution acts as an electrolyte to suppress migration so the

electron transfer in the electrochemical cell is only by diffusion. The potassium ferri

cyanide crystals were manufactured by Mallinkrodt supplies and were of analytical

reagent grade, the sodium hydroxide was manufactured by Fischer Scientific and was a

certified A.C.S. grade, the potassium nitrate was manufactured by Mallinkrodt supplies

and was of analytical reagent grade. Acid wash was used to clean the glassware and was

manufactured by Fisher Certified ACS plus grade and was diluted with 10:1 de-ionised

water. The silver electrode was manufactured by Alfa Aesar and was 0.5 mm Premion,

99.9985% metal basis, the platinum used for counter and working electrodes were 0.004

inches (0.1 mm) thick Premion manufactured by Alfa Aesar and has 99.998% metal

basis. All dilutions were carried out using de-ionised water and the solutions were stored

in cleaned poly bottles.

36
The micro-controller was programmed using the MPLAB ICD2 in-circuit debugger

[MICR03]. The in-circuit debugger was also used to observe variables and extract data

from the micro-controller.

37
CHAPTER 7: RESULTS

The potentiostat testing was carried out by applying cyclic voltammetric

technique on potassium ferri cyanide solutions of various concentrations. Potassium ferri

cyanide was used as it exhibits a reversible one electron red-ox process with rapid

kinetics. The potentiostat was tested with 100µM, 200µM, 500µM, 1mM, 2mM and

5mM solutions. The solutions were tested at 100 mV/s (milli volts/second) scan rate and

the triangular voltage was varied between +0.4V and -0.1V. The i-E curves for the

different concentrations and the baseline currents in anode and cathode directions are

presented in figures 7 - 12. The figures 7 - 12 are not true current versus voltage curves,

they are actually the plots of the data points for voltage and current stored in the micro-

controller and hence the axes are named equivalent voltage and equivalent current. There

are 256 data points for current with values in the range 0 to 1023. The A/D converter in

the micro-controller has 10 bit resolution; hence the range of current data points is

between 0 and 1023. The triangular voltage waveform applied between the reference and

working electrode is updated 1024 times and the current readings are taken every time the

voltage is updated. 8 contiguous current data points are averaged in the micro-controller

to improve signal to noise ratio; hence there are 256 current data points. The current data

points stored in the micro-controller were extracted by using the MPLAB ICD2 In-

Circuit Debugger [MICR03].

38
1200

1000

800

600

39
equivalent current
400

200
5mM duck curve

Figure 5: i-E curve for 5mM concentration at 100 mV/s


anode slope
cathode slope

0
0 20 40 60 80 100 120
equivalent voltage
1200

1000

800

600

40
equivalent current
400

200
2mM duck curve
anode slope
cathode slope

Figure 6: i-E curve for 2mM concentration at 100 mV/s


0
0 20 40 60 80 100 120
equivalent voltage
1mM concentration

1000

900

800

700

600

41
500

400

equivalent current
300

200 i-E curve


anode slope

Figure 7: i-E curve for 1mM concentration at 100 mV/s


cathode slope
100

0
0 20 40 60 80 100 120
equivalent voltage
500 uM concentration

800

700

600

500

42
400

equivalent current
300

200

500 uM duck curve

Figure 8: i-E curve for 0.5mM concentration at 100 mV/s


100 anode slope
cathode slope

0
0 20 40 60 80 100 120
equivalent voltage
200 uM concentration

700

600

500

43
400

300

equivalent current
200

Figure 9: i-E curve for 0.2mM concentration at 100 mV/s


200 uM duck curve
100 anode slope
cathode slope

0
0 20 40 60 80 100 120
equivalent voltage
580

560

540

520

500

44
480

equivalent current
460

100 uM duck curve


440 anode slope
cathode slope

420

Figure 10: i-E curve for 0.1mM concentration at 100 mV/s


400
0 20 40 60 80 100 120
equivalent voltage
The i-E curves for 5mM and 2mM concentrations show chopped current curves,

this is because the current through the electrochemical cell is high enough to saturate the

op-amp circuits. To cover a wide range of concentrations, the potentiostat needs to have

different ranges of operation; a suggestion for the implementation of a potentiostat with

different ranges is presented in Figure 13. The important change in this schematic from

figure 3 is the insertion of a digitally controlled current switch [EG&G93]. The output

voltage of the current to voltage follower circuit depends on the value of the resistor

between the inverting terminal and the output of the op-amp. The digitally controlled

current switch, in effect changes the value of the resistance, thus providing the

potentiostat with different current ranges. The switch control is handled by the micro-

controller; the micro-controller has to determine current saturation and then switch to the

lower resistance.

45
Figure 11: Alternate circuit
46
The anode and cathode peaks for the 0.1mM concentration are masked by the

charging current of the electro-chemical cell; hence the lower limit for this potentiostat is

10-4 M concentration. The minimum detectable limit for cyclic voltammetric technique is

10-5 [KATZ04].

The potentiostat in this work has been optimized to work for the range between

0.1mM and 2mM (excluding extreme data points). The anode and cathode peaks after

baseline current extraction are tabulated in tables 3 and 4. The calibration curve for the

anode peak currents in the range 0.2mM to 1mM is presented in figure 14. The cathode

peak for the 2mM concentration does not result in saturation; hence the cathode peak for

the 2mM concentration is also included in the calibration curve for the cathode peak

currents in the range 0.2mM to 2mM range and is presented in figure 15. The correlation

factor between the current peaks and concentration of chemical for both anodic and

cathodic directions was found to be greater than 0.99.

47
Concentration of chemical Anode peak with respect Anode peak location
to baseline
100 uM 36 127

200 uM 70 80

500 uM 179 81

1 mM 351 81

2 mM 504 81

Table 9: Anode peaks after baseline current extraction

Concentration of chemical Cathode peak with respect Cathode peak location


to baseline
100 uM 51 195

200 uM 102 191

500 uM 225 191

1 mM 433 191

2 mM 507 191

Table 10: Cathode peaks after baseline current extraction

48
Anode peaks versus concentration

350

300

250

200

150

49
equivalent current
100

50

0
0 0.2 0.4 0.6 0.8 1 1.2
concentration in mM

Figure 12: Calibration curve of anode peaks for potassium ferri cyanide
Cathode peaks versus concentration

600

500

400

300

50
equivalent current
200

100

0
0 0.5 1 1.5 2 2.5
concentration in mM

Figure 13: Calibration curve for cathode peaks of potassium ferri cyanide
CHAPTER 7: FUTURE WORK

Future work will be to incorporate temperature and conductivity sensors,

determine effects of temperature and conductivity on measurements and incorporate the

same into calibration curves. A calibration look-up table can then be constructed with

respect to temperature and conductivity.

51
APPENDIX A: CODE

//author: ashwini

//filename: potentio.c

//created on: 13th aug 2003

#include "potentio.h"

#include <adc.h>

#include <timers.h>

unsigned int cnt, ad_temp, avg_ad_temp, peak_avg, loop_cnt;

ram int mem;

unsigned int peak_loc, an_peak, an_peak_loc,

cat_peak, cat_peak_loc, no_elements, data_out, peak, area, timer_count;

float an_slope, an_y_int, cat_slope, cat_y_int;

float rms_err_least, rms_err_left, rms_err_right, rms_err;

unsigned char incr;

#pragma idata my_data

ram unsigned int y_data[256];

char x_data[256];

#pragma idata
52
void ADC_handle(void); /*function prototype needed for goto below*/

void slope_area_peak(void);

#pragma code HIGH_INTERRUPT_VECTOR = 0x08

void high_ISR(void)

_asm

goto ADC_handle

_endasm

#pragma code

void slope_area_peak(void)

unsigned int peak, peak_loc;

int i, j, k, l;

float x,y, x_mean, y_mean, cov_xy, var_x, slope, y_int, left_slope, left_y_int,

right_slope, right_y_int;

53
//calculate anode peak

for(i = 0; i < 128; i++)

x_data[i] = i + 1;

if (i == 0)

an_peak_loc = i;

an_peak = y_data[i];

else

if (y_data[i] > an_peak)

an_peak_loc = i;

an_peak = y_data[i];

for (i = 128; i < 256; i++) //calculate cathode peak

x_data[i] = 255 - i;

if (i == 128)

cat_peak_loc = i;
54
cat_peak = y_data[i];

else

if (y_data[i] < cat_peak)

cat_peak_loc = i;

cat_peak = y_data[i];

peak_loc = an_peak_loc; incr = 0;

//calculate the knee of the curve for anode sweep

knee:for (i = (2 + incr); i < peak_loc; i++) //the first co-ordinate of right line runs through

2 and (peak_loc - 1)

x_mean = 0.0; y_mean = 0.0; var_x = 0.0; cov_xy = 0.0;

for (j = (0+incr); j <= peak_loc; j++) //calculate left and right slopes

x = x_data[j]; y = y_data[j];

x_mean += x; y_mean += y; var_x += x*x;

cov_xy += x*y;

if (j == (i-1))

{
55
x_mean /= (i - incr); y_mean /= (i - incr); var_x -= (i -

incr)*x_mean * x_mean; var_x /= (i - incr);

cov_xy -=(i - incr)*x_mean*y_mean; cov_xy /= (i - incr);

left_slope = cov_xy/var_x;

left_y_int = y_mean - left_slope * x_mean ;

x_mean = 0.0; y_mean = 0.0; var_x = 0.0; cov_xy = 0.0;

else

if (j == peak_loc)

x_mean /= (peak_loc+1 - i); y_mean /= (peak_loc+1

- i); var_x -= (peak_loc+1 - i)* x_mean * x_mean;

var_x /= (peak_loc+1 - i); cov_xy -= (peak_loc+1 -

i)*x_mean*y_mean; cov_xy /= (peak_loc+1 - i);

right_slope = cov_xy/var_x;

right_y_int = y_mean - right_slope * x_mean ;

x_mean = 0.0; y_mean = 0.0; var_x = 0.0; cov_xy =

0.0;

rms_err_left = 0.0; rms_err_right = 0.0;

for (k = (0 + incr); k <= peak_loc; k++) //calculate rmse

{
56
if (k < i)

rms_err_left += (y_data[k] - (left_slope * x_data [k] +

left_y_int)) * (y_data[k] - (left_slope * x_data [k]+ left_y_int));

else

rms_err_right += (y_data[k] - (right_slope * x_data [k] +

right_y_int)) * (y_data[k] - (right_slope * x_data [k]+ right_y_int));

rms_err_left = rms_err_left/(i-incr); rms_err_right =

rms_err_right/(peak_loc+1 - i);

rms_err = ((i - incr) - 1) * rms_err_left + (peak_loc -i +1)* rms_err_right;

rms_err /= (peak_loc - incr);

if (i == (2 + incr))

rms_err_least = rms_err;

slope = lef t_slope;

y_int = left_y_int;

else

if (rms_err < rms_err_least)

rms_err_least = rms_err;

slope = left_slope;
57
y_int = left_y_int;

if (incr == 0)

peak_loc = cat_peak_loc;

incr = 128;

an_slope = slope;

an_y_int = y_int;

goto knee;

else

if (incr == 128)

cat_slope = slope;

cat_y_int = y_int;

an_peak = an_peak - (an_slope * an_peak_loc + an_y_int);

cat_peak = (cat_slope * (256 - cat_peak_loc) + cat_y_int) - cat_peak;

58
#pragma interrupt ADC_handle

void ADC_handle(void)

PIR1bits.ADIF = 0; //clear interrupt flag

ad_temp = ReadADC();

//------------------------------------------------------------------

//update DAC contents-----------------------------------------------

//------------------------------------------------------------------

PORTCbits.RC1 = 0;

data_out = mem>>8; //upper 8 bits

putcSPI(data_out);

data_out = mem; //lower 8 bits

putcSPI(data_out);

PORTCbits.RC1 = 1;

//for testing purpose - update second DAC

PORTCbits.RC2 = 0;

data_out = ad_temp>>5; //first 3 ctrl bits = 000

putcSPI(data_out);

data_out = ad_temp<<3; //last 3 bits = 000

putcSPI(data_out);

PORTCbits.RC2 = 1;

//------------------------------------------------------------------

avg_ad_temp += ad_temp;
59
cnt++;

if ((cnt%8) == 0) //average 8 values

y_data[cnt/8 - 1] = avg_ad_temp/8;//take the average of the values

avg_ad_temp = 0;

if (cnt < 1024)

mem = mem - 0x08;

else

mem = mem + 0x08;

if (cnt == 2048)

mem = 0x1ff8;

PIE1bits.ADIE = 0;

void EnableHighInterrupts (void)

RCONbits.IPEN = 1; //enable interrupt priority levels

INTCONbits.GIEH = 1; // enable all high priority interrupts

INTCONbits.PEIE = 1; //enable all unmasked peripheral interrupts

}
60
void main(void)

start:

TRISC = 0x00; //configure ports C as output

TRISD = 0xF0; //configure pins 0 to 3 of PORT D as output and pins 4 to 7 as

input

CCP2CON = 0X0B; //Sp. events mode

CCPR2L = 0xC4;

CCPR2H = 0x04;

EnableHighInterrupts(); //enable global interrupt

OpenTimer3(TIMER_INT_OFF &

T3_16BIT_RW &

T3_SOURCE_INT &

T3_PS_1_4 &

T3_SYNC_EXT_OFF &

T1_CCP1_T3_CCP2); //configure timer3

OpenADC( ADC_FOSC_8 & ADC_RIGHT_JUST & ADC_8ANA_0REF,

ADC_CH1 & ADC_INT_OFF ); //configure ADC

OpenSPI(FOSC_4, MODE_01, SMPMID); //configure serial peripheral interface

mem = 0x1ff8; cnt = 0; avg_ad_temp = 0; peak_avg = 0; loop_cnt = 0; area = 0;

PORTCbits.RC1 = 1; //D/A conv i/p side

PORTCbits.RC2 = 1; //only for testing D/A


61
PORTCbits.RC1 = 0;

data_out = mem>>8; //upper 8 bits

putcSPI(data_out);

data_out = mem; //lower 8 bits

putcSPI(data_out);

PORTCbits.RC1 = 1;

//Delay10KTCYx(256000);

//Delay10KTCYx(256000);

//Delay10KTCYx(256000);

//Delay10KTCYx(256000);

//Delay10KTCYx(256000);

//Delay10KTCYx(256000);

//Delay10KTCYx(256000);

//Delay10KTCYx(256000);

PIE1bits.ADIE = 1; //enable adc interrupt

while(PIE1bits.ADIE == 1);

slope_area_peak();

Delay10KTCYx(256000);

goto start;

62
APPENDIX B: PCB LAYOUT

63
APPENDIX C: PARTS LIST

PART NO. DESCRIPTION DIGIKEY COST


CATALOG INFO
[DIGI04]
MAX5354 10 bit serial D/A Pg. no.573 $7.61
converter
CTX144 4 MHz oscillator Pg. no.722 $2.78

D6C 90 DPST switch Pg. no.1089 $0.94

PT5061 Single input dual Pg. no.1319 $16.2


output voltage
regulator
LM148 Quad op-amp Pg. no.522 $2.98
package
LM741 Op-amp - -

PIC18F452 Micro-controller - $9.38

Resistors

Potentiometers

Capacitors

64
REFERENCES

BAND02 Abhishek Bandyopadhyay, Grant Mulliken, Gert Cauwenberghs and Nitish


Thakor. "Vlsi Potentiostat Array for Distributed Electrochemical Neural
Recording" Circuits and Systems, 2002. ISCAS 2002. IEEE International
Symposium on, pg. no. II-740 - II-43.

BARD80 Allen J. Bard, Larry R. Faulkner. Electrochemical Methods - Fundamentals


and Applications, 1980.

BEAC99 Richard D. Beach, Falko v. Kuster, and Frances Moussy, December 1999.
"Subminiature Implantable Potentiostat and Modified Commercial Telemetry
Device for Remote Glucose Monitoring." IEEE Transactions of
Instrumentation and Measurement , 1999, pg.no. 937-942 Vol. 48, No.6.

BOCK23 John O.M. Bockris, Amulya K.N. Reddy, Maria Gamboa-Aldeco. Modern
Electrochemistry. second edition, 1923.

EG&G93 EG&G Instruments Corporation, “MODEL273A Potentiostat/Galvenostat


User’s Guide”, 1993.

KATZ04 “Biosensors & Bioelectronics Home page of Eugenii Katz”. Available at:
http://chem.ch.huji.ac.il/~eugeniik/faq.htm

KAKE95 Ralf G. Kakerow, Holger Kappert, Egbert Spiegel and Yiannos Manoli.
"Low-Power Single-Chip Cmos Potentiostat." The 8th International
Conference on Solid-Sate Sensors and Actuators, and Eurosensors IX.
Stockholm, Sweden, 1995. pg. no. 142-45. Vol. 1.

65
MAXI97 MAXIM, “MAX5354 10-Bit Voltage-Output DACs in 8-Pin μMAX”, 1997.
Available at:
http://ww1.microchip.com/downloads/en/DeviceDoc/39564b.pdf

MICR02 Microchip Technology, Inc. "Microchip Mplab C18 C Compiler Libraries".


2002. Available at:
http://ww1.microchip.com/downloads/en/DeviceDoc/51297c.pdf

MICR03 Microchip Technology, Inc. “Microchip MPLAB ICD-2 In-Circuit Debugger


Quick Start Guide”, 2003. Available at
http://ww1.microchip.com/downloads/en/DeviceDoc/51331a.pdf

MICR04
a) Microchip Technology, Inc. "Microchip Mplab C18 C User's Guide".
2004. Available at:
http://ww1.microchip.com/downloads/en/DeviceDoc/51288c.pdf

b) Microchip Technology, Inc. “Microchip PIC18FXX2 Datasheet”, 2004.


Available at:
http://ww1.microchip.com/downloads/en/DeviceDoc/39564b.pdf

c) Microchip Technology, Inc. “Microchip PICDEM 2 PLUS User’s Guide”,


2004. Available at:
http://ww1.microchip.com/downloads/en/DeviceDoc/51275b.pdf

NATI00 National Semiconductor, "LM741 Operational Amplifier", 2000. Available at:


http://www.national.com/ds/LM/LM148.pdf

NATI03 National Semiconductor, “LM148/LM248/LM348 Quad 741 Op Amps",


2003. Available at:
http://www.national.com/ds/LM/LM148.pdf

PEAT03 John B. Peatman. Embedded Design with the PIC18F452 Micro-controller.


Prentice Hall, 2003.

66
PROU03 Wesley A. Prouty, “Embedded system design for multi-purpose sensors to
detect and analyze environmental contaminants”, 2003.

REAY94 Richard J. Reay, Samuel P. Kounaves, Gregory T.A.Kovacs. "An Integrated


Cmos Potentiostat for Miniaturized Electroanalytic Instrumentation." IEEE
International Solid-State Circuits Conference.: IEEE, 1994, pg.no.162-63.

REAY95 Richard J. Reay, Samuel P. Kounaves, Gregory T.A.Kovacs. "Microfabricated


Electrochemical Analysis System for Heavy Metal Detection." The 8th
International Conference on Solid-State Sensors and Actuators, and
Eurosensors IX. Stockholm, Sweden, 1995, pg. no.932-35, vol. 2.

67
SALV__ Stan Salvador and Philip Chan. Determining the Number of
Clusters/Segments in Hierarchical Clustering/Segmentation Algorithms.
Florida: Florida Institute of Technology.

SAWY84 Donald T. Sawyer, William R. Heineman, Janice M. Beebe. "Chemistry


Experiments for Instrumentation Method”, 1984.

SHUL94 Mark C. Shults, Rathbun K. Rhodes, Stuart J. Updike, Barbara J. Gilligan,


and William N. Reining. "A Telemetry-Instrumentation System for
Monitoring Multiple Subcutaneously Implanted Glucose Sensors." IEEE
transactions on biomedial engineering, 1994, pg. no. 937-42.

TEXA01 Texas Instruments, "PT5060 Series, 9-W, +5V Input Dual-Output Integrated
Switching Regulator", 2001. Available at:
http://dkc3.digikey.com/PDF/T042/1247.pdf

68

Potrebbero piacerti anche