UBC Theses and Dissertations

UBC Theses Logo

UBC Theses and Dissertations

Design and performance of all-polymer acoustic sensors Sielmann, Christoph 2012

Warning
You are currently on our download blacklist and unable to view media. You will be unbanned within an hour.
To un-ban yourself please visit the following link and solve the reCAPTCHA, we will then redirect you back here.

Item Metadata

Download

Media
24-ubc_2012_fall_sielmann_christoph.pdf [ 13.34MB ]
Metadata
JSON: 24-1.0073105.json
JSON-LD: 24-1.0073105-ld.json
RDF/XML (Pretty): 24-1.0073105-rdf.xml
RDF/JSON: 24-1.0073105-rdf.json
Turtle: 24-1.0073105-turtle.txt
N-Triples: 24-1.0073105-rdf-ntriples.txt
Original Record: 24-1.0073105-source.json
Full Text
24-1.0073105-fulltext.txt
Citation
24-1.0073105.ris

Full Text

Design and Performance of All-Polymer Acoustic Sensors by Christoph Sielmann B.Sc., University of Alberta, 2005 A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF Master of Applied Science in THE FACULTY OF GRADUATE STUDIES (Electrical and Computer Engineering) The University Of British Columbia (Vancouver) August 2012 c© Christoph Sielmann, 2012 Abstract All-polymer flexural plate wave (FPW) sensors based on piezoelectric polyvinyli- dene fluoride (PVDF) thin-film with interdigital transducer (IDT) electrodes com- posed of poly(3,4-ethylenedioxythiophene) poly-(styrenesulfonate) (PEDOT:PSS) are studied, optimized, and assessed for their potential in various sensing appli- cations. PVDF offers unique opportunities as a substrate material due to its low stiffness, low cost, low density, and ease of preparation compared with many other piezoelectric materials commonly used in acoustic sensing applications. Substrates are prepared using a variety of material thicknesses of PVDF through a stretch- ing and poling process, followed by conductive IDT patterning by inkjet printing using a PEDOT:PSS-based ink. Sensor behaviour is studied using electrical and optical measurement techniques. Material and gas loading tests are performed to demonstrate gas sensing and polymer characterization applications. The devices demonstrate good adherence to analytical and FEA models, and although the high attenuation and low coupling coefficients of the substrate material reduce signal to noise ratio and quality factor, vapour sensing and polymer/absorbent material characterization applications are realized experimentally. Other factors such as en- vironmental influences are also considered, demonstrating a very high sensitivity to temperature and humidity changes. The sensors also demonstrate high sensitivity to variations in substrate and sensing layer stiffness, reducing their effective mass sensitivity, but also increasing their potential for simultaneous mass and stiffness measurements. Parameter sensitivity studies are generated to better optimize the design and improve performance of the sensor for specific applications, suggesting benefits from thinner substrates, lower in-plane stress, and more IDT fingers. ii Preface Statement of Contributions The work described in Section 2.1 largely reflects the work of Robert Busch, with John Berring assuming many of the fabrication responsibilities after Robert’s graduation. Sample and sensor preparation was largely conducted by either Robert or John, with both individuals also contributing to experimental work described in Chapter 4. Initial sensor IDT design described in Section 3.3.1 was prepared by Robert with assistance from Derek Tsan. Photographic assistance for Chapter 2 was provided by Derek Tsan. The test chamber was designed in part by Chou Fan and Robert Busch. Robert also assisted with the design and construction of the gas calibration system de- scribed in Section 2.5. XRD measurements mentioned in Section 2.3 were per- formed by Lisheng Wang. List of Publications or Submissions Some of the work presented in Section 2.1, Section 2.2, and Section 4.2.1 in- volving fabrication processes and mass loading results is addressed in: • J. R. Busch, “All-polymer flexural plate wave sensors,” Master’s thesis, The University of British Columbia, Canada, Oct. 2011. • J. R. Busch, C. Sielmann, G. Man, D. Tsan, K. Walus, and B. Stoeber, “Inkjet printed all-polymer flexural plate wave sensors,” in 2012 IEEE 25th Interna- tional Conference on Micro Electro Mechanical Systems (MEMS), pp. 571- 574, IEEE MEMS, Feb. 2012. Modelling results and equations from Section 3.6.2 discussing stiffness effects iii are included in C. Sielmann, B. Stoeber, and K. Walus, “Implications of a low stiff- ness substrate in lamb wave gas sensing applications,” in Proceedings of IEEE Sen- sors 2012, IEEE Sensors, Oct. 2012. Polymer material characterization theory and results discussed in Section 4.3.1 and Section 4.3.2 are included in C. Sielmann, J. Berring, K. Walus, and B. Stoeber, “Application of an all-polymer flexural plate wave sensor to polymer/solvent material characterization,” in Proceedings of IEEE Sensors 2012, IEEE Sensors, Oct. 2012. iv Table of Contents Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii Table of Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x List of Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii List of Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Design Constraints . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Acoustic Wave Microsensors . . . . . . . . . . . . . . . . . . . . 4 1.4.1 Acoustic Wave Types . . . . . . . . . . . . . . . . . . . . 6 1.4.2 Flexural Plate Waves . . . . . . . . . . . . . . . . . . . . 8 1.4.3 Gravimetric Sensing . . . . . . . . . . . . . . . . . . . . 11 1.5 Piezoelectric and Conductive Polymers . . . . . . . . . . . . . . 13 1.5.1 Piezoelectricity . . . . . . . . . . . . . . . . . . . . . . . 14 v 1.5.2 Polyvinylidene Fluoride . . . . . . . . . . . . . . . . . . 15 1.5.3 Poly(3,4-ethylenedioxythiophene) poly(styrenesulfonate) . 17 2 Materials and Methods . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.1 Fabrication Technology . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.1 Stretching and Poling . . . . . . . . . . . . . . . . . . . . 19 2.1.2 Tensioning and Framing . . . . . . . . . . . . . . . . . . 22 2.1.3 Electrode Printing . . . . . . . . . . . . . . . . . . . . . 23 2.1.4 Application of Sensing Layers and Backplane . . . . . . . 25 2.2 Optical Vibration Measurements . . . . . . . . . . . . . . . . . . 27 2.3 X-Ray Diffraction and FTIR Measurements . . . . . . . . . . . . 28 2.4 Electrical Wave Measurements . . . . . . . . . . . . . . . . . . . 28 2.5 Gas Calibration Station . . . . . . . . . . . . . . . . . . . . . . . 32 2.6 Modelling Methods . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.6.1 Finite Element Analysis . . . . . . . . . . . . . . . . . . 34 2.6.2 Analytical . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3 Sensor Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.1 Sensor Structure and Interface . . . . . . . . . . . . . . . . . . . 38 3.2 Acoustic Wave Form and Mode . . . . . . . . . . . . . . . . . . 40 3.2.1 Substrate Thickness . . . . . . . . . . . . . . . . . . . . 41 3.2.2 Wave Velocity . . . . . . . . . . . . . . . . . . . . . . . 41 3.3 Interdigitated Transducers . . . . . . . . . . . . . . . . . . . . . 44 3.3.1 Single Electrode Pair . . . . . . . . . . . . . . . . . . . . 45 3.3.2 Differential Isolated Electrodes . . . . . . . . . . . . . . 45 3.3.3 Differential Joined Electrodes . . . . . . . . . . . . . . . 49 3.3.4 Finger Ratios . . . . . . . . . . . . . . . . . . . . . . . . 52 3.3.5 Backplane . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4 Excitation Waveforms . . . . . . . . . . . . . . . . . . . . . . . . 60 3.4.1 Pure Sinusoid . . . . . . . . . . . . . . . . . . . . . . . . 62 3.4.2 Pulse Train . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.4.3 Binary Frequency Shift Key Waveform . . . . . . . . . . 63 3.4.4 Chirp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 vi 3.5 Sorptive Polymer . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.5.1 Diffusion and Fick’s Law . . . . . . . . . . . . . . . . . . 65 3.5.2 Sensing Polymer Design . . . . . . . . . . . . . . . . . . 67 3.6 Sensor Detection Performance . . . . . . . . . . . . . . . . . . . 68 3.6.1 Mass-only Response . . . . . . . . . . . . . . . . . . . . 69 3.6.2 Stiffness Effects . . . . . . . . . . . . . . . . . . . . . . 70 3.6.3 Effects of Fluid Immersion . . . . . . . . . . . . . . . . . 77 3.7 Wave Amplitude . . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.7.1 Comsol Model . . . . . . . . . . . . . . . . . . . . . . . 79 3.7.2 Energy Domain Transfer Modeling . . . . . . . . . . . . 79 3.7.3 Noise Floor . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.8 Wave Attenuation . . . . . . . . . . . . . . . . . . . . . . . . . . 84 3.9 Quality Factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 3.10 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 3.10.1 Frequency . . . . . . . . . . . . . . . . . . . . . . . . . . 91 3.10.2 Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 3.10.3 Amplitude . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.10.4 Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 3.11 Design Integration . . . . . . . . . . . . . . . . . . . . . . . . . 98 4 Performance Results . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.1 Environmental Effects on PEDOT:PSS and PVDF . . . . . . . . . 106 4.1.1 Ambient Temperature . . . . . . . . . . . . . . . . . . . 106 4.1.2 Ambient Humidity . . . . . . . . . . . . . . . . . . . . . 108 4.2 Polymer Application on PVDF Substrate . . . . . . . . . . . . . . 109 4.2.1 Polyvinyl Alcohol . . . . . . . . . . . . . . . . . . . . . 111 4.2.2 Polyvinyl Acetate . . . . . . . . . . . . . . . . . . . . . . 112 4.3 Gas Analyte Exposure . . . . . . . . . . . . . . . . . . . . . . . 114 4.3.1 Water Vapour / Polyvinyl Alcohol . . . . . . . . . . . . . 115 4.3.2 Polymer Characterization . . . . . . . . . . . . . . . . . . 119 4.3.3 Acetone / Polyvinyl Acetate . . . . . . . . . . . . . . . . 123 4.4 Fluid Immersion . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.5 Biosensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 vii 4.5.1 BSA Exposure to PVDF . . . . . . . . . . . . . . . . . . 126 5 Conclusions and Future Work . . . . . . . . . . . . . . . . . . . . . 129 5.1 Design Discussion . . . . . . . . . . . . . . . . . . . . . . . . . 129 5.2 Summary of Results . . . . . . . . . . . . . . . . . . . . . . . . . 134 5.3 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 A Electrical Schematics . . . . . . . . . . . . . . . . . . . . . . . . . . 148 B DSP Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 C LabView Programming . . . . . . . . . . . . . . . . . . . . . . . . . 164 D Matlab Programming . . . . . . . . . . . . . . . . . . . . . . . . . . 184 E Conference Material . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 F Delay Measurement Techniques . . . . . . . . . . . . . . . . . . . . 256 G Calibration System Rack Layout . . . . . . . . . . . . . . . . . . . . 272 viii List of Tables Table 1.1 Properties associated with various acoustic modes in acoustic sensors [1], [2], [3], [4] . . . . . . . . . . . . . . . . . . . . . 7 Table 1.2 Properties of PVDF used in analytical and finite element analysis (FEA) modelling . . . . . . . . . . . . . . . . . . . . . . . . . 17 Table 3.1 Sensor parameters, measured frequency, and attenuation for three sensors tested using the laser Doppler vibrometer (LDV) . . . . 86 Table 5.1 Predicted improvements in performance based on the new de- sign proposed in Figure 5.1 . . . . . . . . . . . . . . . . . . . 134 ix List of Figures Figure 1.1 Illustration showing a) Lamb wave symmetric Mode, b) Lamb wave antisymmetric Mode (FPW) . . . . . . . . . . . . . . . 8 Figure 1.2 PVDF acoustic velocity for a substrate generated using FEA . . 9 Figure 1.3 Multilayered sensor where hn indicates layer boundaries along the z-axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Figure 1.4 Multilayered gravimetric sensor showing substrate, affinity layer, and analyte gas . . . . . . . . . . . . . . . . . . . . . . . . . 12 Figure 1.5 Structure of PVDF . . . . . . . . . . . . . . . . . . . . . . . . 16 Figure 2.1 Two stretching/poling configurations . . . . . . . . . . . . . . 21 Figure 2.2 Contact pad methodology . . . . . . . . . . . . . . . . . . . 24 Figure 2.3 Completed sensor with leads . . . . . . . . . . . . . . . . . . 25 Figure 2.4 Schematic of LDV measurement system . . . . . . . . . . . . 28 Figure 2.5 Example output of LDV showing out of plane (z-axis) velocity of an acoustic wave travelling across a grey-scale image of the sensor surface with acoustic transmitting IDT on the left and receiving IDT on the right . . . . . . . . . . . . . . . . . . . . 29 Figure 2.6 Overview of electrical stimulation and data acquisition . . . . 31 Figure 2.7 Photo of data acquisition system . . . . . . . . . . . . . . . . 31 Figure 2.8 Owlstone Gas Calibration System in rack . . . . . . . . . . . 33 Figure 2.9 Comsol example showing a 2D model of the A0 mode of a 18 µm thick, 800 µm wavelength stress-free sensor . . . . . . . 35 Figure 2.10 Comsol example showing a 3D model of the electric field of two IDT fingers where the bottom side of the sensor is grounded 36 x Figure 2.11 Comsol example showing acoustic waves propagating outward from a central four finger IDT stimulated with a sinc function . 36 Figure 3.1 Shielded BNC electrode for electrical driving . . . . . . . . . 39 Figure 3.2 Test chamber configuration . . . . . . . . . . . . . . . . . . . 40 Figure 3.3 A0 wave propagation as a function of time, modelled with Com- sol for 800 µm wavelength, driven by sinc function . . . . . . 43 Figure 3.4 Non-apodized IDT configuration showing overlap amplitude and resulting frequency response, including side-lobes . . . . 46 Figure 3.5 Pattern used for single pair IDT design . . . . . . . . . . . . . 47 Figure 3.6 Pattern used for 800 µm thick isolated differential electrode design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Figure 3.7 Example electrical output of each channel of a fabricated sensor 48 Figure 3.8 Example data collected during humidity testing with polyvinyl alcohol (PVA) as the affinity layer and polyvinyl acetate (PVAC) as the blocking layer . . . . . . . . . . . . . . . . . . . . . . 49 Figure 3.9 Concept for joint-electrode differential sensor . . . . . . . . . 51 Figure 3.10 Illustration showing energy domain transfer of an 18 µm thick, 800 µm wavelength sensor where blue lines represent acoustic transmitting IDT fingers, red lines represents acoustic receiving IDT fingers, and the bright green line represents the reflection . 54 Figure 3.11 Analysis showing the effect of transmitter to total finger ratio on a) total received power and b) power mismatch across the receiver, in an impedance matched configuration for a 800 µm wavelength, 18 µm thick sensor for variations in attenuation . 56 Figure 3.12 Analysis showing the effect of transmitter to total finger ra- tio a) mean average received voltage and b) voltage mismatch across the receiver, in a high impedance receiver configuration for a 800 µm wavelength, 18 µm thick sensor for variations in attenuation . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Figure 3.13 Comsol model showing z-axis electric field strengths of a sen- sor with and without a backplane using Va =−50 V and Vb = 50 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 xi Figure 3.14 Electric field beneath an IDT finger based on a mathematical model using Equation 3.7 showing z-axis electric field strength with no backplane . . . . . . . . . . . . . . . . . . . . . . . 60 Figure 3.15 Results from a Comsol model showing z-axis electric field strengths of IDTs as a function of thickness using Va = −50 V and Vb = 50 V . . . . . . . . . . . . . . . . . . . . . . . . 61 Figure 3.16 Experimental comparison between an acoustic signal without a backplane (blue) and an acoustic signal with a backplane (red), measured electrically using the data acquisition (DAQ) at the electrical output IDT. The pulses on the left side of the plot show the electromagnetic interference (EMI) crosscou- pling, with acoustic waves beginning at 38 µs. Saturation of the blue EMI is the result of a higher gain setting causing clip- ping of the waveform. . . . . . . . . . . . . . . . . . . . . . 62 Figure 3.17 LDV fast Fourier transform (FFT) image of a wave generated with a PEDOT:PSS backplane travelling across a substrate . . . 63 Figure 3.18 Pulse train showing 12 pulses of 550 kHz followed by zero excitation, repeated at 25 kHz . . . . . . . . . . . . . . . . . 64 Figure 3.19 binary frequency shift key (BFSK) waveform consisting of eight pulses at 500 kHz and 2 pulses at 600 kHz, repeated at 25 kHz 64 Figure 3.20 Chirp with passband from 400 kHz - 550 kHz for use with thicker sensor substrates, intended to cycle at 25 kHz . . . . . 66 Figure 3.21 Theoretical mass sensitivity plot for three different substrate thicknesses, as a function of sensing/polymer layer thickness. The change in frequency represents the change due to an ex- posure of approximately 1 ppm of a generic gas to a generic polymer of 1000 [kg/m3] density with a partition coefficient of 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Figure 3.22 Theoretical change in frequency for a sensor with 60 MPa of in-plane stress, 800 µm wavelength, r = 1.2× 10−3 [m3/kg] (PVA [5]), ∆m = 1 µg/cm2 . . . . . . . . . . . . . . . . . . . 74 xii Figure 3.23 FEA-generated frequency change of an 18 µm thick, 800 µm wavelength sensor as a function of PVA layer thickness for a 125 MPa tensioned substrate . . . . . . . . . . . . . . . . . . 75 Figure 3.24 FEA-generated individual and cumulative contributions of dif- ferent physical effects on the resonance frequency of an 18 µm thick, 800 µm wavelength, untensioned sensor due to the ad- dition of a 1 µm thick PVA layer . . . . . . . . . . . . . . . . 75 Figure 3.25 FEA-generated normalized change in resonance frequency for an 18 µm thick, 800 µm wavelength sensor exposed to a 10% change in relative humidity as a function of PVA thickness . . 76 Figure 3.26 FEA-modelled normalized change in resonance frequency for an untensioned, 5 µm thick, 800 µm wavelength sensor of var- ious substrate materials . . . . . . . . . . . . . . . . . . . . . 76 Figure 3.27 Resulting steady-state amplitude of an 120 µm thick, 800 µm wavelength sensor stimulated with a periodic 100 Vpp sinu- soid, showing peak displacement of 2 nm and peak velocity of 7.9 mm/s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Figure 3.28 Showing the approximation of the frequency spectrum (blue) as a second order polynomial (red) which is then combined with normalized voltage noise to determine frequency noise . 83 Figure 3.29 Two channel frequency noise measurement of an 18 µm thick, 800 µm thick sensor with a backplane . . . . . . . . . . . . . 84 Figure 3.30 Measured attenuation of an 120 µm thick, 800 µm wavelength sensor stimulated with a wideband chirp . . . . . . . . . . . . 86 Figure 3.31 Measured attenuation of an 120 µm thick, 400 µm wavelength sensor stimulated with a wideband chirp . . . . . . . . . . . . 87 Figure 3.32 Measured attenuation of an 18 µm thick, 800 µm wavelength sensor stimulated with a wideband chirp . . . . . . . . . . . . 88 Figure 3.33 Plotted linear attenuation fits for two types of PVDF stock ma- terials, with markers showing sample points . . . . . . . . . . 89 Figure 3.34 a) Comsol model results of 120 µm thick, 800 µm wavelength sensor including complex material parameters, b) Wave ex- tracted from Comsol (red) and exponential decay fit (red) . . . 90 xiii Figure 3.35 Electrical measurement of a 18 µm thick, 800 µm wavelength sensor with no backplane showing both measured waveform as well as rectangular-filter FFT . . . . . . . . . . . . . . . . . . 91 Figure 3.36 FFT of an LDV-measured travelling wave of an 18 µm thick, 800 µm wavelength sensor using the isolated differential IDT configuration. For four pair excitation the acoustic receiving IDT is used as the transmitter, and for eight pair excitation the transmitting IDT is used . . . . . . . . . . . . . . . . . . . . 92 Figure 3.37 Eight received acoustic waveforms within the digital signal processing unit (DSP) buffer . . . . . . . . . . . . . . . . . . 93 Figure 3.38 Plot of a sinc function showing frequency amplitude and phase for pass and stop bands . . . . . . . . . . . . . . . . . . . . . 95 Figure 3.39 Frequency vs. phase measurements from sweeping through a large range of humidities, illustrating a difference in response between frequency and phase . . . . . . . . . . . . . . . . . . 96 Figure 3.40 Figures comparing the signal to noise ratio performance of var- ious delay measurement algorithms using an 120 µm thick, 800 µm wavelength sensor with no backplane . . . . . . . . . 98 Figure 3.41 Output power amplitude parameter sensitivity study using an 18 µm thick, 800 µm wavelength differential sensor design as a standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Figure 3.42 Mass sensitivity parameter sensitivity study using an 18 µm thick, 800 µm wavelength differential sensor design as a standard101 Figure 3.43 Stiffness sensitivity parameter sensitivity study using an 18 µm thick, 800 µm wavelength differential sensor design as a standard102 Figure 3.44 Quality factor parameter sensitivity study using an 18 µm thick, 800 µm wavelength differential sensor design as a standard . . 103 Figure 3.45 Minimum detectable mass sensitivity study including signal to noise ratio (SNR), quality factor, and mass sensitivity effects using an 18 µm thick, 800 µm wavelength differential sensor design as a standard . . . . . . . . . . . . . . . . . . . . . . . 104 xiv Figure 3.46 Minimum detectable stiffness sensitivity study including SNR, quality factor, and stiffness sensitivity effects using an 18 µm thick, 800 µm wavelength differential sensor design as a standard105 Figure 4.1 Temperature calibrations on single channel, 800 µm wave- length sensors without backplanes, showing both frequency as a function of time (left) and temperature (right) . . . . . . . . 107 Figure 4.2 Results of a PEDOT:PSS Resistance vs. Humidity study per- formed at room temperature . . . . . . . . . . . . . . . . . . 109 Figure 4.3 The signal amplitude of a 120 µm thick, 800 µm wavelength sensor with no backplane when exposed to variations in envi- ronmental humidity (shown as dew point temperature) . . . . 110 Figure 4.4 Results of cycling humidity levels on the top side of the sensor to assess contribution of variable humidity levels to signal noise 111 Figure 4.5 Frequency response of 18 µm thick, 800 µm wavelength, 125 MPa in-plane stress, differential sensor to varying loads of PVA . . 113 Figure 4.6 Frequency response of an 18 µm thick, 800 µm wavelength, 125 MPa in-plane stress, differential sensor to applied PVA . . 114 Figure 4.7 Phase response of a 18 µm thick, 800 µm wavelength sensor with 1 layer of drop cast PVA exposed to different humidities using building air . . . . . . . . . . . . . . . . . . . . . . . . 116 Figure 4.8 Phase response of a 18 µm thick, 800 µm wavelength sensor with 3 layers of drop cast PVA exposed to different humidities 118 Figure 4.9 Partition coefficient data showing the mass change convergence of 5.8522 g of PVA pellets when exposed to constant humidity 119 Figure 4.10 Phase response of a 18 µm thick, 800 µm wavelength sensor with 3, 4 and 5 layers (theoretically 2.2 µm/layer) of drop cast PVA exposed to different humidities . . . . . . . . . . . . . . 122 Figure 4.11 Calculated PVA material properties based on PVA/humidity testing and minimization of the analytical expressions . . . . . 122 xv Figure 4.12 An example of expected PVA behaviour as a function of hu- midity derived from PVA with higher hydrolyzation (99% vs. 87 - 89% used) and molar mass (150,000 g/mol vs. 85,000 - 124,000 g/mol used) [5], [6] with superimposed calculated mechanical behaviour from Figure 4.11 . . . . . . . . . . . . 123 Figure 4.13 Frequency change of a 18 µm thick, 800 µm wavelength sen- sor with a backplane when 4 mL phosphate buffered saline (PBS) is gradually applied. The sensing channel A is coated with polystyrene (PS) and the reference channel B is coated with PVAC, both of which provided an electrical barrier be- tween the ionic solution and backplane. . . . . . . . . . . . . 125 Figure 4.14 Measured propagation delays in both the sensing channel A and reference channel B when 100 µL of BSA was added to the 4 mL PBS solution on the sensor . . . . . . . . . . . . . . 127 Figure 5.1 Proposed sensor design . . . . . . . . . . . . . . . . . . . . . 133 xvi List of Symbols %RH Relative humidity as a percentage of vapour pressure to saturation vapour pressure α Attenuation αm Mechanical attenuation β Acoustic wavenumber of the fundamental mode, 2pi/λ ∆ fmin Minimum measurable change in frequency ∆m Change in mass per unit area due to mass loading or analyte sorption ∆mmin Minimum detectable mass change ∆Vnoise Signal noise maximum voltage δ Evanescent decay length of an acoustic wave through a liquid δm Mechanical loss tangent ε Permittivity ε0 Permittivity of free space εr Relative permittivity λ Wavelength ν Poisson ratio xvii ω Angular frequency of a wave Φ Analyte concentration in diffusion φ Wave signal phase ΦE Electric flux density ρ Density σ Stress vector a Fitting constant for parabolic computation of frequency noise A0 Normalized amplitude fitting constant for parabolic computation of fre- quency noise AD Deflection of a substrate deformed by an acoustic wave AF Area of a film Anoise Amplitude of the noise component of a signal Asignal Amplitude of a signal C Concentration c Molar concentration of an analyte in its carrier gas Cg Concentration of an analyte in a carrier gas Cs Concentration of an analyte in a solid absorbent or adsorbent C1,2,3,4 Fitting constants that do not vary with changes in the sensing layer Cbp Capacitance between an IDT finger pair and a backplane D Stiffness term of a thin plate d Thickness DF Diffusion coefficient xviii Dp Adjusted stiffness coefficient dP Piezoelectric charge constant E Electric field e Piezoelectric stress constant EY M Young’s modulus E ′Y M Adjusted Young’s modulus f Frequency F( f ) Fourier domain amplitude as a function of frequency f3dB Frequencies of a waveform where the frequency spectrum amplitude drops 3 dB below the peak at the centre frequency fres Resonance frequency g Piezoelectric voltage constant H Rotary inertia term of a thin plate J Analyte diffusion flux Jn Modal scaling factor for surface acoustic wave (SAW) and acoustic plate mode (APM) devices K Partition coefficient k Electromechanical coupling coefficient K(ν) Sensitivity factor for SAW devices M Linear inertia term of a thin plate Ma Molar mass of an analyte ms Equivalent mass of a substrate deformed by an acoustic wave xix m0 Initial mass of the sensing layer madd Increase in mass resulting from absorption or adsorption Mpoly Mass per unit area of a polymer affinity layer MPV DF Mass per unit area of the PVDF substrate P Pressure PV Electric dipole per unit volume (Polarization) Pnoise Power of the noise component of a signal Psat Saturation pressure of vapour under the given environmental conditions Psignal Power of a signal Q Quality factor R Ideal gas constant r Scaling ratio for a change in thickness due to a change in mass per unit area for an analyte/affinity layer combination S Material compliance matrix s Strain vector SD Stiffness sensitivity SM Mass sensitivity SAPM Mass sensitivity of an acoustic plate mode acoustic sensor SDM Sensitivity incorporating mass and thickness change of a flexural plate wave acoustic sensor SFPW Mass sensitivity of the fundamental antisymmetric mode of a flexural plate wave acoustic sensor Sliquid Mass sensitivity of a sensor where one side is exposed to a liquid xx SSAW Mass sensitivity of a surface acoustic wave acoustic sensor ST SM Mass sensitivity of a thickness shear mode acoustic sensor SNR Signal to noise ratio T In-plane stress term of a thin plate t Time tD Time delay Teq Equilibrium temperature U Total energy of an acoustic wave u Displacement of an acoustic wave, typically along a specific axis Uk Total kinetic energy of an acoustic wave Up Total potential energy of an acoustic wave V Voltage v Acoustic wave velocity Vnorm Normalized voltage vpa Acoustic wave phase velocity Vpoly Volume of a polymer x Position along the x-axis, the direction of wave propagation z Position along the z-axis, perpendicular to the direction of wave propaga- tion z0 z-axis position of the plane of no net force during flexure xxi List of Abbreviations ADC analog digtial converter APM acoustic plate mode BAW bulk acoustic wave BFSK binary frequency shift key BSA bovine serum albumin DAQ data acquisition DMA direct memory access DMSO dimethylsulfoxide DSP digital signal processing unit EMI electromagnetic interference FEA finite element analysis FFT fast Fourier transform FLL frequency locked loop FPW flexural plate wave FTIR Fourier transform infrared spectrometry HSP Hansen solubility parameters xxii IDT interdigital transducer LDV laser Doppler vibrometer MFC mass flow controller PBS phosphate buffered saline PCB printed circuit board PEDOT:PSS poly(3,4-ethylenedioxythiophene) poly-(styrenesulfonate) PPI parallel port interface PS polystyrene PVA polyvinyl alcohol PVAC polyvinyl acetate PVC polyvinyl chloride PVDF polyvinylidene fluoride QCM quartz crystal microbalance RMS root mean square SAW surface acoustic wave SMPS switch mode power supply SNR signal to noise ratio TSM thickness shear mode VOC volatile organic compound XRD x-ray diffraction xxiii Acknowledgments I wish to thank my supervisors, Dr. Konrad Walus and Dr. Boris Stoeber, who have both contributed tremendously to the development of this project. Their insight, encouragement, patience and understanding have embodied the very best of my expectations in supervisors. I wish to thank Dr. Edmond Cretu for offering his time to chair the committee as well as the use of his laser Doppler vibrometer, and Dr. Karen Cheung for providing us with phosphate buffered saline and bovine serum albumin (BSA) for our biosensing experiments. I would like to acknowledge the support provided by the BCFRST Natural Resources and Applied Science (NRAS) Endowment through the Research Team Program and the Fraser Basin Council through the BC Clean Air Research (BC CLEAR) program, as well as additional funding and equipment support received from NSERC and CFI. I wish to thank my lab colleagues, particularly Robert Busch and John Berring, both of whom have shown infinite patience and tenacity through all the printer and PVDF troubles. Lisheng Wang, Derek Tsan, Simon Beyer, and Anas Bsoul all served as (un)willing sounding boards at various stages throughout the project, often offering practical advice or new perspectives. I wish to thank my family for their encouragement, and particularly for the many hours of blank yet attentive stares while I rambled about my lab work and theories. Finally, I wish to extend my deep and unreserved appreciation and gratitude to my wife, Sara. Her endless patience, delicate yet persistent prodding, and willingness to support us through this experience have made this work possible. xxiv Chapter 1 Introduction Sensors are a fundamental part of modern technology. They are our portal into the physical world, and make possible intentional and controlled interaction with our environment. In technology, they can be found in every technical discipline monitoring voltage, position, temperature, chemical concentrations, light intensity, and a large collection of other physical parameters. In public policy development, sensors provide the feedback mechanisms that allow scientists and engineers to assess and monitor the safety of our living environment, the stability of our food production, and the quality of air that we breathe. Unfortunately, no sensor is perfect. Fabrication impurities, poor quality factors and signal to noise ratios, environmentally-induced inaccuracies, drift, and cost all affect the performance and viability of sensors in many applications. The need to mitigate some of these imperfections to meet application demand is a constant influence on sensors re- search, affecting all fields of engineering. This work examines the viability of using all polymer materials to fabricate an acoustic sensor with applications including gravimetric gas sensing, material me- chanical characterization, and biosensing. The sensor substrate is specially-treated piezoelectric polyvinylidene fluoride (PVDF), offering new potential in low cost, disposable sensing but also presenting many restrictions and design challenges. The behaviour of PVDF in fully integrated, all-polymer sensors is explored in gas sensing, material characterization, and biosensing applications. Different config- urations are tested and compared to theoretical/analytical approximations and fi- 1 nite element analysis (FEA) models. Parameter sensitivity studies are generated to better optimize the design and improve performance of the sensor for specific applications. Other factors such as the effects of temperature and environmental humidity are also investigated. 1.1 Motivation Recent work with piezoelectric PVDF in sensor technologies [7], [8] has demon- strated the possibility of using PVDF film in all-polymer acoustic sensing applica- tions. Acoustic sensing has many applications (see Section 1.4), including selective volatile organic compound (VOC) gas sensing, which in turn has applications in air quality monitoring and targeted chemical detection. An ideal sensor targeted for this application involves a matrix of individual acoustic sensor cells, each coated with a particular polymer VOC affinity layer. The cells selectively absorb targetted analyte gases and the sensor matrix provides the concentrations of particular VOCs in the test air. A good example of a successful system performing this function is discussed by Cai et al. [9]. This sensor represents the ideal concept driving the development of the sensor platform explored in this work, although it is not the only application considered. A platform based on piezoelectric PVDF and printable conductive polymers is intended to improve on current commercial sensor systems primarily by reducing cost in both the sensor and the sensor platform. Sensors that can be screen printed on conventional equipment on rolls of PVDF offer potentially significant cost sav- ings compared to photolithographic processes requiring a clean environment. The sensor platform also has the potential for being lower cost as the sensor design pro- motes lower frequency operation compared with conventional commercial surface acoustic wave (SAW) sensors. Other properties of PVDF, such as its low Young’s modulus (see Section 1.5.2), also open up new possibilities for different sensing functions not ideal for other SAW and flexural plate wave (FPW) acoustic sensing systems. 2 1.2 Objectives The objective of the research is to examine the behaviour of fabricated all-polymer FPW sensors based on PVDF, optimize their performance, and determine the fea- sibility for using them in sensing platforms for various applications. The primary applications considered are VOC detection and polymer material mechanical char- acterization. The following details the specific objectives: • Verify FPW acoustic and electronic transmission of a signal from a transmit- ter interdigital transducer (IDT) to receiver IDT; • Collect signals and assess how well the fabricated sensors match theoretical and finite element analysis (FEA) modelled behaviour; • Expose the sensors to various gases and mechanical loads and compare re- sults with the theory; • Assess suitability of the sensor for selective gas sensing applications; • Perform parameter sensitivity studies and propose improvements to sensor and sensor platform design. Leveraging the work performed by Busch [10], Man [11], and He [12], PVDF substrates will be tested using a laser Doppler vibrometer (LDV) to confirm the presence and propagation of FPW acoustic waves. Based on the wave velocities of the travelling waves, a gas calibration system and an electronic data acquisition (DAQ) platform will be designed and constructed to perturb the sensor and measure the response. A preliminary assessment will be made to ascertain the potential of the sensor platform in VOC measurement. In order to determine how best to optimize the sensor, operational behaviour will be measured and sensor performance will be compared with applicable the- ory. The behavioural aspects under investigation include acoustic and electronic wave frequencies, phase, amplitude, sensitivities, and attenuation. Theory will be explored both analytically and through FEA modelling. If good agreement between experimental and theoretical results is demonstrated, a numerical/analytical model will be constructed to predict sensor behaviour in different configurations. 3 This work will focus on the performance characterization and optimization of fundamental aspects of acoustic sensor design, including experimental, analyti- cal, and numerical experiments and theory. Experimental data will be produced through both electronic and optical (LDV) measurements. Theoretical data for com- parison with experimental results will be generated using Comsol (FEA) models and Matlab (analytical) projects. These same tools will then be used to predict the performance of the sensor in different physical configurations, assess usefulness in certain end applications, and propose revisions to the fabrication process and design to improve overall sensor performance. 1.3 Design Constraints In optimizing the design and fabrication procedure of the sensor, certain design constraints are assumed. These constraints are subject to funding and project scope and serve to limit the scope of the optimization procedure: • The device substrate material must be PVDF; • The device must be prepared with printable inks and cannot undergo any high cost or photolithographic processes; • Only the piezoelectric properties of the PVDF are being considered, meaning that alternative excitation and measurement modes such as electrostrictive excitation and optical measurement are not considered; • The optimization of the sensor is guided primarily by the application de- scribed in Section 1.1. These constraints are selected primarily to meet the intent of the research by emphasizing low cost fabrication and measurement systems. 1.4 Acoustic Wave Microsensors Acoustic wave microsensors are devices containing a vibrating substrate that varies measurably in its vibration as a function of one or more external stimuli. They have traditionally been seen as mass detectors capable of discerning very small 4 changes in mass through the impact of mass, volume, or density changes on sensor frequency or wave velocity. Mass sensing can be augmented to perform chemical sensing through the addition of a selective polymer layer that absorbs or adsorbs chemicals in vapour or liquid form. The form factor and design of the sensor is highly dependent on the nature of the acoustic waves involved, which in turn is often determined by the intended application. The most common types of acoustic wave sensors use SAW, FPW, and bulk acoustic wave (BAW) (thickness shear mode (TSM) waves and acoustic plate mode (APM) waves) [1]. Acoustic sensors require both an actuation and detection mechanism. The ac- tuation mechanism generates the acoustic vibrations in the substrate which is me- chanically coupled to the sensing material. Actuation can be performed through piezoelectric, electrostrictive, electromagnetic, optical excitation, or through direct mechanical coupling [2]. The actuation mechanism used depends on the proper- ties of the substrate material and the desired acoustic wave type. Once the waves have been generated and perturbed by the measurand, a detection mechanism then converts the acoustic wave energy from the acoustic domain back to the electrical domain for analysis. Detection occurs through direct electronic (admittance), ca- pacitive, piezoelectric, optical, or electromagnetic measurements, or through direct mechanical coupling [2]. The form of the actuation and detection mechanisms are often dependent on the sensor materials, operating frequencies, and acoustic wave types. There are multiple categories of information that can be extracted from acoustic waves, including signal resonant frequencies, phase/time delay, and amplitude/at- tenuation [13]. Resonant frequency devices operate continuously, discontinuously, or through frequency sweeping to locate the frequency corresponding to the largest amplitude in the range of interest. The signal maxima occurs at a particular reso- nance frequency where attenuation is minimized, with sharpness in the frequency domain represented by the mechanical quality factor of the sensor. Resonant fre- quency operation is available to most acoustic sensor designs. Phase/Time delay devices send a wavelet across a substrate where wave velocity varies as a func- tion of the material property being measured. These devices typically operate over longer distances to reduce the time resolution required for sensitive measure- ments. Amplitude/Attenuation devices directly measure the amplitude of the re- 5 ceived signal in one or more locations along the path of signal propagation. The amplitude or attenuation will vary as a complex function of the property being measured. Many references are available to discuss acoustic sensors in greater detail [1], [3], [13], [14], [15], [16]. 1.4.1 Acoustic Wave Types The four acoustic wave types commonly used in sensors have widely differing characteristics, including differences in transduction mechanism, form factor, and sensitivity. Their main applications and relative sensitivities are shown in Table 1.1. The sensitivity functions of each acoustic wave type can provide significant insight into the effectiveness of that acoustic type for specific applications. Mass sensitiv- ity based on relative resonant frequency change for each acoustic wave type is ST SM =−2/ρλ , (1.1) SAPM =−Jn/ρd, (1.2) SSAW =−K(ν)/ρλ , (1.3) SFPW =−1/2ρd, (1.4) where ρ represents density, λ is the acoustic wavelength, d is the substrate thick- ness, Jn is a modal scaling factor where n represents the harmonic of the oscillation such that J0 = 1/2 and Jn = 1 for n≥ 1, and K(ν) is a function related to the Pois- son ratio of the substrate [13]. Note that the TSM acoustic wave and SAW acoustic wave sensitivities are functions of wavelength such that smaller wavelengths (and correspondingly larger frequencies) are important in achieving higher sensitivities. In contrast, the APM acoustic mode and FPW antisymmetric mode (A0) acoustic mode (Equation 1.4) sensitivities depend on substrate mass per unit area. In all cases, mass sensitivity is a function of linear inertia, which is dependant on the amount of mass sent in motion by the acoustic wave. For devices where sensitiv- ity is a function of frequency, higher frequencies involve less penetration into the substrate material, setting less mass in motion and correspondingly rendering the sensor more sensitive to mass change. For devices where the substrate is thin, such 6 Acoustic Mass Viscoelastic Density Sensitivity Wave Applications Applications Viscosity TSM (BAW) Film thickness monitor, Particle detector, Chem- ical sensor (gas and liquid phase) Polymer transi- tions, Film res- onance, Chemi- cal sensors Yes −2/ρλ APM (BAW) Chemical sensors (liquid phase) Polymer curing, High freq vis- cosity Microliter viscometer −Jn/ρd SAW Chemical sensors (gas phase), Par- ticle detectors Polymer transi- tions, Film res- onance, Vapour sensing N/A −K(ν)/ρλ FPW A0 Chemical sensors (gas and liquid phase) Polymer tran- sitions, Vapour sensing, Gels Yes −1/2ρd Table 1.1: Properties associated with various acoustic modes in acoustic sen- sors [1], [2], [3], [4] as sensors based on FPWs, reducing the thickness of the substrate further reduces the mass set in motion by the wave, increasing the sensor sensitivity. Of the four available modes, the two of interest in this work are SAWs and FPWs, representing Rayleigh waves and Lamb waves respectively [13]. Rayleigh or Lamb waves involve travelling waves that propagate transversely across a medium. In many configurations, including the configuration considered here, the waves are generated by IDTs (Section 3.3). The type of wave generated by IDTs is dependent on the ratio of the substrate thickness (d) to acoustic wavelength (λ ), where a large d/λ produces SAW and a small d/λ produces FPW. There are many reasons why flexural plate waves were selected over surface acoustic waves for the scope of this research. The mass sensitivity of SAW devices depends primarily on operating frequency, whereas the sensitivity of flexural plate wave devices depends on sensor mass per unit area [17]. An all-polymer design necessitates a large wavelength and low frequency. The poor spatial resolution of inkjet and screen printing favours larger wavelengths, encouraging a FPW configu- 7 Figure 1.1: Illustration showing a) Lamb wave symmetric Mode, b) Lamb wave antisymmetric Mode (FPW) ration. The lower operating frequency also allows for less expensive, lower power electronics to serve as the DAQ interface. The low density of the PVDF compared to many other piezoelectric crystalline materials offers an immediate advantage, and the cost savings by using thinner PVDF film are notable. Working with thinner films is also easier as less tension must be applied during the stretching and poling phase of the film (see Section 2.1.1). 1.4.2 Flexural Plate Waves Flexural plate waves are travelling Lamb waves that occur when the plate or film thickness is much less than the acoustic wavelength. The waves involve the entire thickness of the substrate and can be separated into two categories: Symmetric and Antisymmetric [2]. Symmetric waves typically occur at higher frequencies than antisymmetric waves and are characterized by the substrate expanding and con- tracting along the z-axis. Antisymmetric waves occur when the top and bottom sides of the substrate move in tandem. Both waveforms are shown in Figure 1.1. In addition to operating in different modes, each mode has multiple harmonics. Only the fundamental symmetric mode 0 (S0) and antisymmetric mode 0 (A0) are considered in this work, as higher harmonics present too much attenuation travel- ling through the PVDF substrate [18]. Figure 1.2 shows the FEA-modelled A0 and S0 modes and the transition from FPW to SAW as d/λ increases, causing the two modes to converge and produce Rayleigh waves [2]. Although exact solutions for FPW waves exist [19], a good approximation for 8 Figure 1.2: PVDF acoustic velocity for a substrate generated using FEA Figure 1.3: Multilayered sensor where hn indicates layer boundaries along the z-axis A0 will be leveraged in this work. The approximation uses the differential equation for wave properties of thin plates subjected to in-plane tension. The approxima- tion is adequate in scenarios where d/λ is small and becomes exact where d/λ approaches 0. The approximation supports multilayered structures, viscoelastic loading media, and variations in material parameters, providing a good analytical basis for assessing sensor performance and optimizing its design. The equation, 9 following Wenzel [2] and Grate [4], is T ∂ 2uz ∂x2 −D∂ 4uz ∂x4 +H ∂ 4uz ∂x2∂ t2 −M ∂ 2uz ∂x2 = 0, (1.5) where uz is the displacement function along the z-axis of the film, x is the position along the direction of wave propagation, t is the time, and T = ∫ 0 z=−d σS,x(z)dz, (1.6) represents in-plane stress of the material (along the x-axis, or direction of wave propagation). σS,x is the x-component of stress in [N/m2]. The integration sums the stress of each layer in multilayer configurations and is in [N/m]. D = 1 3 N ∑ n=1 E ′Y M,n[(hn− z0)3− (hn−1− z0)3], (1.7) represents the stiffness term of the sensor shown in Figure 1.3 in [Nm], where n is the layer number, and z0 is the plane of no net force during flexure defined by z0 = ∑Nn=1 E ′Y M,n(h2n−h2n−1) 2∑Nn=1 E ′Y M,n(hn−hn−1) , (1.8) where E ′Y M is the adjusted Young’s modulus defined by E ′Y M = EY M (1−ν2) , (1.9) here EY M and ν are the material’s Young’s modulus and Poisson ratio respectively. A special case occurs when the sensor consists of only one layer. In this case, D simplifies to D = E ′Y Md 3 12 . (1.10) H = ∫ 0 z=−d ρ(z)(z− z0)2dz, (1.11) 10 is the resistance of the film to rotary inertia in [kg]. Finally, M = ∫ 0 z=−d ρ(z)dz, (1.12) is the linear inertia term in [kg/m2] of the sensor, integrated along the z-axis. A solution to the differential equation, neglecting attenuation cut-off modes and focusing strictly on the lowest order antisymmetric mode A0 phase velocity, is ω = β √ T +β 2D M+β 2H , (1.13) where ω is the angular frequency of the wave and β = 2pi λ , (1.14) is the wavenumber in [m−1]. The rotary inertia term, β 2H, can be neglected as it is at least one order of magnitude less than the linear interia term, M, provided that the entire thickness of the sensor is less than 140 µm and the wavelength is 800 µm, which applies to all experiments herein where experimental data is fit against analytical approximations. Dividing by β (Equation 1.14) gives us the FPW phase velocity as vpa = √ T +β 2D M . (1.15) These equations form much of the theoretical basis of this work. The solution for phase velocity can be used to derive mass sensitivity, stiffness sensitivity, and predict other behaviours of the fabricated sensors. 1.4.3 Gravimetric Sensing In acoustic gravimetric sensing based on FPW and SAW, the velocity of a travelling wave is perturbed by a change in mass or density along the path of propagation [18]. It is clear from Equation 1.15 that a change in mass per unit area of the substrate influences the velocity of the travelling wave, which can then be measured as either 11 Figure 1.4: Multilayered gravimetric sensor showing substrate, affinity layer, and analyte gas a shift in resonance frequency or propagation delay (see Section 1.4). A very com- mon application of gravimetric sensing is the detection of changes in ambient gas analyte concentrations with the use of a polymer affinity layer. An example con- figuration showing a FPW sensor in a gas analyte gravimetric sensing configuration is shown in Figure 1.4. In simple gas analyte gravimetric sensing applications, the following assumptions are made to simplify the models and theory: • The polymer layer is a viscoelastic medium perfectly coupled to the sensor substrate; • There is a linear relationship between gaseous analyte concentrations and analyte concentrations within the affinity layer, captured by the so-called partition coefficient; • Changes in gas analyte concentration affect only the density of the affinity layer, changing mass without affecting stiffness. Given these assumptions, the velocity of a FPW sensor (Equation 1.15) can be adapted to vpa = √ T +β 2D MPV DF +Mpoly+∆m . (1.16) where MPV DF , Mpoly and ∆m represent the mass per unit area of the substrate, poly- mer affinity layer, and absorbed gas analyte respectively. Similarly, the sensitivity 12 equation (Equation 1.4) can also be modified: SFPW = −1 2(MPV DF +Mpoly+∆m) . (1.17) Examples of gravimetric sensing systems are numerous both in research and in commercial equipment [4], [9], [17–23]. Examples also exist that do not rely on travelling acoustic waves, such as the work produced by Dong et al. based on can- tilever networks [24]. The optimization of affinity layer thickness will be discussed in greater detail in Section 3.5 and Section 3.6. 1.5 Piezoelectric and Conductive Polymers One of the design constraints is the use of piezoelectric and conductive polymers. Organic polymers are long chains of carbon-based molecular units that can have special mechanical or electrical properties to suit a wide range of applications. Depending on the polymers involved, benefits can include: • Low cost • Biocompatibility • Resiliency to corrosives and solvents • Low Young’s modulus • Low friction • Low density • Multifunctional surfaces • Conductive, semi-conductive, or insulating electric properties Two polymers, PVDF and poly(3,4-ethylenedioxythiophene) poly-(styrenesulfonate) (PEDOT:PSS), are emphasized and used in this research. 13 1.5.1 Piezoelectricity The piezoelectric effect is an electromechanical effect that permits a material to generate a voltage in response to applied mechanical stress [25]. The effect is found in particular materials containing a crystalline structure that deforms with applied stress in such a way that an internal dipole is created. If the crystalline structures are aligned within the material then a net dipole effect yields a field and corresponding voltage across the material. Similarly, the inverse piezoelectric effect generates a stress, and typically a strain, with the application of a voltage across a piezoelectric material. If Hooke’s Law applies to the material, which is often the case over small strains, then the following characteristic equations can be used to describe the piezoelectric effect [25]. ΦE = dPσ + εσE, (1.18) where ΦE is the electric flux density defined by ΦE = ε0E +PV , (1.19) where E is the electric field and PV is the polarization (electric dipole moment per unit volume). The piezoelectric charge constant, dP, is a tensor in [C/N] or [V/m], quantifying the piezoelectric strength of a material, σ is a vector representation of the stress applied along the various orientations of the material, and εσ is the electrical permittivity of the material under constant stress. A similar expression for mechanical strain resulting from the piezoelectric effect is s = SEσ +dtPE, (1.20) where s is a strain vector, SE is the material compliance matrix (inverse of the stiffness matrix) at a constant electric field, and dtP is the transposed piezoelectric charge constant. Other important relationships include g = dP σ , (1.21) 14 where g is the piezoelectric voltage constant in [V/Nm], and e = dP SE , (1.22) where e is the piezoelectric stress constant in [Nm/V]. Practically, when considering the effectiveness of a piezoelectric material, the electromechanical coupling coefficient, k, plays an important role. It is defined as k2 = Energy Converted Input Energy = d2P εσSE , (1.23) and is very important in assessing materials for acoustic sensing as it directly in- fluences the signal strength of the travelling acoustic and received electrical waves. A low coupling coefficient weakens the effects that the electrical and mechanical energy domains have on each other, restricting the ability to generate, guide, re- flect, and absorb acoustic waves propagating throughout the substrate. The low coupling coefficient of PVDF has been a barrier in other experimental sensing work [26], [27]. 1.5.2 Polyvinylidene Fluoride PVDF is a complex and interesting piezoelectric polymer chosen to form the sub- strate of the sensor examined in this work. It can be characterized as an orthotropic, thermorheologically stable long chain, semi-crystalline polymer with time-varying mechanical properties that under certain conditions can be treated using principles of linear hereditary viscoelasticity [28]. It demonstrates piezoelectric, pyroelectric, and ferroelectric properties both in a pure form and in a copolymer. The molecular unit cell of PVDF consists of a structure as shown in Figure 1.5 that is inherently polar and demonstrates good chemical resiliency [29]. As a sensing material, PVDF is already commonly used in a variety of sensory applications including non-destructive testing [8], [30], [31], acoustic biosensing [32], and curvature sensing [7], although it sees more applications as a chemically resistant building or coating material in specialized fluid applications [33], [34]. It demonstrates one of the highest piezoelectric constants among known organic compounds [28] which asserts itself predominantly through intermolecular forces 15 Figure 1.5: Structure of PVDF among aligned β -phase polymer chains [35]. PVDF comes in a variety of molecular weights with mechanical and electri- cal properties that vary widely depending on the PVDF type and method of for- mation [36], [37], [38]. Extruded PVDF films applicable to acoustic piezoelectric applications must first be stretched and poled to establish a high concentration of aligned, β -phase polymer chains. Once stretched, poled, cooled, and given 24 hours to relieve any internal stresses (discussed in Chapter 2), PVDF is a long-term stable piezoelectric material, with piezoelectric properties varying less than 15% over a one year period [29], [39]. The material constants shown in Table 1.2 were selected for modelling pur- poses based on a literature survey of published PVDF parameters [26], [28], [40], [41], [42]. The survey indicated a high degree of consistency in mechanical proper- ties such as stiffness and density, with some variation in electrical and piezoelectric parameters such as relative permittivity and piezoelectric coefficients. Analytical models use the indicated Young’s modulus, Poisson ratio and electromechanical coupling coefficient whereas FEA models use stiffness, piezoelectric coefficient, and permittivity matrices. Note that stiffness and permittivity matrices are sym- metric and not all coefficients are listed. For coefficients with imaginary components, the imaginary component repre- sents losses in the material [13]. In the case of the stiffness coefficient, as the material flexes, some of the flexural energy is converted into waste heat. Similarly, for relative permittivity, dielectric losses in the material allow some of the energy applied across the material to dissipate into waste heat. These effects are further discussed in Section 3.8. The piezoelectric charge constant is a special case where the imaginary component represents the losses associated with the reorganization of dipoles within the material that facilitate either the formation of charge or me- 16 Symbol Property Value Unit cE11 Stiffness 3.61+ i0.11 [GPa] cE12 Coefficients 1.61+ i0.04 [GPa] cE13 1.42+ i0.04 [GPa] cE22 3.13+ i0.10 [GPa] cE23 1.32+ i0.04 [GPa] cE33 1.60+ i0.12 [GPa] dP,31 Piezoelectric 13.7+ i2.34 [pC/N] dP,32 Charge Constant 1.95+ i0.51 [pC/N] dP,33 −30.0− i4.09 [pC/N] dP,24 −19.6− i1.93 [pC/N] dP,15 −19.9− i0.90 [pC/N] εr11 Relative 6.6+ i0.3 εr22 Permittivity 8.2+ i0.2 εr33 7.4+ i0.2 EY M Young’s Modulus 1.3−2.8 [GPa] ν Poisson’s Ratio 0.35 kt Transverse Elec- tromechanical Coupling Coeffi- cient 0.12−0.15 α Attenuation 19 [dB/cm/MHz] Table 1.2: Properties of PVDF used in analytical and FEA modelling chanical movement, losses impacting both mechanical and electrical domains (see Equation 1.18 and Equation 1.21). PVDF from multiple sources was used, including McMaster Carr Inc., Solef R©, and Professional Plastics Inc. Of the varieties tested, only the McMaster Carr PVDF film demonstrated good piezoelectric properties under the stretching and poling configuration used to prepare the films in this work. Additional research is ongoing to determine the cause of the low β -phase content in the other purchased films. 1.5.3 Poly(3,4-ethylenedioxythiophene) poly(styrenesulfonate) PEDOT:PSS is an organic, conductive polymer blend that forms the basis of the ink used in the electrode printing process described in Section 2.1.3. The ink consists 17 of 95 wt% Clevios PH 1000 PEDOT:PSS, 5 wt% dimethylsulfoxide (DMSO) and 0.1 wt% Triton X100 (surfactant). In thin layers, PEDOT:PSS can appear transpar- ent, encouraging its use in transparent coating applications, organic LED displays, solar cells, anti-static packaging, and many others applications [43]. It is biocom- patible, has a high electrical conductivity, and good thermal and chemical stability [44]. The addition of poly(styrenesulfonate) to the poly(3,4-ethylenedioxythiophene) stabilizes the PEDOT ions [43] while the DMSO solvent is shown to improve the conductivity of the deposited film [43]. Unfortunately, PEDOT:PSS film is also very brittle [44], and changes properties when exposed to varying levels of humidity [45]. Investigating this behaviour in an effort to understand sensor performance in different environmental conditions forms a part of this work. The Triton added to the ink solution acts as a surfactant to help in adhering the ink to the hydrophobic PVDF film. Further information on PEDOT:PSS and the ink used in this work can be found in Section 2.1.3 and in the work by Man [11]. 18 Chapter 2 Materials and Methods A number of materials and methods formed the basis of the experimental and theo- retical portion of this work. This section describes the sensor fabrication procedure, testing equipment, and modelling methodology used. 2.1 Fabrication Technology The fabrication procedure of the sensors will only be addressed briefly in this docu- ment as the majority of the work was developed and published by others [11], [46]. Fabrication of the sensors begins with sheets of unpoled PVDF purchased directly from a supplier. Sections of the material are cut out, stretched within an oven, poled using an electric field, then set aside to cool. The cooled films are framed either with or without pre-applied tension, then printed with an IDT pattern. The final step involves connecting leads to the sensor to allow interfacing the substrate with electrical equipment. 2.1.1 Stretching and Poling The stretching and poling of PVDF is necessary to convert purchased PVDF from a primarily α-phase configuration (non-piezoelectric) to an aligned β -phase con- figuration. The polymer chains form lamellae which in turn produce spherulites during cooling after extrusion [35]. The random alignment of the CH2 and CF2 intramolecular units along the polymer chains represents the α state of the mate- 19 rial. The stretching process deforms the spherulites in such a manner as to align the intramolecular units and create dipoles along the polymer chains. This process is very sensitive to polymer temperature, duration, and PVDF mechanical characteris- tics [36]. The poling process involves the application of an electric field through the film to align the β -phase dipoles in the same direction, creating a net dipole through the material that demonstrates piezoelectric properties (Section 1.5.1). Measure- ments of film phase content is discussed further in Section 2.3. Stretching and poling of functional, experimental films used in testing is per- formed using a vice clamp to stretch the material in a temperature chamber and electrodes to apply the field across the film as shown in Figure 2.1a. Although an automated stretching and corona pole system is in development [47] as shown in Figure 2.1b, it was not used to produce any substrates within the scope of this work. Stretching and poling is performed in accordance with the methodology described by Huan et al. [48]. A 10 cm by 7.5 cm piece of unpoled PVDF is first cut out of sheet stock and clamped in the vice in the closed position. The apparatus is placed in a temperature-controlled chamber and raised to 120◦C. The vice is then gradu- ally opened at a rate of approximately 6.7 mm/min until the film has stretched to 4.5× its original length [46]. The film is allowed to cool while still under tension in the vice, followed by the placement of electrodes on either side of the film. With the electrodes in place, the film is reheated to 120◦C and an electric field of 125 MV/m is applied to the film for 50 minutes [10]. The film must remain at high temperature during poling to allow the β -phase polymer chains to align with the applied electric field. Once the poling time has elapsed, the film is cooled with the field still applied, the field is deactivated, and the apparatus is removed from the oven with the film still under tension. The effect of heating and cooling the film under tension is a subject of ongoing research within the group. There is evidence, both in experimental work within the group, and through other research [49] that the cooling of polymers under tension can result in thermal stress stored in the film. The existence of latent stress is relevant to the sensor behaviour and therefore needs to be taken into account in both the pretensioning process (Section 2.1.2) as well as in fitting untensioned sensors to theoretical models (Section 2.6). 20 (a) Manual stretching and poling using a static field, contact poling method (b) Automated stretching and poling using corona poling Figure 2.1: Two stretching/poling configurations 21 2.1.2 Tensioning and Framing As shown in Equation 1.15, in-plane stress plays a significant role in the phase velocity of the A0 FPW mode. Adjusting film stiffness and mass per unit area is difficult, leaving film stress as the most easily adjusted parameter for guiding op- erating frequency. Applying more stress also reduces the sensitivity of the sensor to changes in tension and stiffness without impacting the mass sensitivity. Pre- liminary measurements with the LDV (see Section 2.2) suggested that the tension was necessary for acoustic wave propagation across the film [10], although further experimentation, as discussed in Section 4.3, with films of varying tensions has shown this not to be the case. To tension the film after poling and stretching, the film is first left to cool in the vice while under tension. A clamping apparatus designed for framing the sensor is secured with two frame pieces, and a torque wrench is connected to the vice and torqued to apply a stress of 110 ± 20 MPa to the film. With the film suitably tensioned, bolts are tightened in the clamping apparatus to force the top and bottom frame pieces together, squeezing the film between them and removing the tensile load from the vice. Eight screws are then secured in the frame, tightened until nearly cross-threaded, and the clamping apparatus is removed. In the event of clamping films under 30 µm in thickness, an additional piece of unpoled PVDF is added between the poled film and the top frame to act as a gasket and help prevent the poled film from slipping and relieving stress. If the film is not to be pretensioned, then it is removed from the vice prior to framing and left to settle for 48 hours. It was observed that if the film was framed within 8 hours after cooling, cold creep would occur and the film would tension itself. This behaviour is not unexpected [39] but does reinforce the possibility of stored elastic energy within the stretched and poled films. No fully strain-relieved films have been successfully produced, with all sensors in untensioned configura- tions (even without frames) exhibiting a phase velocity that is consistent with some in-plane stress. The framing of untensioned sensors is similar to framing tensioned sensors, although adjustments are required to minimize wrinkling. The application of a small amount of stress perpendicular to the direction of stretching and poling seems to help reduce wrinkling of the framed sensor. 22 2.1.3 Electrode Printing Once the film has been framed and shows a wrinkle-free surface, electrodes are inkjet printed onto one side of the film substrate. Printing an organic conductive polymer using an inkjet printer allows for low-cost, rapid variation of designs [11], [50]. The printing system was custom designed and fabricated for printing a variety of different inks with line widths down to 100 µm resolution. Printing of the electrode pattern using PEDOT:PSS ink described in Section 1.5.3 is done with a Microfab Inc. 40 µm orifice size piezoelectric nozzle. The minimum line width suggests that a 400 µm wavelength acoustic sensor is the smallest possible design using these tools [46]. Other printing equipment and technologies may be able to achieve thinner line widths, permitting small wavelengths. In preparation for printing, the printer is commanded to execute several dry cycles. This practice allows the printing platform to warm which helps the ink dry more quickly during printing, yielding a better print job. The sensor is placed on the printing platform and is aligned to ensure that the printing occurs over the poled area of the substrate. The printing program prints the entire sensor design continuously. Thin lines such as the IDT fingers are printed first, followed by pads. Each printing cycle deposits three layers of ink, and the cycle is repeated typically three times in order to achieve a visible, highly conductive pattern on the substrate. The printing of the IDT lines requires a special sequence developed by Man [11] to maximize the consistency of the lines. If ink drops are placed closely in a linear configuration, there is a tendency for the drops to coalesce due to the hydrophobic- ity of the substrate surface and surface tension of the ink, which causes a beading effect that may result in open and short circuits. The sequence first involves placing drops 200 µm apart, followed by another pass at 200 µm but at a 100 µm offset, and then a third pass at 100 µm spacing interconnecting the drops from the pre- vious two passes. This methodology allows drops to dry on the substrate without causing beading [11]. Ambient humidity and temperature both highly impact the performance of the print. Research is ongoing to determine the best humidity and temperature profiles for the ink and printing equipment being used. Once the printing is complete, the sensor is set to dry for 2 hours at which point 23 Figure 2.2: Contact pad methodology leads are connected to the PEDOT:PSS pads to facilitate an electronic interface be- tween the sensor and DAQ. Due to the brittle nature of PEDOT:PSS, an intermediate layer of copper tape is attached to the substrate surface. The copper tape is bonded to the substrate with an adhesive and conductive glue and then further secured and electrically connected to the IDT pads with conductive carbon wire bonding glue. The leads are 10 cm long, 30 AWG single core aluminium wires with two leads re- quired for each IDT. The ends of the leads are stripped and then taped to the frame of the sensor using Kapton tape to help immobilize the leads. The leads connect- ing to the substrate are manoeuvred above the copper tape then secured with more carbon bonding glue. Care is taken to isolate the carbon glue bonding the wire to the copper and the glue bonding the copper to the PEDOT:PSS as the glue is stiff and flexure along the y-axis of the substrate can cause the PEDOT:PSS to be lifted off the surface of the substrate. Various elements of the contact pad are shown in Figure 2.2. A sensor with leads applied but no affinity layer or backplane is shown in Figure 2.3. 24 Figure 2.3: Completed sensor with leads 2.1.4 Application of Sensing Layers and Backplane With the sensor printed and bonded to leads, the underside of the substrate can now be coated with conductive material and/or polymer affinity layers. When used, a backplane must be placed on the underside of the sensor to provide the increase in capacitance needed to boost signal strength as discuss in Section 3.3.5. Polymer affinity layers may be added to either the top and/or bottom of the sensor, but in scenarios where polymer layers are added and then removed, it is best to apply the layers to the bottom of the sensor to minimize damage to the IDTs during polymer removal. Three methods have been explored to apply polymer layers to the sensor underside: Air brush spray-coating, inkjet printing, and drop casting. Spray-coating is a common method of applying polymer layers to gas analyte acoustic sensors [17]. The method involves dissolving the polymer in a solvent and using compressed air or nitrogen to spray the polymer through a nozzle over a mask dictating the deposition pattern. The large size of the sensor in this work permits the 25 use of a Badger Basic Spray Gun driven by compressed air. A cardboard mask was constructed to ensure that only the desired area beneath the IDTs was coated. The mask is placed on the sensor substrate, and the airbrush is activated facing away from the substrate and then swept quickly over the mask once a consistent spray is achieved. Spraying a predictable and consistent amount of polymer for comparison with theoretical predictions proved difficult. Examination of the deposited polymer showed inconsistent coating and substantial beading due to the large droplet size of the spray. This method of applying polymer was not used in any experimental work described herein. Inkjet printing polymer onto the substrate is performed in much the same way that IDT patterns are printed. A low viscosity polymer solution is produced us- ing solvents compatible with the printer tubing and nozzle. The printer is then configured to print a grid pattern on the sensor substrate at 100 µm drop spacing. Although more successful than the spray-coating method, the polymers form vis- ibly inconsistent layers due to beading resulting from the high hydrophobicity of the PVDF surface. The mass of the printed polymer can be determined using a high sensitivity scale and weighing the sensor before and after printing. Experimen- tally, films produced using this method exhibited an unexpectedly low density as revealed through theoretical fitting [46]. Visual examination of the printed layers showed poor overlap between layers and a matte texture suggesting inconsistent flatness across the surface of the film. Printing multiple, superimposed layers may have caused air entrapment between the layers, reducing the density of the printed layers. The printed films are dry by the time the printing is complete. Drop casting involves the dissolution of a polymer in a solvent and the use of a pipette to drop a small quantity of solvated polymer on to the PVDF surface. It was found in this case that the hydrophobicity of the PVDF serves as an asset as once the solution is deposited, it can be carefully drawn over the desired surface area using the tip of the pipette. The solution then self-smooths over the coated area, leaving a reasonably consistent layer. This method allows for the rapid, accurate, and consistent coating of sensors, and is used extensively in experimental work. 26 The thickness of the resulting cast film is determined by d f ilm = CVsolρsol AFρpoly , (2.1) where C is the unitless mass concentration ratio of polymer within the solvent, and AF is the area of the film covered. For a typical 10 µL application of polyvinyl alcohol (PVA) at 2% solution in water, cast over the receiving IDT and half the transmitting IDT, the deposited affinity layer thickness is 2 µm. Backplanes consisting of PEDOT:PSS are applied exclusively using this tech- nique. For drop cast PEDOT:PSS consisting of layers thinner than 3 µm, one hour of drying time is necessary. Thin polymer layers (less than 3 µm in thickness, 2% solution by mass) such as polyvinyl acetate (PVAC) and PVA dry within 30 minutes of drop casting the solution on the substrate in a well ventilated area. Drop casting is also used in similar sensor assemblies [21], [51]. 2.2 Optical Vibration Measurements Optical vibration measurements were performed using a Polytec MSA-500 Scan- ning Laser Doppler Vibrometer. A scanning LDV uses one or multiple lasers to scan the two dimensional surface of a reflective vibrating body. The vibrations cause a Doppler shift in the reflected laser light that can be detected and measured. Either velocity or displacement can be measured, although the velocity detection mode is used exclusively in this work. The data is presented as a frequency spectrum where 360 degrees of phase information is available for each point in two dimensional space (limited by grid size) for each frequency (limited by FFT size). The ve- locity measurement can be integrated using frequency to determine displacement. The LDV also incorporates a function generator capable of electrically driving the acoustic output IDTs with either continuous sinusoidal waveforms or spread spec- trum chirps. The output of the LDV must be boosted using a TREK Model 2100HF piezodriver, which is capable of providing 50× voltage signal gain without signifi- cant distortion up to approximately 1.5 MHz. A schematic of the setup can be seen in Figure 2.4. An example LDV output, Figure 2.5, shows a travelling wave from the acoustic 27 Figure 2.4: Schematic of LDV measurement system output IDT (left) to the acoustic input IDT (right) resulting from a series of chirp waveforms. The image represents the out-of-plane (z-axis) velocity of the surface of the sensor at its resonance frequency. The LDV is used to measure acoustic wave amplitude, quality factor, and attenuation. 2.3 X-Ray Diffraction and FTIR Measurements Material characterization systems such as x-ray diffraction (XRD) and Fourier trans- form infrared spectrometry (FTIR) expose a sample to x-ray and infrared energy (respectively) and detect the interaction between that energy and molecules within the sample. The energy absorbed and/or re-emitted by the sample provides in- sights into the nature of the molecular bonds and orientations within the sample. These technologies are used for examining PVDF prior to stretching and poling, after stretching, and after stretching and poling. Measurements of stretched and poled PVDF demonstrated a significant increase in β -phase content consistent with other published works [10]. As these results have already been addressed in works by Robert Busch, they will not be discussed in detail here [10], [46]. 2.4 Electrical Wave Measurements An overview of the electrical wave DAQ is shown in Figure 2.6. The DAQ was designed, programmed, and tested within the scope of this work for the purpose of 28 Figure 2.5: Example output of LDV showing out of plane (z-axis) velocity of an acoustic wave travelling across a grey-scale image of the sensor surface with acoustic transmitting IDT on the left and receiving IDT on the right examining the performance of an all-polymer FPW sensor. Electric wave measurements use a DAQ to collect and process the electrical energy converted piezoelectrically from the substrate by an IDT acoustic receiver. As the acoustic waves pass the acoustic receiving IDTs, part of the energy of the travelling wave is converted to electrical energy. The electrical energy passes to a very high impedance (2 GΩ differential input impedance) AD8253 instrumenta- tion amplifier configured for either 100× (no backplane) or 10× gain (with back- plane). The purpose of the amplifier is to minimize the flow of charge from the acoustic receiving IDT to maintain a voltage on the IDT greater than the noise (see Equation 1.18). Preliminary capacitance calculations (see Section 3.3) suggest a 29 sensor output impedance in configurations lacking a backplane in excess of 10 GΩ, rendering matching between the sensor output and electronic input practically un- realizable. Future work will examine impedance matching once a sensor with a sufficiently low output impedance can be reliably fabricated. This goal may be realized by reducing film thickness and using a backplane to increase the capaci- tance of the IDTs. Charge amplifiers may also provide a method for electrical power collection by providing a very low input impedance but measuring the current or charge produced piezoelectrically in the receiving IDT. The DAQ consists of two input instrumentation amplifiers to accommodate a fully differential sensor topology. Both sensor channel output signals are fed through an analog digtial converter (ADC) buffer to a two channel, 16-bit, 168 MHz, Delta Sigma AD9262 ADC. The ADC is configured in a pipelined oversampling mode that simultaneously measures voltage from both channels and pipes the in- formation on request to a Blackfin 506F digital signal processing unit (DSP). The DSP operates at 400 MHz and uses the direct memory access (DMA) and the par- allel port interface (PPI) modules to sample the ADC at rates up to 50 MHz in 10 - 50 µs bursts depending on the sensor A0 frequency. The data is averaged between 1000 and 5000 times per second and sent to a LabView application 8 times per second. A custom DSP/ADC configuration was constructed as a cost effective and customizable lab tool to pre-process the 200 MBit/s of data being extracted from the sensor. Complete schematics can be found in Appendix A and DSP program- ming can be found in Appendix B. A photo of the fabricated DAQ is shown in Figure 2.7. In the original configuration, a 4-pole bandpass filter was also included to fur- ther amplify the input signal and reduce out-of-band noise. Although the filter did help reduce 60 Hz and higher frequency switching noise from a switch mode power supply (SMPS) and other nearby noise sources, the phase shift introduced by the filter complicated phase and delay measurements. The Sigma Delta converter in the ADC was leveraged in its place to remove high frequency noise and 60 Hz noise was predominantly removed by DSP and LabView filtering. The packets of averaged wave data from both channels are passed by the DSP to a dedicated laptop running LabView. The LabView application collects the data from the DSP, and calculates, monitors, displays, and stores channel frequency, 30 Figure 2.6: Overview of electrical stimulation and data acquisition Figure 2.7: Photo of data acquisition system 31 phase, delay, and amplitude information. The application also has the ability to interact with the gas calibration system, execute schedules of commands to vary gas concentrations exposed to the sensor, and trend all results. The LabView pro- gramming is located in Appendix C. With the exception of oscilloscope waveform snapshots, all of the electronic data collected and experiments performed utilized the DAQ and software described in this section. 2.5 Gas Calibration Station The Gas Calibration System is a rack-mounted assembly constructed to provide a platform for generating precisely controlled vapours and analyte gases to expose to sensors. The core of the system comprises the Owlstone OVG-4 gas calibration generators, as shown in Figure 2.8. The system is inspired by similar systems used in acoustic gravimetric sensing research [23], [52]. The complete rack assembly design is shown in Appendix G. The calibration system consists of the following modules and functionality: • OFC-1 Mass Flow Controller – Gas mass flow controller (MFC) 100 mL/min (off) - 3000 mL/min – Controllable from LabView project – Configured as bypass flow control for OVG-4 modules • OVG-4 Gas Generator (×2) – Oven for liquid analyte diffusion tube, controllable from 25◦C to 120◦C – Gas MFC 50 mL/min (off) - 500 mL/min – Bypass located downstream connected to the OFC-1 module – Can output VOC gas concentrations from approximately 0.1 - 200 ppm, depending on the analyte. – Oven and MFC controllable from LabView project • OHG-4 Humidity Generator – Bubbler for generating humid air 32 Figure 2.8: Owlstone Gas Calibration System in rack – Manual needle valves that regulate relative output of dry and wet air – Gas MFC 300 mL/min - 3000 mL/min for regulating total flow output – Dew point humidity sensor and display (not readable from LabView) – Gas MFC is controllable from LabView project, but output humidity must be set and monitored manually – Low closed-loop feedback humidity control All components upstream of the sensor are interconnected with stainless steel or glass tubing; venting and exhaust outputs are vinyl or polyvinyl chloride (PVC) tubing. The gas calibration system is used to generate VOC-laden and humid air for all tests discussed in this work. For testing where accuracy and consistency of data 33 is not critical, lab/building air is used. When higher accuracy tests are performed, such as those described in Section 4.3.1 and Section 4.3.2, a compressed air tank is used as the air source. 2.6 Modelling Methods Numerous modelling tools were used to verify the behaviour of the fabricated sen- sors against expected results and extrapolate their behaviour in different configu- rations. FEA models more complicated structures and materials by breaking down objects into a fine mesh, applying differential equations and boundary conditions to all elements of the mesh, and then numerically solving the system. Analytical models use generally simplified mathematical formulae intended to directly solve for a variety of material and performance parameters. 2.6.1 Finite Element Analysis All FEA analysis performed in this work uses Comsol versions 4.1 and 4.2. Ma- terial parameters for PVDF and PEDOT:PSS are based on parameters listed in Ta- ble 1.2, although losses are not always included [53]. All models use the piezo- electric physics engine to model the behaviour of the PVDF and the linear elastic physics engine to model the behaviour of the PEDOT:PSS and affinity layer poly- mers. The models used to provide the FEA data and images discussed in this work can be separated into four categories: • Both 2D and 3D models for performing eigenvalue studies on mechanical resonance frequencies of the modelled sensor. This model assumes an infi- nite, periodic IDT and calculates the various resonance modes of the sensor. The A0 and S0 modes are then visually identified from the listed resonance frequencies. An example is shown in Figure 2.9. • Both 2D and 3D models for capacitance and field calculations between two IDT fingers. An example is shown in Figure 2.10. • Both 2D and 3D models integrated with Matlab for time-dependent tracking of travelling waves. These models have a four fingered IDT, excess length 34 Figure 2.9: Comsol example showing a 2D model of the A0 mode of a 18 µm thick, 800 µm wavelength stress-free sensor to allow the travelling waves to propagate away from the IDT and will either operate with or without complex material coefficients for travelling wave decay. Examples are shown in Figure 2.11 and Figure 3.3 (Chapter 3). • 2D models with affinity layers and parametric, eigenvalue solvers for track- ing changes in A0 resonance frequency as a function of variations to PVDF and affinity layer material parameters. This model is used extensively in Chapter 3 and Section 4.3.1. FEA models serve as numerical approximations of more complex material con- figurations, methods of solving time-dependent models of acoustic wave transport, and as a visualization tool. 35 Figure 2.10: Comsol example showing a 3D model of the electric field of two IDT fingers where the bottom side of the sensor is grounded Figure 2.11: Comsol example showing acoustic waves propagating outward from a central four finger IDT stimulated with a sinc function 36 2.6.2 Analytical Analytical models are implemented in Matlab to approximate the behaviour of sim- plified sensor models based on clearly established theoretical principles such as the differential wave equations for thin plates described in Section 1.4.2, inter-domain energy relationships as introduced in Section 1.5, Hooke’s Law, and Fick’s Law. These analytical equations form the basis of Matlab code which generates perfor- mance information and is compared to experimental results to better understand the behaviour of the sensor. Many of the Matlab implementations can be found in Ap- pendix D, including functions for calculating the resonance frequency of a sensor coated with an affinity layer, and approximations on power transfer from electri- cal/acoustic/electrical domains of sensors in various configurations. The equations and methodology will be discussed in more detail in Chapter 3 and Chapter 4. 37 Chapter 3 Sensor Design This section discusses the design decisions made in fabricating the initial sensors, the measurements of key parameters of the sensors’ operation, and a design sen- sitivity study predicting where the greatest improvements in performance can be found. 3.1 Sensor Structure and Interface The sensor fundamentally consists of five components: • Substrate • IDTs • Backplane and affinity layer coating • Frame or support structure • External interface The substrate is a thin and fragile PVDF film that may or may not be tensioned. It must be supported in such a fashion as to minimize wrinkling, deformation, and environmental effects on the material. The IDT design is critical as it determines the properties of the waves induced on the substrate. The backplane and affinity layer coating must be carefully designed to optimize the performance of the sen- sor. The frame or support structure must support the substrate in tensioned and/or 38 Figure 3.1: Shielded BNC electrode for electrical driving untensioned configurations while allowing portability, wear resiliency, chemical resistance, and the ability to attach the sensor to an interface system. The exter- nal interface method must perturb the substrate as little as possible while being strain-relieved, robust enough to tolerate multiple connections and disconnections, and electrically shielded. The gas chamber in which the sensor operates must also minimize the volume of gas required to fill the cavity beneath the sensor in order to minimize the required analyte. The preliminary designs for the sensor and test chamber are based on concepts put forth in analyte gravimetric publications [2], [3], [18]. The sensor, as shown in Figure 2.3, consists of a simple, water cut stainless steel frame with enough mechanical strength to support fully tensioned 120 µm thick substrates. The ex- tra space surrounding the sensor IDTs allows for experiments involving multiple printed IDTs or very wide IDTs. The connector shown in Figure 3.1 is shielded to minimize the emission of electromagnetic interference (EMI) with contacts that can be placed on the acoustic output IDTs of the sensor. The copper pad configuration lends strength to the PVDF to help reduce tearing of the membrane. The test chamber, shown in Figure 3.2, is composed of aluminium and uses an extruded area beneath the sensor substrate area to minimize the volume of gas 39 Figure 3.2: Test chamber configuration beneath the sensor. The frame forms a face seal with the test chamber with the chamber lid applying the force necessary to form the seal. Pin holes on the under- side of the chamber allow for the addition of contact pins if the sensor is mounted with IDTs facing down. In configurations involving the chamber pins or the BNC electrode, force is applied on the substrate surface, creating a slight variation in measurement behaviour with every reconnection. Proposed improvements to the overall structure of the sensor include reducing the substrate size to the minimum area required for surrounding the IDTs. A cor- responding reduction in test chamber and frame size would also be necessary. If tensioned film is not required, then the frame can be replaced with a thinner poly- mer frame as a further cost saving measure. A different electrical interface method that avoids applying pressure to the substrate directly would also be beneficial and has been successfully tested in 18 µm substrate thickness configurations using a backplane. 3.2 Acoustic Wave Form and Mode As discussed in Section 1.4, the A0 FPW mode is the superior choice for gas an- alyte sensing applications involving PVDF substrates and inkjet printed IDTs. Al- though FPW sensors suffer from high temperature sensitivity, particularly with a 40 tensioned film [3], the ability to improve gravimetric mass sensitivity by reducing film thickness rather than increasing frequency is necessary in designing a com- petitive, printed, all-polymer sensor. Using FPWs also permits the application of affinity layers to both sides of the sensor, biosensing and other fluid sensing appli- cations, and polymer characterization applications (see Section 4.3.2). 3.2.1 Substrate Thickness Substrate thickness has a critical impact on overall sensor performance when FPWs are used. Figure 1.2 shows the change in A0 phase velocity as a function of the ratio d/λ . As the film becomes thinner, the phase velocity and corresponding operating frequency of the sensor drops. A lower velocity increases delay times in delay measurements, requires lower cost and complexity DAQ designs, and reduces attenuation as discussed in Section 3.8. More importantly, the sensor mass per unit area drops, which improves the gravimetric mass sensitivity of the sensor as shown by Equation 1.4. There are challenges to thinning the substrate. The commercial availability of unpoled PVDF film limits access to film thicknesses below 0.001” (25.4 µm). Thin- ner films are also more brittle and fragile, necessitating extra care in the fabrication and use of the sensor. Sensors based on 0.001” films (5.6 µm after stretching) may be impractical due to their fragility. There is also the possibility that the spherulites that are necessary for β -phase in the film may be lower concentration or less sta- ble at very thin film thicknesses, a subject under current research. Although 0.001” PVDF was successfully stretched and poled, the piezoelectric charge constant of the film was too low to test its sensing capability. Sensors based on 0.020” (120 µm after stretching), 0.010” (60 µm after stretching), and 0.003” (18 µm after stretch- ing) film thicknesses were stretched, poled, and rendered into sensors. 3.2.2 Wave Velocity Wave velocity of the A0 mode of a FPW is approximated by Equation 1.15. There are four parameters that fundamentally impact the phase velocity of the acoustic wave and the corresponding resonance frequency of the sensor: • In-plane stress in the direction of acoustic propagation 41 • Stiffness of the film • Linear inertia (mass per unit area) of the film • Wavelength of the IDTs In-plane stress is adjustable through tensioning the substrate prior to mounting the substrate in a frame. It is also affected by a force along the z-axis of the film such as differential pressure, fluid loading, self-loading, and electrical probes; en- vironmental factors such as variations in temperature causing the film to expand and contract; expansion and contraction of affinity layers; and cold creep of the PVDF causing internal stresses. The stiffness of the film is a complex function of the stiffness matrix of the film, which can be approximated using Young’s modulus and Poisson’s ratio as shown in Equation 1.9. When applying this simplification, and assuming that the film is a single layer of PVDF, Equation 1.10 states the stiffness to be roughly proportional to Young’s modulus and the cube of the thickness, D = EY Md3 12(1−ν2) . (3.1) It is the cubic relationship with thickness that allows the phase velocity to drop with thinner films despite the decrease in mass per unit area. Figure 3.3 shows the wave propagation for two different substrate thicknesses as a function of time. The linear inertia is most effectively adjusted by varying the thickness of the substrate and adjoined polymer layers, as the density of the materials are unlikely to change significantly. With that in mind, it is the variation in density of the affinity layer that allows gravimetric sensing in acoustic applications to work, as discussed in Section 1.4.3. The relationship between velocity and wavelength is complex due to the in- fluence of wavelength on the stress/stiffness term of the velocity equation. Equa- tion 1.15 can be rewritten to better convey this effect, vpa = 1 λ √ λ 2T +4pi2D M . (3.2) 42 (a) 120 µm thick PVDF (b) 18 µm thick PVDF Figure 3.3: A0 wave propagation as a function of time, modelled with Comsol for 800 µm wavelength, driven by sinc function 43 For scenarios where there is no in-plane stress, the phase velocity is inversely pro- portional to the acoustic wavelength, meaning that acoustic frequency is inversely proportional to the square of the wavelength. If in-plane stress is non-negligible then the relative influence of stress and stiffness is in part dictated by the mag- nitude of the acoustic wavelength. For very large in-plane stress, the wavelength dependence in the equation cancels out, leading to a frequency inversely propor- tional to wavelength for a constant phase velocity. Limitations in the fabrication process prevent acoustic wavelengths of less than 400 µm and other constraints, such as available substrate material, prevent excessively large wavelengths. 3.3 Interdigitated Transducers IDTs are comb-like structures situated on the piezoelectric substrate that, when ex- posed to a time-varying voltage, generate standing waves with travelling waves launched from the edges of the transducers. Multiple IDT patterns have been con- sidered in the scope of the design and optimization of this sensor, some of which demonstrated reasonable complexity [3], [54]. The design of the IDTs must ideally generate highly directional and efficient travelling waves with a large quality factor and signal to noise ratio. Numerous models exist for analyzing the behaviour of IDTs with the intent of reducing spectral noise and distortion [55], a process known as band shaping. For two identical “square” IDTs, meaning that all fingers have the length and spacing as discussed in Section 3.3.1, the frequency behaviour of the output wave- form can be approximated with F( f ) ∝ ( sin( f + fres) f + fres )2 = sinc( f + fres)2, (3.3) where f denotes a frequency offset from the resonance frequency, fres. The band- width of the configuration is inversely proportional to the number of fingers in each transducer [56]. This expression derives from the connection between the geomet- ric structure of the IDTs and their frequency domain representation. As a first order approximation, the overlap between finger pairs in the IDT analogously correlates to a sinusoidal wave of that amplitude, such that four finger pairs would yield four 44 consecutive sinusoidal waves. For an IDT pattern where the overlap between the fingers are all identical, this pattern produces a square wave modulated at a car- rier frequency, as shown in Figure 3.4. The frequency response is then the Fourier transform of that function. The sinc function in the frequency domain is not particularly desirable due to the large centre lobe bandwidth and large side-lobes. A large bandwidth results in lower quality factor and poor side-lobe suppression can cause frequency tracking errors and lower power density in the main lobe. Modifying the design of the IDTs allows for filtering functions which can allow side-lobe suppression and thereby improve spectral signal to noise ratio. The most common method of achieving bet- ter performance is through apodization of the IDTs [55], [56], using functions simi- lar to Fourier transform windowing functions to band shape the frequency response of the IDTs. Unfortunately, analytical modelling shows that applying this function also reduces finger overlap and acoustic wave signal strength. Due to restrictions caused by weak signal strength, no apodization techniques were attempted in the scope of this work. 3.3.1 Single Electrode Pair The first IDT configuration is a simple rectangular configuration with ten pairs of fingers in each IDT, and two IDTs per sensor as shown in Figure 3.5. One trans- ducer is used to actuate the waves and the other to measure the waves. Actuating this configuration in both the LDV and the DAQ yielded a measurable, low ampli- tude acoustic signal. It was determined using this configuration that the sensitivity of the FPWs to temperature during normal operation would be prohibitive for sens- ing small variations in mass and stiffness (see Section 4.1.1 for more discussion). Consequently, a differential IDT configuration was realized to help compensate for environmental effects such as temperature. 3.3.2 Differential Isolated Electrodes The differential isolated electrodes design, shown in Figure 3.6, consists of a larger inner electrode that transmits the acoustic waves and two outer electrodes that act as receivers. Both 400 µm and 800 µm wavelength versions of this design were 45 (a) IDT overlap pattern (b) Frequency Response of IDT Pattern and Sinc(x) Figure 3.4: Non-apodized IDT configuration showing overlap amplitude and resulting frequency response, including side-lobes 46 Figure 3.5: Pattern used for single pair IDT design Figure 3.6: Pattern used for 800 µm thick isolated differential electrode de- sign 47 Figure 3.7: Example electrical output of each channel of a fabricated sensor fabricated. Each output channel is connected to an amplifier and receives one of the travelling waves propagating from the centre electrode. The intent of the dif- ferential design is to mitigate both environmental and material influences such as temperature, variations of in-plane stress, and ageing, while also permitting for dis- crimination between two affinity layer effects. In a fully compensated, differential configuration, an affinity layer with high sensitivity is coated on the bottom side of channel A (exposed to analyte) and the top side of channel B (not exposed). Simi- larly, the bottom side of channel B is coated with a low sensitivity layer along with the top of channel A. This configuration allows for variations in polymer properties resulting from ageing to affect both channels while allowing the analyte or other measurand to only affect one channel. It can also be used to match the resonance frequency of both channels for better compensation. A similar device can be found in the work of Ho et al. [21]. Although the waveforms do not match perfectly, as shown in Figure 3.7, they can still track closely and comparison data as shown in Figure 3.8. The effec- tiveness of this concept is discussed further in Section 3.10.2, Section 4.1.1 and Section 4.3. 48 Figure 3.8: Example data collected during humidity testing with PVA as the affinity layer and PVAC as the blocking layer 3.3.3 Differential Joined Electrodes The differential joined electrode configuration is in many respects similar to the differential isolated electrode configuration, with the exception that the acoustic receiving electrodes are electrically connected in opposing phase to electrically subtract the incoming waves and yield only one output channel, as shown in Fig- ure 3.9. Other design features such as larger, internally situated pads, are intended to provide the following additional functionality: • Pads are 1/4 wavelength away from acoustic transmitting IDTs to provide reflection and increase the signal strength of the outgoing wave; • Acoustic receiving IDTs are connected to allow signal differentiation in the electrical domain, thereby allowing the mixing to occur before entering the digital domain with its associated noise; • Contact pads are larger for ease of locating pins and probes on sensor sub- strate; 49 • Changing the frequency component of the receiver signal reduces signal in- terference from crosstalk; • The measurable quantity is directly proportional to signal amplitude. The mathematical basis for the differentiation is based on subtractive signal mixing, sin(u)− sin(v) = 2cos ( u+ v 2 ) sin ( u− v 2 ) , (3.4) forms the basis of the used identity, where sin(u) and sin(v) represent the two received sinusoidal acoustic travelling waves with slightly varying frequency and phase, u = 2pi f1t+φ1, (3.5) v = 2pi f2t+φ2. (3.6) u and v are ideally very similar with differences in f1, f2 and φ1, φ2 being caused by the influence of an analyte or differences between properties of sensing and blocking layers. The cosine term of Equation 3.4 essentially doubles the frequency of the incoming wave, thereby differentiating the received signal from the driving signal EMI, which uses a lower frequency component. The sine term creates a scaling beat pattern for the new waveform which, for short duration, synchronized measurements, creates a relationship between signal amplitude gain and channel phase/delay difference. If there is no difference between the signals due to an analyte concentration of 0 ppm (or zero differential mass), the amplitude of the signal approaches zero. Consequently, the DAQ requires only a single channel to record a signal at twice the driving frequency where amplitude is approximately proportional to the measurand effect on the sensor. Measuring amplitude rather than frequency can also provide for a very low cost, purely analog method of re- sponding to a differential analyte signal, particularly useful in threshold detection applications. Although testing did confirm the overall expected behaviour of the sensor de- sign, several problems prevented the successful use of the sensor in gravimetric 50 (a) Joined electrode design concept (b) Pattern used for 800 µm sensor Figure 3.9: Concept for joint-electrode differential sensor 51 and stiffness sensing applications. The poor repeatability in the film and printing fabrication process prevented perfectly matched channels, resulting in significant imbalances in signal strength between the channels and poor sensitivity. To com- pensate for the imbalance, varying amounts of polymer was added to each side of the sensor until the resulting differential amplitude was close to zero. Although the imbalance was always at least two orders of magnitude higher than desired, it was determined that the majority of the signal noise occurred prior to the DAQ input amplifiers, rendering the use of a gain block ineffective. The low electromechani- cal coupling coefficient of the PVDF also prevented the centre pads from reflecting the transmitting acoustic waves, resulting in an overall reduction of acoustic signal strength for both channels. 3.3.4 Finger Ratios In addition to examining different electrode configurations, a detailed study was performed to assess appropriate ratios between acoustic transmitting and receiving fingers given a spatially confined substrate. The high attenuation, non-linear super- position of acoustic waves contributed by finger pairs, and potential for acoustic reflection suggests an imbalanced design. To study this effect, a Matlab applica- tion was developed that analytically approximated the construction, propagation, and reflection of waves throughout the substrate. An example output of this code is shown in Figure 3.10. The underlying assumptions in the model are as follows: • Waves are generated and summed using energy domain transfer models (see Section 3.7.2); • Wave summation occurs twice per wavelength (every IDT finger); • All acoustic power absorbed by the receiving IDT is rectified and summed (only valid in zero-field conditions) in power mode (matched impedance), and averaged in voltage mode (high impedance receiver); • All electric power converted to the acoustic domain is assumed to behave as a plane (2D approximation). 52 Although acoustic reflection was included in the model, reflectors were never successfully implemented in the fabricated sensor. Typical reflectors would consist of appropriately spaced, shorted fingers that cause wave interference in the path of the propagating wave, increasing acoustic impedance, and prompting the wave to reflect constructively back to the source. The low electromechanical coupling coefficient combined with the high attenuation of the PVDF made implementing such a reflector impractical. Many finger pairs would be required to form the re- flector, and any substantial, reflected wave would attenuate before providing much benefit. The possibility of precisely cutting the film to form the acoustic reflector, or shrinking the frame to form an acoustic boundary, may be investigated in the future. 53 Figure 3.10: Illustration showing energy domain transfer of an 18 µm thick, 800 µm wavelength sensor where blue lines represent acoustic transmitting IDT fingers, red lines represents acoustic receiving IDT fingers, and the bright green line represents the reflection 54 Two simulations were run. Figure 3.11 considers an impedance-matched con- figuration where all power is removed from the acoustic receiving IDT. To achieve optimum power transfer, a balanced finger ratio between the transmitter and re- ceiver is ideal. As the attenuation of the substrate increases, the system slightly favours having more transmitting fingers to overcome the loss in power. In Fig- ure 3.12, a high impedance (ie. instrumentation amplifier) electrical input is as- sumed where only the generated electric field becomes relevant, rather than the total amount of power collected at the acoustic receiving IDT. To maximize per- formance, more transmitting fingers are preferred as the mean receiving electric field is stronger if there are fewer fingers in the receiving IDT and correspondingly less voltage gradient. without contributions from weaker components of the signal resulting from IDT fingers exposed to a highly attenuated signal. The contribu- tion from weaker components becomes very significant with higher attenuations. The sensor tested experimentally behaves between these two extremes as the high output impedance of the sensor is difficult to match electronically (see Section 2.4). 3.3.5 Backplane A backplane is a thin conductive surface on the opposite side of the sensor from the IDTs. The backplane provides a reference “ground”, or charge reservoir, for the IDTs through the substrate, effectively increasing the z-axis electric field compo- nent. The larger z-axis electric field component is critical to piezoelectric processes dependant on dP,31 and dP,33, both of which contribute to A0 Lamb waves [57]. A Comsol comparison between the two configurations can be seen in Figure 3.13. From [3] the equation for a single finger pair without a conductive backplane is E(z) = β [−Vasinh(β z)−Vbsinh(z−d) sinh(βd) ] , (3.7) where E(z) is the z-axis electric field as a function of depth, Va and Vb represent half potentials applied to separate adjacent fingers, β is the wavenumber, and d is the total thickness of the substrate. This equation assumes an infinite number of equally spaced fingers and describes the z-axis electric field extending down from the fingers to the bottom edge of the substrate. The result from an analytical 55 (a) Total received power (arb) (b) Power mismatch the across receiver IDT Figure 3.11: Analysis showing the effect of transmitter to total finger ratio on a) total received power and b) power mismatch across the receiver, in an impedance matched configuration for a 800 µm wavelength, 18 µm thick sensor for variations in attenuation 56 (a) Average received voltage (arb) (b) Voltage mismatch across the receiver IDT Figure 3.12: Analysis showing the effect of transmitter to total finger ratio a) mean average received voltage and b) voltage mismatch across the re- ceiver, in a high impedance receiver configuration for a 800 µm wave- length, 18 µm thick sensor for variations in attenuation 57 investigation using Equation 3.7 is shown in Figure 3.14. Equivalent Comsol FEA modelling is shown in Figure 3.15a, demonstrating reasonable agreement between analytical and FEA modelled results. For the Comsol model, the electric field is calculated on the edge of the inner finger. The capacitance between two fingers is dependent on both the electric field between the fingers through the air as well as through the substrate and affinity layers. FEA modelling of a PVDF sensor with no affinity layer indicated a capacitance range of 20 - 150 fF per finger pair for the configurations considered in this work. This exceptionally low capacitance contributes to the high output impedance of the acoustic receiving IDTs. The Ez of a finger pair with a backplane can be approximated using the simple relationship, E(z) = (Va−Vb) 2d , (3.8) which can be seen in Figure 3.15b. This equation assumes that electrode finger width is much greater than substrate thickness, d. Figure 3.15 shows that the strength of the electric field is substantially greater with a backplane in place, re- sulting in a larger acoustic wave. It is primarily for this increase in signal strength that conductive backplanes are included in many FPW designs [58]. Experimen- tal data was collected using an 18 µm thick, 800 µm wavelength sensor with and without a backplane, shown in Figure 3.16. The capacitance in the configuration including a backplane is much higher, and can be approximated analytically, Cbp = ε0εrAm d , (3.9) where Cbp is the backplane capacitance, ε0 is the permittivity of free space, εr is the relative permittivity of the substrate, Am is the total surface area of a finger pair, and d is the thickness of the substrate. FEA modelling has demonstrated excellent agreement with Equation 3.9, revealing a capacitance range from 1 - 6 pF per finger pair for the configurations considered in this work. Poling the PVDF and rendering the substrate piezoelectric is reported to slightly increase the permittivity of the material, although not significantly enough at lower frequencies to warrant further discussion [48]. 58 (a) Without backplane (b) With backplane Figure 3.13: Comsol model showing z-axis electric field strengths of a sensor with and without a backplane using Va =−50 V and Vb = 50 V There are limitations resulting from the additon of a PEDOT:PSS backplane to the sensor substrate. The additional mass of the material reduces the mass sen- sitivity of the sensor as demonstrated by Equation 1.4, and PEDOT:PSS is not as chemically resilient as PVDF, requiring an additional protective coating in some applications. Ripples in the passband of the acoustic wave were also measured using the LDV, as shown in Figure 3.17, after a backplane was applied, suggesting increased reflections between fingers and IDT boundaries [56]. 59 Figure 3.14: Electric field beneath an IDT finger based on a mathematical model using Equation 3.7 showing z-axis electric field strength with no backplane The benefits of applying a backplane outweigh the drawbacks in scenarios where high signal to noise ratio (SNR) is necessary, meaning that all experiments involving gas sensing and biosensing are performed with a PEDOT:PSS backplane. The backplane consists of 2 µL PEDOT:PSS drop cast on the back of each receiving IDT and 3 µL PEDOT:PSS drop cast on the back of the transmitting IDT. At these volumes, the coating thickness of the PEDOT:PSS is approximately 800 nm using Equation 2.1. The receiving and transmitting IDT backplanes are left disconnected from each other and any ground references to allow the transmitting backplane to float at a higher potential than the receiving backplanes. 3.4 Excitation Waveforms Excitation waveforms are the electrical waves used to excite the sensor. Different wave configurations are used depending on the test being performed. When op- erating with a continuously driven, sinusoidal signal, the EMI crosstalk from the acoustic transmitting IDTs generates an electromagnetically coupled waveform on 60 (a) Without backplane (b) With backplane Figure 3.15: Results from a Comsol model showing z-axis electric field strengths of IDTs as a function of thickness using Va = −50 V and Vb = 50 V 61 Figure 3.16: Experimental comparison between an acoustic signal without a backplane (blue) and an acoustic signal with a backplane (red), mea- sured electrically using the DAQ at the electrical output IDT. The pulses on the left side of the plot show the EMI crosscoupling, with acoustic waves beginning at 38 µs. Saturation of the blue EMI is the result of a higher gain setting causing clipping of the waveform. the receiving IDTs that overwhelms the acoustic signal. For this reason, the sensor is predominantly driven discontinuously, where short bursts of waves applied to the transmitting IDT to create gaps in the EMI for measuring the acoustic response. This reception pattern can be seen in Figure 3.16. 3.4.1 Pure Sinusoid A purely sinusoidal excitation mode is used rarely as the signal strength of the acoustic wave under ideal conditions is approximately equal to that of the EMI crosstalk generated by the acoustic transmitting IDTs. 62 Figure 3.17: LDV FFT image of a wave generated with a PEDOT:PSS back- plane travelling across a substrate 3.4.2 Pulse Train A pulse train is a series of pulses followed by a period of no excitation. The pulses generate the acoustic waves and are disabled prior to the acoustic waves being de- tected at the acoustic receiving IDTs, thereby completely eliminating the effects of eletromagnetic crosstalk. A pulse train or similar discontinuous waveform is also commonly used in time of flight measurements. A 550 kHz pulse train example for the Agilent function generator can be seen in Figure 3.18 3.4.3 Binary Frequency Shift Key Waveform A binary shift key response is similar to a pulse train but with variable frequency. The intention of the binary frequency shift key (BFSK) waveform is to provide a detectable, frequency modulated, threshold between two frequencies for time of flight calculations. An example BFSK waveform is shown in Figure 3.19. 63 Figure 3.18: Pulse train showing 12 pulses of 550 kHz followed by zero ex- citation, repeated at 25 kHz Figure 3.19: BFSK waveform consisting of eight pulses at 500 kHz and 2 pulses at 600 kHz, repeated at 25 kHz 64 3.4.4 Chirp The chirp is a specially designed waveform that disperses excitation energy across a wide range of frequencies. This waveform is useful in that it provides a excita- tion that is roughly flat in the frequency domain throughout the frequency range of interest, reducing the possibility of warping or biasing the detected resonance frequency of the sensor. By dispersing the energy through a large range of fre- quencies, the resulting power spectral density at the resonance frequency is much lower, resulting in lower SNR. The chirp is designed using finite impulse response algorithms in Matlab along with manual waveform editing to flatten the wave in the region where acoustic waves are measured. An example chirp spanning the 400 kHz - 650 kHz range can be seen in Figure 3.20. 3.5 Sorptive Polymer The sorptive polymer layer is the affinity layer that varies in properties with the absorption or adsorption of an analyte. Sorptive polymer layers are used in both gas sensing and biosensing applications. 3.5.1 Diffusion and Fick’s Law Diffusion is a process by which a substance moves from higher concentration to lower concentration. It is a critical component of polymer/analyte-based gas sens- ing in acoustic sensors [9]. Fick’s first law of diffusion for a one dimensional system is J =−DF δΦδ z , (3.10) where J is the diffusion flux in [mol m−2s−1], DF is the Fickian diffusion coeffi- cient in [m2s−1], Φ for ideal mixtures is the concentration in [mol m−3] and z is the depth of penetration in the polymer. For a continuous source of an absorptive analyte resulting in a concentration gradient through the polymer, the first law in- dicates that a diffusion flux will form that is proportional to the gradient of analyte concentration. As more analyte enters the polymer, the gradient of concentration decreases, as will the rate of absorption. For simple, 1D homogeneous polymers 65 (a) Time domain signal (b) Frequency domain Figure 3.20: Chirp with passband from 400 kHz - 550 kHz for use with thicker sensor substrates, intended to cycle at 25 kHz 66 of finite thickness and a constant analyte concentration outside the polymer, the diffusion flux exponentially decays with time, ultimately reaching zero. 3.5.2 Sensing Polymer Design There are three important competing factors relevant to selecting an appropriate polymer thickness. The first effect is absorption rate. As described in Section 3.5.1, diffusion flux is a function of the diffusion coefficient and concentration gradient. Given a limited rate of diffusion, as determined by the diffusion coefficient, thicker polymers will require more time to reach equilibrium, reducing the response rate of the sensor. The second effect is response magnitude. The total mass and stiff- ness responses resulting from absorption are functions of polymer thickness, where greater thickness independently increases the response. Generally speaking, sen- sors with thicker polymer layers show greater overall response to a change in an- alyte concentration, but respond much more slowly and require a large amount of analyte to reach equilibrium. Sensor response is discussed in greater detail in Section 3.6. The third effect in polymer layer design involves selecting a polymer to match an analyte. Within the scope of this work, Hansen solubility parameters (HSP) comparisons are used for this purpose [59]. HSP examines the compatibility and selectivity of a polymer/analyte combination by comparing the compatibility of polymers and analytes by using hydrogen bonds (δH), polar bonds (δP), and dis- persion bonds or van der Waals forces (δD). The more similar the properties be- tween polymers and analytes in these three categories, the higher the diffusion coefficient and partitions coefficient (K). The partition coefficient when applied to a gas/polymer interface describes a linear ratio of concentration of the analyte inside the polymer to the analyte in the gas external to the polymer [21], [60], K = Cs Cg , (3.11) where Cs and Cg are the unitless concentrations by mass of the analyte in the solid and carrier gas respectively. A common method for using the partition coefficient involves the calculation of the partial density (ρpartial) of the analyte within the 67 polymer, ρpartial = KMac, (3.12) where ρpartial is the partial density of the analyte within the polymer in [kg m−3], K is the partition coefficient, Ma is the molar mass of the analyte, and c is the molar concentration of the analyte in the carrier gas, c = CgP RTeq , (3.13) where P is the carrier gas pressure in units of [Pa], R is the ideal gas constant, and Teq is the equilibrium temperature in [K]. A larger partition coefficient will yield a higher concentration of the analyte within the polymer, increasing the sensitivity of the sensor to that analyte. As many polymers absorb multiple analytes, it becomes necessary to select several polymers with different absorption parameters for the target analyte to isolate the concentration of the analyte in question. If multiple analytes are measured, multiple complementary polymers must be selected both to absorb and mask specific analytes under test. Another consideration involves selecting masking or blocking layers for the sensor. Some analytes with small molecular structures, such as water vapour, can adsorb within polymer structures that have no absorptive affinity for the analyte by wicking into small cavities present in porous structures [61], [62]. This behaviour can be distinctly non-Fickian, leading to poor selectivity, cross-contamination, and ineffective reference channels. 3.6 Sensor Detection Performance There are many factors that influence overall sensor performance, and they can be broadly grouped into three categories: • Sensitivity: Refers to the gain between the change in measurable quantity (measurand) such as mass or stiffness and the change in normalized signal (e.g. frequency, phase, delay, etc), typically expressed in [cm2/g] or a similar unit. See Equation 3.15 for an example of usage. 68 • Signal resolution: Refers to the minimum detectable change in the normal- ized signal, as typically determined by SNR, represented by ∆ fmin where f is replaced by different signal types. Signal resolution is expressed in the units of the signal being measured (I.e. Hz, s, V). • Measurand resolution: Represents a complete assessment of the ability of the sensor to realistically detect a change in a measurable quantity such as mass, incorporating both sensitivity and signal resolution. A higher resolu- tion indicates a smaller minimum detectable change in measurand. Maximizing the measurand resolution of the sensor is critical to detecting very small changes in affinity layer properties. As discussed in Section 1.4.2, there are many variations in sensor mechanical properties that can be detected using A0 Lamb waves. The most significant effects are mass change and stiffness change, with the former traditionally being the focus in gravimetric applications due to the inherent stiffness of the substrate [2], [63]. Using a low stiffness polymer substrate raises some new challenges and opportunities in optimizing sensitivity, resolution and overall sensor performance. 3.6.1 Mass-only Response The mass-only sensitivity of the sensor, measured in [cm2/g], assumes that the only effect in the sensing or affinity layer of the sensor that perturbs the output signal is the linear interia, typically expressed as a change in material density. This approach is reasonable in many cases as the sensor substrate has a large Young’s modulus or is particularly thick such as in the case of a quartz crystal microbalance (QCM) or SAW sensors. For a FPW A0 mode sensor, the mass sensitivity can be expressed as SM = δv δM v , (3.14) which yields Equation 1.17. The ideal expression for normalized frequency change based on mass sensitivity is ∆ f f = SM∆m, (3.15) 69 Figure 3.21: Theoretical mass sensitivity plot for three different substrate thicknesses, as a function of sensing/polymer layer thickness. The change in frequency represents the change due to an exposure of approximately 1 ppm of a generic gas to a generic polymer of 1000 [kg/m3] density with a partition coefficient of 2000 where ∆m represents the total change in mass per unit area in [g/cm2]. Since ∆m is a function of polymer thickness as discussed in Section 3.5, both the mass sensitivity, SM, and change in mass per unit area, ∆m, conflict in their optimization as shown in Figure 3.21. Where a thinner polymer sensing layer would improve sensitivity, it would also reduce the change in mass per unit area due to absorption of the analyte. When optimizing for mass sensitivity, choosing a polymer thickness at the “knee” of the response curve will give the best compromise between response speed, sensitivity, and overall performance. 3.6.2 Stiffness Effects Unlike substrates made of silicon, zinc oxide, and other crystalline materials, PVDF has a Young’s modulus similar to many polymer affinity layers. FPWs are also influ- enced by in-plane stress more significantly than SAW sensors [63]. Consequently, changes in sensing layer stiffness caused by transitioning states, variations in crys- 70 tallinity, weakening or rearranging of internal bonds, or changes in layer thickness can all play a significant role in sensor response [64]. As a conceptual analogy to mass sensitivity, stiffness sensitivity can be analyt- ically determined by considering how gas absorption affects affinity layer stiffness independent from any mass change effects. Similarly, SD = δv δD v , (3.16) which yields SD = β 2 2(T +β 2D) , (3.17) where removing the in-plane stress term yields an isolated stiffness sensitivity very similar to that of the mass sensitivity, Equation 1.17. The ideal expression for normalized frequency change based on stiffness sensitivity is ∆ f f = SD∆D, (3.18) where D is defined by Equation 1.7 for a uniform material and can be simply ap- proximated as proportional to Young’s modulus and thickness cubed. It is obvious that when the sensing layer stiffness changes due to gas exposure there will also be some mass change. In a simplified model based on Equation 1.10, stiffness changes can be caused by either changes in polymer Young’s modulus and/or Poisson ra- tio, or by a change in polymer thickness. Experiments with polymers and their analytes show that both stiffness factors and density can be affected [5]. To further this model, assume that only thickness varies as a linear function of mass absorbed, that both the substrate and affinity layer polymer have the same Young’s modulus, and that variations in polymer stiffness do not significantly affect the plane of zero tension. To explore this scenario mathematically, consider r, which represents the ratio of change in affinity layer thickness to change in mass, r = ∆dpoly ∆mpoly . (3.19) 71 For example, r = 1.2×10−3 [m3 kg−1] for PVA assuming a 10% increase in thick- ness for a 7% increase in mass [5]. The expression for vpa can then be combined with Equation 1.10 and written as, vpa = √ T +β 2Dp(dPV DF +dpoly,0+ r∆m)3 MPV DF +Mpoly,0+∆m , (3.20) where dpoly,0 is the initial thickness of the polymer, ∆m is the change in mass, and Dp is from Equation 1.10, Dp = EY M 12(1−ν2) . (3.21) Applying Equation 3.14, then assuming ∆m is negligible when summed against initial mass to thickness, and simplifying yields SDM =− 12(MPV DF +Mpoly,0) + 3rβ 2Dp(dPV DF +dpoly,0)2 2(T +β 2Dp(dPV DF +dpoly,0)3) , (3.22) which shows two separate sensitivity terms, with the former representing the mass sensitivity term Equation 1.17, and the latter being an expression for stiffness sen- sitivity through volumetric swelling (related linearly to mass change). The expres- sion can be further simplified if in-plane stress is zero, SDM =− 12(MPV DF +Mpoly,0) + 3r 2(dPV DF +dpoly,0) . (3.23) Although Equation 3.23 is not an exact model, it does provide some insights into the potential influence of stiffness. First, the mass and stiffness effects will work to oppose one another as the two terms have different signs. Second, unlike the simpler models discussed earlier, if tension is not negligible then the sensitivity is influenced by additional system parameters such as in-plane stress and wave- length. Third, optimizing for sensors influenced by mass and stiffness requires an understanding of how the polymer affinity layer stiffness is affected by both the an- alyte to which it is sensitive and potentially other air-borne contaminants, greatly increasing the complexity of the design. It is also apparent that if r = 0, there is no change in stiffness and the system behaves as Equation 1.4. 72 An analytical examination of the balance between mass and stiffness effects as a function of contrasting polymer thicknesses is shown in Figure 3.22, which assumes r = 1.2× 10−3 [m3/kg] and a change in mass ∆m = 1 µg/cm2. To con- firm the importance of stiffness, a mass loading study was performed, with experi- mental, analytically modelled, and Comsol modelled results shown in Figure 3.23. The negative trend at the beginning of the plot shows that mass effects dominate, though the sensitivity is not as high as theoretically predicted by mass sensitivity alone due to the influence of stiffness. As the polymer layer becomes thicker, the stiffness effects dominate, forcing the trend upward. In Figure 3.24, a Comsol model is used to theoretically predict and separate the individual components affecting the change in velocity for a PVA/humidity sensor, again highlighting the contrasting influences of mass loading and stiffness change on phase velocity. The effects of humidity on Young’s modulus, volumet- ric swelling, and density are determined from literature [5], [6] and implemented as linear functions within Comsol. In the case of PVA, the density of the material drops with increasing humidity concentration, explaining the slightly increasing trend within the plot. The influence of swelling and Young’s modulus on the stiff- ness substantially exceed the influence of density on the overall behaviour of the sensor, although it should be noted that in PVA, as in many other polymers, the swelling and Young’s modulus effects oppose one another. Thicknesses can be selected to reduce the influence of stiffness by capitalizing on this effect. Figure 3.25 shows the importance of both in-plane stress and polymer layer thickness in the sensor design. Adding in-plane stress can reduce the influence of the stiffness term, as is apparent in Equation 3.22, however a new possibility is also elucidated: the potential for stiffness sensing. The low stiffness of the sub- strate, particularly when the substrate is very thin, suggests that stiffness sensing may yield much greater sensitivity to gas concentration than mass sensing. The importance of PVDF as a material for stiffness sensing is shown in Figure 3.26, where the normalized resonance frequency of a PVDF sensor is compared to that of the same sensor under the same polymer loading conditions but with different sub- strate materials. The value of stiffness sensing in gas analyte detection applications is also dependent on finding selective polymers that vary in stiffness with analyte absorption. Stiffness as a sensing mechanism is discussed further in Section 4.3.2. 73 (a) Excluding stiffness effects (b) Simplified stiffness model Figure 3.22: Theoretical change in frequency for a sensor with 60 MPa of in-plane stress, 800 µm wavelength, r = 1.2×10−3 [m3/kg] (PVA [5]), ∆m = 1 µg/cm2 74 Figure 3.23: FEA-generated frequency change of an 18 µm thick, 800 µm wavelength sensor as a function of PVA layer thickness for a 125 MPa tensioned substrate Figure 3.24: FEA-generated individual and cumulative contributions of dif- ferent physical effects on the resonance frequency of an 18 µm thick, 800 µm wavelength, untensioned sensor due to the addition of a 1 µm thick PVA layer 75 Figure 3.25: FEA-generated normalized change in resonance frequency for an 18 µm thick, 800 µm wavelength sensor exposed to a 10% change in relative humidity as a function of PVA thickness Figure 3.26: FEA-modelled normalized change in resonance frequency for an untensioned, 5 µm thick, 800 µm wavelength sensor of various sub- strate materials 76 3.6.3 Effects of Fluid Immersion Unlike SAW sensors, FPW sensors can be used to measure density and viscosity in solution [2]. The low phase velocity of the designs proposed in this work couple very well in common fluids such as water as the phase velocity of the travelling wave is below the speed of sound in many liquids. Being below the speed of sound of the medium, the acoustic energy is able to couple into the liquids and evanescently decay, permitting the measurement of fluid properties such as density and viscosity, as well as adsorption measurements of material suspended in a liquid that bonds to the surface of the sensor substrate [2]. When immersed in liquid, there is a corresponding drop in mass sensitivity. This drop is due to the additional mass loading of the liquid on the substrate and can be approximated by Sliquid =− 12(MPV DF +ρliquidδ ) , (3.24) where δ is the evanescent decay length of the acoustic wave in the liquid medium approximated by δ = λ 2pi , (3.25) when the phase velocity of the acoustic wave is much less than the speed of the sound in the liquid medium [2]. For large wavelengths, this greatly reduces the mass sensitivity of the sensor, suggesting that mass sensing in liquid environments is not a good application for this technology. 3.7 Wave Amplitude The wave amplitude of both the acoustic travelling wave and the electrical output of the acoustic receiving IDT are essential in assessing the performance of a sensor. The magnitude of the wave amplitude over conflicting signals such as broadband (white) noise and signal crosstalk is the SNR, which influences the minimum de- 77 tectable frequency change, ∆ fmin = 3∆ fnoise, (3.26) where ∆ fnoise is the frequency domain root mean square (RMS) noise of the sig- nal, discussed further in Section 3.7.3. The scaling factor of 3 ensures that small changes in mass can unambiguously be distinguished from one another. For a gravimetric FPW sensor, using Equation 3.15, ∆mmin = 1 SM ∆ fmin f . (3.27) As the acoustic wave travels across the substrate, its energy transfers between two energy domains [13], which in the case of an antisymmetric wave is the velocity of the particle motion along the z-axis and the displacement of the substrate material in the roughly z-axis direction. The amplitude of a travelling acoustic wave is related to the power of the wave in that the peak velocity amplitude occurs at the point of zero displacement and vice-versa, U =Uk +Up = 1 2 msω2A2D = 1 2 ksA2peak = 1 2 msv2peak, (3.28) where U is total energy, Uk is total kinetic energy, Up is total potential energy, ms is mass,ω is angular velocity, ks is an elastic constant, AD represents the displacement amplitude along the z-axis of the substrate, Apeak is the peak displacement, and vpeak represents the peak velocity amplitude of the moving substrate particles. Both the square of the amplitude of the displacement and velocity are related to total energy of the system. This dependence on energy typically results in amplitude and noise being studied through its relationship to power such that SNR = 10 log ( Psignal Pnoise ) = 20 log ( Asignal Anoise ) . (3.29) In an effort to analytically predict the amplitude of the travelling acoustic wave as a function of input parameters, models have been constructed and compared to experimental results. 78 3.7.1 Comsol Model Comsol can be used to both theoretically predict the capacitance between finger pairs, which is useful in energy domain transfer modelling (see Section 3.7.2), and to generate and propagate a wavefront along a section of substrate. The former is discussed in Section 3.3.5 and the latter is shown in Figure 3.27. Experimental data collected using the LDV from a fabricated sensor is shown in Figure 2.5, providing peak velocity of 5.1 mm/s and displacement of 1.2 nm at a resonance frequency of 585 kHz. The peak amplitudes of the Comsol model as shown in Figure 3.27 are 7.9 mm/s and 2.1 nm. The model compares favourably with the experimental result, with the discrepancy potentially caused by electric and acoustic losses in the PEDOT:PSS that are not fully modelled in Comsol. The sensor was also over 4 months old when tested, and may have lost piezoelectric strength with age [36]. 3.7.2 Energy Domain Transfer Modeling The amplitude of the travelling wave can also be approximated mathematically by using the energy relationships shown in Equation 3.28 and the electromechanical coupling coefficient defined in Equation 1.23. The total electrical energy at peak voltage amplitude stored by the IDTs is U = 1 2 CV 2, (3.30) which fits well with our equations of wave energy. Electrode capacitance is dis- cussed in Section 3.3.5. The geometry of the IDTs can provide the capacitance as shown in Section 3.3, which leads to the calculation of peak stored electrical en- ergy at the fingers. The amount of energy transferred to the acoustic domain can be calculated using Equation 1.23, which can in turn be used with Equation 3.28 to calculate peak velocities and displacements. When these principles are applied to the Matlab application described in Section 3.3.4, it becomes possible to sum the energy contributions for individual finger pairs and approximate the energy of the travelling wave based on the geometry of the IDTs. When applied, the ana- lytical result for the peak wave velocity of the sensor described in Section 3.7.1 is 8.8 mm/s, assuming a coupling coefficient of k = 0.15. This result is slightly 79 (a) Generated z-axis amplitude (b) Generated z-axis velocity Figure 3.27: Resulting steady-state amplitude of an 120 µm thick, 800 µm wavelength sensor stimulated with a periodic 100 Vpp sinusoid, show- ing peak displacement of 2 nm and peak velocity of 7.9 mm/s 80 higher than the Comsol and experimental results, but considering the assumptions it is a reasonably close approximation. 3.7.3 Noise Floor In a discontinuous operating mode, the noise floor of the sensor and DAQ combi- nation can be examined in terms of ∆V or ∆ f . The former is caused by spread spectrum noise from EMI and digitization limitations of the ADC, and the latter is predominantly a function of the voltage noise and quality factor of the sensor [65]. The DAQ when running with inputs shorted has a measured amplitude noise of less than 1 µV on both channels. When a sensor is connected, the voltage noise level typically remains below 10 µV depending on the sensor configuration. A number of factors improve the voltage noise floor of the DAQ: • Shielding and grounding leads wherever possible; • Keeping leads as short as possible; • Covering the sensor chamber with grounded aluminium or a similar conduc- tive shield; • Disconnecting any pulse switch mode power supplies nearby, particularly those for laptops; • Setting the DSP averaging algorithm to average as many times as possible within the sampling time window. The majority of the noise experienced by the DAQ is contributed by the high impedance instrumentation amplifiers and poorly shielded wiring between the DSP and ADC boards. Once clearer design parameters for a DAQ have been established, a printed circuit board (PCB) can be designed to greatly reduce the amount of noise caused by digital switching logic and communication pathways. Fortunately, most of the noise is high frequency which is filtered effectively by the DSP averaging and ADC Delta Sigma filter. The second component to noise is the quality factor of the sensor. If the sen- sor has a low quality factor then small variations in voltage amplitudes can yield 81 wide changes in frequency. For analytically describing frequency noise for the purpose of optimization, the quality factor of the sensor is presumed to be constant between cycles and the amplitude noise is ratiometrically projected into the fre- quency domain. The quality factor is used to approximate a second order parabolic frequency spectrum where voltage amplitude uncertainty is projected on the y-axis and the resulting frequency uncertainty is calculated on the x-axis. This approxi- mation is demonstrated in Figure 3.28 where it can be shown that a higher quality factor will yield a narrower frequency band and less frequency noise. To start, Vnorm( f ) =−a f 2+A0, (3.31) where Vnorm( f ) is the normalized voltage as a function of frequency ( f ) such that Vnorm( fres) = 1, and a and A0 are fit constants. Using Equation 3.40 where a 3 dB loss represents a normalized amplitude of 0.7079, ∆ f3dB = fres 2Q , (3.32) where Q is quality factor and fres is the fundamental resonance frequency. Combin- ing Equation 3.31 and Equation 3.32, setting A0 = 1 (peak normalized amplitude), and solving for a, a = (1−0.7079) ( fres2Q ) 2 = 1.168 ( Q fres )2 . (3.33) The expression for a can now be used with Equation 3.31 and ∆Vnoise = A0−Vnorm, (3.34) where ∆Vnoise is the normalized noise voltage amplitude, to calculate an expression for the noise floor, ∆ fnoise = 2 √ ∆Vnoise a , (3.35) 82 Figure 3.28: Showing the approximation of the frequency spectrum (blue) as a second order polynomial (red) which is then combined with normal- ized voltage noise to determine frequency noise where the multiplication by 2 covers the range from the negative to the positive worst case, resulting in ∆ fnoise = 1.85 fres Q √ ∆Vnorm. (3.36) As can be seen from Equation 3.36 and Equation 3.27, improving the quality factor of the sensor will significantly improve the minimum detectable mass and/or stiffness in gravimetric applications. Two methods for improving quality factor are increasing the sampling window size, which is limited by signal duration, and re- ducing attenuation. Using the noise floor of Vnoise = 10 µV, the differential sensor data shown in Figure 3.29, and given a measured quality factor Q = 13, the theoret- ical frequency noise ∆ fnoise = 90 Hz, which is consistent with the observed noise level. 83 Figure 3.29: Two channel frequency noise measurement of an 18 µm thick, 800 µm thick sensor with a backplane 3.8 Wave Attenuation Attenuation for a travelling wave represents the loss in wave amplitude as it travels across a lossy medium. Attenuation fits the wave equation [13] u = u0 Re ( e−αxe j(ωt−βx) ) , (3.37) where α is the attenuation constant in [Np m−1]. Conventionally, attenuation is expressed in units of [dB/m] or [dB/cm/MHz] where [13] α [dB/m] = 8.686α [Np/m]. (3.38) Attenuation can be represented by the imaginary components of complex material coefficients such as permittivity and elasticity [26], [28], [41], [66]. Many factors contribute to attenuation, including relaxation time, substrate and affinity layer vis- cosity, molecular relaxation, and thermal conduction [13]. A simplified expression 84 for acoustic attenuation in PVDF is [66] αm = ω √ ρ cD33 cos(0.5δm), (3.39) where αm is the mechanical attenuation in [Np m−1], ω is the angular frequency, ρ is the density, cD33 is the z-axis term of the material stiffness matrix, and δm is the mechanical loss tangent which represents the real to imaginary ratio of a com- plex compliance coefficient. Equation 3.39 shows a linear relationship between attenuation and frequency, suggesting that reducing operational attenuation neces- sitates either altering material parameters or reducing the operating frequency of the sensor. PVDF has a particularly large attenuation when compared to similar polymers such as Nylon, HDPE, and Hydex [66]. Some published values for attenuation range from 4.5 - 13 dB/cm/MHz, with values varying as a function of material thickness and source [66]. The attenuation of the PVDF used in this work was measured using the LDV as shown in Figure 3.30, Figure 3.31, and Figure 3.32 with a summary of sensor parameters and results shown in Table 3.1. To vary the operating frequency, both the wavelength and substrate thickness were adjusted in various fabricated sensors. The wave travelling from the edge of the acoustic transmitting IDT was optically measured and averaged over the entire length of the receiving IDT to generate a wave profile. A Matlab application then fit the profile to Equation 3.37 to determine the attenuation coefficients. Given a linear relationship between attenuation and frequency, the calculated attenuations are 53 dB/cm/MHz, 52 dB/cm/MHz, and 19 dB/cm/MHz respectively. The first two samples are made from the same PVDF stock with the third sample being made from a separate, thin- ner stock (same supplier). The fits are shown in Figure 3.33. The results confirm that the attenuation of PVDF can vary widely with fabrication parameters, and that the attenuation trends linearly with frequency. A Comsol model was also produced as shown in Figure 3.34 with programmed complex material coefficients to estimate the attenuation of PVDF. The resulting waveform was passed through the same fitting algorithm used for the LDV data and resulted in an attenuation of 22.4 dB/cm/MHz, close to that of Figure 3.32. Since attenuation is a highly non-linear component of the wave equation, selecting 85 (a) LDV Measurement (b) y-axis average and exponential fit Figure 3.30: Measured attenuation of an 120 µm thick, 800 µm wavelength sensor stimulated with a wideband chirp Sensor Sensor Number Frequency Attenuation Thickness Wavelength Fingers Measured [dB/cm/MHz] 120 µm 800 µm 12 592 kHz 53 120 µm 400 µm 24 1.536 MHz 52 18 µm 800 µm 12 335 kHz 19 Table 3.1: Sensor parameters, measured frequency, and attenuation for three sensors tested using the LDV 86 (a) LDV Measurement (b) y-axis average and exponential fit Figure 3.31: Measured attenuation of an 120 µm thick, 400 µm wavelength sensor stimulated with a wideband chirp an appropriate attenuation is necessary in performing any parameter sensitivity studies as the attenuation can radically change the results of the study. For the studies performed in this work, an attenuation coefficient of 19 dB/cm/MHz was chosen as the majority of experimental work was performed using the same 0.003” (18 µm after stretching) stock material. 87 (a) LDV Measurement (b) y-axis average and exponential fit Figure 3.32: Measured attenuation of an 18 µm thick, 800 µm wavelength sensor stimulated with a wideband chirp 3.9 Quality Factor The quality factor is the ratio of centre frequency to -3 dB bandwidth, Q = fres ∆ f3dB , (3.40) which limits the precision with which the centre frequency of a travelling wave can be determined. Q values in excess of 50 are typically required for effective sensing, 88 Figure 3.33: Plotted linear attenuation fits for two types of PVDF stock mate- rials, with markers showing sample points as lower values result in significant frequency noise as discussed in Section 3.7.3. Calculation of Q in this work leverages the Kolsky model for energy dissipation and dispersion in plane waves [67]. The Kolsky model defines Q as Q = 1 2 ( ω α(ω)v(ω) − α(ω)v(ω) ω ) , (3.41) showing the sensitivity of the quality factor to attenuation, frequency, and wave velocity. The quality factor must also be further adjusted to include the filtering function of the IDTs which have a quality factor proportional to the number of finger pairs in each IDT, as discussed in Section 3.3. This adjustment is performed ratiometrically based on measured values of Q, leading to a calculated Q = 13 for an 18 µm thick, 800 µm wavelength, 125 MPa in-plane stress configuration. Q was measured using both electrical measurements and LDV measurements. Chirp excitations were used in both cases, with the former being measured at the electrical output of the acoustic receiving IDT, and the latter representing a mea- surement including the final finger pair of the acoustic transmitting IDT, the space 89 Figure 3.34: a) Comsol model results of 120 µm thick, 800 µm wavelength sensor including complex material parameters, b) Wave extracted from Comsol (red) and exponential decay fit (red) between IDTs and nearly the entire receiving IDT. The electrical measurement, shown in Figure 3.35, demonstrate a Q measurement of 11. The LDV measure- ments, shown in Figure 3.36, demonstrate a Q of 4.75 and 9.62 respectively. Since the acoustic wave has not travelled through both sets of IDTs in the LDV mea- surements, we can expect the quality factor to be lower than both the electrical measurements and theoretically predicted value. That the Q of the 8-finger pair electrode is 2.03 times larger than the Q of the 4-finger pair electrode strongly supports the conclusion that quality factor is proportional to the number of finger pairs. Quality factor can be improved in many ways: • Increasing the number of fingers; 90 Figure 3.35: Electrical measurement of a 18 µm thick, 800 µm wavelength sensor with no backplane showing both measured waveform as well as rectangular-filter FFT • Reducing the operating frequency of the sensor; • Reducing the dissipative (imaginary) components of the substrate material parameters. 3.10 Signals Signals refer to the types of meaningful data that can be extracted from the received acoustic waves by the DAQ. Frequency, amplitude, and delay information can be collected from the received waveform with phase and delay behaving similarly. Eight successive waveforms as received by the DSP are shown, before averaging, in Figure 3.37. 3.10.1 Frequency The resonance frequency of the sensor is determined by the interaction between acoustic velocity and wavelength enforced by the IDTs. When travelling across a 91 (a) Four finger pair excitation (b) Eight finger pair excitation Figure 3.36: FFT of an LDV-measured travelling wave of an 18 µm thick, 800 µm wavelength sensor using the isolated differential IDT configu- ration. For four pair excitation the acoustic receiving IDT is used as the transmitter, and for eight pair excitation the transmitting IDT is used 92 Figure 3.37: Eight received acoustic waveforms within the DSP buffer lossy substrate, phase velocity is affected by conventional perturbative factors dis- cussed in Section 1.4.3. Measured phase velocity can also be impacted by changes in acoustic attenuation when operating in a discontinuous signal mode, though this effect on frequency is largely ignored within the scope of this work [2]. As perturbations affect the phase velocity of the antisymmetric wave, the resonance frequency shifts proportionally, which forms the measurable the ∆ f/ f discussed in Section 3.6. The resonance frequency is extracted from the waveform through a LabView frequency detection block which uses a modified Hanning window and FFT to de- tect the frequency within the waveform that represents the largest amplitude. The block returns the frequency, its spectral amplitude within the signal, and its phase. Frequency domain resolution is a function of time domain window size. The lim- itation in frequency measurement resolution can only be overcome by larger sam- pling windows, which first require less attenuation so that dispersion effects and spectral bleeding do not increase the frequency noise floor. Another challenge with measuring frequency is in the driving signal. In a dis- continuous operating mode where chirps are provided to the sensor and the trans- 93 fer function is measured, any non-linearity in the passband of the chirp can be reflected in the measured transfer function. This challenge presented itself in some experimental studies where very narrow chirps were used to maximize the signal amplitude. The resulting frequency measurements were non-linear with significant hysteresis, rendering the data unusable. Similar problems occur if the passband of the sensor is not perfectly flat, providing a non-linear biasing of frequencies as discussed in Section 3.3.5, generating a source for additional error. Although frequency is ideally the signal used when running experiments, the frequency measurement is also dependent on the quality factor of the sensor, which is particularly poor for PVDF substrates due to the large attenuation. Significant im- provements in the performance of the sensor can be achieved by reducing the atten- uation of the wave by improving the material or reducing the frequency, or by in- creasing its amplitude substantially above the crosstalk of the sensor and operating in a feedback-controlled, single frequency mode (ie. frequency locked loop (FLL)). Providing compensation for non-linearities in both the driving waveform and sen- sor response would also help produce a linear correlation between perturbations and response frequency. 3.10.2 Phase The measurement of phase is intrinsically connected to the measurement of fre- quency as the same LabView block provides the information, and the phase is also associated with the detected resonant frequency of the waveform. Unlike fre- quency, phase represents a type of delay measurement as per tD = φ 2pi f , (3.42) where tD is the time delay and φ is phase in radians. The phase of the resonance frequency is determined by calculating the angle of the complex frequency of the FFT at the resonance frequency, making phase calculations unique among the vari- ety of proposed delay measurement methods with its dependence on the frequency domain. A significant challenge in delay-based measurements in this application is es- tablishing linearity between the magnitude of the measurand perturbation and the 94 Figure 3.38: Plot of a sinc function showing frequency amplitude and phase for pass and stop bands response in the time domain. Acoustic wave sensors using IDTs act as filters which ideally produce a linear phase response in the pass band, as shown in Figure 3.38, but can produce non-linearities resulting from imperfections in the fabrication of the IDTs or internal acoustic reflections [56]. Non-linear, hysteresis effects have also been observed, as shown in Figure 3.39. When using a differential IDT design involving two dissimilar polymer affinity layers at low operating frequency, the reduced wave attenuation can allow for interference between the channels. This interference impacts frequency differently than phase, particularly if the analyte is varied rapidly, creating a large mismatch between the affinity layer characteristics on both sides of the channel. Frequency, being a representative of the filtering functions of both the transmitting and receiving IDT, is particularly susceptible to small changes in transfer functions. The phase is also a function of propagation delay as shown by Equation 3.42, and so is strongly affected by acoustic transit between the transmitting and receiving IDT. 3.10.3 Amplitude The amplitude in this context is calculated through the same LabView block as frequency and phase, and refers to the peak amplitude of the strongest frequency component in the received waveform. The amplitude of the waveform is affected predominantly by changes in electromechanical coupling and attenuation, differ- entiating the information from frequency, phase, and delay measurements. Am- 95 (a) PVA on channel A and PVAC on channel B (b) PVA on both channels Figure 3.39: Frequency vs. phase measurements from sweeping through a large range of humidities, illustrating a difference in response between frequency and phase 96 plitude measurements have not been closely studied within the scope of this work due to their notoriously high drift and unstable nature. Attenuation can perma- nently change with ageing, temperature, humidity effects, and other environmental phenomena to which frequency and delay measurement present a degree of im- munity. Amplitude measurements are also extremely sensitive to the conductivity and integrity of the PEDOT:PSS that form the electrodes and DAQ electronics which can cause amplitude shifts in the event of any damage or change in resistance. For these reasons, amplitude measurements are informative regarding the overall health of the sensor, but the information is not used in measuring important physi- cal changes. 3.10.4 Delay Delay measurements are similar to phase measurements in that they measure small variations in time. Unlike phase measurements, delay measurements do not nec- essarily require the frequency domain, nor are they associated with a resonance frequency. Delay measurements measure time directly and with the assumption that the sensor does not change in dimension, delay measurements represent a di- rect measurement of group velocity. Since the signal transmitted across the sensor is reasonably narrow-band, the acoustic waveform is predominantly sinusoidal, limiting the effectiveness of delay measurements through many of the same mech- anisms as phase measurements. There are many examples of delay or time of flight measurements being performed with acoustic sensors [31], [68], [69], [70]. Numerous delay measurement algorithms were implemented and tested to de- termine which provide the best SNR and how that SNR compared to frequency and phase measurements. A description of every algorithm, including underlying theory and implementation can be found in Appendix F. A summary of the re- sults of the testing can be seen in Figure 3.40. The experiment was performed with both pulse train and BFSK excitation waveforms, showing generally expected results. The pulse train excitation yields better performance than BFSK excita- tion in almost every case, including the BFSK cos method, which likely leverages the spectral bleeding of the center frequency lobe due to exponential decay to pin point the 500/600 kHz split. Direct frequency measurements perform well, with 97 (a) Pulse train excitation (b) BFSK excitation Figure 3.40: Figures comparing the signal to noise ratio performance of var- ious delay measurement algorithms using an 120 µm thick, 800 µm wavelength sensor with no backplane cross-correlation, zero-cross detection, and peak detection also showing excellent performance. Unfortunately, despite the excellent performance of some of the delay mea- surement algorithms, the non-linear behaviour discussed in Section 3.10.2 makes delay measurements prohibitive for the purpose of theoretical analysis until the challenges can be resolved. Delay measurements can still be used provided the delay outputs are calibrated against known standards and the environmental effects on delay response are thoroughly understood. 3.11 Design Integration This section uses the relationships explored throughout the chapter to assess the current state of the design of the sensor and propose priorities for further research. 98 A complete analytical model in Matlab calculates the approximate signal strength, sensitivities, quality factor, and resolutions for sensors where eleven different pa- rameters are independently scaled from 1/4× to 4× and plotted together. An 18 µm thick, 800 µm wavelength pre-tensioned (125 MPa) sensor with a backplane and consisting of eight transmitting and four receiving IDTs is used as a benchmark. The calculations assume that frequency is used as the measurand and does not speculate on any changes to the DAQ as a consequence of the examined parame- ters. Complete Matlab code for the implementation of this optimization package can be found in Appendix D. Increasing signal amplitude can improve SNR, which contributes to the mea- surand resolution of the sensor. The sensitivity study for signal amplitude is shown in Figure 3.41. Obvious methods for improvement include increasing the elec- tromechanical coupling coefficient of the PVDF and applied voltage to the acoustic transmitting IDTs. Reducing the thickness of the substrate can help improve sig- nal amplitude by increasing the capacitance of the fingers, thereby adding more electrical power to the system for conversion into acoustic power. Increasing the number of fingers can also provide some small improvement. It is more important that the number of finger pairs not be reduced as the signal amplitude begins to drop off quickly. The other examined parameters do not play a significant role. It should also be noted that if the signal strength can be increased significantly, it might be possible to operate the sensor in a continuous excitation mode with benefits to the measurand resolution. The mass sensitivity study shown in Figure 3.42 is based on Equation 1.4 and consequently can only be affected by changes in material density or thickness. Both values affect the sensitivity in the same way and are overlapping in the figure. Similarly, the remainder of the parameters are overlapping as they all have no effect on the mass sensitivity of the sensor. The stiffness sensitivity study shown in Figure 3.43 is based on Equation 3.17 and, like mass sensitivity, can only be affected by a small number of parameters: wavelength, in-plane stress, Young’s modulus, Poisson’s ratio, and wavelength. Reducing in-plane stress is of high priority according to the figure. Reducing the in-plane stress to zero would remove any impact of wavelength on the sensitiv- ity, but if the stress is not removed, then reducing wavelength has a significantly 99 Figure 3.41: Output power amplitude parameter sensitivity study using an 18 µm thick, 800 µm wavelength differential sensor design as a stan- dard positive effect on stiffness sensitivity, encouraging the possibility of switching to a 400 µm wavelength sensor. Somewhat surprisingly, the importance of Young’s modulus and Poisson’s ratio is reasonably small when compared to the influence of in-plane stress. This result shows that stress is a very significant impediment toward achieving much higher stiffness sensitivity. Figure 3.44 shows how quality factor is affected by varying sensor design pa- rameters. The dependence of quality factor on attenuation and phase velocity, as discussed in Section 3.9, shows nearly every parameter to be important. The most significant methods for improving quality factor come with reducing material at- tenuation and increasing the number of finger pairs in the IDTs. Reducing the former will reduce spectral bleeding, while increasing the latter will improve the filtering effects in the transducers. Increasing the density of the PVDF helps to re- 100 Figure 3.42: Mass sensitivity parameter sensitivity study using an 18 µm thick, 800 µm wavelength differential sensor design as a standard duce the phase velocity of the travelling wave, reducing the effect of attenuation as shown by Equation 3.39. Decreasing in-plane stress has a similar effect, reducing the phase velocity of the travelling wave. One of the more important plots, Figure 3.45, shows the minimum detectable mass change of the sensor assuming no stiffness effects, incorporating the effects of signal strength, mass sensitivity, and quality factor. Unlike the previous figures, a lower minimum mass is desirable. Many parameters can be varied to reduce the minimum detectable mass with the most significant improvements coming from increasing the number of finger pairs, reducing the thickness, and reducing the attenuation. Increasing the coupling coefficient, though still effective, is not as important considering the difficulty in improving the piezoelectric coefficients so substantially. Increasing the applied voltage can provide similar benefits by in- creasing the signal strength. Of the options presented, increasing the number of 101 Figure 3.43: Stiffness sensitivity parameter sensitivity study using an 18 µm thick, 800 µm wavelength differential sensor design as a standard fingers, applied voltage, reducing substrate thickness, and reducing in-plane stress are the most effective and simplest to realize experimentally. The last figure, Figure 3.46, examines the minimum detectable stiffness change of the sensor. There is tremendous room for improvement as the sensor was never optimized for measuring stiffness. First and foremost, reducing the in-plane stress is essential. Doing so will reduce the operating frequency and attenuation of the sensor while also increasing the stiffness sensitivity and removing the influence of the acoustic wavelength. Reducing the Young’s modulus can generate a marginal improvement, but thickness changes through swelling are the primary contributor to stiffness sensitivity. Similar to Figure 3.45, adding fingers, increasing applied voltage, and improving coupling coefficient can better performance by increasing signal strength and quality factor. One limitation in single variable sensitivity studies that warrants consideration 102 Figure 3.44: Quality factor parameter sensitivity study using an 18 µm thick, 800 µm wavelength differential sensor design as a standard is that of variable codependency. The majority of parameters studied in this sec- tion do not change behaviour substantially as a function of other parameters, but there are some exceptions. Attenuation as a function of frequency is exponentially related to signal amplitude and non-linearly related to quality factor. A high coeffi- cient of attenuation can place greater emphasis on any methods that reduce operat- ing frequency in order to maintain a reasonable SNR. Similarly, a low coefficient of attenuation encourages designs with higher frequencies, which would change the behaviour of parameters that influence frequency such as in-plane stress, stiffness, and linear inertia. Another codependent pair is wavelength and in-plane stress. As in-plane stress approaches zero, wavelength ceases to play a significant role in stiffness sensitivity, dramatically affecting the outcome of Figure 3.43. The recommendations made in this section, specifically a reduction in thick- ness, increase in number of fingers, higher operating voltage, and reduction of 103 Figure 3.45: Minimum detectable mass sensitivity study including SNR, quality factor, and mass sensitivity effects using an 18 µm thick, 800 µm wavelength differential sensor design as a standard in-plane stress, do not inflect as they are changed within reasonable constraints on fabrication. The optimal thickness is as thin as possible without detriment to suc- cessful fabrication or piezoelectric poling; similarly, more fingers are better within the scope of available space, and zero in-plane stress is ideal for maximizing mea- surand resolution. Further analysis of the relative importance of each parameter in improving the overall sensor design are discussed in Section 5.1. 104 Figure 3.46: Minimum detectable stiffness sensitivity study including SNR, quality factor, and stiffness sensitivity effects using an 18 µm thick, 800 µm wavelength differential sensor design as a standard 105 Chapter 4 Performance Results This chapter examines the performance of sensors in environmental, mass loading, and gas sensing applications. Tests were performed over a period of 16 months using a variety of different sensor configurations with some experiments showing clear performance improvements in sensitivity or noise floor. Where the informa- tion is useful to understanding an improvement or change in performance, it is detailed in the section discussing the experiment. For all experiments, it can be as- sumed that the driving voltage applied to the acoustic transmitting IDT is between 100 and 125 Vpp. 4.1 Environmental Effects on PEDOT:PSS and PVDF Environmental effects are changes in signals resulting from the influence of the ambient operating environment on the sensor. The two most common environmen- tal factors that may affect acoustic sensing are temperature and humidity, though air pressure and movement can also have an effect. 4.1.1 Ambient Temperature The effect of temperature on PVDF polymer acoustic sensors has already been explored [10], demonstrating a significant sensitivity to temperature, a limitation known in FPW sensing configurations requiring careful design [2]. The temperature effects are a result of a combination of influences, including changes in material 106 (a) 120 µm thick substrate (b) 18 µm thick substrate Figure 4.1: Temperature calibrations on single channel, 800 µm wavelength sensors without backplanes, showing both frequency as a function of time (left) and temperature (right) mechanical and electrical properties such as material stiffness, piezoelectric coef- ficients, electromechanical coupling coefficients, permittivity, dielectric constants, and mechanical loss tangents [30], [71]. The variations in material properties cou- pled with changes in in-plane stress due to material expansion and contraction result in changes to phase velocity, attenuation, and quality factor [30]. The be- haviour is also not linear or consistent for differential substrate configurations as shown by Figure 4.1. Locating sensor configurations with a plateau around the op- erating temperature of the sensor could be useful as the influences of temperature is reduced. 107 Several methods have been deployed to compensate for temperature effects, in- cluding careful monitoring of temperature using a separate temperature probe [9] and building temperature-stable testing environments [23]. The solution proposed in this work is the use of a differential IDT configuration as shown in Section 3.3 to compensate for the effects of operating temperature on the substrate. The effective- ness of this technique is dependent on equal balancing of mechanical properties and layout between the channels as temperature effects may not be precisely mirrored if there are discrepancies between the two channels. The solution also assumes a low hysteresis temperature response with good repeatability. 4.1.2 Ambient Humidity Humidity effects are changes in sensor performance resulting from the presence of water vapour in either the analyte sample or immediate operating environment around the sensor. Water vapour both adsorbs and absorbs in many polymers, in- cluding PVDF to a small extent [37]. The effects of humidity on PEDOT:PSS are significant and well known [45], causing large changes in the mechanical proper- ties of the polymer while also causing finger delamination in high humidity envi- ronments [72], [73]. Electrical tests were performed on drop cast PEDOT:PSS wires to ascertain the effect of humidity on the conduction of the polymer with results shown in Figure 4.2. Combining these results with the possibility for mechani- cal perturbation, humidity changes to the PEDOT:PSS IDTs or backplane must be considered an important environmental influence. Figure 4.3 examines the effect of humidity on both sides of a PVDF sensor with- out a PEDOT:PSS backplane. The results show that variations in humidity do not have a significant effect on the behaviour of the sensor if the variation influences only the PVDF of the substrate and not the PEDOT:PSS of the IDTs. Frequency sig- nal variations behave similarly as amplitude signals in the tests performed. The ef- fect was explored further qualitatively as shown by the data in Figure 4.4 where an air hose with a constant 100 mL/min of air from the gas calibration humidity gen- eration system was swept at 10 second intervals over the top surface of the sensor. The step down of the sensor during the sweeping is an effect caused by the variation in temperature between the sweeping air and the sensor substrate. When the output 108 Figure 4.2: Results of a PEDOT:PSS Resistance vs. Humidity study per- formed at room temperature of the calibration gas was very humid, the oscillation of the output frequency was much larger than the dry air, indicating a greater sensitivity of the sensor to varia- tions in humid air. This greater sensitivity is caused by changes in the mechanical and electrical characteristics of the PEDOT:PSS and can be a significant source of error if not properly compensated through either a separate humidity measurement, protection of the IDTs with a humidity-impermeable material, or differential IDT configuration. The same concerns apply to using PEDOT:PSS as a backplane as well, strongly endorsing both a differential design and the application of a protec- tive coating on the backplane to maximize long term stability of the measurement under different ambient operating conditions. 4.2 Polymer Application on PVDF Substrate The application of polymer to the PVDF substrate is necessary to build reference and affinity layers in gas analyte and biological detection applications. Polymers were dissolved in solvents and applied using a variety of techniques discussed in Section 2.1.4. 109 (a) Top side of sensor (b) Bottom side of sensor Figure 4.3: The signal amplitude of a 120 µm thick, 800 µm wavelength sensor with no backplane when exposed to variations in environmental humidity (shown as dew point temperature) 110 Figure 4.4: Results of cycling humidity levels on the top side of the sensor to assess contribution of variable humidity levels to signal noise 4.2.1 Polyvinyl Alcohol PVA is a synthetic resin, synthesized through the hydrolysis of PVAC and is the largest volume water-soluble polyhydroxyl polymer produced internationally [74]. It demonstrates good chemical resistance to a variety of other solvents and when deposited as a film has mechanical properties similar to PVDF, including a Young’s modulus that reportedly varies from 107 through 1010 Pa depending on the method of forming the film, degree/type of impurities, and environmental conditions [6], [44], [75], [76]. The film used in this work is a Sigma Aldrich 87-89% hydrolyzed, 85,000 - 124,000 molecular weight PVA/PVAC blend that exhibits a Young’s mod- ulus near 2 GPa when drop cast as a film (experimentally determined). To form a solution, PVA pellets are combined with distilled water to form a 2% solution by mass. The polymer solution is applied to the PVDF using two methods. The first method involves inkjet printing the solution onto the substrate in a grid pattern and the second method involves drop casting the solution. The former method was used to perform a loading test on a PVDF sensor [46] and confirm its mass and stiffness sensitivity. In the experiment, an 18 µm thick, 800 111 µm wavelength pretensioned sensor without a backplane was used. Channel A was loaded with PVA layers, allowed to dry, then tested for 15 minutes using the DAQ. Channel B was left unloaded to act as a reference. The first 10 minutes of the test were to allow the sensor to thermally stabilize and so only the final 5 minutes of each test were averaged to determine the sensor’s response. The mass of PVA was measured through a reference measurement where 100,000 drops of PVA were deposited and allowed to dry on a PVDF substrate. The result- ing mass per unit area per layer of PVA was measured to be 0.0301 mg/cm2. The results for each test are shown in Figure 4.5. The data in channel A was compen- sated linearly by shifting channel B to achieve a straight line and applying the same offset to channel A. The response is calculated by mean averaging each 5 minute sampled period, and the results are plotted against the mass per unit area, shown in Figure 4.6. The response demonstrates a clear curve demonstrating both mass and stiffness influences. The fit curve was generated by varying unknown material parameters within acceptable tolerances, yielding pre-tensioned stress of 125 MPa, average Young’s modulus of 2.65 GPa for PVA and PVDF combined, and a PVA density of 0.42 g/cm3. The low density of the PVA is disconcerting as the reported density of the PVA prior to producing a solution is 1.27 g/cm3 [5]. Examination of the deposited PVA film showed significant inconsistency with the printed layer and a potential for air en- trapment. It is in part due to the poor consistency of the film that drop casting PVA was chosen in future experiments. This preliminary experiment successfully demonstrates the mass and stiffness loading effects on a FPW sensor based on a multichannel PVA / reference configuration, while also emphasizing the need for careful optimization of film thickness as discussed in Section 3.6.2. 4.2.2 Polyvinyl Acetate PVAC is a nontoxic vinyl polymer mechanically similar to PVA and used predomi- nantly in adhesive applications for pulp and paper, textiles, and food products [77]. PVAC is predominantly soluble in esters, ketones, and various aromatics. Based on HSP, PVAC serves as a good affinity layer for acetone, toluene, xylene, styrene, and similar aromatic compounds. Although the water uptake can be up to 6% [77], 112 (a) Uncompensated channels (b) Channel A compensated from channel B Figure 4.5: Frequency response of 18 µm thick, 800 µm wavelength, 125 MPa in-plane stress, differential sensor to varying loads of PVA 113 Figure 4.6: Frequency response of an 18 µm thick, 800 µm wavelength, 125 MPa in-plane stress, differential sensor to applied PVA PVAC is insoluble in water and was selected in vapour experiments to act as a bar- rier or reference. 4.3 Gas Analyte Exposure In gas analyte exposure experiments, a sensor is placed within the test chamber and the gas calibration system is used to generate a known concentration of a gas analyte for detection by the sensor. To facilitate this detection, a polymer affinity layer is used as discussed in Section 1.4.3. Ideally, a reference layer is also selected that shows no affinity for the analyte being detected, allowing for compensation of other effects such as a change in environmental temperature or in-plane stress. The reference layer can also be used to equalize the frequency between the sensing and reference channels by careful loading of the reference channel. The gas calibration system can produce VOCs in concentrations below approx- imately 200 ppm depending on the molar mass of the analyte, and vapour up to approximately 75% relative humidity. Although several tests were performed with VOCs, particularly toluene, acetone and PVAC, the total sensitivity of the sensor 114 is not significant enough to yield consistent, meaningful results. For this reason, greater emphasis has been placed on water vapour/PVA testing as vapour can be produced at higher concentrations (1000s of ppm) and can also serve to better un- derstand and verify the sensor’s operation for the purposes of improving sensitivity. 4.3.1 Water Vapour / Polyvinyl Alcohol A series of water vapour / PVA experiments were conducted to develop insights into the sensor’s performance in gas sensing applications. PVA is known to absorb water vapour and has been used extensively in water and vapour sensing [6], [78], [79]. Its swelling mechanism is well understood, as are the corresponding changes to volume and density as functions of relative humidity [5], [52], [80], [81]. Another important factor is how the stiffness of PVA changes as a function of humidity. Work performed by Konidari et al. shows the relationship between tensile strength, Young’s modulus, and glass transition temperature of PVA films exposed to different humidities. There is also a general consensus that increasing the water concentration within PVA films lowers the glass transition temperature, which makes the polymer more pliable [5], [82], [83]. The sensor consisted of an 18 µm thick McMaster Carr PVDF substrate with a PEDOT:PSS backplane. The isolated, differential IDT configuration was used to maximize the information extracted from the sensor, and a moderate in-plane stress (approximately 60 MPa) was used to improve performance over more strongly tensioned sensors. A single 10 µL drop cast layer (1.9 µm thickness) of PVAC solution was used to coat the channel B PEDOT:PSS backplane to act as a reference, and varying quantities of 10 µL (1.9 µm) drop cast layers of PVA were used to coat the sensing channel. Between batches of experiments, the sensing layers, including the PEDOT:PSS backplane, were removed using a combination of xylene, methanol, isopropanol, and distilled water. After the application of any layers, one hour was provided for the sensor to dry beneath a fume hood. Examination of the layers showed good uniformity over the sensing area. Tests were initially performed using the general lab air supply based on out- door air flowing at 500 mL/min. An example result set from these tests is shown in Figure 4.7, showing humidity and each channel independently, and the differential 115 (a) Sensing channel A (PVA) and reference channel B (PVAC) (b) Differential measurement and humidity Figure 4.7: Phase response of a 18 µm thick, 800 µm wavelength sensor with 1 layer of drop cast PVA exposed to different humidities using building air 116 compensated output. Although it was first speculated that the drift in the reference channel B as a function of humidity was caused by a shift in temperature resulting from the vapourization of additional water at higher humidities, further research suggests the effect is non-Fickian adsorption of water vapour into the PVAC struc- ture, as discussed briefly in Section 4.2.2 and Section 3.5.1. This later realization invalidates the use of PVAC as a reference layer in vapour experiments, necessitat- ing the selection of a more appropriate reference polymer layer. It can also be noted in the data that phase, rather than frequency, is shown. The excitation of the acous- tic transmitter in these experiments used a single frequency pulse train, resulting in high non-linearities and poor hysteresis in the frequency response. Further ex- periments will use chirps to improve linearity in the passband for both channels, at the cost of signal strength. Lastly, the measured humidity is not very stable when using building air. This issue was resolved in further testing by switching the air supply to dehumidified, pressurized tank air flowing at 350 mL/min, as shown in Figure 4.8. Once tank air was used, both humidity and the response signal stabi- lized significantly. A useful value for gravimetric sensing is the partition coefficient of the gas analyte and the polymer, as discussed in Section 1.4.3 and Section 3.5.1. Al- though there are many reported values for this partition coefficient for PVA and water vapour, varying degrees of hydrolyzation and molecular mass change ne- cessitate a measurement for the PVA used in this work. The experiment involved placing a measured mass of 5.8522 g of PVA within a glass vial and exposing the PVA to first -3.0 ◦C then 14.6 ◦C dew point. The difference in measured mass once the PVA mass stabilized represents the change in water content within the PVA. Equation 3.12 can be rewritten as K = madd CgVpoly , (4.1) and the ideal gas law can be used to calculate Cg = PV RT Ma V = PV Mw RT = (%RH) 100 PsatMa RT , (4.2) 117 (a) Phase and Humidity (b) Phase vs. Humidity Figure 4.8: Phase response of a 18 µm thick, 800 µm wavelength sensor with 3 layers of drop cast PVA exposed to different humidities 118 Figure 4.9: Partition coefficient data showing the mass change convergence of 5.8522 g of PVA pellets when exposed to constant humidity and finally K = maddρpoly(100RT ) ∆(%RH)PsatMaminitial , (4.3) where madd is the increase in mass due to the vapour absorption, Psat is the satura- tion pressure of vapour under the given environmental conditions, Ma is the molar mass of water, and minitial is the initial mass of the PVA at the initial humidity. The result of the experiment is shown in Figure 4.9, where the saturation change in mass is used with Equation 4.3 to calculate a partition coefficient between 19,500 and 20,500. 4.3.2 Polymer Characterization An examination of Equation 1.15 shows that for a constant stress, stiffness and mass parameters can be uniquely derived from regression fitting of experimental 119 data. These relationships can be expressed as (vpa+∆vpa)2 ∝ 1 M+∆M , (4.4) (vpa+∆vpa)2 ∝C1(d+∆d)+C2(d+∆d)3, (4.5) (vpa+∆vpa)2 ∝C3+C4(E ′Y M +∆E ′ Y M), (4.6) where C1,2,3,4 are constants that do not vary with analyte concentration or number of sensing layers. The three equations show how mass per unit area, thickness, and Young’s modulus, respectively, proportionately affect phase velocity. There is some speculation as to the extent the affinity layer stress varies as a function of analyte concentration or number of sensing layers. The use of a reference electrode along the same plane helps to mitigate any effects caused by stress. Preliminary calculations also suggest that affinity layer stress does not have a significant impact provided that the substrate has a non-trivial amount of in-plane stress (> 20 MPa) and is at least twice as thick as the affinity layer. Equation 4.5 assumes simi- lar Young’s modulus between the sensing layer and substrate, allowing the use of Equation 1.10. Similarly, Equation 4.6 assumes that changes in Young’s modu- lus due to changes in the sensing layer do not significantly impact the plane of no net force during bending. These equations are purely descriptive and are used to illustrate the general relationships between the terms to assess uniqueness of solu- tions. All fitting in this section is performed using the full set of equations with no assumptions regarding stiffness similarities between substrate and sensing layer. Using these relationships, it becomes possible to calculate material parameters of polymers by performing experiments involving multiple polymer layers and a gaseous analyte at varying concentrations. The data can then be regression fitted and applied to a Monte Carlo simulation to calculate the material parameters as a function of analyte concentration. Examples of parameters that can be calculated include partition coefficient, Young’s modulus as a function of analyte concentra- tion, volumetric swelling as a function of analyte concentration, and density as a function of analyte concentration. There is potential value in calculating both mass and stiffness-related polymer parameters using a single, simple test appara- 120 tus; a potential made possible by the low Young’s modulus of the PVDF substrate. Precedent for such a process using attenuation is demonstrated by Monkhouse et al. [31]. A series of three experiments were performed using an 18 µm thick, 800 µm wavelength, isolated differential sensor with backplanes using PVAC as the refer- ence layer and PVA as the water vapour affinity layer. Each PVA or PVAC layer represents 10 µL of 2% solution by mass (1.8 - 2.2 µm). Tank air and the gas calibration station were used to generate the water vapour, with example results shown in Figure 4.8 and Figure 4.10. A single frequency pulse train was used to excite the sensor, yielding frequency measurement non-linearities and preferring the phase channel for analysis. Unfortunately, phase non-linearities were also dis- covered, necessitating a correctional algorithm for the data which improved the fit, but also contributed error to the final results shown in Figure 4.11. The possible causes for phase non-linearities are discussed in Section 3.10.2, with the porosity of PVA allowing water vapour to influence the PEDOT:PSS, and the effects of stress change influencing the fit being other potential sources of error. The fit shown in black lines in Figure 4.10, based on the material properties shown in Figure 4.11, assumes that the examined material properties change lin- early in the examined humidity range. This behaviour is supported by other evi- dence showing that the humidity variations are small and are not in proximity to the glass transition temperature of the polymer [5], [6]. The glass transition tem- perature of a material represents the temperature at which an amorphous material transitions from a hard or brittle state to a molten or rubber-like state. The temper- ature can be influenced by solvent concentration and, while in the transition region, the polymer mechanical behaviour varies non-linearly as a function of concentra- tion. The glass transition threshold of PVA at room temperature is near 55% relative humidity, and the experiment was conducted 10% RH below this threshold in order to maintain the sensing layer in the linear region. The fitting system uses a modi- fied Matlab implementation of the Nelder-Mead Simplex nonlinear optimizer [84], modified to support boundary conditions through an intermediate layer that passes results through a sinusoidal filter to limit output minimum and maximum values. This method yields a partition coefficient of 19,941 and PVA dry density of 1.266 g/cm3. The experiment performed in Section 4.3.1 suggests a partition co- 121 Figure 4.10: Phase response of a 18 µm thick, 800 µm wavelength sensor with 3, 4 and 5 layers (theoretically 2.2 µm/layer) of drop cast PVA exposed to different humidities Figure 4.11: Calculated PVA material properties based on PVA/humidity testing and minimization of the analytical expressions 122 Figure 4.12: An example of expected PVA behaviour as a function of hu- midity derived from PVA with higher hydrolyzation (99% vs. 87 - 89% used) and molar mass (150,000 g/mol vs. 85,000 - 124,000 g/- mol used) [5], [6] with superimposed calculated mechanical behaviour from Figure 4.11 efficient between 19,500 and 20,500, and the MSDS for the PVA used indicates a density of 1.268 g/cm3. The calculated trends in density, Young’s modulus, and volumetric swelling can be compared to Figure 4.12 and data in [6]. Although the Young’s modulus shows excellent agreement with the results shown by Konidari et al., the other trends suggest that the PVA examined has a high propensity for increasing in density rather than volume, disagreeing with the behaviour reported by Krzeminski et al.. This variation is not unexpected due the differences in chem- ical properties between the variants of PVA examined. The non-linearity in phase also has a direct impact on this ratio as velocity has a high order dependence on volumetric swelling as shown by Equation 4.5. 4.3.3 Acetone / Polyvinyl Acetate Numerous tests were performed using a combination of acetone, toluene and PVAC. Based on QCM experiments, the partition coefficient of toluene and PVAC is approx- 123 imation 2,000 [12], much less than that of PVA and water vapour. No measurable responses to toluene and acetone were achievable within the conventional range of the gas calibration system output. A calibration tube was modified to release vapour at a higher, but less predictable rate, yielding some possible results as dis- cussed in [10]. These results were not repeatable and could have been an artifact of noise or temperature variation. Although the latest sensor technology should be able to achieve a consistent response to a change in gas analyte, additional tests with higher concentrations of toluene and acetone were not performed due to a lack of sufficiently stable, high concentration analyte output. Based on the ongoing sensor research, focusing on choosing polymers that respond with a variation in stiffness rather than strictly mass has the potential to yield far larger responses to low concentrations of gaseous analyte. 4.4 Fluid Immersion As discussed in Chapter 1 and Section 3.6.3, it is possible to operate FPW sensors immersed in fluid provided the fluid does not interfere with the electrical operation of the design. Although the sensor could potentially operate completely immersed, the most common application involves immersing the side of the sensor without the electrical connectivity/probes and IDTs. Fluid immersion tests are performed with the sensor inverted and the frame and PVDF substrate providing a fluid reservoir with an approximate 4 mL capacity. The device has been tested with both ionic phosphate buffered saline (PBS) and non-ionic fluids. The application of a non-ionic fluid to the substrate must be performed very carefully. If fluid is placed between the backplane of the centre transmitting IDT and a receiving IDT, the signal becomes unreadable. The poten- tial of the transmitting backplane varies with the applied voltage relative to the receiving IDTs as the piezoamplifier does not produce a fully differential output. Consequently, adding water between the two IDTs increases the capacitive cou- pling between the two backplanes, inducing a non-zero voltage on the receiving IDT backplane and shifting the measured acoustic signal out of the common mode range of the instrumentation amplifier. If ionic water is used and makes contact with the conductive, grounded sensor frame, then the fluid is grounded, preventing 124 Figure 4.13: Frequency change of a 18 µm thick, 800 µm wavelength sensor with a backplane when 4 mL PBS is gradually applied. The sensing channel A is coated with PS and the reference channel B is coated with PVAC, both of which provided an electrical barrier between the ionic solution and backplane. the acoustic transmitting backplane from interfering with the receiving IDTs. All experiments were performed with 7.4 pH PBS as the ionic medium and sensors were cleaned several times using distilled water between experiments. The frequency change resulting from adding PBS to one side of the sensor sub- strate is shown in Figure 4.13. The PBS was applied drop by drop, with the inter- mittent instability cause by poor grounding of the ionic liquid prior to it contacting the metal frame of the sensor. The final frequency shift is caused by the additional mass loading of the liquid. 4.5 Biosensing Biosensing involves the detection of biological compounds by a sensor. When applied to gravimetric acoustic sensing, biosensing typically involves the function- alization of a surface with molecules that demonstrate significant affinity to specific 125 bioactive compounds. A solution containing these compounds is then applied to the surface and as the compounds interact with the surface functionalization acoustic wave perturbation can be detected [85]. PVDF is of particular interest in biosens- ing applications because the polymer is biocompatible, meaning that it has a low rate of adsorption of bioactive materials when not functionalized [8]. PVDF can be functionalized through a variety of processes including microwave plasmas and chemical activation [86], [87], [88], [89]. FPW sensors have been used in gravimet- ric biosensing applications for the detection of E. coli cells [90], [91]. 4.5.1 BSA Exposure to PVDF A common protein used in biosensing, bovine serum albumin (BSA) is extracted from bovine blood and is used in assessing biosensing performance due to its com- paratively low cost, ease of purification, and high tendency to adsorb on a variety of surfaces [92]. Although BSA will bond directly to unactivated PVDF under certain conditions, at low ionic drive and high solution pH, the adherence is minimal [93]. An experiment was conducted using Gibco Fraction V 7.5% BSA and Gibco 7.4 pH PBS. Based on the work of Suzawa et al. [92], PS has a particular affinity for ad- sorbing BSA while PVAC does not at higher pH values. An 18 µm thick, 800 µm wavelength differential sensor with a backplane was prepared with sensing chan- nel A coated with 10 µL (2.1 µm thick layer) of a 2% PS solution in toluene and channel B was coated with 10 µL (1.9 µm thick) of a 2% PVAC solution. The layers were permitted to dry for 2 hours prior to experimentation. The experiment consisted of adding 4 mL of PBS to the underside of the pre- pared sensor and allowing time for the sensor to stabilize. 100 µL drops of BSA were added to the sensor and the frequency response of both channels was ana- lyzed. The result of a test is shown in Figure 4.14. The addition of the BSA at the 1.8 hour time mark caused a jump in the delay measurement of both channels, likely resulting from a small discrepancy in temperature between the BSA droplet and PBS solution. The difference gradually equalized as shown by 4.14b, achieving a new delay stability above the original, suggesting the attachment of BSA proteins to the PS sensing layer coating. Unfortunately, due to the drop in mass sensitivity resulting from the additional mass loading of the PBS and the large wavelength of 126 (a) Both channels (Sensing channel A - PS, Reference channel B - PVAC) (b) Differential of signal Figure 4.14: Measured propagation delays in both the sensing channel A and reference channel B when 100 µL of BSA was added to the 4 mL PBS solution on the sensor 127 the sensor creating a long evanescent decay (see Equation 3.24), the sensor was un- able to clearly and repeatably discern a frequency shift on one channel relative to the other in the experiments performed. An improvement in the gravimetric sensi- tivity or reduction in wavelength as suggested by Equation 3.24 would be necessary before clear results could be attained. Between tests, the substrates were cleaned first with distilled water, then xylene- o, methanol, isopropanol, and distilled water to remove all biological compounds and affinity/reference layers. It cannot be confirmed that the biological compounds were removed due to their tendency to adhere persistently to PVDF [94], yet with the removal of the affinity layers it is likely there was no interference with repeated testing using the same substrate. 128 Chapter 5 Conclusions and Future Work 5.1 Design Discussion The design of all-polymer, FPW sensors is informed by applications and limited by restrictions in materials and fabrication methodology. Fabricated sensors show the potential for both gravimetric and stiffness measurements with demonstrated applications involving gravimetric sensing, gas analyte sensing, and polymer me- chanical characterization. Practically realizing their full potential in commercial applications is limited by many factors, including the low electromechanical cou- pling coefficient and high attenuation of PVDF, the thickness of the substrate, very high temperature sensitivity, and a tendency for the PVDF to sag or deform if not held under tension. Once the underlying theories and behaviours of the sensor were established through experimental, FEA model, and theoretical investigations, it became possi- ble to build an analytical model to predict the change in performance of the sensor with the variation of design parameters. This parameter sensitivity study, focusing on signal strength, quality factor, mass sensitivity, stiffness sensitivity, and ultimate performance in mass and stiffness detection provides insights into prioritizing de- sign changes to optimize sensing performance in specific applications. Combining this information with fabrication experience and insight into environmental affects encourages a set of recommended improvements for future designs and testing based on the technology discussed in this work. 129 • PVDF density: Although the density of the PVDF is not simple to change, copolymers and blends may have an effect. Reducing the density of the PVDF will aid with mass sensitivity but hinder stiffness sensitivity by nearly the same proportion, suggesting that the density can be varied to preferentially bias either stiffness or mass effects, but as the effect on sensitivity is minute compared to the realistic variation in density, changing PVDF density should not be considered critical. • Young’s modulus and Poisson’s ratio: Reducing the Young’s modulus or Poisson’s ratio of the PVDF will improve the stiffness sensitivity of the sen- sor without significantly impacting the mass sensitivity, but the effect is rel- atively small, predominantly due to the overwhelming effect that in-plane stress has on sensitivity. If the in-plane stress can be entirely removed, then reducing Young’s modulus will have a very significant impact on sensitivity, necessitating a recreation of the sensitivity plots to reassess the value of this parameter. • Thickness: Modifying the thickness of the PVDF has a very pronounced im- pact on both mass and stiffness sensitivity. Reducing the thickness of the substrate enhances signal amplitude by increasing the capacitance through the PVDF, and consequently increasing the SNR by transferring more energy into the acoustic domain. A lower thickness also improves mass sensitivity by reducing the mass per unit area of the substrate and stiffness sensitivity by reducing the overall stiffness of the substrate. Thinning the PVDF to sub- micron scales offers the greatest potential for improving overall sensor per- formance and realizing meaningful minimum mass and stiffness detection thresholds, although there are significant challenges in fabrication, poling, and durability to overcome before testable sensors can be produced at these thicknesses. • Attenuation: The attenuation of the PVDF varies with the variety of PVDF warranting further exploring into the exact attenuative mode and alternative fabrication technologies that can reduce the intrinsic attenuation of the mate- rial. The benefits are most obvious in improving signal strength and quality 130 factor, both of which would lead to nearly linear improvements in minimum detectable mass and sensitivity. • Coupling coefficient: Although improving the coupling coefficient by reduc- ing permittivity, reducing compliance, or increasing the piezoelectric con- stants of the material (most effective) significantly improves signal strength, the overall impact to the sensor performance is only moderate, particularly considering the difficulty in improving the coupling coefficient. • In-plane stress: Reducing in-plane stress as much as possible while retaining PVDF integrity (minimize wrinkling) is extremely valuable to stiffness sen- sitivity and moderately valuable to minimum detectable mass. However, in some applications such as polymer characterization, a non-negligible stress is necessary to keep the solution unique and allow the calculation of den- sity, Young’s modulus, and swelling. Work on reducing in-plane stress is underway by varying stretching, poling, and framing procedures. • Wavelength: Although wavelength is shown to be a significant factor in stiff- ness sensitivity, analytically the wavelength term disappears from the equa- tion as in-plane stress approaches zero. If the stress cannot be brought to zero, then improvements in stiffness sensitivity can be realized by reducing the wavelength. Reducing the wavelength also has the benefit of improv- ing mass sensitivity in fluid applications and increasing quality factor sig- nificantly by allowing more finger pairs to fit within the design space. The penalty for smaller wavelength is a higher incidence of defective sensors due to finger shorting and an increase in resonance frequency and corresponding attenuation. • Applied voltage: The dielectric strength of PVDF permits excitation fields of approximately 125 MV/m (varying with type of PVDF), which for all but the thinnest of designs allows for much greater voltages than those used in the experiments herein, limited by the output of the piezoamplifier. A dif- ferent amplifier with a larger output voltage would have the potential to in- crease signal strength and the SNR, leading to a moderate improvement in 131 both minimum detectable mass and stiffness. Due to the lack of commer- cial availability of an affordable unit, one can be constructed to serve this function. • IDT fingers: The number of fingers plays an important role in the quality factor and amplitude of the signal where more fingers can lead to signifi- cant improvements in overall performance. The number of fingers is only limited by the availability of space within the poled region of the substrate. For small values of attenuation (< 50 dB/cm/MHz) in a power-optimized configuration, there should be an equal number of transmitting and receiving fingers for optimum performance. In addition to the above recommendations specifically derived from a theoret- ical model of wave propagation, the following broader improvements can also be made: • With a backplane in place, for thin (< 18 µm) sensors, the acoustic receiver output impedance is large enough to permit electrical impedance matching and an improved SNR. • As the in-plane stress of the sensor decreases, applying probes to the sub- strate surface will have an increasingly pronounced effect leading to large error. The backplane dampens EMI to a point permitting short distances of unshielded wire, which can run from the pads on the substrate to the frame, reducing the need to place probes directly on the substrate surface. • A reduction in in-plane stress also removes the need for steel frames to hold the tension, opening an opportunity for lower cost polymer frames. If the frame is constructed with PVDF then any chemical interactions between test analytes and the frame could be mitigated, allowing the testing of high cor- rosives, something not possible with many other substrate types. • As the in-plane stress and thickness of the PVDF are reduced, the phase ve- locity will drop as well, negating the need for a high end DAQ and possibly supporting microcontroller data acquisition or a similar lower cost technol- ogy. 132 Figure 5.1: Proposed sensor design • With a stronger signal strength and more fingers, apodization of the IDTs can improve performance without significant penalties, making an apodized design worth exploring experimentally. • Extending beyond the initial constraints of the design to incorporate other methods of excitation such as electrostriction [2], [95], [96] can potentially dramatically improve signal strength. • The polymer layer thickness must be designed carefully to maximize perfor- mance for either stiffness or mass sensitivity, or rate of response. A mock-up of a new sensor/frame composition implementing many of the sug- gestions from the above is shown in Figure 5.1. The substrate is stress relieved with a thickness of 500 nm, leading to many significant improvements in performance as 133 Criteria Current 18 µm Design Future 0.5 µm Design Volume 3.75 cm3 1.65 cm3 Operating Frequency 215 kHz 9.5 kHz Signal Strength 9.68 µW 100 µW Quality Factor 13.3 308 Mass Sensitivity -156 cm2/g -4682 cm2/g Stiffness Sensitivity 32570 /Nm 5×106 /Nm ∆mmin 4.80 µg/cm2 4.1 ng/cm2 ∆Dmin 2.30×10−8 Nm 3.85×10−18 Nm Table 5.1: Predicted improvements in performance based on the new design proposed in Figure 5.1 shown in Table 5.1. The new model assumes that there are no major impediments or changes in material properties as the piezoelectric PVDF approaches 500 nm in thickness, which is suggested by literature [97], and that a method for equalizing pressure beneath and external to the sensor can be achieved. No films are com- mercially available that would permit for the fabrication of such thin piezoelectric substrates, meaning that a method would have to be developed to extrude or other- wise produce PVDF film of such small thickness. Compromises may be necessary, but further analysis is beyond the scope of this work. 5.2 Summary of Results A variety of acoustic sensor configurations were fabricated in an effort to develop an understanding of the behaviour of FPWs generated, propagated, and received us- ing an all-polymer design based on piezoelectric PVDF and conductive PEDOT:PSS. The varied fabrication parameters included: • PVDF material source (McMaster Carr, Professional Plastics Inc., Solef R©); • PVDF thickness (0.02” (508 µm), 0.01” (254 µm), 0.003” (76.2 µm), 0.001” (25.4 µm) prestretched); • IDT wavelength (800 µm, 400 µm); 134 • IDT configuration (Single pair, isolated differential, joined differential); • Substrate pretensioning (125 MPa, 60 MPa, and lower values); • Presence and type of a backplane; • Type and thickness of affinity layers (PVA, PVAC, PS); • Methods of affinity layers application (inkjet printed, spray coated, drop cast). Measurements were performed using various instruments including a LDV and a DAQ developed specifically for the application. Excitation of the sensor involved continuous sinusoidal waves, pulse trains, and chirps, each type intended to reveal another aspect of the behaviour of the sensor. Waveform frequencies, phases, am- plitudes, and delays were captured for analysis using numerous algorithms from basic filtering and fitting to advanced simplex optimization. Models were con- structed using finite element analysis and custom Matlab applications to compare the experimental results with simulated theoretical versions. Through a combination of experimental and theoretical analysis of sensors, correlations between observed behaviour and theoretically predicted behaviour were developed. These correlations were built into a model which was used to predict the impact of adjusting design parameters. The effects of varying design param- eters on signal strength, quality factor, mass sensitivity, stiffness sensitivity, and ultimate performance in mass and stiffness sensing applications were analyzed, proposing that the greatest improvements in design could be achieved by reducing substrate thicknesses, in-plane stress, and increasing the number of IDT finger pairs and applied voltage. The environmental effects, including temperature and humidity, on the sensor were experimentally and theoretically considered. The FPW mode is highly sus- ceptible to variations in temperature, but in a manner dependent on the physical parameters of the sensor. Compensation is necessary in all cases, which in this work involved the addition of a differential reference electrode to cancel as many temperature-induced effects as possible. Humidity effects on both the PVDF sub- strate and the PEDOT:PSS electrodes were examined, with the PVDF showing high 135 resistance to moderate changes in environmental humidity and the PEDOT:PSS elec- trode fingers and backplane changing in both mechanical and electrical properties with varying humidity levels. A solution was proposed and partially implemented that involved the coating of any exposed PEDOT:PSS to prevent the ingress of hu- midity, despite the negative consequences to mass and stiffness sensitivity. Fabricated sensors were tested in mass loading, gas sensing, and polymer char- acterization experiments. The sensor response to loading with thin films of poly- mer showed influences from both mass and stiffness contributions to phase veloc- ity, underlining the significance of load substrate stiffness, with experimental data fitting theoretically modelled curves. Gas sensing testing using humidity and PVA demonstrated the improved performance by using tank air rather than building air and demonstrated polymer/analyte acoustic sensing with repeatable and consistent results. The polymer characterization experiment demonstrated the feasibility of an intriguing and unexpected application leveraging the low stiffness of the sensor substrate. The ability to use low cost disposable sensors to profile the mechanical behaviour of thin polymer layers when exposed to vaporous solvents bears further exploration as a useful research tool. 5.3 Future Work The fundamental challenge with the technology is in the poor piezoelectric char- acteristics of the PVDF, its high attenuation, and the difficulty in locating thin films for very thin substrates. A detailed parameter study was performed based on the established theory, concluding that respectable performance that permits VOC sens- ing would be achievable with a thinner material, more IDT finger pairs, less in-plane stress, higher operating voltage, and lower material attenuation. A new concept de- sign for a sensor was prepared and discussed with the goal of future work to realize some of the recommendations made for improving the performance of the sensing platform. New opportunities may also present themselves in exploring electrostric- tion and other methods of excitation and signal reception not discussed in detail in this work. The sensor in its present iteration offers unique opportunities in the low stiff- ness and high chemical resiliency of its substrate material, low cost of materials, 136 and low frequency operation, but otherwise lags behind other existing and well es- tablished acoustic sensing technologies. Significant improvements in the substrate design are necessary to achieve selective gas analyte sensing, particularly in fast response applications. The low stiffness of the substrate offers an intriguing new direction for exploration with the potential of diverging from gravimetric sensing and attempting gas analyte sensing by measuring changes in affinity layer stiff- ness. It also offers opportunities to combine mass and stiffness sensing to engage in polymer mechanical characterization under the influence of various vaporous solvents. With these new possible applications on the horizon and the opportunity to make several improvements in the substrate design, further work in this sensing platform can yield many new and interesting innovations in the field of low cost acoustic sensing. 137 Bibliography [1] J. W. Grate, S. J. Martin, and R. M. White, “Acoustic wave microsensors. part II,” Analytical Chemistry, vol. 65, pp. 987A–996A, Nov. 1993. → pages ix, 5, 6, 7 [2] S. Wenzel, Applications of Ultrasonic Lamb Waves. Doctoral dissertation, Berkeley, 1992. → pages ix, 5, 7, 8, 10, 39, 69, 77, 93, 106, 133 [3] A. V. Mamishev, K. Sundara-Rajan, F. Yang, Y. Du, and M. Zahn, “Interdigital sensors and transducers,” Proceedings of the IEEE, vol. 92, pp. 808– 845, May 2004. → pages ix, 6, 7, 39, 41, 44, 55 [4] J. W. Grate, S. W. Wenzel, and R. M. White, “Flexural plate wave devices for chemical analysis,” Anal. Chem., vol. 63, pp. 1552–1561, Sept. 2011. → pages ix, 7, 10, 13 [5] J. Krzeminski and H. Molisak-tolwinska, “The structure of Water-Swollen Poly(Vinyl alcohol) and the swelling mechanism,” Journal of Macromolecular Science: Part A - Chemistry, vol. 28, no. 3-4, pp. 413–429, 1991. → pages xii, xvi, 71, 72, 73, 74, 112, 115, 121, 123 [6] M. V. Konidari, K. G. Papadokostaki, and M. Sanopoulou, “Moisture-induced effects on the tensile mechanical properties and glass-transition temperature of poly(vinyl alcohol) films,” Journal of Applied Polymer Science, vol. 120, pp. 3381–3386, June 2011. → pages xvi, 73, 111, 115, 121, 123 [7] D. Preethichandra and K. Kaneto, “SAW sensor network fabricated on a polyvinylidine difluoride (PVDF) substrate for dynamic surface profile sensing,” Sensors Journal, IEEE, vol. 7, no. 5, pp. 646–649, 2007. → pages 2, 15 138 [8] P. Walton, M. O’Flaherty, M. Butler, and P. Compton, “Gravimetric biosensors based on acoustic waves in thin polymer films,” Biosensors and Bioelectronics, vol. 8, no. 9-10, pp. 401–407, 1993. → pages 2, 15, 126 [9] Q. Cai, J. Park, D. Heldsinger, M. Hsieh, and E. T. Zellers, “Vapor recognition with an integrated array of polymer-coated flexural plate wave sensors,” Sensors and Actuators B: Chemical, vol. 62, pp. 121–130, Feb. 2000. → pages 2, 13, 65, 108 [10] R. Busch, “All-polymer flexural plate wave sensors,” Master’s thesis, The University of British Columbia, Vancouver, Oct. 2011. → pages 3, 20, 22, 28, 106, 124 [11] G. Man, “Towards all-polymer surface acoustic wave chemical sensors for air quality monitoring,” Master’s thesis, The University of British Columbia, Vancouver, Dec. 2009. → pages 3, 18, 19, 23 [12] K. He, “Characterizing polymer sensing layers for air quality monitoring,” tech. rep., EECE 400, The University of British Columbia, 2010. → pages 3, 124 [13] J. David, Fundamentals and Applications of Ultrasonic Waves. CRC Press, Apr. 2002. → pages 5, 6, 7, 16, 78, 84 [14] D. S. B. Jr, R. M. White, S. J. Martin, A. J. Ricco, E. T. Zellers, G. C. Frye, and H. Wohltjen, Acoustic Wave Sensors: Theory, Design, & Physico-Chemical Applications. Academic Press, 1 ed., Oct. 1996. → pages 6 [15] B. Auld, Acoustic fields and waves in solids. New York: Wiley, 1973. → pages 6 [16] I. Viktorov, Rayleigh and Lamb waves: physical theory and applications. New York: Plenum Press, 1967. → pages 6 [17] J. W. Grate, S. W. Wenzel, and R. M. White, “Flexural plate wave devices for chemical analysis,” Anal. Chem., vol. 63, no. 15, pp. 1552–1561, 1991. → pages 7, 13, 25 [18] S. W. Wenzel and R. M. White, “A multisensor employing an ultrasonic lamb-wave oscillator,” Electron Devices, IEEE Transactions on, vol. 35, pp. 735–743, June 1988. → pages 8, 11, 13, 39 139 [19] H. Lamb, “On waves in an elastic plate,” Proceedings of the Royal Society of London. Series A, Containing Papers of a Mathematical and Physical Character, vol. 93, pp. 114–128, Mar. 1917. → pages 8, 13 [20] Y. Bao and P. W. Walton, “Real-time measurement of mass accumulation on filters using acoustic-wave techniques,” Sensors and Actuators, A: Physical, vol. 44, no. 1, pp. 45–49, 1994. Compendex. → pages 13 [21] C. K. Ho, E. R. Lindgren, K. S. Rawlinson, L. K. McGrath, and J. L. Wright, “Development of a surface acoustic wave sensor for In-Situ monitoring of volatile organic compounds,” Sensors, vol. 3, pp. 236–247, July 2003. → pages 13, 27, 48, 67 [22] A. Choujaa, N. Tirole, C. Bonjour, G. Martin, D. Hauden, P. Blind, A. Cachard, and C. Pommier, “AlN/silicon lamb-wave microsensors for pressure and gravimetric measurements,” Sensors and Actuators A: Physical, vol. 46, pp. 179–182, Jan. 1995. → pages 13 [23] S. W. Wenzel and R. M. White, “Flexural plate-wave gravimetric chemical sensor,” Sensors and Actuators A: Physical, vol. 22, pp. 700–703, June 1989. → pages 13, 32, 108 [24] Y. Dong, W. Gao, Q. Zhou, Y. Zheng, and Z. You, “Characterization of the gas sensors based on polymer-coated resonant microcantilevers for the detection of volatile organic compounds,” Analytica Chimica Acta, vol. 671, pp. 85–91, June 2010. → pages 13 [25] E. Cretu, “Eece 509. advanced microsystems design: Piezoelectric sensing and actuation.” University Lecture, The University of British Columbia, 2011. → pages 14 [26] M. L. Thompson, H. A. Sosa, and Drexel University, On the Material Properties and Constitutive Equations of Piezoelectric Poly Vinylidene Fluoride (PVDF). PhD thesis, Drexel University, Philadelphia, 2002. → pages 15, 16, 84 [27] L. N. Bui, H. J. Shaw, and L. T. Zitelli, “Study of acoustic wave resonance in piezoelectric PVF2Film,” IEEE Transactions on Sonics and Ultrasonics, vol. 24, pp. 331– 336, Sept. 1977. → pages 15 [28] A. Vinogradov and F. Holloway, “Electro-mechanical properties of the piezoelectric polymer PVDF,” Ferroelectrics, vol. 226, no. 1, p. 169, 1999. → pages 15, 16, 84 140 [29] D. K. Das-Gupta and K. Doughty, “The stability and aging of poled polyvinylidene fluoride (PVF2) electrets,” Ferroelectrics, vol. 60, no. 1, pp. 51–59, 1984. → pages 15, 16 [30] L. F. Brown and J. L. Mason, “Disposable PVDF ultrasonic transducers for nondestructive testing applications,” IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, vol. 43, pp. 560–568, July 1996. → pages 15, 107 [31] R. Monkhouse, P. Wilcox, and P. Cawley, “Flexible interdigital PVDF transducers for the generation of lamb waves in structures,” Ultrasonics, vol. 35, pp. 489–498, Nov. 1997. → pages 15, 97, 121 [32] P. Inacio, J. N. Marat-Mendes, and C. J. Dias, “Development of a biosensor based on a piezoelectric film,” in 11th International Symposium on Electrets, 2002. ISE 11. Proceedings, pp. 287– 290, IEEE, 2002. → pages 15 [33] Arkema Inc., Kynar ADX: PVDF Resin-Based Metal Coatings, 2008. → pages 15 [34] Arkema Inc., Kynar PVDF Components - Solving the World’s Water Challenges, 2012. → pages 15 [35] M. Broadhurst and G. Davis, “Physical basis for piezoelectricity in PVDF,” Ferroelectrics, vol. 60, pp. 3–13, 1984. → pages 16, 19 [36] R. Betz, “Properties and aging of SOLEF PVDF piezo- and pyroelectric films for medical transducers,” Ferroelectrics, vol. 60, no. 1, pp. 37–43, 1984. → pages 16, 20, 79 [37] Arkema Inc., Kynar and Kynar Flex PVDF: Performance Characteristics and Data, 2009. → pages 16, 108 [38] Solvay Specialty Polymers, Solef PVDF: A Remarkable Combination of Properties, 2012. → pages 16 [39] A. M. Vinogradov, V. Hugo Schmidt, G. F. Tuthill, and G. W. Bohannan, “Damping and electromechanical energy losses in the piezoelectric polymer PVDF,” Mechanics of Materials, vol. 36, pp. 1007–1016, Oct. 2004. → pages 16, 22 [40] V. Varadan, Y. Roh, V. Varadan, and R. Tancrell, “Measurement of all the elastic and dielectric constants of poled PVDF films,” in Ultrasonics Symposium, 1989. Proceedings., IEEE 1989, pp. 727–730 vol.2, 1989. → pages 16 141 [41] Y. Roh, V. V. Varadan, and V. K. Varadan, “Characterization of all the elastic, dielectric, and piezoelectric constants of uniaxially oriented poled PVDF films,” IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, vol. 49, pp. 836–847, June 2002. → pages 16, 84 [42] J. P. Tamez, A Polyvinylidene Fluoride (PVDF) Piezoelectric Biomedical Transducer for Intravascular Monitoring of Blood Pressure, and Arterial Blood Flow Rate. PhD thesis, University of Texas at San Antonio, 2009. → pages 16 [43] A. Lenz, H. Kariis, A. Pohl, P. Persson, and L. Ojame, “The electronic structure and reflectivity of PEDOT:PSS from density functional theory,” Chemical Physics, vol. 384, pp. 44–51, June 2011. → pages 18 [44] C.-h. Chen, A. Torrents, L. Kulinsky, R. D. Nelson, M. J. Madou, L. Valdevit, and J. C. LaRue, “Mechanical characterizations of cast Poly(3,4-ethylenedioxythiophene):Poly(styrenesulfonate)/Polyvinyl alcohol thin films,” Synthetic Metals, vol. 161, pp. 2259–2267, Dec. 2011. → pages 18, 111 [45] U. Lang, N. Naujoks, and J. Dual, “Mechanical characterization of PEDOT:PSS thin films,” Synthetic Metals, vol. 159, pp. 473–479, Mar. 2009. → pages 18, 108 [46] J. R. Busch, C. Sielmann, G. Man, D. Tsan, K. Walus, and B. Stoeber, “Inkjet printed all-polymer flexural plate wave sensors,” in 2012 IEEE 25th International Conference on Micro Electro Mechanical Systems (MEMS), pp. 571–574, IEEE, Feb. 2012. → pages 19, 20, 23, 26, 28, 111 [47] T. Miller, “Design of corona poling apparatus,” tech. rep., Department of Engineering Physics, The University of British Columbia, 2011. → pages 20 [48] Y. Huan, Y. Liu, and Y. Yang, “Simultaneous stretching and static electric field poling of poly(vinylidene fluoride-hexafluoropropylene) copolymer films,” Polymer Engineering & Science, vol. 47, no. 10, p. 16301633, 2007. → pages 20, 58 [49] S. H. Lee and Y. C. Bae, “Thermal stress analysis for polyimide thin film and a substrate layer system,” Macromolecular Chemistry and Physics, vol. 201, pp. 1286–1291, Aug. 2000. → pages 20 [50] B. Chen, T. Cui, Y. Liu, and K. Varahramyan, “All-polymer RC filter circuits fabricated with inkjet printing technology,” Solid-State Electronics, vol. 47, pp. 841–847, May 2003. → pages 23 142 [51] M. Johnston, H. Edrees, I. Kymissis, and K. Shepard, “Integrated VOC vapor sensing on FBAR-CMOS array,” in Micro Electro Mechanical Systems (MEMS), 2012 IEEE 25th International Conference on, pp. 846 –849, Feb. 2012. → pages 27 [52] L. Deng and M. Hgg, “Swelling behavior and gas permeation performance of PVAm/PVA blend FSC membrane,” Journal of Membrane Science, vol. 363, pp. 295–301, Nov. 2010. → pages 32, 115 [53] P. Wilcox, R. Monkhouse, P. Cawley, M. Lowe, and B. Auld, “Development of a computer model for an ultrasonic polymer film transducer system,” NDT & E International, vol. 31, pp. 51–64, Feb. 1998. → pages 34 [54] C. Wen, C. Zhu, Y. Ju, H. Xu, and Y. Qiu, “A novel dual track SAW gas sensor using Three-IDT and Two-MSC,” Sensors Journal, IEEE, vol. 9, pp. 2010 –2015, Dec. 2009. → pages 44 [55] T. L. Szabo, “Interdigital transducer models: Design options,” in 1978 Ultrasonics Symposium, pp. 701– 704, IEEE, 1978. → pages 44, 45 [56] P. Smith, Studies of Surface Acoustic Wave Interdigitated Transducers. PhD thesis, McMaster University, Aug. 1987. → pages 44, 45, 59, 95 [57] A. A. Nassar and E. L. Adler, “Propagation and electromechanical coupling to plate modes in piezoelectric composite membranes,” in 1983 Ultrasonics Symposium, pp. 369– 372, IEEE, 1983. → pages 55 [58] S. G. Joshi and Y. Jin, “Propagation of ultrasonic lamb waves in piezoelectric plates,” Journal of Applied Physics, vol. 70, p. 4113, 1991. → pages 58 [59] C. M. Hansen, Hansen solubility parameters :a user’s handbook. New York: CRC Press, 2007. → pages 67 [60] Comsol, Inc., Comsol 4.1: SAW Gas Sensing, 2010. → pages 67 [61] Z. Miyagi and K. Tanaka, “Sorption of water vapor by poly(vinyl acetate),” Colloid & Polymer Science, vol. 257, no. 3, pp. 259–265, 1979. → pages 68 [62] B. Katchman and A. D. McLaren, “Sorption of water vapor by proteins and polymers. IV1,2,” J. Am. Chem. Soc., vol. 73, no. 5, pp. 2124–2127, 1951. → pages 68 [63] E. T. Zellers, R. M. White, and S. W. Wenzel, “Computer modelling of polymer-coated ZnO/Si surface-acoustic-wave and lamb-wave chemical 143 sensors,” Sensors and Actuators, vol. 14, pp. 35–45, May 1988. → pages 69, 70 [64] G. Frye and S. Martin, “Velocity and attenuation effects in acoustic wave chemical sensors,” in Ultrasonics Symposium, 1993. Proceedings., IEEE 1993, pp. 379–383, IEEE, oct-3 nov 1993. → pages 71 [65] A. Mauder, “SAW gas sensors: comparison between delay line and two port resonator,” Sensors and Actuators B: Chemical, vol. 26, no. 1-3, pp. 187–190, 1995. → pages 81 [66] P. E. Bloomfield, W. Lo, and P. A. Lewin, “Experimental study of the acoustical properties of polymers utilized to construct PVDF ultrasonic transducers and the acousto-electric properties of PVDF and P(VDF/TrFE) films,” IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, vol. 47, pp. 1397– 1405, Nov. 2000. → pages 84, 85 [67] H. Kolsky, Stress Waves in Solids. Courier Dover Publications, Feb. 2003. → pages 89 [68] P. Daponte, F. Maceri, and R. S. Olivito, “Ultrasonic signal-processing techniques for the measurement of damage growth in structural materials,” IEEE Transactions on Instrumentation and Measurement, vol. 44, pp. 1003–1008, Dec. 1995. → pages 97 [69] G. Andria, “Digital signal processing techniques for accurate ultrasonic sensor measurement,” Measurement, vol. 30, pp. 105–114, Sept. 2001. → pages 97 [70] C. Papageorgiou, C. Kosmatopoulos, and T. Laopoulos, “Automated characterization and calibration of ultrasonic transducers,” in Electrotechnical Conference, 1998. MELECON 98., 9th Mediterranean, vol. 2, pp. 1214–1218 vol.2, IEEE, May 1998. → pages 97 [71] H. Ohigashi, “Electromechanical properties of polarized polyvinylidene fluoride films as studied by the piezoelectric resonance method,” Journal of Applied Physics, vol. 47, no. 3, p. 949, 1976. → pages 107 [72] C. Ishiyama and Y. Higo, “Effects of humidity on young’s modulus in poly(methyl methacrylate),” Journal of Polymer Science Part B: Polymer Physics, vol. 40, pp. 460–465, Mar. 2002. → pages 108 144 [73] L. Smith and V. Schmitz, “The effect of water on the glass transition temperature of poly(methyl methacrylate),” Polymer, vol. 29, pp. 1871–1878, Oct. 1988. → pages 108 [74] F. L. Marten and F. L. Marten, “Vinyl alcohol polymers, vinyl alcohol polymers,” in Kirk-Othmer Encyclopedia of Chemical Technology, Kirk-Othmer Encyclopedia of Chemical Technology, John Wiley & Sons, Inc., John Wiley & Sons, Inc., June 2002. → pages 111 [75] R. Schellekens and C. Bastiaansen, “The drawing behavior of polyvinylalcohol fibers,” Journal of Applied Polymer Science, vol. 43, pp. 2311–2315, Dec. 1991. → pages 111 [76] W. Chen, X. Tao, P. Xue, and X. Cheng, “Enhanced mechanical properties and morphological characterizations of poly(vinyl alcohol)carbon nanotube composite films,” Applied Surface Science, vol. 252, pp. 1404–1409, Dec. 2005. → pages 111 [77] J. Mark, Polymer Data Handbook. Oxford University Press, 1999. → pages 112 [78] T. Venugopalan, T. L. Yeo, T. Sun, and K. Grattan, “LPG-Based PVA coated sensor for relative humidity measurement,” IEEE Sensors Journal, vol. 8, pp. 1093–1098, July 2008. → pages 115 [79] M. Penza and V. Anisimkin, “Surface acoustic wave humidity sensor using polyvinyl-alcohol film,” Sensors and Actuators A: Physical, vol. 76, pp. 162–166, Aug. 1999. → pages 115 [80] Y. Xianda, W. Anlai, and C. Suqin, “Water-vapor permeability of polyvinyl alcohol films,” Desalination, vol. 62, no. 0, pp. 293–297, 1987. → pages 115 [81] H. Tadokoro, S. Seki, and I. Nitta, “The crystallinity of solid high polymers. i. the crystallinity of polyvinyl alcohol film,” Bulletin of the Chemical Society of Japan, vol. 28, no. 8, pp. 559–564, 1955. → pages 115 [82] S. A.-C., G. B., A. C., and J. D., “Glass transition induced by solvent desorption for statistical MMA/nBMA copolymers - influence of copolymer composition,” Polymer, vol. 42, no. 4, pp. 1383–1391, 2001. → pages 115 [83] A. J. Nolte, N. D. Treat, R. E. Cohen, and M. F. Rubner, “Effect of relative humidity on the youngs modulus of polyelectrolyte multilayer films and related nonionic polymers,” Macromolecules, vol. 41, no. 15, pp. 5793–5798, 2008. → pages 115 145 [84] J. C. Lagarias, J. A. Reeds, M. H. Wright, and P. E. Wright, “Convergence properties of the Nelder-Mead simplex method in low dimensions,” SIAM Journal of Optimization, vol. 9, p. 112147, 1998. → pages 121 [85] J. Goddard and J. Hotchkiss, “Polymer surface modification for the attachment of bioactive compounds,” Progress in Polymer Science, vol. 32, pp. 698–725, July 2007. → pages 126 [86] C. Vasile, M. C. Baican, C. M. Tibirna, C. Tuchilus, D. Debarnot, E. Pslaru, and F. Poncin-Epaillard, “Microwave plasma activation of a polyvinylidene fluoride surface for protein immobilization,” Journal of Physics D: Applied Physics, vol. 44, p. 475303, Nov. 2011. → pages 126 [87] M. Mller and C. Oehr, “Plasma aminofunctionalisation of PVDF microfiltration membranes: comparison of the in plasma modifications with a grafting method using ESCA and an amino-selective fluorescent probe,” Surface and Coatings Technology, vol. 116119, pp. 802–807, Sept. 1999. → pages 126 [88] H. Chen, L. Yuan, W. Song, Z. Wu, and D. Li, “Biocompatible polymer materials: Role of proteinsurface interactions,” Progress in Polymer Science, vol. 33, pp. 1059–1087, Nov. 2008. → pages 126 [89] D. Klee, Z. Ademovic, A. Bosserhoff, H. Hoecker, G. Maziolis, and H. Erli, “Surface modification of poly(vinylidenefluoride) to improve the osteoblast adhesion,” Biomaterials, vol. 24, pp. 3663–3670, Sept. 2003. → pages 126 [90] J. C. Pyun, H. Beutel, J. U. Meyer, and H. H. Ruf, “Development of a biosensor for e. coli based on a flexural plate wave (FPW) transducer.,” Biosensors and Bioelectronics, vol. 13, no. 7-8, pp. 839–845, 1998. → pages 126 [91] S. E. Cowan, J. Black, J. D. Keasling, and R. M. White, “Ultrasonic flexural-plate-wave sensor for detecting the concentration of settling e. coli w3110 cells.,” Analytical Chemistry, vol. 71, no. 16, pp. 3622–3625, 1999. → pages 126 [92] T. Suzawa, H. Shirahama, and T. Fujimoto, “Adsorption of bovine serum albumin onto homo- and copolymer latices,” Journal of Colloid and Interface Science, vol. 86, pp. 144–150, Mar. 1982. → pages 126 [93] W. Bowen and Q. Gan, “Properties of microfiltration membranes: Adsorption of bovine serum albumin at polyvinylidene fluoride 146 membranes,” Journal of Colloid and Interface Science, vol. 144, pp. 254–262, June 1991. → pages 126 [94] E. R. Tovey and B. A. Baldo, “Protein binding to nitrocellulose, nylon and PVDF membranes in immunoassays and electroblotting,” Journal of Biochemical and Biophysical Methods, vol. 19, pp. 169–183, Sept. 1989. → pages 128 [95] R. Casalini and C. M. Roland, “Highly electrostrictive poly(vinylidene fluoridetrifluoroethylene) networks,” Applied Physics Letters, vol. 79, pp. 2627–2629, Oct. 2001. → pages 133 [96] G. S. Buckley, C. M. Roland, R. Casalini, A. Petchsuk, and T. C. Chung, “Electrostrictive properties of poly(vinylidenefluoride- trifluoroethylene-chlorotrifluoroethylene),” Chemistry of Materials, vol. 14, pp. 2590–2593, June 2002. → pages 133 [97] E. Husler, W. Kaufmann, J. Petermann, and L. Stein, “Microstructure and piezoelectric properties of PVDF films,” Ferroelectrics, vol. 60, no. 1, pp. 45–50, 1984. → pages 134 147 Appendix A Electrical Schematics Electronic schematics for the data acquisition system. 148 11 2 2 3 3 4 4 D D C C B B A A Title Number RevisionSize Legal Date: 04/10/2011 Sheet    of File: D:\Projects\..\Sheet 1 - Power.SchDoc Drawn By: All-Polymer Sensor DAQ Rev 0 2.0 A F1 1 2 3 P1 DC 6V 100uF C1 Cap Value: 15 V D1 10BQ015TRPBF 11 22 33 4 4 5 5 6 6 U1 BNX016-01 GND Vin Vout GND VR1 ADP3339AKCZ-5-RL 1 uF C2 Cap 1 uF C3 Cap +6V +5V Vin Vout GND VR2 ADP3339AKCZ-3.3-RL 1 uF C5 Cap 1 uF C6 Cap +3.3V 1 uF C4 Cap 1 2 E1 115 R 1 2 E3 115 R 1 uF C7 Cap DRVDD Vin Vout GND VR3 ADP3339AKCZ-1.8-RL 1 uF C12 Cap 1 uF C13 Cap DVDD 1 2 E6 115 R 4.7 uF C14 Cap 1 2 E2 115 R 4.7 uF C8 Cap 1 2 E5 115 R 1 2 E4 115 R 4.7 uF C15 Cap 4.7 uF C16 Cap CVDD AVDD AGND DGND GND 1 2 3 P2 PS 12V 10 uF C10 Cap 10 uF C9 Cap GND -12V +12V W1 AD02 AD13 SDA4 SCL5 VLOGIC 6 GND 7 VCC 8 B 9 A 10 U2 AD5258 EN1 IN2 OUT3 ADJ4 GND 5 GND 6 GND 7 GND 8 U3 ADP1715 SCL SDA DGND DGND 0.1 uF C19 0402 4.7 uF C20 Cap 0.01 uF C18 0402 4.7 uF C21 Cap 2.67 K R5 Res1 1.0 K R4 Res1 1.2 K R3 Res1 4.3 R R2 Res1 4.3 R R1 Res1 10 K R6 Res1 +3.3V 4.7 uF C17 Cap VDDINT EXT_WAKE Value: 1.0 V D2 VESD01-02V-GS08 1.1 - 1.4 V @ 500 mA Power Protection, Regulators and Converters 1 2 P3 Header 2 -5V GND 10 uF C11 Cap DGND DGND DGND DGND PIC101 PIC102 COC1 PIC201 PIC202 COC2 PIC301 PIC302 COC3 PIC401 PIC402 COC4 PIC501 PIC502 COC5 PIC601 PIC602 COC6 PIC701 PIC702 COC7 PIC801 PIC802 COC8 PIC901 PIC902 COC9 PIC1001 PIC1002 OC10 PIC1101 PIC1102 COC11 PIC1201 PIC1202 OC12 PIC1301 PIC1302 OC13 PIC1401 PIC1402 OC14 PIC1501 PIC1502 OC15 PIC1601 PIC1602 OC16 PIC1701 PIC1702 OC17 PIC1801 PIC1802 OC18 PIC1901 PIC1902 OC19 PIC2001 PIC2002 COC20 PIC2101 PIC2102 OC21 PID101 PID102 COD1 PID201 PID202 COD2 PIE101 PIE102 COE1 PIE201 PIE202 COE2 PIE301 PIE302 COE3 PIE401 PIE402 COE4 PIE501 PIE502 COE5 PIE601 PIE602 COE6 PIF101 PIF102 COF1 PIP101 PIP102 PIP103 COP1 PIP201 PIP202 PIP203 COP2 PIP301 PIP302 COP3 PIR101PIR102 COR1 PIR201PIR202 COR2 PIR301 PIR302 COR3 PIR401 PIR402 COR4 PIR501 PIR502 COR5 PIR601 PIR602 COR6 PIU101 PIU102 PIU103 PIU104 PIU105 PIU106 COU1 PIU201 PIU202 PIU203 PIU204 PIU205 PIU206 PIU207 PIU208 PIU209 PIU2010 COU2 PIU301 PIU302 PIU303 PIU304 PIU305 PIU306 PIU307 PIU308 COU3 PIVR101 PIVR102 PIVR103 COVR1 PIVR201 PIVR202 PIVR203 COVR2 PIVR301 PIVR302 PIVR303 COVR3 POEXT0WAKE POSDA POSCL 149 11 2 2 3 3 4 4 D D C C B B A A Title Number RevisionSize Legal Date: 04/10/2011 Sheet    of File: D:\Projects\..\Sheet 2 - DSP.SchDoc Drawn By: UA0_RX 118 UA0_TX 119 PPI_D82 PPI_D94 PPI_D103 PPI_D115 PPI_D127 PPI_D138 PPI_D79 PPI_D610 PPI_D514 PPI_D416 PPI_D318 PPI_D219 PPI_D121 PPI_D022 NMI11 RESET12 CLKIN110 XTAL111 EMU68 TRST37 TCK34 TMS35 TDI33 TDO36 BMODE0 58 BMODE1 57 BMODE2 56 SDA 54 SCL 55 EXTCLK 120 PG 71 EXT_WAKE 70 PH0 113 PH1 115 PH2 114 PPI_CLK27 PG1 28 SPI1_SEL1 29 SPI1_CLK 31 SPI1_MOSI 32 SPI1_MISO 38 PG6 39 PG7 40 PG8 43 PG9 44 PG10 45 PG11 46 PPI_D1547 PPI_D1448 PPI_FS149 TMR1 50 G N D 13 G N D 17 G N D 10 8 G N D 10 9 G N D 12 1 V D D IN T1 24 V D D IN T2 42 V D D IN T3 52 V D D IN T4 53 V D D IN T5 61 V D D IN T6 65 V D D IN T7 11 7 V D D FL A SH 1 25 V D D FL A SH 2 63 V D D FL A SH 3 69 V D D EX T1 1 V D D EX T2 6 V D D EX T3 15 V D D EX T4 20 V D D EX T5 23 V D D EX T6 26 V D D EX T7 30 V D D EX T8 41 V D D EX T9 51 V D D EX T1 0 59 V D D EX T1 1 62 V D D EX T1 2 64 V D D EX T1 3 66 V D D EX T1 4 67 V D D EX T1 5 11 2 V D D EX T1 6 11 6 U4 ADSP-BF506F DGND 0.1 uF C22 0402 0.1 uF C23 0402 0.1 uF C24 0402 0.1 uF C25 0402 0.1 uF C26 0402 0.1 uF C27 0402 0.1 uF C28 0402 0.1 uF C29 0402 0.1 uF C30 0402 DGND VDDEXT 0.1 uF C31 0402 0.1 uF C32 0402 0.1 uF C33 0402 0.1 uF C34 0402 0.1 uF C35 0402 0.1 uF C36 0402 0.1 uF C37 0402 0.1 uF C38 0402 0.1 uF C39 0402 DGND VDDEXT 0.1 uF C40 0402 0.1 uF C41 0402 0.1 uF C42 0402 0.1 uF C43 0402 0.1 uF C44 0402 0.1 uF C45 0402 0.1 uF C46 0402 0.1 uF C47 0402 DGND VDDINT 0.1 uF C49 0402 0.1 uF C50 0402 0.1 uF C51 0402 0.1 uF C52 0402 DGND VDDFLASH VDDFLASH VDDINT VDDEXT D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 DCLK DSP_EMU0 DSP_EMU1 DSP_EMU2 DSP_EMU3 DSP_EMU4 DSP_EMU5 To onboard emulation and debugging system S1 RESET DGND 10 K R10 Res3 10 K R7 Res3 +3.3V OE1 G N D 2 OUT 3 V D D 4 U5 25 MHz OSC +3.3V 10 K R17 Res3 0.1 uF C53 0402 DGND DGND CS0 SCLK MOSI MISO 33 R R15 Res1 U_RX U_TX ADC_CLK 10 K R8 Res3 10 K R18 Res3 10 K R19 Res3 DGND +3.3V DVDD 100 K R9 Res3 33 K R11 Res3 DGND EXT_WAKE +3.3V 220 pF C48 0402 33 R R16 Res1 33 R R12 Res1 1.2 K R13 Res3 1.2 K R14 Res3 +3.3V SCL SDA All-Polymer Sensor DAQ Rev 0 Blackfin DSP with Internal SRAM and Flash Memory Operating at 400 MHz PIC2201 PIC2202 COC22 PIC2301 PIC2302 COC23 PIC2401 PIC2402 COC24 PIC2501 PIC2502 COC25 PIC2601 PIC2602 COC26 PIC2701 PIC2702 COC27 PIC2801 PIC2802 COC28 PIC2901 PIC2902 COC29 PIC3001 PIC3002 COC30 PIC3101 PIC3102 COC31 PIC3201 PIC3202 COC32 PIC3301 PIC3302 COC33 PIC3401 PIC3402 COC34 PIC3501 PIC3502 COC35 PIC3601 PIC3602 COC36 PIC3701 PIC3702 COC37 PIC3801 PIC3802 COC38 PIC3901 PIC3902 COC39 PIC4001 PIC4002 COC40 PIC4101 PIC4102 COC41 PIC4201 PIC4202 COC42 PIC4301 PIC4302 COC43 PIC4401 PIC4402 COC44 PIC4501 PIC4502 COC45 PIC4601 PIC4602 COC46 PIC4701 PIC4702 COC47 PIC4801 PIC4802 COC48 PIC4901 PIC4902 OC49 PIC5001 PIC5002 OC50 PIC5101 PIC5102 COC51 PIC5201 PIC5202 OC52 PIC5301 PIC5302 COC53 PIR701 PIR702 COR7 PIR801 PIR802 COR8 PIR901 PIR902 COR9 PIR1001 PIR1002 COR10 PIR1101 PIR1102 COR11 PIR1201 PIR1202 COR12 PIR1301 PIR1302 COR13 PIR1401 PIR1402 COR14PIR1501 PIR1502 COR15 PIR1601 PIR1602 COR16 PIR1701 PIR1702 COR1 PIR1801 PIR1802 COR18 PIR1901 PIR1902 COR19 PIS101 PIS102 COS1 PIU401 PIU402 PIU403 PIU404 PIU405 PIU406 PIU407 PIU408 PIU409 PIU4010 PIU4011 PIU4012 PIU4013 PIU4014 PIU4015 PIU4016 PIU4017 PIU4018 PIU4019 PIU4020 PIU4021 PIU4022 PIU4023 PIU4024 PIU4025 PIU4026 PIU4027 PIU4028 PIU4029 PIU4030 PIU4031 PIU4032 PIU4033 PIU4034 PIU4035 PIU4036 PIU4037 PIU4038 PIU4039 PIU4040 PIU4041 PIU4042 PIU4043 PIU4044 PIU4045 PIU4046 PIU4047 PIU4048 PIU4049 PIU4050 PIU4051 PIU4052 PIU4053 PIU4054 PIU4055 PIU4056 PIU4057 PIU4058 PIU4059 PIU4061 PIU4062 PIU4063 PIU4064 PIU4065 PIU4066 PIU4067 PIU4068 PIU4069 PIU4070 PIU4071 PIU40108 PIU40109 PIU40110 PIU40111 PIU40112 PIU40113 PIU40114 PIU40115 PIU40116 PIU40117 PIU40118 PIU40119 PIU40120 PIU40121 COU4 PIU501 PIU502 PIU503 PIU504 COU5 POSCL POSDA POD8 POD10 POD9 POD 1 POD12 POD13 POD7 POD6 POD5 POD4 POD3 POD2 POD1 POD0 PODCLK POC\S\0\ POSCLK POMOSI PODSP0EMU4 PODSP0EMU2 PODSP0EMU3 PODSP0EMU5 PODSP0EMU1 POMISO POD15 POD14 POADC0CLK PODSP0EMU0 POEXT0WAKE POU0RX POU0TX 150 11 2 2 3 3 4 4 D D C C B B A A Title Number RevisionSize Legal Date: 04/10/2011 Sheet    of File: D:\Projects\..\Sheet 3 - Devices.SchDoc Drawn By: All-Polymer Sensor DAQ Rev 0 C1+1 C1-3 C2+4 C2-5 T1IN11 T2IN10 R1OUT12 R2OUT9 V+ 2 V- 6 T1OUT 14 T2OUT 7 R1IN 13 R2IN 8 GND 15 VCC 16 U6 ADM3202ARNZ 0.1 uF C54 0402 0.1 uF C57 0402 U_TX U_RX 33 R R20 Res1 0.1 uF C56 0402 +3.3V DGND 0.1 uF C55 0402 0.1 uF C58 0402 1 2 3 4 5 6 7 8 9 11 10 J1 D Connector 9 GND GND UART Level Converter and Line Driver PIC5401 PIC5402 OC5 PIC5501PIC5502 OC55 PIC5601 PIC5602 OC56 PIC5701 PIC5702 COC57 PIC5801PIC5802 OC58 PIJ101 PIJ102 PIJ103 PIJ104 PIJ105 PIJ106 PIJ107 PIJ108 PIJ109 PIJ1010 PIJ1011 COJ1 PIR2001 PIR2002 COR2 PIU601 PIU602PIU603 PIU604 PIU605 PIU606 PIU607 PIU608PIU609 PIU6010 PIU6011 PIU6012 PIU6013 PIU6014 PIU6015 PIU6016 COU6 POU0RX POU0TX 151 11 2 2 3 3 4 4 D D C C B B A A Title Number RevisionSize Legal Date: 04/10/2011 Sheet    of File: D:\Projects\..\Sheet 4 - ADC.SchDoc Drawn By: CLK-1 C V D D 2 D0B3 D1B4 D2B5 D V D D 6 G N D 7 D R V D D 8 D3B9 D4B10 D5B11 D6B12 D7B13 D8B14 D9B15 D10B16 D11B17 D12B18 D13B19 D14B20 D15B21 ORB22 D R V D D 23 G N D 24 D V D D 25 DCO 26 D0A 27 D1A 28 D2A 29 D3A 30 D4A 31 D5A 32 D6A 33 D7A 34 D8A 35 D9A 36 D10A 37 D11A 38 D12A 39 D13A 40 D R V D D 41 G N D 42 D V D D 43 D14A 44 D15A 45 ORA 46 SDIO 47 SCLK 48 CSB 49 RESET50 A G N D 51 A V D D 52 V IN +A 53 V IN -A 54 A V D D 55 V R EF 56 C FI LT 57 A V D D 58 V IN +B 59 V IN -B 60 A V D D 61 A G N D 62 C G N D 63 CLK+64 U8 AD9262 AVDD AGND DRVDD DGND AGND CVDD 0.1 uF C73 0402 0.1 uF C74 0402 0.1 uF C75 0402 DRVDD DGND 0.1 uF C69 0402 0.1 uF C70 0402 0.1 uF C71 0402 AVDD 0.1 uF C72 0402 AGND 0.1 uF C68 0402 S2 RESET 10 K R27 Res3 +3.3V DGND A11 G N D 2 A23 Y2 4 V C C 5 Y1 6 U7 NC7WZ07P6X CS0 10 K R28 Res3 +3.3V 0.1 uF C67 0402 DRVDD DGND D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 DCLK D6 RED DGND D5 RED DGND SCLK MOSI MISO DGND 10 K R30 Res3 1.07 K R25 Res3 1.07 K R26 Res3 1.07 K R29 Res3 10 uF C65 Cap 10 uF C66 Cap AGND 10 uF C63 Cap 10 uF C64 Cap AGND V IN -B V IN +B V IN -A V IN +A ADC_CLK T1 ETC1-1-13 DGND 24.9 R R24 Res3 24.9 R R23 Res3 AGND 1 uF C59 0402 1 uF C60 0402 D3 HSMS-2812BLK D4 HSMS-2812BLK 10 uF C61 Cap 100 R R21 Res3 100 R R22 Res3 AGND 0.1 uF C62 0603 All-Polymer Sensor DAQ Rev 0 16-bit 168 MSPS 2-channel Sigma-Delta ADC Using Internal Reference PIC5901PIC5902 COC59 PIC6001PIC6002 COC60 PIC6101 PIC6102 OC61 PIC6201 PIC6202 OC62 PIC6301 PIC6302 COC63 PIC6401 PIC6402 COC64 PIC6501 PIC6502 COC65 PIC6601 PIC6602 COC66 PIC6701 PIC6702 COC67 PIC6801 PIC6802 OC68 PIC6901 PIC6902 OC6 PIC7001 PIC7002 COC70 PIC7101 PIC7102 OC7 PIC7201 PIC7202 COC72 PIC7301 PIC7302 OC7 PIC7401 PIC7402 COC74 PIC7501 PIC7502 OC7 PID301PID302 COD3 PID401PID402 COD4 PID501 PID502 COD5 PID601 PID602 COD6 PIR2101 PIR2102 COR21 PIR2201 PIR2202 COR22 PIR2301 PIR2302 COR23 PIR2401 PIR2402 COR24 PIR2501PIR2502 COR25 PIR2601PIR2602 COR26 PIR2701 PIR2702 COR27 PIR2801 PIR2802 COR28 PIR2901 PIR2902 COR29 PIR3001 PIR3002 COR30PIS201 PIS202 COS2 PIT101 PIT102 PIT103 PIT104 COT1 PIU701 PIU702 PIU703 PIU704 PIU705 PIU706 COU7 PIU801 PIU802 PIU803 PIU804 PIU805 PIU806PIU807PIU808 PIU809 PIU8010 PIU8011 PIU8012 PIU8013 PIU8014 PIU8015 PIU8016 PIU8017 PIU8018 PIU8019 PIU8020 PIU8021 PIU8022 PIU8023 PIU8024 PIU8025 PIU8026 PIU8027 PIU8028 PIU8029 PIU8030 PIU8031 PIU8032 PIU8033 PIU8034 PIU8035 PIU8036 PIU8037 PIU8038 PIU8039 PIU8040 PIU8041 PIU8042 PIU8043 PIU8044 PIU8045 PIU8046 PIU8047 PIU8048 PIU8049 PIU8050 PIU8051PIU8052 PIU8053PIU8054PIU8055 PIU8056PIU8057PIU8058 PIU8059PIU8060PIU8061 PIU8062 PIU8063 PIU8064 COU8 POC\S\0\ POMISO POMOSI POADC0CLK PODCLK POD0 POD1 POD2 POD3 POD4 POD5 POD6 POD7 POD8 POD9 POD10 POD 1 POD12 POD13 POD14 POD15 POSCLK POVIN0APOVIN0APOVIN0BPOVIN0B 152 11 2 2 3 3 4 4 D D C C B B A A Title Number RevisionSize Legal Date: 04/10/2011 Sheet    of File: D:\Projects\..\Sheet 5 - Analog 1.SchDoc Drawn By: All-Polymer Sensor DAQ Rev 0 -IN11 FB+OUT12 +V S1 3 +V S1 4 FB-OUT2 5 +IN2 6 -IN2 7 FB+OUT2 8 +V S2 9 +V S2 10 V C O M 2 11 -OUT2 13 PD2 14 -V S2 15 -V S2 16 V C O M 1 17 +OUT118 -OUT119 +OUT2 12 PD120 -V S1 21 -V S1 22 FB-OUT123 +IN124 U11 ADA4937-2 AGND +5V 10 uF C81 Cap 0.1 uF C82 0603 10 uF C79 Cap 0.1 uF C80 0603 10 uF C83 Cap 0.1 uF C84 0603 10 uF C85 Cap 0.1 uF C86 0603 AGND AGND 200 R R40 Res1200 R R39 Res1 27 R R41 Res1 AGND 200 R R38 Res1 200 R R36 Res1 60.4 R R37 Res1 10 K R42 Res1 +5V 10 K R43 Res1 AGND VIN-A VIN+A V+1 INV A2 SA3 OUT4 OUT5 GND6 NC7 V-8 V- 9 EN 10 GND 11 OUT 12 OUT 13 SB 14 INV B 15 V+ 16 U10 LT1568 +5V 10 uF C77 Cap 0.1 uF C76 0603 AGND -5V 10 uF C90 Cap 0.1 uF C89 0603 AGND 560 pF C87 1206 3.4 K R33 Res1 1.54 K R34 Res1 AGND AGND 1.33 K R31 Res1 1.33 K R32 Res1 1.33 K R35 Res1 -IN1 DGND 2 -VS 3 A04 A15 WR6 OUT 7 +VS 8 REF 9 +IN10 U9 AD8253 -12V AGND 1 uF C88 Cap AGND +12V 1 uF C78 Cap AGND 1 2 P4 Sensor Input Instrumenation Amplifier Configured for 100x Gain 4-pole Butterworth Filter with 4V/V Passband Gain with Flow = 400 kHz, Fhigh = 1200 kHz ADC Input Driver/Amplifier Configured for 1x Gain PIC7601 PIC7602 COC76 PIC7701 PIC7702 COC77PIC7801 PIC7802 COC78 PIC7901 PIC7902 COC79 PIC8001 PIC8002 COC80 PIC8101 PIC8102 COC81 PIC8201 PIC8202 COC82 PIC8301 PIC8302 COC83 PIC8401 PIC8402 COC84 PIC8501 PIC8502 COC85 PIC8601 PIC8602 COC86 PIC8701 PIC8702 COC87 PIC8801 PIC8802 COC88 PIC8901 PIC8902 OC89 PIC9001 PIC9002 OC90 PIP401 PIP402 COP4 PIR3101 PIR3102 COR31 PIR3201 PIR3202 COR32 PIR3301 PIR3302 COR33 PIR3401 PIR3402 COR3 PIR3501 PIR3502 COR35 PIR3601PIR3602 COR36 PIR3701 PIR3702 COR37 PIR3801PIR3802 COR38 PIR3901PIR3902 COR39 PIR4001PIR4002 COR40 PIR4101 PIR4102 COR41 PIR4201PIR4202 COR42 PIR4301PIR4302 COR43 PIU901 PIU902 PIU903 PIU904 PIU905 PIU906 PIU907 PIU908 PIU909 PIU9010 COU9 PIU1001 PIU1002 PIU1003 PIU1004 PIU1005 PIU1006 PIU1007 PIU1008 PIU1009 PIU10010 PIU10011 PIU10012 PIU10013 PIU10014 PIU10015 PIU10016 COU10 PIU1101 PIU1102 PIU1103 PIU1104 PIU1105 PIU1106 PIU1107 PIU1108 PIU1109 PIU11010 PIU11011 PIU11012 PIU11013 PIU11014 PIU11015PIU11016 PIU11017 PIU11018 PIU11019 PIU11020 PIU11021 PIU11022 PIU11023 PIU11024 COU 1 POVIN0A POVIN0A 153 Appendix B DSP Programming C++ Program for the Blackfin DSP used as part of the data acquisition system. 154 /*****************************************************************************  * Sensor1.c  *  * Program to acquire high speed data from an external ADC and serve that data  * to LabView via UART0.  *****************************************************************************/ #include <cdefBF506F.h> #include <ccblkfn.h> #include <sys/exception.h> #include "bfrom.h" //Define statements #define SCLK_MHZ 100 #define CCLK_MHZ 400 #define BAUDRATE 500000 //Non-standard!  Need appropriate (ideally FTDI) Serial->USB converter #define SPIBAUD  250000 #define PPISAMPLES 500 #define NUMAVG 1500 //Default - 5000, 3000 for 18um, half for TWOCHANNEL mode ////#define DELAY_WIDTH 600 //In 10ns increments, after trigger - 600 default, 2000 for 18um //#define DELAY_WIDTH 1000 //TOF Mode, 800 for half duty cycle pulse string, 1000 for 525/575 #define DELAY_WIDTH 1500 //TOF Mode, 800 for half duty cycle pulse string, 1000 for 525/575 //#define DELAY_WIDTH 700 //For TOF BFSK 500/600 #define DELAY_AMP 25 //In 10ns increments, after trigger #define TWOCHANNEL 1 //Set to one to operate in two input channel mode #define SKIPNUM 1 //Reduces acquisition rate:  NewRate = Rate / SKIPNUM #pragma symbolic_ref #pragma section("L1_code") const char __argv_string[] = "-abc -xyz"; //Global variable definitions struct flags_struct { char uartSend; char uartTransmitting; char adcArrived; char txBuffer; char dataReady; char medianCalc; char syncPeriod; char chanActive; } flags; long int uartTX1[PPISAMPLES * 2 + 1]; long int uartTX2[PPISAMPLES * 2 + 1]; int chanTXBufOffset = 0; int chanppiBuf = 0; char uartRX[10]; 155 short int ppiBuf[8][PPISAMPLES * SKIPNUM]; short int bufi = 0; char medianVec[PPISAMPLES * SKIPNUM]; //Function definitions void bufMedian(void); void initialize(void); void initClock(void); void initTimer(void); void initUART(void); void initSPI(void); void initPPI(void); void initAmp(void); void initSync(void); char spiReadWrite(char); void spiCS(char); void initADC(void); void wait( volatile unsigned long int ); void adcWriteByte( unsigned int, char ); char adcReadByte( unsigned int ); EX_INTERRUPT_HANDLER(int_sync) { if( *pTIMER_STATUS & TIMIL2 ) { //Delay is complete, acquire data *pTIMER_STATUS = TIMIL2; //Clear interrupt *pDMA0_CONFIG |= 0x0001; *pPPI_CONTROL |= 0x0001; //Fetch next sample flags.medianCalc = 1; } if( *pTIMER_STATUS & TIMIL3 ) { //Delay is complete, swich amp status *pTIMER_STATUS = TIMIL3; //Clear interrupt } if( *pPORTGIO & PG6 ) { //Time delay *pPORTGIO_CLEAR = PG6; if( flags.syncPeriod >= 0 ) { flags.syncPeriod = 0; *pTIMER_ENABLE = TIMEN2; //Start post-trigger acq delay *pTIMER_ENABLE = TIMEN3; //Start post-trigger amp delay } else flags.syncPeriod++; } } EX_INTERRUPT_HANDLER(int_uart) { 156 int temp; //Check for UART transmit - disable transmitter if( *pSIC_ISR0 & 0x00800000 ) { *pDMA9_CONFIG &= 0xfffe; *pUART0_IER_CLEAR = 0x2; *pDMA9_IRQ_STATUS = 0x03; //Reset DMA module flags.uartTransmitting = 0; } //Check for UART receive - send next block if( *pSIC_ISR0 & 0x00400000 ) { temp = *pUART0_RBR; flags.uartSend = 1; } } EX_INTERRUPT_HANDLER(int_ppi) { *pDMA0_CONFIG &= 0xfffe; *pPPI_CONTROL &= 0xfffe; //Disable PPI *pDMA0_IRQ_STATUS = 0x03; //Reset DMA flags.adcArrived = 1; } int main( int argc, char *argv[] ) { int i; int acqNum = 0; initialize(); while( 1 ) { if( flags.adcArrived ) { flags.adcArrived = 0; if( flags.dataReady ) //Halt acquisition until next packet ready continue; //Post-process data if( flags.txBuffer == 0 ) { int lsample = ppiBuf[bufi + chanppiBuf][0]; int val = 0; //Work in uartTX2 for( i = 0; i < PPISAMPLES; i++ ) { val = ppiBuf[bufi + chanppiBuf][i * SKIPNUM]; if( abs(val) < abs(lsample) + 2000 ) //Protect against bad bits 157 uartTX2[i + chanTXBufOffset + 1] += (long int)val; else uartTX2[i + chanTXBufOffset + 1] += (long int)lsample; lsample = val; } } else { int lsample = ppiBuf[bufi + chanppiBuf][0]; int val = 0; //Work in uartTX1 for( i = 0; i < PPISAMPLES; i++ ) { val = ppiBuf[bufi + chanppiBuf][i * SKIPNUM]; if( abs(val) < abs(lsample) + 2000 ) //Protect against bad bits uartTX1[i + chanTXBufOffset + 1] += (long int)val; else uartTX1[i + chanTXBufOffset + 1] += (long int)lsample; lsample = val; } } acqNum++; //Increment buffer pointer and setup for next transfer if( TWOCHANNEL ) { if( flags.chanActive == 1 ) //If in two channel mode and channel B just completed bufi++; } else bufi++; if( bufi > 3 ) bufi = 0; //Switch channel if necessary if( TWOCHANNEL ) { if( flags.chanActive == 0 ) { *pPPI_CONTROL &= 0xbfff; chanTXBufOffset = PPISAMPLES; chanppiBuf = 4; flags.chanActive = 1; //Set to channel B } else { *pPPI_CONTROL |= 0x4000; chanTXBufOffset = 0; chanppiBuf = 0; flags.chanActive = 0; //Set to channel A } 158 }//Set PPI buffer location *pDMA0_START_ADDR = ppiBuf[chanppiBuf + bufi]; //If total number of samples reached then break off until next time if( acqNum == NUMAVG ) { flags.dataReady = 1; } } //While acquiring new data set, perform median calc on other three buffers if( flags.medianCalc ) { flags.medianCalc = 0; //Generate median vector on 3 rolling input buffers // bufMedian(); } //New data available and not transmitting? if( flags.dataReady && !flags.uartTransmitting ) { //Switch buffers if( flags.txBuffer ) flags.txBuffer = 0; else flags.txBuffer = 1; flags.dataReady = 0; acqNum = 0; //Clear old buffer if( flags.txBuffer == 0 ) for( i = 0; i < PPISAMPLES * 2; i++ ) uartTX2[i + 1] = 0; else for( i = 0; i < PPISAMPLES * 2; i++ ) uartTX1[i + 1] = 0; } if( flags.uartSend ) //Transmit data if requested { if( flags.txBuffer == 0 ) *pDMA9_START_ADDR = uartTX1; else *pDMA9_START_ADDR = uartTX2; flags.uartSend = 0; *pDMA9_CONFIG |= 0x0001; //Active UART send *pUART0_IER_SET = 0x0002; flags.uartTransmitting = 1; } } } 159 void bufMedian() { int i; //Determine buffers char b0, b1, b2; char ind = 35; switch( bufi ) { case 0: b0 = 1; b1 = 2; b2 = 3; break; case 1: b0 = 0; b1 = 2; b2 = 3; break; case 2: b0 = 0; b1 = 1; b2 = 3; break; default: b0 = 0; b1 = 1; b2 = 2; break; } b0 += chanppiBuf; b1 += chanppiBuf; b2 += chanppiBuf; /* Consumes too much power, switch for single point test */ //Calculate median value of three unused buffers for( i = 0; i < 1; i++ ) { if( ppiBuf[b1][i] < ppiBuf[b0][i] ) { if( ppiBuf[b0][i] < ppiBuf[b2][i] ) medianVec[i] = b0; else if( ppiBuf[b2][i] < ppiBuf[b1][i] ) medianVec[i] = b1; else medianVec[i] = b2; } else { if( ppiBuf[b0][i] > ppiBuf[b2][i] ) medianVec[i] = b0; else if( ppiBuf[b2][i] > ppiBuf[b1][i] ) medianVec[i] = b1; else 160 medianVec[i] = b2; } } /* if( ppiBuf[b1][ind] < ppiBuf[b0][ind] ) { if( ppiBuf[b0][ind] < ppiBuf[b2][ind] ) medianVec[0] = b0; else if( ppiBuf[b2][ind] < ppiBuf[b1][ind] ) medianVec[0] = b1; else medianVec[0] = b2; } else { if( ppiBuf[b0][ind] > ppiBuf[b2][ind] ) medianVec[0] = b0; else if( ppiBuf[b2][ind] > ppiBuf[b1][ind] ) medianVec[0] = b1; else medianVec[0] = b2; } */ } void initClock() { u32 SIC_IWR1_reg;                /* backup SIC_IWR1 register */     ADI_SYSCTRL_VALUES sysctrl ={ 0x0000, 0x2080, /* (25MHz CLKIN x (MSEL=8))::CCLK = 200MHz */ 0x0004, /* (200MHz/(SSEL= 2))::SCLK = 100MHz */ 0x0000, 0x0000 }; SIC_IWR1_reg = *pSIC_IWR1; /* save SIC_IWR1 due to anomaly 05- 00-0432 */ *pSIC_IWR1 = 0; /* disable wakeups from SIC_IWR1 */ bfrom_SysControl( SYSCTRL_WRITE | SYSCTRL_PLLCTL | SYSCTRL_PLLDIV, &sysctrl, NULL ); *pSIC_IWR1 = SIC_IWR1_reg; /* restore SIC_IWR1 due to anomaly 05-00-0432 */ } void initTimer() { //Configure 50MHz output pulse for TMR1 to drive ADC CLK *pPORTG_MUX = *pPORTG_MUX | 0x8000; *pPORTG_FER = *pPORTG_FER | 0x8000; *pTIMER1_WIDTH = 0x0001; *pTIMER1_PERIOD = 0x0002; 161 *pTIMER1_CONFIG = 0x0009; //Continuous PWM out mode *pTIMER_ENABLE = 0x0002; //Enable Timer1 } void initUART() { //Port setup *pPORTF_MUX = *pPORTF_MUX | 0x0005; *pPORTF_FER = *pPORTF_FER | 0x0003; //Data register setup uartTX1[0] = 0xa5a55a5a; uartTX2[0] = 0xa5a55a5a; //UART setup *pUART0_LCR = 0x0003; //N81 *pUART0_MCR = 0x0000; *pUART0_DLH = ( SCLK_MHZ * 1000000 / 16 / BAUDRATE ) >> 8; *pUART0_DLL = ( SCLK_MHZ * 1000000 / 16 / BAUDRATE ) & 0xff; *pUART0_GCTL = 0x0001; //Enable UART clock, /16 prescaler //DMA/Interrupt configuration - default IVG10 register_handler( ik_ivg10, int_uart ); *pIMASK = *pIMASK | 0x400; *pSIC_IMASK = *pSIC_IMASK | 0x00c00000; //Activate RX/TX DMA interrupts *pDMA9_START_ADDR = uartTX2; //Transmit buffer *pDMA9_X_COUNT = PPISAMPLES * 8 + 4; //Header + PPISAMPLES channel A + PPISAMPLES channel B 8-bit words in buffer *pDMA9_X_MODIFY = 0x0001; //8-bit transfers *pDMA9_CONFIG = 0x00a1; //FLOW_STOP | WDSIZE_8 | DI_EN | SYNC | DMAEN (z) //Initiate buffer empty interrupt to start transfer *pUART0_IER_SET = 0x3; //ETBEI and ERBEI } void initSPI() { //Port setup *pPORTG_MUX = *pPORTG_MUX | 0x0000; *pPORTG_FER = *pPORTG_FER | 0x0038; //SPI setup *pSPI1_BAUD = SCLK_MHZ * 1000000 / 2 / SPIBAUD; *pSPI1_CTL = 0x5c01; //SPI Master, software CS control, clock active low ssync(); //Chip select *pPORTGIO_SET = PG2; *pPORTGIO_DIR |= PG2; //Clear buffer spiReadWrite( 0x00 ); } void initPPI() 162 { //Port setup *pPORTF_MUX = *pPORTF_MUX | 0xaaa0; *pPORTG_MUX = *pPORTG_MUX | 0x2001; *pPORTF_FER = *pPORTF_FER | 0xfffc; *pPORTG_FER = *pPORTG_FER | 0x3001; // *pPORTF_HYSTERESIS = 0x0000; //DMA/Interrupt setup register_handler( ik_ivg9, int_ppi ); *pIMASK = *pIMASK | 0x200; *pSIC_IMASK = *pSIC_IMASK | 0x00004000; //Activate PPI interrupts *pDMA0_START_ADDR = ppiBuf[0]; //Receive buffer *pDMA0_X_COUNT = PPISAMPLES * SKIPNUM; //PPISAMPLES 16-bit words in buffer *pDMA0_X_MODIFY = 0x0002; //16-bit transfers *pDMA0_CONFIG = 0x00a6; //PPI setup *pPPI_DELAY = 0x0000; //Not used *pPPI_COUNT = PPISAMPLES * SKIPNUM - 1; //Channel buffer setup chanTXBufOffset = 0; chanppiBuf = 0; if( TWOCHANNEL ) { *pPPI_CONTROL = 0x787c; //Set for channel A flags.chanActive = 0; } else *pPPI_CONTROL = 0x387c; //Polarities are fine //To initiate PPI data collection, set bit 0 of PPI_CONTROL *pDMA0_CONFIG |= 0x0001; //Activate DMA channel *pPPI_CONTROL |= 0x0001; //Activate PPI // *pPPI_CONTROL |= 0x0201; //Activate PPI } void initAmp() { //No longer used } char test; void initADC() { //Read a byte to verify connection test = adcReadByte( 0x1 ); //ID = 0x22 //Write PLL register for 1.25 GHz internal clock adcWriteByte( 0x0a, 0x19 ); //Enable the PLL adcWriteByte( 0x09, 4 ); 163 Appendix C LabView Programming LabView programming for the data acquisition system. 164 Connector Pane Front.vi Front Panel COM3 VISA resource name 4 Unit Address Acknowledge All Alarms Temperature Controller 1 0 Temperature 1 (C) Activate 0 Active Setpoint 0 Active Setpoint 0 Flow Rate 1 (mL/min) Acknowledge All Alarms 5 Unit Address COM3 VISA resource name Activate Flow Controller 1 Signal Acquisition Activate COM4 VISA resource name 0.02 -0.01 0 0.01 3E-50 1E-5 2E-5 FilteredWaveform Channel A 0Frequency A (Hz) 0Amplitude A (V) 0Phase A (deg) 00Delay A (arb units) Activate LoggingActivate Calibration Module Calibration Module 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 Calibration Sequence Time (s) Temp (C) Flow (mL/min) 0 Manual Setpoint 0 Manual Setpoint Log File Path  Path for CSV Cal File 0Time Elapsed (s) FPW SENSOR CONTROL PANEL ChartingKeithley Sensor COM4 Keithley VISA 0 Keithley Measurand Activate COM3 VISA resource name 4 Unit Address Acknowledge All Alarms Temperature Controller 2 0 Temperature 2 (C) Activate 0 Active Setpoint 0 Active Setpoint 0 Flow Rate 2 (mL/min) Acknowledge All Alarms 5 Unit Address COM3 VISA resource name Activate Flow Controller 2 0 Manual Setpoint 0 Manual Setpoint Activate 0 Sensor Temperature (C) 0 Agilent Measurand COM4 Agilent VISA Agilent Sensor 0.015 -0.015 -0.01 -0.005 0 0.005 0.01 Time (s) 3E-50 1E-5 2E-5 FilteredWaveform Channel B 0Frequency B (Hz) 0Amplitude B (V) 0Phase B (deg) 00Delay B (arb units) Duplicate Cal 165 Block Diagram end %T,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f\n open or create Frequency A (Hz) Phase A (deg) Amplitude A (V) Temperature 1 (C) Flow Rate 1 (mL/min) Delay A (arb units) Keithley Measurand Temperature 2 (C) Flow Rate 2 (mL/min) Agilent Measurand Frequency B (Hz) Phase B (deg) Amplitude B (V) Delay B (arb units) 0 1 2 3 4 5 6 0 1 2 3 4 5 6  True Activate Logging Calibration Sequence 1 2  True Activate Calibration Module Cal Flow 1 Cal Temp 1 500 Cal Temp 2 VISA resource name Unit Address Acknowledge All Alarms Flow Rate 1 (mL/min) New ALARM ! 2 Active Setpoint Cal Flow 1  True  True Activate Cal Update VISA resource name Unit Address Acknowledge All Alarms Temperature 1 (C) New ALARM ! Active Setpoint Cal Temp 1  True  True Activate Cal Update Adjust Setpoint 4 Manual Setpoint  False New ALARM ! 3 Active Setpoint VISA resource name Acknowledge All Alarms Unit Address Temperature 2 (C)  True Activate Cal Update Log File Path  Path for CSV Cal File 166 Adjust Setpoint 3 Manual Setpoint  False New ALARM ! 4 VISA resource name Active Setpoint Acknowledge All Alarms Unit Address Flow Rate 2 (mL/min)  True Activate Cal Update 167 Double 116 , 0 -1 0.5 3 4 Cal Update Time Elapsed (s) Cal Temp 2 Cal Flow 2  True Delay A (arb units) Waveform Channel A Frequency A (Hz) Phase A (deg) Amplitude A (V) Frequency B (Hz) Phase B (deg) Amplitude B (V) Waveform Channel B Delay B (arb units) Duplicate VISA resource name  True Activate 0 Frequency A (Hz) Phase A (deg) Amplitude A (V) Delay A (arb units) 0 1000 VI State Activate FP.Open Charting Keithley Measurand Agilent Measurand Frequency B (Hz) Phase B (deg) Amplitude B (V) Delay B (arb units) 0 1000 Keithley VISA Keithley Measurand  True Activate 1000 Agilent VISA Agilent Measurand 3348 / ( ln(x / 1222)+3348 / 294.87) - 273.15 Sensor Temperature (C)  True Activate Cal Phase A (deg) Phase B (deg) Waveform Channel A Waveform Channel B VI State Activate FP.Open500 168 Connector Pane Locations A Waveform Channel A detected frequency A detected phase A (deg) detected amplitude A detected frequency B detected phase B (deg) detected amplitude B Waveform Channel B Locations B VISA resource name AcqData.vi 169 Front Panel VISA resource name ID Query? (T: Yes) Yes  No Reset? (T: Yes) Yes  No 0.5 -0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 Time (s) 8E-60 2E-6 4E-6 6E-6 Plot 0Waveform Channel A 0.00 detected frequency A 0.00 detected amplitude A 0.00 detected phase A (deg) 0.000 Locations A 0.002 Amplitudes A1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 Time (s) 1.2E-50 2E-6 4E-6 6E-6 8E-6 1E-5 Plot 0Waveform Channel B 0.00 detected frequency B 0.00 detected amplitude B 0.00 detected phase B (deg) 0.000 Locations B 0.000 Amplitudes B -0.45 -0.56 -0.55 -0.54 -0.53 -0.52 -0.51 -0.5 -0.49 -0.48 -0.47 -0.46 Time (s) 1-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 Plot 0Adjusted Channel A Add Delay 0 Delay Length Dedecay Dedecay capture 90 0 10 20 30 40 50 60 70 80 Sample Buffer 5000 50 100 150 200 250 300 350 400 450 Plot 0Dedecay capture plot Normalize 50 0 5 10 15 20 25 30 35 40 45 Sample Buffer 3500 50 100 150 200 250 300 Plot 0Normalize capture plot Normalize capture 4 polynomial order Linear Adjust 170 Block Diagram VISA resource name ID Query? (T: Yes) Reset? (T: Yes) 1000 Waveform Channel A Waveform Channel B detected frequency B detected amplitude B detected phase B (deg) Signal Filtered Signal Filter5 Signal Filtered Signal Filter6 Signal Filtered Signal Filter7 Locations B Amplitudes B Amplitudes A dt Y 00 Dedecay capture Dedecay capture plot Peaks 0 25   exp(x) 1  True Peaks 0 25 polynomial order  True Normalize capture  False Linear Adjust 00 171 none detected frequency A detected amplitude A detected phase A (deg) Signal Filtered Signal Filter Signal Filtered Signal Filter2 Signal Filtered Signal Filter3 Locations A Y Adjusted Channel A Add Delay Y Y 0 Delay Length  True  True DedecayDedecay capture plot  True Normalize Normalize capture plot1 172 Connector Pane Delay Outputs Phase in Frequency in waveform Delay.vi 173 Front Panel 0 # Found 1.5 -1.25 -1 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 1 1.25 Sample Buffer 5000 50 100 150 200 250 300 350 400 450 Plot 0Decoding 0.01 -0.01 -0.008 -0.006 -0.004 -0.002 0 0.002 0.004 0.006 0.008 Sample Buffer 5000 50 100 150 200 250 300 350 400 450 Plot 0Delinearization 1.5 -1.5 -1.25 -1 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 1 1.25 Sample Buffer 5000 50 100 150 200 250 300 350 400 450 Plot 0Normalization 0.01 -0.01 -0.008 -0.006 -0.004 -0.002 0 0.002 0.004 0.006 0.008 Sample Buffer 10000 200 400 600 800 Plot 0Hilbert Output 2200 -200 0 200 400 600 800 1000 1200 1400 1600 1800 2000 Sample Buffer 5000 50 100 150 200 250 300 350 400 450 Plot 0Hilbert Phase 0.01 0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 Sample Buffer 5000 50 100 150 200 250 300 350 400 450 Plot 0Hilbert Magnitude 0.11 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 Sample Buffer 4500 50 100 150 200 250 300 350 400 Plot 0Goertzel Mags 3000 -250 0 250 500 750 1000 1250 1500 1750 2000 2250 2500 2750 Sample Buffer 4500 50 100 150 200 250 300 350 400 Plot 0Goertzel Phases CC Capture 0.01 -0.01 -0.008 -0.006 -0.004 -0.002 0 0.002 0.004 0.006 0.008 Sample Buffer 3E-50 5E-6 1E-5 1.5E-5 2E-5 2.5E-5 Plot 0CC Capture Plot 0.01 -0.01 -0.008 -0.006 -0.004 -0.002 0 0.002 0.004 0.006 0.008 Sample Buffer 5000 50 100 150 200 250 300 350 400 450 Plot 0Cross Correlation Input 0.01 -0.01 -0.008 -0.006 -0.004 -0.002 0 0.002 0.004 0.006 0.008 Sample Buffer 10000 200 400 600 800 Plot 0Cross Correlation Output 00:00:00 PM DD/MM/YYYY t0 1.000000 dt 0 0 0 0 0 0Y waveform 0 Phase in 0 Frequency in 0 0 0 0 0 000 Delay Outputs Peak Detect Enable Hilbert Enable Freq/Phase Enable CC Enable Geortzel BFSK Enable cos BFSK Enable Zero-cross Enable 0 - Peak Detect 1 - BFSK cos 2 - Hilbert Transform 3 - Zero cross 4 - BFSK Goertzel 5 - DFT Freq/Phase 6 - CC to Hist 174 Block Diagram Linear Rectangular (none) 25 Valleys Peaks # Found dt Y 0 1 Wavform in  True dt Y   cos(2*pi*500000*x)   cos(2*pi*600000*x) 200 Delinearization Peaks 0 25   exp(x) Normalization Wavform in Delay out  True dt Y Hilbert Output radian in, degree out 0 2 0 Waveform in  True dt Y  True 00 10 21 Waveform in  True 500000 600000 dt Y 50 00 00 Waveform in Goertzel Phases radian in, degree out radian in, degree out 00 00  True Calculated Frequency in none frequency domainCC Capture CC Capture Plot  False Cross Correlation Input dt Y dt Y 50 Peaks 0 Waveform in  True waveform Phase in Frequency in Peak Detect Hilbert  Transform Cross Correlation Goertzel BFSK cos BFSK Zero-cross Detect Peak Detect Enable Hilbert Enable Freq/Phase Enable CC Enable Geortzel BFSK Enable cos BFSK Enable Zero-cross Enable 175 Signal Filtered Signal Filter14 Signal Filtered Signal Filter15 Signal Filtered Signal Filter16 Signal Filtered Signal Filter17 0 1 Delay Out Decoding Signal Filtered Signal Filter18 Hilbert Phase Hilbert Magnitude Signal Filtered Signal Filter19 Signal Filtered Signal Filter20 Signal Filtered Signal Filter23 2 Goertzel Mags Delay Out Signal Filtered Signal Filter25 360 dtWaveform in Calculated Phase in Calculated Frequency in Delay out  True Cross Correlation Input Cross Correlation Output Signal Filtered Signal Filter26 Delay out Delay Outputs Freq/Phase 176 Connector Pane Waveform Channel B Channel B Waveform Channel A Channel A CalData.vi Front Panel 16.5 6 6.5 7 7.5 8 8.5 9 9.5 10 10.5 11 11.5 12 12.5 13 13.5 14 14.5 15 15.5 16 Time (s) 11:50:07.784 PM 31/12/1903 4:00:00.000 PM 31/12/1903 6:00:00.000 PM 31/12/1903 8:00:00.000 PM 31/12/1903 10:00:00.000 PM 31/12/1903 FilteredDifferential Phase 0Channel A Zero Cal Point 0 Zero Cal Value 0.02 -0.01 0 0.01 3E-50 1E-5 2E-5 FilteredWaveform Channel A 0.015 -0.015 -0.01 -0.005 0 0.005 0.01 3E-50 1E-5 2E-5 FilteredWaveform Channel B 0Channel B Hz Hz Clear Plot 177 Block Diagram Differential Phase Channel A Signal Filtered Signal Filter Zero Cal Value  True Zero Cal Point 100 Waveform Channel A Waveform Channel B Channel B Clear Plot History Differential Phase 00 1 00:00:00.000 PM DD/MM/YYYY 0 0  True 178 Connector Pane Waveform Channel A Waveform Channel B error out General Settings:Timeout Value VISA resource name DSPADCBoard.vi Front Panel VISA resource name status 0 code source error out 0 General Settings:Timeout Value 0.3 -0.3 -0.2 -0.1 0 0.1 0.2 Time (s) 2.5E-50 5E-6 1E-5 1.5E-5 2E-5 FilteredWaveform Channel A <500000> 500000 Baud Rate None 0 Parity 8 8 Data Bits 1.0 10 Stop Bits None 0 Flow Control Serial Configuration None Serial Settings:End Mode for Reads None Serial Settings:End Mode for Writes 1 -1 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 Time (s) 2.5E-50 5E-6 1E-5 1.5E-5 2E-5 FilteredWaveform Channel B 179 Block Diagram : VISA resource name error out Y dt t0 t0 dt Y[] Instr ASRL End Out ASRL End In Stop Bits Data Bits Parity Flow Cntrl Baud Timeout 0 4.96E-8 General Settings:Timeout Value 4004 0 1.0172526E-8 voltage = (Averaged input) / 5000 * (2 Vpp) / (65536 levels) Waveform Channel A VISA Defaults Stop Bits Data Bits Parity Flow Control Baud Rate Serial Configuration C0 30 4096 Serial Settings:End Mode for Reads Serial Settings:End Mode for Writes 1 0 0 1/5000 to complete mean average x 2/65536 for bits->V conversion Y dt t0 t0 dt Y[] 0 4.96E-8 Waveform Channel B 500 500 0 0 180 Connector Pane Real Imag Frequency Sample Rate Signal Goertzel.vi Front Panel 0 Sample Rate 0 Frequency 0 Real 0 Imag 0 0 Signal Block Diagram Sample Rate Frequency 2 3.141592653589 2 0 0 Real Imag Signal 181 Connector Pane Keithley Amp A Amp B Delay A Delay B Agilent Phase B Phase A Freq B FreqA Graphs1.vi Front Panel 350000 100000 150000 200000 250000 300000 Time (s) 1200 20 40 60 80 100 FreqFrequency (Hz) 150 -75 -50 -25 0 25 50 75 100 125 Time (s) 1200 20 40 60 80 100 PhasPhase (deg) 0.006 0 0.001 0.002 0.003 0.004 0.005 Time (s) 122.50 20 40 60 80 100 AmpAmplitude (V) 200 0 25 50 75 100 125 150 175 Time (s) 1200 20 40 60 80 100 DelayDelay (arb) Clear all 1 -1 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 Time (s) 1200 20 40 60 80 100 AmpKeithley Measurement 1 -1 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 Time (s) 1200 20 40 60 80 100 AmpAgilent Measurement 182 Block Diagram Frequency (Hz) Phase (deg) Amplitude (V) Delay (arb) History Frequency (Hz) History Phase (deg) History Amplitude (V) History Delay (arb) History Keithley Measurement 00 History Agilent Measurement 00 0 0 0 0 0 0 0 0 0 0 0 0  True Clear all Keithley Measurement Agilent Measurement FreqA Freq B Phase A Phase B Amp A Keithley Agilent Amp B Delay A Delay B 183 Appendix D Matlab Programming Matlab programming for modelling, simulation, and data analysis. 184  1 % Load LabView data file into Matlab  2  3 clear all; close all;  4  5 dat = importdata( 'C:\Projects\pvdfsensor\Calibration Data\May19HumidSensor5PVAcOnly' );  6  7 datStart = 1;  8 %datEnd = 83500;  9 datEnd = size( dat.data, 1 ); 10 stamps = false; 11 12 %Standard data 13 14 logFreq = dat.data(datStart:datEnd, 1); 15 logPhase = dat.data(datStart:datEnd, 2); 16 logAmplitude = dat.data(datStart:datEnd, 3); 17 logDelay(:,1) = dat.data(datStart:datEnd, 4); 18 logDelay(:,2) = dat.data(datStart:datEnd, 5); 19 logDelay(:,3) = dat.data(datStart:datEnd, 6); 20 logOvenTemp1 = dat.data(datStart:datEnd, 7); 21 logFlowRate1 = dat.data(datStart:datEnd, 8); 22 logKeithley = dat.data(datStart:datEnd, 9); 23 logOvenTemp2 = dat.data(datStart:datEnd, 10); 24 logFlowRate2 = dat.data(datStart:datEnd, 11); 25 logAgilent = dat.data(datStart:datEnd, 12); 26 logFreq2 = dat.data(datStart:datEnd, 13); 27 logPhase2 = dat.data(datStart:datEnd, 14); 28 logAmplitude2 = dat.data(datStart:datEnd, 15); 29 logDelay2(:,1) = dat.data(datStart:datEnd, 16); 30 logDelay2(:,2) = dat.data(datStart:datEnd, 17); 31 logDelay2(:,3) = dat.data(datStart:datEnd, 18); 32 logDelay(:,4) = dat.data(datStart:datEnd, 19); 33 logDelay(:,5) = dat.data(datStart:datEnd, 20); 34 logDelay(:,6) = dat.data(datStart:datEnd, 21); 35 logDelay(:,7) = dat.data(datStart:datEnd, 22); 36 logDelay2(:,4) = dat.data(datStart:datEnd, 23); 37 logDelay2(:,5) = dat.data(datStart:datEnd, 24); 38 logDelay2(:,6) = dat.data(datStart:datEnd, 25); 39 logDelay2(:,7) = dat.data(datStart:datEnd, 26); 40 41 %Timestamp 42 43 if stamps == true 44 45     disp( 'Converting timestamps' ); 46 47     for i = 1:(datEnd - datStart) 48         times = sscanf( char( dat.textdata(i) ), '%f:%f:%f %s %f/%f/%f' ); 185 49         if times(4) == 80   %PM? 50             times(1) = times(1) + 12; 51         end 52         if times(1) == 24 53             times(1) = 0; 54         end 55 56         logStamp(i, :) = datestr( [times(8) times(7) times(6) times(1) times(2) times (3)] ); 57         if mod( i, 1000 ) == 0 58            i 59         end 60     end 61 62     clear i; 63     clear times; 64 end 65 66 clear stamps 67 clear datStart 68 clear datEnd 69  186   1 % LDV Attenuation calculator   2   3 clear all; close all   4   5 dat = importdata( 'd:/Projects/thesis/LDV Measurements/LDV Sept 27 - 3 sensor atten/18_800_33469.txt' );   6 %dat = importdata( 'd:/Projects/thesis/LDV Measurements/LDV Sept 27 - 3 sensor atten/125_400_153625.txt' );   7 %dat = importdata( 'd:/Projects/thesis/LDV Measurements/LDV Sept 27 - 3 sensor atten/125_800_59219.txt' );   8   9 width = 53;  10  11 %Determine line width  12 for i = 1:width  13     linedata(i) = dat((i-1) * 39 + 1, 2);  14 end  15 x = 1:width;  16 a = polyfit( x, linedata, 1 );  17 samplewidth = a(1);  18  19 %Map displacements into matrix  20 k = 1;  21 for i = 1:width  22     for j = 1:39  23         matr(j, i) = dat(k, 5);  24         k = k + 1;  25     end  26 end  27  28 figure('Color',[1 1 1]);  29 xx = (1:width) * samplewidth;  30 y = (1:39) * samplewidth;  31 contourf( xx, y, matr, 50, 'edgecolor', 'none' );  32 set(gca,'Fontsize',16);  33 %title( 'x-y Contour Map of LDV Data' );  34 xlabel( 'x-axis position (m)' );  35 ylabel( 'y-axis position (m)' );  36  37 for i = 1:width  38     vect(i) = mean( matr(:, i) );  39 end  40  41 amp = ( max( vect ) - min( vect ) ) / 2;  %First approximation  42  43 % Now determine frequency  44  45 numtests = 1000;  46 x = 1:width; 187  47  48 % First linearly compensate and shift to 0  49 figure('Color',[1 1 1]);  50 set(gca,'Fontsize',16);  51 linfit = polyfit( x, vect, 1 );  52 vectcomp = vect - polyval( linfit, x );  53 %vect = vectcomp;    %OPTIONAL  54 plot( xx * 1e3, vect, 'b', 'Linewidth', 2 );  55  56 % Next locate points of zero crossing  57 vectcompi = interp( vectcomp, 100 );  58 zeros = [];  59 for i = 1:(width*100 - 1)  60     if( vectcompi(i) < 0 && vectcompi(i + 1) > 0 )  61         zeros(end + 1) = i;  62     end  63 end  64  65 % Now determine frequency from crossings  66 for i = 1:(length( zeros ) - 1)  67     periods(i) = zeros(i + 1) - zeros(i);  68 end  69  70 period = mean( periods );  71 f = width / period * 100;  72  73 %Phase offset  74  75 x = 1:width;  76 phases = linspace( 0, 2 * pi, numtests );  77  78 for i = 1:numtests  79     phase = phases(i);  80     phaseStrength(i) = sum( amp * cos( 2 * pi * f * x / width + phase ) .* vect );  81 end  82  83 [b,i] = max( phaseStrength );  84 phi = phases(i);  85  86 % Now amplitude and attenuation  87  88 numtests = 100;  89  90 attentest = linspace( .1, 1, numtests ); %in per cm  91 %attentest = linspace( 1, 3, numtests ); %in per cm  92 %attentest = linspace( 5, 7, numtests ); %in per cm  93 amptest = linspace( 0.75 * amp, 1.5 * amp, numtests );  94  95 for i = 1:numtests 188  96     for j = 1:numtests  97         stddev(i, j) = std( amptest(i) * exp( -attentest(j) * samplewidth * 100 * x ) .* cos( 2 * pi * f * x / width + phi ) - vect );  98     end  99 end 100 101 [a,b] = min( stddev(:) ); 102 j = floor( b / numtests ); 103 i = mod( b, numtests ); 104 amp = amptest(i); 105 atten = attentest(j); 106 107 % Generate fit wave 108 for i = 1:width 109     outwave(i) = amp * exp( -atten * samplewidth * 100 * i ) * cos( 2 * pi * f * x (i) / width + phi ); 110 end 111 112 hold on 113 plot( xx*1e3, outwave, '--r', 'Linewidth', 2 ); 114 115 %title( 'Wave Amplitude vs. Position' ); 116 xlabel( 'Position (mm)' ); 117 ylabel( 'Amplitude (m)' ); 118 legend( 'LDV Data', 'Calculated Fit Curve', 'Location', 'Best' ); 119 120 disp( sprintf( 'Amplitude: %f m', amp ) ); 121 disp( sprintf( 'Attenuation: %f /cm', atten ) ); 122 disp( sprintf( 'Attenuation: %f dB/cm', 8.6859 * atten ) ); 123 124 125 126  189   1 %For plotting pre-prepared humidity/PVA data   2   3 clear all   4 close all   5   6 %First big experiment w and w/o tank air   7 %fname = 'd:\projects\thesis\Calibration Data\May09HumidSensor5.mat'; %1 Layer, Test 1   8 %fname = 'd:\projects\thesis\Calibration Data\May10HumidSensor5.mat';  %1 Layer, Test 2   9 %fname = 'd:\projects\thesis\Calibration Data\May13HumidSensor5Layer2.mat';  %2 Layer, Test 1  10 %fname = 'd:\projects\thesis\Calibration Data\May14HumidSensor5Layer2.mat';  %2 Layer, Test 2  11 %fname = 'd:\projects\thesis\Calibration Data\May15HumidSensor5Layer3.mat'; %3 Layer, Test 1  12 %fname = 'd:\projects\thesis\Calibration Data\May16HumidSensor5Layer3Tank.mat';  %3 Layer, Test 2, Tank air  13 %fname = 'd:\projects\thesis\Calibration Data\May17HumidSensor5Layer3Tank.mat';  %3 Layer, Test 3, Tank air  14 %fname = 'd:\projects\thesis\Calibration Data\May17HumidSensor5TankLayer4x2.mat';  % 4 Layer, Test 1/2, Tank air  15 %fname = 'd:\projects\thesis\Calibration Data\May18HumidSensor5TankLayer5.mat';  %5 Layer, Test 1, Tank air  16  17 %Second big experiment, all tank air and frequency  18 %fname = 'd:\projects\thesis\Calibration Data\July12HumidSensor8TankLayer1.mat'; %1 Layer, Test 1  19 %fname = 'd:\projects\thesis\Calibration Data\July13HumidSensor8TankLayer1.mat'; %1 Layer, Test 2  20 %fname = 'd:\projects\thesis\Calibration Data\July13HumidSensor8TankLayer2.mat'; %2 Layer, Test 1  21 %fname = 'd:\projects\thesis\Calibration Data\July14HumidSensor8Layer2.mat'; %2 Layer, Test 2  22 fname = 'd:\projects\thesis\Calibration Data\July15HumidSensor8Layer3.mat'; %3 Layer, Test 1/2  23  24 disp('Loading data...');  25 load(fname);  26 clear sensOut;  27 logPhase = logDelay(:,1);  28 logPhase2 = logDelay2(:,1);  29  30 %Some preparation  31 disp('Generating tables...');  32 exPressure = 102;        %in kPa  33 x = 1:length(logPhase);  34 exTemp = interp1(logOther(:,1), logOther(:,4), x)';  35 exDP = interp1(logOther(:,1), logOther(:,2), x)'; 190  36 for i = 1:length(exTemp)  37     if isnan(exTemp(i))  38         exTemp(i) = exTemp(i - 1);  39         exDP(i) = exDP(i - 1);  40     end  41 end  42  43 %Calculate humidity PPM  44 satPress = exp(77.345 + 0.0057 .* (exTemp + 273.15) - 7235 ./ (exTemp + 273.15)) ./ (exTemp + 273.15) .^ 8.2;      %In Pa  45 relHumidity = 100 .* ( (112 - 0.1 .* exTemp + exDP ) ./ (112 + 0.9 .* exTemp) ) .^ 8; %http://www.ajdesigner.com/phphumidity/dewpoint_equation_relative_humidity.php  46  47 %Prep data for display  48 %diff = logPhase2 - logPhase;  49 diff = logPhase;  50 for u = 1:length(diff)  51     if(diff(u) > 100)  52         diff(u) = diff(u) - 360;  53     end  54 end  55  56 diffavg = sgolayfilt( diff, 2, 1001 );  57 xTime = x / 7200;  58  59 logPhase = logPhase - min(logPhase);  60 logPhase2 = logPhase2 - min(logPhase2);  61  62 sclA = (max( logPhase ) - min( logPhase ));  63 sclB = (max( logPhase2 ) - min( logPhase2 ));  64 if sclA > sclB  65     scl = sclA;  66 else  67     scl = sclB;  68 end  69  70 xmin = 0;  71 xmax = xTime(end);  72  73 %Plots  74  75 %Raw data  76  77 %Comparison between channels  78 figure('Color', [1 1 1]);  79 [haxes, hline1, hline2] = plotyy( xTime, logPhase, xTime, logPhase2, 'plot', 'plot' );  80 set( haxes(1), 'FontName', 'Times', 'FontSize', [16], 'YTickMode', 'auto', 'box', 'off' ); 191  81 set( haxes(2), 'FontName', 'Times', 'FontSize', [16], 'YTickMode', 'auto' );  82 set(hline1, 'LineStyle', 'x');  83 set(hline2, 'LineStyle', 'x');  84 axes(haxes(1));  85 hold on  86 ylabel( 'Channel A Phase (deg)' );  87 axis( [xmin xmax 0 scl] );  88 axes(haxes(2));  89 hold on  90 axis( [xmin xmax 0 scl] );  91 ylabel( 'Channel B Phase (deg)' );  92 xlabel( 'Time (h)' );  93 linkaxes( haxes, 'x' );  94  95 %Plot vs. Humidity  96 figure('Color', [1 1 1]);  97 [haxes, hline1, hline2] = plotyy( xTime, relHumidity, xTime, diff, 'plot', 'plot' );  98 set( haxes(1), 'FontName', 'Times', 'FontSize', [16], 'YTickMode', 'auto', 'box', 'off' );  99 set( haxes(2), 'FontName', 'Times', 'FontSize', [16], 'YTickMode', 'auto' ); 100 set(hline2, 'LineStyle', 'x'); 101 axis( [xmin xmax min(relHumidity) max(relHumidity)*1.05] ); 102 axes(haxes(1)); 103 hold on 104 set(hline1, 'Linewidth', 2.0 ); 105 plot( logOther(:,1)/7200, relHumidity(logOther(:,1)), 'go' ); 106 set(hline1, 'LineStyle', '-'); 107 axis( [xmin xmax min(relHumidity) max(relHumidity)*1.05] ); 108 ylabel( 'Relative Humidity (%)' ); 109 axes(haxes(2)); 110 hold on 111 plot( xTime, diffavg, 'r', 'Linewidth', 2.0 ); 112 ylabel( 'Phase (deg)' ); 113 axis( [xmin xmax min(diff) max(diff)] ); 114 xlabel( 'Time (h)' ); 115 linkaxes( haxes, 'x' ); 116 117 %Sensitivity stuff 118 disp( 'Sensitivity calculations...' ); 119 120 %Loop through and calculate mean average data in specified ranges 121 for i = 1:length( logSens(:, 1) ) 122     dData = diff(logSens(i, 1):logSens(i, 2)); 123     hData = relHumidity(logSens(i, 3):logSens(i, 4)); 124     psensS(i) = mean( dData ); 125     esensSL(i) = (psensS(i) - min( dData )) * 5; 126     esensSH(i) = (max( dData ) - psensS(i)) * 5; 127     psensH(i) = mean( hData ); 128 end 192 129 130 %Sort data 131 [psensS, i] = sort(psensS); 132 esensSL = esensSL(i); 133 esensSH = esensSH(i); 134 psensH = psensH(i); 135 136 p1 = polyfit(psensH((end-3):end), psensS((end-3):end), 1); 137 p2 = polyfit(psensH, psensS, 2); 138 x = linspace( min(psensH), max(psensH), 100 ); 139 p1fit = polyval(p1, x); 140 p2fit = polyval(p2, x); 141 p1fitS = polyval(p1, psensH); 142 p2fitS = polyval(p2, psensH); 143 144 %Adjust data to remove non-linear distortion 145 psensSadj = psensS;% + (p1fitS - p2fitS) / 1.2; 146 147 figure( 'Color', [1 1 1] ); 148 set( gca, 'FontName', 'Times', 'FontSize', [16] ); 149 %errorbar( psensH, psensS, esensSL, esensSH, 'bx' ); 150 %hold on 151 %plot( x, p2fit, 'b' ); 152 errorbar( psensH, -psensSadj, esensSL, esensSH, 'xk' ); 153 hold on 154 plot( x, -p1fit, 'k' ); 155 xlabel( 'Relative Humidity (%)' ); 156 ylabel( 'Phase Shift (deg)' ); 157 158 sensOut(:,1) = psensSadj; 159 sensOut(:,2) = esensSL; 160 sensOut(:,3) = esensSH; 161 sensOut(:,4) = psensH; 162 163 %Saving sensitivity data 164 disp( 'Saving Sensitivity Data...' ); 165 save(fname, 'sensOut', '-append'); 166 167  193   1 % Program for optimizing IDT design given a finite amount of space and wave   2 % generation/propagation parameters   3   4 clear all; close all;   5   6 %Configurable parameters   7 atten = 19;         %Attenuation in dB/cm/MHz   8 k = 0.15;           %Electromechanical coupling factor   9 lambda = 800e-6;    %IDT wavelength in m  10 ref = 0.5;            %Reflection effectiveness (0-1)  11  12 %Material parameters  13 d = 18e-6;          %Thickness in m  14 l = 0.01;           %Sensor length in m  15 S = 125e6;          %In-plane stress in Pa  16 E = 2.65e9;         %Young's Modulus in Pa  17 theta = 0.35;       %Poisson's ratio  18 rho = 1.78;         %PVDF density in g/cm^3  19  20 %Temporary constants  21 %velamp = 8000e-6;  22 velamp = 8000e-6 / 2 / sqrt(2);       %Energy calculation, corrected for RMS,mass reduction  23  24 %Grand iterator  25 plotstuff = 1;  26 paramnum = 1;  27 paramlist = linspace( 19, 19, paramnum );  28 for j = 1:paramnum  29     atten = paramlist(j);  30  31     %Calculations  32     D = E / 12 / ( 1 - theta^2 ) * d ^ 3;  33     v = sqrt( ( S * d + ( 2 * pi / lambda ) ^ 2 * D ) / ( rho * 1000 * d ) );  34     f = v / lambda;  35     alpha = atten * f / 1e6 / 8.6854 * 100;  36  37     %Prep canvas  38  39     totfingpairs = round( l / lambda - 1 );  40     recpwr = [];  41     ewave = [];  42  43     %Iterate to find best configuration  44     for transfingpairs = 1:( totfingpairs - 2 )  45         if plotstuff  46             figure( 'Color', [1 1 1] );  47         end  48         h = []; 194  49         recfingpairs = totfingpairs - transfingpairs - 1;  50  51         %Superposition of transmitting fingers  52         twave = zeros(100000, 1)';  53         cwave = 0;  54         for i = 1:transfingpairs  55            x = 0:10e-6:(2 * l);  56            wave = velamp * exp( -alpha * x ) .* sin( 2 * pi * x / lambda );  57            jjj = 0;  58            if i ~= transfingpairs + 1  59                for jj = (lambda / 2 / 10e-6):(2 * l / 10e-6)    %Replicate for additional energy contribution  60                    wave(jj) = sign(wave(jj)) * sqrt( wave(jj) ^ 2 + (velamp * exp( - alpha * jjj * 10e-6 ) * sin( 2 * pi * jjj * 10e-6 / lambda)) ^ 2 );  61                    jjj = jjj + 1;  62                end  63            end  64  65            %Draw fingers  66            xx = i * lambda;  67            y = -(velamp):(velamp/20):(velamp);  68            if plotstuff  69                plot( xx, y, 'bx' );  70                hold on;  71                plot( xx + lambda / 2, y, 'bx' );  72            end  73  74            %Draw wave  75            xx = ((i - 0.25) * lambda):10e-6:((totfingpairs+1) * lambda);  76            if plotstuff  77                h(1) = plot( xx, wave(1:length(xx)), 'b' );  78            end  79            tin = round( xx(1) / 10e-6 );  80            tlen = round( 2 * l / 10e-6 );  81            cwave = wave(1:tlen);  82            twave(tin:(tin + tlen - 1)) = sign(cwave) .* sqrt(twave(tin:(tin + tlen - 1)).^2 + cwave.^2);     %Big wave  83         end  84  85         x = 0:10e-6:l;  86         if plotstuff  87             h(2) = plot( x, twave(1:length(x)), 'color', [0 0 0.5] );  88         end  89  90         %Receiving fingers  91         for i = 1:recfingpairs  92  93            %Draw fingers  94            xx = (transfingpairs + i + 1) * lambda; 195  95            y = -(velamp):(velamp/20):(velamp);  96  97            if plotstuff  98                plot( xx, y, 'rx' );  99                hold on; 100                plot( xx + lambda / 2, y, 'rx' ); 101            end 102 103            %Remove power from wave 104            tin = round( xx / 10e-6 ); 105            twave(tin:end) = sign( twave(tin:end) ) .* sqrt( twave(tin:end) .^ 2 .* ( 1 - k ^ 2 ) ); 106         end 107 108         x = 0:10e-6:l; 109         if plotstuff 110             h(3) = plot( x, twave(1:length(x)), 'color', [0.5 0 0] ); 111         end 112 113         %Reflector 114 115         %Draw fingers 116         xx = (totfingpairs + 1) * lambda; 117         y = -(velamp*2):(velamp/20):(velamp*2); 118         if plotstuff 119             plot( xx, y, 'gx' ); 120         end 121 122         %Now generate wave in opposite direction 123         xstart = xx / 10e-6; 124         xstop = xstart + ( recfingpairs + 1 ) * lambda / 10e-6; 125         nwave = zeros( length(twave), 1 )'; 126         for i = xstart:xstop 127             nwave(round(xstart * 2 - i + 1)) = ref * twave(round(i - 2)); 128         end 129 130         x = 10e-6 * ((2*xstart-xstop+1+0.25*lambda/10e-6):(xstart)); 131         if plotstuff 132             h(4) = plot( x, nwave(round(x/10e-6)), 'g' ); 133         end 134 135         %Final receiving wave 136         rwave = twave + nwave; 137         x = 10e-6 * ((2*xstart-xstop+1+0.25*lambda/10e-6):xstart); 138         if plotstuff 139             h(5) = plot( x, rwave(round(x/10e-6)), 'color', [0 0.5 0], 'linewidth', [1] ); 140         end 141 196 142         %Calculate final received power and stability - TODO - fix? 143         xx = round( x / 10e-6 ); 144         ewave(1:round(l/10e-6), transfingpairs) = zeros(round(l/10e-6), 1)'; 145         ewave(xx, transfingpairs) = sign( rwave(xx) ) .* sqrt( ( rwave(xx) .^ 2 .* (k + 1) ^ 2 ) .* k ^ 2 ); 146         recpwr(transfingpairs) = sum( abs( ewave(:, transfingpairs) ) ) / sum( ewave (:, transfingpairs) ~= 0 ); 147 148         if plotstuff 149             set( gca, 'fontsize', 14 ); 150             title( 'Simulation of Wave Generation, Propagation, and Absorbtion' ); 151             legend( h, 'Each transmitting wave', 'Total transmitting wave', 'Receiving wave with power removed', 'Reflected wave', 'Total receiving wave', 'Location', 'Best'  ); 152             ylabel( 'Out of Plane Velocity (m/s)' ); 153             xlabel( 'Displacement (m)' ); 154         end 155     end 156 157     %Plot ewaves together 158     if plotstuff 159         figure( 'Color', [1 1 1] ); 160         title( 'Electronic waveforms' ); 161         xlabel( 'Displacement (m)' ); 162         ylabel( 'Amplitude (m/s)' ); 163         hnew = plot( ewave ); 164         legs = []; 165         for i = 1:size( ewave, 2 ) 166             legs{i} = sprintf( 'Rec Fingers: %d, Sum: %f', size( ewave, 2 ) - i + 1, recpwr(i)  ); 167         end 168         legend( legs, 'Location', 'Best' ); 169     end 170 171     for mi = 1:100 172         xi = mi / 100 * totfingpairs; 173         pwrplot(mi, j) = interp1( recpwr, xi ); 174     end 175 176     %Standard deviation 177     ewavedev = []; 178     for r = 1:size(ewave, 2) 179         samples = []; 180         for t = 1:totfingpairs 181             s = ewave(round(t * lambda / 10e-6), r); 182             if s ~= 0 183                 samples(end + 1) = s; 184             end 185         end 197 186         ewavedev(r) = ( std(samples - mean(samples) ) ) / mean(samples); 187     end 188 189     for mi = 1:100 190         xi = mi / 100 * totfingpairs; 191         devplot(mi, j) = interp1( ewavedev, xi ); 192     end 193 end 194 195 %Sensitivity study plot 196 figure( 'Color', [1 1 1] ); 197 y = (1:size(pwrplot,1)) / 100; 198 x = paramlist; 199 surf( x, y, pwrplot ); 200 %title( 'Sensitivity Study of Attenuation' ); 201 ylabel( 'Trans/Total finger ratio' ); 202 xlabel( 'Attenuation (dB/cm/MHz)' ); 203 zlabel( 'Acoustic Amplitude (arb)' ); 204 view( -59.5, 22 ); 205 206 figure( 'Color', [1 1 1] ); 207 contourf( y, x, pwrplot', 50, 'edgecolor', 'none' ); 208 %title( 'Sensitivity Study of Attenuation' ); 209 ylabel( 'Attenuation (dB/cm/MHz)' ); 210 xlabel( 'Trans/Total finger ratio' ); 211 zlabel( 'Acoustic Amplitude (arb)' ); 212 colorbar; 213 214 %Deviation study plot 215 figure( 'Color', [1 1 1] ); 216 y = (1:size(pwrplot,1)) / 100; 217 x = paramlist; 218 surf( x, y, devplot ); 219 %title( 'Normalized Receiver Deviation' ); 220 ylabel( 'Trans/Total finger ratio' ); 221 xlabel( 'Attenuation (dB/cm/MHz)' ); 222 zlabel( 'Normalized Amplitude' ); 223 view( -59.5, 22 ); 224 225 226 %Interpolate for trend fitting 227 %x = (1:size( pwrplot, 2 ))'; 228 %xx = linspace( 1, size( pwrplot, 2 ), 100 ); 229 %for i = 1:size( pwrplot, 2 ) 230 %    pfit = polyfit( x, pwrplot(:,i), 2 ); 231 %    maxplotx(i) = -pfit(2) / 2 / pfit(1); 232 %    maxploty(i) = -(pfit(2) ^ 2 - 4 * pfit(1) * pfit(3)) / 4 / pfit(1); 233 %end 234 198 235 %legs = []; 236 %for i = 1:size( pwrplot, 2 ) 237 %    legs{i} = sprintf( 'Coefficient: %.2f', paramlist(i) ); 238 %end 239 %legend( legs, 'Location', 'Best' ); 240 %plot( maxplotx, maxploty, 'x', 'linewidth', 2.0, 'color', [0 0 0] ); 241 %plot( maxplotx, maxploty, 'linewidth', 2.0, 'color', [0 0 0] ); 242  199   1 %Sensor optimizer   2 % Examines sensitivity of all parameters given certain material properties   3   4 clear all   5 close all   6   7 %Constants   8 eta0 = 8.85418782e-12;   9  10 %Material constants and sensor starting parameters  11 PVDF.density = 1780;    %kg/m^3  12 PVDF.YM = 1.375e9;      %Young's Modulus  13 PVDF.PR = 0.35;         %Poisson ratio  14 %PVDF.d = 26e-6;         %Thickness, m  15 PVDF.d = 18e-6;         %Thickness, m  16 %PVDF.d = 0.6e-6;         %Thickness, m  17 PVDF.atten = 19;        %Attenuation, dB/cm/MHz  18 PVDF.k = 0.12;          %Electromechanical coupling coefficient  19 PVDF.S = 50e6;          %Stress, Pa  20 %PVDF.S = 0;          %Stress, Pa  21 PVDF.etar = 7;          %Relative permittivity  22  23 lambda = 800e-6;        %Wavelength of IDTs, m  24 Vapp = 100;             %Applied voltage, Vpp  25 nTrans = 8;             %Number of transmitter finger pairs  26 nRec = 4;               %Number of receiver finger pairs  27 %nRec = 8;               %Number of receiver finger pairs  28 recImp = 1e6;           %Receiver impedance  29 fingWidth = lambda / 4; %Finger width of IDT  30 fingLength = 0.008;     %Finger length in m  31  32 %Sensitivity analysis  33 wgp = 1;                %With ground plane  34 vars = linspace(0.25, 4, 100);     %Variation of each parameter  35 %vars = linspace(0.8, 1.2, 3);     %Variation of each parameter  36  37 %Prep  38 paramo(1) = PVDF.density;  39 paramo(2) = PVDF.YM;  40 paramo(3) = PVDF.PR;  41 paramo(4) = PVDF.d;  42 paramo(5) = PVDF.atten;  43 paramo(6) = PVDF.k;  44 paramo(7) = PVDF.S;  45 paramo(8) = lambda;  46 paramo(9) = Vapp;  47 paramo(10) = nTrans;  48 paramo(11) = nRec;  49 200  50 legs = {'Density', 'Young''s Modulus', 'Poisson''s Ratio', 'Thickness', 'Attenuation', 'Coupling Coeff', 'In-plane Stress', 'Wavelength', 'Applied V', '#T Fingers', '#R Fingers'};  51  52 %Iterator and calculations  53 v = [];  54 f = [];  55 sig = [];  56 sensM = [];  57 sensD = [];  58 Q = [];  59 delfmin = [];  60 minM = [];  61 minD = [];  62 for p = 1:length(paramo)  63     for j = 1:length(paramo)  64         param(j) = paramo(j);  65     end  66     for i = 1:length(vars)  67         fprintf(1, 'Analyzing parameter %d, scaling %f\n', p, vars(i));  68         param(p) = paramo(p) * vars(i);  69         if param(3) > 0.5  70             param(3) = 0.5;  71         end  72         param(10) = round(param(10));  73         param(11) = round(param(11));  74  75         %Calculator - resonance frequency  76         T = param(7) * param(4);  77         B = 2 * pi / param(8);  78         Eprime = param(2) / (1 - param(3) ^ 2);  79         D = Eprime * (param(4) ^ 3) / 12;  80         M = param(1) * param(4);  81         v(i,p) = sqrt( (T + B ^ 2 * D) / M );  82         f(i,p) = v(i,p) / param(8);  83  84         %Mass and stiffness sensitivity  85         sensM(i,p) = -1 / 2 / M;  86         sensD(i,p) = (B ^ 2) / 2 / ((B ^ 2) * D + T);  87  88         %Amplitude  89         l = round(param(8) * 1e6);  90         l = l + mod(l,2);  91         x = 1:((param(10) + 2 + param(11)) * l);       %1 um resolution  92         y = 0 * x;  93         alpha = param(5) / 8.685 / 1e4 * (f(i,p) / 1e6);     %Convert to /um  94  95         %Calculate amplitude/power scaling coefficient  96         cap = eta0 * PVDF.etar * 2 * fingLength * fingWidth / param(4); 201  97         energy = 1/2 * cap * (param(9) / 2) ^ 2;  98         scl = param(6) ^ 2;  99 100         %Generation/Transmitters 101         for j = 1:(param(10) * 2 - 1)       %Half wavelength steps 102             x0 = 1 + (j - 1) * l / 2; 103             sgn = pi * mod(j - 1, 2); 104             for k = x0:max(x) 105                 wave = exp( -alpha * (k - x0) ) * sin( 2 * pi * (k - x0) / l + sgn ); 106                 y(k) = sign(wave) * sqrt( y(k) ^ 2 + scl * energy * wave ^ 2 ); 107             end 108         end 109 110         %Receivers 111         x0 = (param(10) + 2) * l; 112         xend = (param(10) + 2 + param(11)) * l; 113         rec = []; 114         for k = x0:xend 115             after = sign(y(k)) * sqrt( y(k) ^ 2 - scl * y(k) ^ 2 ); 116             rec(k - x0 + 1) = sign(y(k)) * sqrt( scl * y(k) ^ 2 ); 117             y(k) = after; 118         end 119 120         avgpwr = mean(rec .^ 2); 121         sumpwr = zeros(l,1)'; 122         for k = 1:param(11) 123             sumpwr = sumpwr + rec(((k - 1) * l + 1):(k * l)) .^ 2; 124         end 125 126         sig(i,p) = max(sumpwr .^ 0.5); 127 128         %Q-Factor - Kolsky model 129         alpha = param(5) / 8.685 * 100 * (f(i,p) / 1e6);     %Units of per metre 130         w = 2 * pi * f(i,p); 131         Q(i,p) = 0.5 * (w / (alpha * v(i,p)) - (alpha * v(i,p)) / w) / 2 / pi; 132         Q(i,p) = Q(i,p) * (param(10) / nTrans) * (param(11) / nRec);        %Roughly inversely proportional 133 134         %Noise Floor 135         signf(i,p) = 10e-6;    %+/- Volts, measured 136 137         %Combination 138         sigV = sqrt( sig(i,p) * recImp ); 139         a = sigV * 1.1684 / (f(i,p) / Q(i,p)) ^ 2; 140         fnoise = 2 * sqrt(signf(i,p) / a);      %+/- 141         delfmin(i,p) = 3 * fnoise; 142         minD(i,p) = delfmin(i,p) / f(i,p) / sensD(i,p); 143         minM(i,p) = -delfmin(i,p) / f(i,p) / sensM(i,p); 202 144     end 145 end 146 147 %Normalize 148 for i = 1:length(param) 149     sigSF = interp1(vars, sig(:,i), 1) 150     sig(:,i) = sig(:,i) / sigSF; 151     sensMSF = interp1(vars, sensM(:,i), 1); 152     sensM(:,i) = sensM(:,i) / sensMSF; 153     sensDSF = interp1(vars, sensD(:,i), 1); 154     sensD(:,i) = sensD(:,i) / sensDSF; 155     QSF = interp1(vars, Q(:,i), 1); 156     Q(:,i) = Q(:,i) / QSF; 157     minDSF = interp1(vars, minD(:,i), 1); 158     minD(:,i) = minD(:,i) / minDSF; 159     minMSF = interp1(vars, minM(:,i), 1); 160     minM(:,i) = minM(:,i) / minMSF; 161 end 162 163 %Plots 164 colororder = [ 165     0.00  0.00  1.00 166     0.00  0.50  0.00 167     1.00  0.00  0.00 168     0.00  0.75  0.75 169     0.75  0.00  0.75 170     0.75  0.75  0.00 171     0.25  0.25  0.25 172     0.75  0.25  0.25 173     0.95  0.95  0.00 174     0.25  0.25  0.75 175     0.75  0.75  0.75 176     0.00  1.00  0.00 177     0.76  0.57  0.17 178     0.54  0.63  0.22 179     0.34  0.57  0.92 180     1.00  0.10  0.60 181     0.88  0.75  0.73 182     0.10  0.49  0.47 183     0.66  0.34  0.65 184     0.99  0.41  0.23 185 ]; 186 set(0,'DefaultAxesColorOrder',colororder) 187 188 %Signal Strength 189 figure( 'Color', [1 1 1] ); 190 set( gca, 'Fontsize', 16 ); 191 plot( vars, sig, 'Linewidth', 2 ); 192 legend( legs ); 203 193 xlabel( 'Input Variation' ); 194 ylabel( 'Normalized Output Response' ); 195 %title( 'Signal Strength' ); 196 text( 0, 0.8 * max(max(sig)), sprintf( 'Current: %f uW', sigSF * 1e6 ) ); 197 198 %Mass sensitivity 199 figure( 'Color', [1 1 1] ); 200 set( gca, 'Fontsize', 16 ); 201 plot( vars, sensM, 'Linewidth', 2 ); 202 legend( legs ); 203 xlabel( 'Input Variation' ); 204 ylabel( 'Normalized Output Response' ); 205 %title( 'Mass Sensitivity' ); 206 text( 0, 0.8 * max(max(sensM)), sprintf( 'Current: %f cm^2/g', sensMSF * 10 ) ); 207 208 %Stiffness sensitivity 209 figure( 'Color', [1 1 1] ); 210 set( gca, 'Fontsize', 16 ); 211 plot( vars, sensD, 'Linewidth', 2 ); 212 legend( legs ); 213 xlabel( 'Input Variation' ); 214 ylabel( 'Normalized Output Response' ); 215 %title( 'Stiffness Sensitivity' ); 216 text( 0, 0.8 * max(max(sensD)), sprintf( 'Current: %f /Nm', sensDSF ) ); 217 218 %Quality Factor 219 figure( 'Color', [1 1 1] ); 220 set( gca, 'Fontsize', 16 ); 221 plot( vars, Q, 'Linewidth', 2 ); 222 legend( legs ); 223 xlabel( 'Input Variation' ); 224 ylabel( 'Normalized Output Response' ); 225 %title( 'Quality Factor' ); 226 text( 0, 0.8 * max(max(Q)), sprintf( 'Current: %f', QSF ) ); 227 228 %Minimum measurable mass change 229 figure( 'Color', [1 1 1] ); 230 set( gca, 'Fontsize', 16 ); 231 plot( vars, minM, 'Linewidth', 2 ); 232 legend( legs ); 233 xlabel( 'Input Variation' ); 234 ylabel( 'Normalized Output Response' ); 235 %title( 'Minimum Measurable Mass Change' ); 236 text( 0, 0.8 * max(max(minM)), sprintf( 'Current: %f ug/cm^2', minMSF / 10 * 1e6 ) ); 237 238 %Minimum measurable stiffness change 239 figure( 'Color', [1 1 1] ); 240 set( gca, 'Fontsize', 16 ); 204 241 plot( vars, minD, 'Linewidth', 2 ); 242 legend( legs ); 243 xlabel( 'Input Variation' ); 244 ylabel( 'Normalized Output Response' ); 245 %title( 'Minimum Measurable Stiffness Change' ); 246 text( 0, 0.8 * max(max(minD)), sprintf( 'Current: %e Nm', minDSF ) ); 247 248  205   1 % Compensate and present data from Sept, 2011 PVA layer load testing   2   3 clear all;   4 close all;   5   6 dat = importdata( 'd:/Projects/thesis/Calibration Data/Sept09MassSenseTesting5.csv' );   7   8 datStart = 1;   9 datEnd = size( dat.data, 1 );  10 stamps = false;  11  12 %Standard data  13  14 logFreq = dat.data(datStart:datEnd, 1);  15 logPhase = dat.data(datStart:datEnd, 2);  16 logAmplitude = dat.data(datStart:datEnd, 3);  17 logDelay1 = dat.data(datStart:datEnd, 4);  18 logDelay2 = dat.data(datStart:datEnd, 5);  19 logDelay3 = dat.data(datStart:datEnd, 6);  20 logOvenTemp1 = dat.data(datStart:datEnd, 7);  21 logFlowRate1 = dat.data(datStart:datEnd, 8);  22 logTime = logDelay2;  23 logKeithley = dat.data(datStart:datEnd, 9);  24 logOvenTemp2 = dat.data(datStart:datEnd, 10);  25 logFlowRate2 = dat.data(datStart:datEnd, 11);  26 logAgilent = dat.data(datStart:datEnd, 12);  27 logFreq2 = dat.data(datStart:datEnd, 13);  28 logPhase2 = dat.data(datStart:datEnd, 14);  29 logAmplitude2 = dat.data(datStart:datEnd, 15);  30 logDelay21 = dat.data(datStart:datEnd, 16);  31 logDelay22 = dat.data(datStart:datEnd, 17);  32 logDelay23 = dat.data(datStart:datEnd, 18);  33  34 % Break up into individual tests  35 % In order: None, 1 tape, None, 2 tape, None, 3 tape, None, 4 tape  36  37 %timesA = [12117 13344;14377 16045;18336 19655;19656 21057;23799 25247;25248 26629; 29507 30854;30855 32034;34134 35417];  38 %timesB = [10838 12116;16046 17165;17166 18335;21058 22546;22547 23798;26630 28235; 28236 29506;32035 33274;33275 34133];  39 %num = 9;  40  41 %In order: None, 2 layer, 4 layer, 8 layer, 16 layer, None, 1 layer, None  42 %timesA = [0001 1368;3118 4473;5937 7424;14487 16054;16055 18544;18545 20811;20812 22671;24124 25613];  43 %timesB = [1369 3117;4474 5936;7425 9360;12766 14486;12766 14486;12766 14486;22672 24012;25614 27174];  44 %num = 8; 206  45  46 %Smaller set of 18 um data  47 timesA = [0001 1368;3118 4473;5937 7424;14487 16054;16055 18544;20812 22671];  48 timesB = [1369 3117;4474 5936;7425 9360;12766 14486;12766 14486;22672 24012];  49 num = 6;  50  51 logData = logFreq;  52  53 fig1 = figure( 'Color', [1 1 1 ] );  54  55 %subplot( 2, 1, 1 );  56  57 xComp = 1:600;  58 for i = 1:num  59     xA = timesA(i, 2) - xComp;  60     yA = logData( xA );  61     xB = timesB(i, 2) - xComp;  62     yB = logData( xB );  63     mA(i) = mean( yA );  64     mB(i) = mean( yB );  65  66     %Optionally compensate using unloaded channel  67     %%%yA = yA + ( mA(1) - mA(i) );  68     %%%yB = yB + ( mA(1) - mA(i) );  69     yA = yA + ( mB(1) - mB(i) );  70     yB = yB + ( mB(1) - mB(i) );  71  72     mA(i) = mean( yA );  73     mB(i) = mean( yB );  74     stdA(i) = std( yA );  75     stdB(i) = std( yB );  76  77     %Extrapolate for 10 min long windows  78  79     plot( xComp + ( i - 1 ) * 600, yA, 'r.' );  80     hold on  81     plot( xComp + ( i - 1 ) * 600, yB, 'b.' );  82  83     %Show average values  84     disp( sprintf( 'For stage %d: Channel A = %.3f, Channel B = %.3f', i, mean( yA ), mean( yB ) ) );  85 end  86  87 %Labels/Misc  88 set( gca, 'fontsize', 15 );  89 xlabel( gca, 'Test Condition (5 min sample period per condition)' );  90 ylabel( gca, 'Frequency (Hz)' );  91 %leg = legend( 'Side A (Unloaded)', 'Side B (Loaded)', 'Location', 'Best' );  92 207  93 %leg = legend( 'Side A (Loaded)', 'Side B (Unloaded)', 'Location', 'Best' );  94 %set( leg, 'FontSize', 16 );  95 set( gca, 'XTickLabel', '' );  96 set( gca, 'XTick', [] );  97  98 %Apply vertical division lines to plot  99 str = 'k:'; 100 %vline( 0, str, 'None' ); vline( 600, str, 'One' ); vline( 1200, str, 'None' ); vline( 1800, str, 'Two' ); vline( 2400, str, 'None' ); vline( 3000, str, 'Three' ); vline( 3600, str, 'None' ); vline( 4200, str, 'Four' ); vline( 4800, str, 'None' ); 101 vline( 0, str, 'None' ); vline( 600, str, 'Two' ); vline( 1200, str, 'Four' ); vline ( 1800, str, 'Eight' ); vline( 2400, str, 'Sixteen' ); vline( 3000, str, 'None' ); 102 axis( [0 3600 332000 346000] ); 103 %axis( [0 3600 334000 348000] );         %uncompensated 104 105 %Now do sensitivity calculation 106 break; 107 figure( 'Color', [1 1 1 ] ); 108 %subplot( 2, 1, 2 ); 109 110 %For 120 um 111 %msens = 6.925;   %mg/cm^2/layer 112 %x = msens * [0 1 2 3 4]; 113 %y = [mB(1) mB(2) mB(4) mB(6) mB(8)] - mB(1); 114 115 %x = msens * [0 1 2 3]; 116 %y = ( [mB(1) mB(2) mB(4) mB(6)] - mB(1) ) / mB(1) * 100; 117 118 %For 18 um 119 msens = 0.0309956;   %mg/cm^2/layer 120 x = msens * [0 2 4 8 16]; 121 y = ( [mA(1) mA(2) mA(3) mA(4) mA(5)] - mA(1) ) / mA(1) * 100; 122 123 %Error bars 124 stderror = stdA(1:5)/ mA(1) * 100; 125 h = errorbar( x, y, stderror, 'bo' ); 126 set( h, 'markersize', 5 ); 127 %plot( x, y, 'o' ); 128 129 hold on 130 131 %Labels/Misc 132 set( gca, 'fontsize', 15 ); 133 xlabel( gca, 'Applied mass (mg/cm^2)' ); 134 ylabel( gca, 'Normalized Frequency (%)' ); 135 136 %Theoretical Fit for data 137 138 x = msens * [0 2 4 8 16]; 208 139 y = ([mA(1) mA(2) mA(3) mA(4) mA(5)]) * 800e-6; 140 141 dPVDF = [18e-6 18e-6 18e-6 18e-6 18e-6]; 142 B = 2 * pi / 800e-6; 143 PRPVDF = 0.35; 144 145 PVAdensity = 430; 146 PRPVA = 0.45; 147 148 num = 100; 149 YMPVDFlist = linspace( 1e9, 3e9, num );       %From polymber handbook 150 YMPVAlist = linspace( 1e9, 3e9, num );        %Other sources http://www.google. ca/url?sa=t&rct=j&q=polyvinyl%20alcohol%20thin%20film%20young%27s% 20modulus&source=web&cd=2&ved=0CCgQFjAB&url=http%3A%2F%2Fmmadou.eng.uci.edu%2Fdocs% 2Fpublications%2F2011%2520Chen%2520Mechanical%2520characterizations%2520of%2520cast% 2520Poly(3%2C4-ethylenedioxythiophene).pdf&ei=5IJWT6y-CPLoiAKY-rW0Bw&usg=AFQjCNEd- 1Xsko5Ggrdp7wfkSZMfiReu7Q&cad=rja 151 msenslist = linspace( 0.01, 0.1, num ); 152 153 besterror = 1e15; 154 besth = 1; 155 besti = 1; 156 bestj = 1; 157 bestk = 1; 158 159 %Find best fit some of the parameters 160 figure( 'Color', [1 1 1] ); 161 for h = 1:num 162     h 163     for i = 1:num 164         for j = 1:num 165             YMPVDF = YMPVDFlist(h); 166             YMPVA = YMPVAlist(i); 167 %            msens = msenslist(j); 168 %            x = msens * [0 2 4 8 16]; 169             S1 = 125e6; 170 171             dPVA = x / PVAdensity / 100;        %Density of PVA in mg/cm^3, should give thickness in cm, then divide by 100 for m 172             T = S1 * dPVDF - 2e6 * dPVA; 173 174             %Stiffness calculations 175             EprimePVDF = YMPVDF / (1 - PRPVDF ^ 2); 176             EprimePVA = YMPVA / (1 - PRPVA ^ 2); 177             for ii = 1:length(x) 178                 h0 = 0; 179                 h1 = dPVA(ii); 180                 h2 = dPVA(ii) + dPVDF(ii); 181                 x0 = ( EprimePVA * ( h1 ^ 2 - h0 ^ 2 ) + EprimePVDF * ( h2 ^2 - h1 ^ 209 2 ) ) / ( 2 * ( EprimePVA * ( h1 - h0 ) + EprimePVDF * ( h2 - h1 ) ) ); 182                 D(ii) = 1/3 * ( EprimePVA * ( ( h1 - x0 ) ^ 3 - ( h0 - x0 ) ^ 3 ) + EprimePVDF * ( ( h2 - x0 ) ^ 3 - ( h1 - x0 ) ^ 3 ) ); 183             end 184             M = dPVDF * 1780 + dPVA * PVAdensity; 185             v = sqrt( ( T + B ^ 2 * D ) ./ M ); 186 187             terror = 0; 188             for c = 1:5 189                 terror = terror + ( v(c) - y(c) ) ^ 2; 190             end 191 192             if( terror < besterror ) 193                 besterror = terror 194                 besth(end+1) = h; 195                 besti(end+1) = i; 196                 bestj(end+1) = j; 197 198                 plot( x, y, 'b'); 199                 hold on 200                 plot( x, v, 'r'); 201                 hold off 202                 drawnow; 203             end 204         end 205     end 206 end 207 YMPVDFlist(besth(end)) 208 YMPVAlist(besti(end)) 209 msenslist(bestj(end)) 210 211 break; 212 213 YM = 2.65e9; 214 PVAdensity = 420; 215 S1 = 125e6; 216 217 xshort = x; 218 x = linspace( x(1), x(5), 100 ); 219 dPVDF = 18e-6 * ones( length(x), 1 )'; 220 221 dPVA = x / PVAdensity / 100;        %Density of PVA in mg/cm^3, should give thickness in cm, then divide by 100 for m 222 Eprime = YM / (1 - PR ^ 2); 223 T = S1 * dPVDF - 2e6 * dPVA; 224 D = Eprime / 12 * (dPVDF + dPVA) .^ 3; 225 M = dPVDF * 1780 + dPVA * PVAdensity; 226 v = sqrt( ( T + B ^ 2 * D ) ./ M ); 227 210 228 sf = v(1);      %Scaling factor and offset 229 v = ( v - v(1) ) / sf * 100; 230 plot( x, v, 'r', 'linewidth', [2.0] ); 231 232 %Now extrpolate linear function for low-loading sensitivity 233 234 %Remove effects of PVA on tension and stiffness, recalculate 235 dPVDF = 18e-6 * ones( length(xshort), 1 )'; 236 dPVA = xshort / PVAdensity / 100;        %Density of PVA in mg/cm^3, should give thickness in cm, then divide by 100 for m 237 Eprime = YM / (1 - PR ^ 2); 238 M = dPVDF * 1780 + dPVA * PVAdensity; 239 240 T = S1 * dPVDF - 2e6 * dPVA; 241 D = Eprime / 12 * (dPVDF + dPVA) .^ 3; 242 v1 = sqrt( ( T + B ^ 2 * D ) ./ M ); 243 244 T = S1 * dPVDF; 245 D = Eprime / 12 * (dPVDF) .^ 3; 246 v2 = sqrt( ( T + B ^ 2 * D ) ./ M ); 247 248 compData = y + (v2 - v1); 249 250 sf = compData(1);      %Scaling factor and offset 251 compData = ( compData - sf ) / sf * 100; 252 %plot( x, v, '--', 'linewidth', [2.0], 'color', [0 0.5 0] ); 253 254 stderror = stdA(1:5)/ mA(1) * 100; 255 h = errorbar( xshort, compData, stderror, 'go' ); 256 set( h, 'markersize', 5 ); 257 258 p = polyfit( xshort(1:2), compData(1:2), 1 ); 259 yfit = polyval( p, xshort ); 260 plot( xshort, yfit, 'g' ); 261 disp( sprintf( 'Sensitivity: %f', p(1) * 10 ) );  %Scale to cm^2/g 262 263 %legend( 'Experimental', 'Theoretical Fit', 'Mass-only Effect' ); 264 legend( 'Experimental', 'Theoretical Fit' ); 265 %axis( [0 0.5 -1.7 0] ); 266 267 %Tack on theoretical fit to first figure 268 if 1 == 0 269     figure( fig1 ); 270 271     v = v / 100 * sf + sf; 272     f = interp1( x, v, xshort ) / 800e-6; 273 274     x = 1:600; 275     plot( x, f(1), '.', 'color', [0 0.5 0] ); 211 276     x = 601:1200; 277     plot( x, f(2), '.', 'color', [0 0.5 0] ); 278     x = 1201:1800; 279     plot( x, f(3), '.', 'color', [0 0.5 0] ); 280     x = 1801:2400; 281     plot( x, f(4), '.', 'color', [0 0.5 0] ); 282     x = 2401:3000; 283     plot( x, f(5), '.', 'color', [0 0.5 0] ); 284     x = 3001:3600; 285     plot( x, f(1), '.', 'color', [0 0.5 0] ); 286 287     leg = legend( 'Side A (Loaded)', 'Side B (Unloaded)', 'Theoretical', 'Location', 'Best' ); 288     set( leg, 'FontSize', 10 ); 289 end 290  212   1 % Calculate Time of Flight Performance based on measurements   2   3 clear all;   4   5 dat = importdata( 'C:/Projects/pvdfsensor/Calibration Data/Nov08TOF120umDedecayStudy.csv' );   6   7 datStart = 1;   8 datEnd = size( dat.data, 1 );   9  10 %Standard data  11  12 logFreq = dat.data(datStart:datEnd, 1);  13 logPhase = dat.data(datStart:datEnd, 2);  14 logAmplitude = dat.data(datStart:datEnd, 3);  15 logDelay(:,1) = dat.data(datStart:datEnd, 4);  16 logDelay(:,2) = dat.data(datStart:datEnd, 5);  17 logDelay(:,3) = dat.data(datStart:datEnd, 6);  18 logOvenTemp1 = dat.data(datStart:datEnd, 7);  19 logFlowRate1 = dat.data(datStart:datEnd, 8);  20 logKeithley = dat.data(datStart:datEnd, 9);  21 logOvenTemp2 = dat.data(datStart:datEnd, 10);  22 logFlowRate2 = dat.data(datStart:datEnd, 11);  23 logAgilent = dat.data(datStart:datEnd, 12);  24 logFreq2 = dat.data(datStart:datEnd, 13);  25 logPhase2 = dat.data(datStart:datEnd, 14);  26 logAmplitude2 = dat.data(datStart:datEnd, 15);  27 logDelay21 = dat.data(datStart:datEnd, 16);  28 logDelay22 = dat.data(datStart:datEnd, 17);  29 logDelay23 = dat.data(datStart:datEnd, 18);  30 logDelay(:,4) = dat.data(datStart:datEnd, 19);  31 logDelay(:,5) = dat.data(datStart:datEnd, 20);  32 logDelay(:,6) = dat.data(datStart:datEnd, 21);  33 logDelay(:,7) = dat.data(datStart:datEnd, 22);  34  35 %Order of events:  36 %2 min normal  37 %1 min +30 Hz shift (700 Hz)  38 %1 min normal  39 %1 min +60 Hz shift (1400 Hz)  40 %1 min normal  41 %1 min +90 Hz shift (2100 Hz)  42 %1 min normal  43 %1 min +1 sample shift (20 ns)  44 %1 min normal  45 %1 min +1 sample shift (40 ns)  46 %1 min normal  47 %1 min +1 sample shift (60 ns)  48 %1 min normal 213  49  50 %Order of tests:  51 %1. Peak detect  52 %2. BFSK cos  53 %3. Hilbert Transform  54 %4. Zero cross  55 %5. BFSK Goertzel  56 %6. DFT Freq/Phase  57 %7. Cross Correlation  58  59 %For pulse train, 120 um / many finger:  60 %startSample = 24876;  61 %startSample = 2009;  62 startSample = 1904;  63 %logDelay(:,5) = logDelay(:,5) / 1000;  64  65 %For 6@500kHz + 2@600kHz, 120 um / many finger:  66 %startSample = 28475;  67  68 numtests = 9;  69 for i = 1:numtests  70     switch( i )  71         case 8  72             datasource = logFreq;  73         case 9  74             datasource = logPhase;  75         otherwise  76             datasource = logDelay(:,i) * 20e-9;  77     end  78  79     sample = datasource(startSample:(startSample+1680));  80     samplePlot(:,i) = sample(60:1620) - mean( sample(60:180) );  81  82     %STEP 1 - Noise floor:  83     noiseFloor(i) = std( sample(60:180) );  %30-90 second mark  84     noiseSample(:,i) = sample(60:180) - mean( sample(60:180) );  85  86     %STEP 2 - Frequency excitation +30 Hz  87     lvl1 = mean( sample(120:180) );  88     lvl2 = mean( sample(390:450) );  89     exFreq1(i) = mean( sample(270:330) ) - ( lvl1 + lvl2 ) / 2;  90  91     %STEP 3 - Frequency excitation +60 Hz  92     lvl1 = mean( sample(390:450) );  93     lvl2 = mean( sample(630:690) );  94     exFreq2(i) = mean( sample(510:570) ) - ( lvl1 + lvl2 ) / 2;  95  96     %STEP 4 - Frequency excitation +90 Hz  97     lvl1 = mean( sample(630:690) ); 214  98     lvl2 = mean( sample(870:930) );  99     exFreq3(i) = mean( sample(750:810) ) - ( lvl1 + lvl2 ) / 2; 100 101     %STEP 5 - +1 sample 102     lvl1 = mean( sample(870:930) ); 103     lvl2 = mean( sample(1110:1170) ); 104     exSample1(i) = mean( sample(990:1050) ) - ( lvl1 + lvl2 ) / 2; 105 106     %STEP 6 - +2 sample 107     lvl1 = mean( sample(1110:1170) ); 108     lvl2 = mean( sample(1350:1410) ); 109     exSample2(i) = mean( sample(1230:1290) ) - ( lvl1 + lvl2 ) / 2; 110 111     %STEP 7 - +3 sample 112     lvl1 = mean( sample(1350:1410) ); 113     lvl2 = mean( sample(1590:1650) ); 114     exSample3(i) = mean( sample(1470:1530) ) - ( lvl1 + lvl2 ) / 2; 115 end 116 117 %Correction for Hilbert transform - TODO 118 % samplePlot(:,3) = samplePlot(:,3) * 1000; 119 % noiseFloor(3) = noiseFloor(3) * 1000; 120 % noiseSample(:,3) = noiseSample(:,3) * 1000; 121 % exFreq(3) = exFreq(3) * 1000; 122 % exInverse(3) = exInverse(3) * 1000; 123 % exPixel(3) = exPixel(3) * 1000; 124 125 % Build overall shifted plot 126 figure( 'Color', [1 1 1 ] ); 127 ns = samplePlot(1:(end-1),1:7); 128 plot( ns ); 129 title( 'Superimposed Data From Delay Tests' ); 130 ylabel( 'Time (s)' ); 131 xlabel( 'Sample' ); 132 133 leg = legend( 'Peak Detect', 'BFSK cos', 'Hilbert', 'Zero Cross', 'BFSK Goertzel', 'DFT Freq/Phase', 'Cross Cor', 'Location', 'Best' ); 134 set( leg, 'FontSize', 10 ); 135 136 % Build comparative noise plot 137 138 figure( 'Color', [1 1 1 ] ); 139 ns = noiseSample(1:(end-1),1:7); 140 plot( ns ); 141 title( 'Delay Time Noise for Different Methods' ); 142 ylabel( 'Time (s)' ); 143 xlabel( 'Sample' ); 144 145 leg = legend( 'Peak Detect', 'BFSK cos', 'Hilbert', 'Zero Cross', 'BFSK Goertzel', 215 'DFT Freq/Phase', 'Cross Cor', 'Location', 'Best' ); 146 set( leg, 'FontSize', 10 ); 147 148 % Build noise and signal matrices 149 150 outM = [noiseFloor' exFreq1' exFreq2' exFreq3' exSample1' exSample1']; 151 snrM = 20 * log10( abs( [(exFreq1'./noiseFloor') (exFreq2'./noiseFloor'/2) (exFreq3'./noiseFloor'/3) (exSample1'./noiseFloor') (exSample2'./noiseFloor'/2) (exSample3'./noiseFloor'/3)] ) ); 152 153 154 155  216  1 % For loading sensor data from VisualDSP exports  2  3 clear all; close all  4  5 fid = fopen( 'D:\Projects\Thesis\Blackfin\SensorData\Config1.dat' );  6 i = 1;  7 data = [];  8 while ~feof( fid )  9     l = str2double( fgetl( fid ) ); 10     if( isnan( l ) == false ) 11         data( i ) = l; 12         i = i + 1; 13     end 14 end 15 16 %win = hann( 500 ); 17 win = ones( 500, 1 ); 18 19 for i = 1:(length(data) / 500) 20     for j = 1:500 21         wave(j, i) = data((i-1)*500 + j); 22     end 23     wavefft(:, i) = abs( fft( wave(:, i) .* win ) ); 24 end 25 26 figure 27 xmin = 2; 28 xmax = 20; 29 for i = 1:size(wave, 2) 30     x = (0:499) * 50e6 / 500; 31     plot( x(xmin:xmax), wavefft(xmin:xmax, i) ); 32     hold on 33 end 34 35 % Interpolate 36 avgfft = zeros( size(wave, 1), 1 ); 37 infactor = 100; 38 39 for i = 1:size(wave, 2) 40     avgfft = avgfft + wavefft(:, i ) / size(wave, 2 ); 41 end 42 43 if( 1 == 1 ) 44     yy = interp( avgfft, infactor, 3 ); 45     xx = interp( x, infactor, 2 ); 46     xxmin = (xmin-1) * infactor; 47     xxmax = (xmax-1) * infactor; 48 else 49     yy = avgfft; 217 50     xx = x; 51     xxmin = xmin; 52     xxmax = xmax; 53 end 54 55 figure 56 plot( xx(xxmin:xxmax), yy(xxmin:xxmax) ); 57 title( 'Frequency Spectrum of Signal' ); 58 xlabel( 'Frequency (Hz)' ); 59 ylabel( 'Amplitude' ); 60 61 [y i] = max( yy(xxmin:xxmax) ); 62 freqcent = xx(xxmin + i - 1); 63 freq3db1 = interp1( yy(xxmin:(xxmin+i-1)), xx(xxmin:(xxmin+i-1)), 0.707946 * y ); 64 freq3db2 = interp1( yy((xxmin+i-1):xxmax), xx((xxmin+i-1):xxmax), 0.707946 * y ); 65 Q = freqcent / ( freq3db2 - freq3db1 ); 66 67 disp( sprintf( 'Center Frequency = %f Hz', freqcent ) ); 68 disp( sprintf( 'Left 3db Frequency = %f Hz', freq3db1 ) ); 69 disp( sprintf( 'Right 3db Frequency = %f Hz', freq3db2 ) ); 70 disp( sprintf( 'Quality Factor = %f', Q ) ); 71 72 figure('Color',[1 1 1]); 73 for i = 1:length(wave(1,:)) 74     wave(:,i) = wave(:,i) - mean(wave(:,i)); 75 end 76 77 x = (1:500) / 500 * 10e-6; 78 wave = wave * 2 / 65536; 79 set(gca, 'Fontsize', 16); 80 plot(x, wave); 81 xlabel('Time (s)'); 82 ylabel('Voltage (V)'); 83 axis([0 10e-6 min(min(wave)) max(max(wave))]); 84 85  218  1 % LDV Attenuation calculator for Comsol Output  2  3 clear all; close all;  4  5 dat = importdata( '120um800umAtten.csv' );  6  7 vect = dat(6000:7600,4)';  8 width = length(vect);  9 samplewidth = dat(2, 1) - dat(1, 1); 10 xx = (1:width) * samplewidth; 11 plot(vect) 12 amp = ( max( vect ) - min( vect ) ) / 2;  %First approximation 13 figure 14 15 % Now determine frequency 16 17 numtests = 1000; 18 x = 1:width; 19 20 % First linearly compensate and shift to 0 21 linfit = polyfit( x, vect, 1 ); 22 vectcomp = vect - polyval( linfit, x ); 23 %vect = vectcomp;    %OPTIONAL 24 plot( xx, vect ); 25 26 % Next locate points of zero crossing 27 vectcompi = interp( vectcomp, 100 ); 28 zeros = []; 29 for i = 1:(width*100 - 1) 30     if( vectcompi(i) < 0 && vectcompi(i + 1) > 0 ) 31         zeros(end + 1) = i; 32     end 33 end 34 35 % Now determine frequency from crossings 36 for i = 1:(length( zeros ) - 1) 37     periods(i) = zeros(i + 1) - zeros(i); 38 end 39 40 period = mean( periods ); 41 f = width / period * 100; 42 43 %Phase offset 44 45 x = 1:width; 46 phases = linspace( 0, 2 * pi, numtests ); 47 48 for i = 1:numtests 49     phase = phases(i); 219 50     phaseStrength(i) = sum( amp * cos( 2 * pi * f * x / width + phase ) .* vect ); 51 end 52 53 [b,i] = max( phaseStrength ); 54 phi = phases(i); 55 56 % Now amplitude and attenuation 57 58 numtests = 1000; 59 60 attentest = linspace( 0.1, 100, numtests ); %in per cm 61 amptest = linspace( 0.2 * amp, 5 * amp, numtests ); 62 63 for i = 1:numtests 64     for j = 1:numtests 65         stddev(i, j) = std( amptest(i) * exp( -attentest(j) * samplewidth * 100 * x ) .* cos( 2 * pi * f * x / width + phi ) - vect ); 66     end 67 end 68 69 [a,b] = min( stddev(:) ); 70 j = floor( b / numtests ); 71 i = mod( b, numtests ); 72 amp = amptest(i); 73 atten = attentest(j); 74 75 % Generate fit wave 76 for i = 1:width 77     outwave(i) = amp * exp( -atten * samplewidth * 100 * i ) * cos( 2 * pi * f * x(i) / width + phi ); 78 end 79 80 hold on 81 plot( xx, outwave, 'r' ); 82 83 title( 'Wave Amplitude vs. Position' ); 84 xlabel( 'Position (m)' ); 85 ylabel( 'Amplitude (m)' ); 86 legend( 'LDV Data', 'Calculated Fit Curve' ); 87 88 disp( sprintf( 'Amplitude: %f m', amp ) ); 89 disp( sprintf( 'Attenuation: %f /cm', atten ) ); 90 disp( sprintf( 'Attenuation: %f dB/cm', 8.6859 * atten ) ); 91 92 93 94  220   1 % Determine capacitance and electric field strength characteristics from   2 % Comsol-generated data   3   4 clear all; close all;   5   6 V = 100;   7   8 %Changing thickness   9  10 thickness = [];  11 cap = [];  12 efield = zeros(1501, 8);  13 for i = 1:10  14     %Filename  15     %num = -15 + i * 20;  16     num = 0 + i * 10;  17     fname = sprintf( 'old/ml800t%d.csv', num );  18  19     dat = importdata( fname );  20  21     % Capacitance calculation  22     Etot = dat(1, 5);  23     thickness(i) = num * 1e-6;  24     cap(i) = 2 * Etot / V ^ 2;  25  26     %Electric field  27     for j = 1:size(dat, 1)  28         if dat(j, 4) > 0  29             break;  30         end  31         if isnan(dat(j, 4)) == 0  32             efield(j, i) = dat(j, 4);  33         end  34     end  35 end  36  37 efieldsum = sum( efield );  38  39 figure( 'Color', [1 1 1] );  40 y = linspace(0, 150e-6, 1501);  41 efield(end,end) = -5e5;  42 contourf( thickness * 1e6, y * 1e6, efield, 150, 'edgecolor', 'none' );  43 xlabel( 'PVDF Thickness (\mum)' );  44 ylabel( 'Z-axis Distance from Finger (\mum)' );  45 t = colorbar;  46 set(get(t,'ylabel'),'String', 'Z-axis Electric Field (V/m)');  47 axis([10 100 0 100]);  48 break;  49 221  50 figure( 'Color', [1 1 1] );  51 plot( thickness, efieldsum, 'o' );  52 title( 'Totalized Z-axis Electric Field vs. PVDF Thickness' );  53 ylabel( 'Totalized Electric Field (V/m)' );  54 xlabel( 'PVDF Thickness (m)' );  55  56 figure( 'Color', [1 1 1] );  57 plot( thickness, cap, 'o' );  58 title( 'Capacitance vs. PVDF Thickness' );  59 ylabel( 'Capacitance (F)' );  60 xlabel( 'PVDF Thickness (m)' );  61  62 %Changing lambda  63 lambda = [];  64 cap = [];  65 efield = zeros(251, 7);  66 for i = 1:7  67     %Filename  68     fname = sprintf( 'l%dt25.csv', 200 + i * 200 );  69  70     dat = importdata( fname );  71  72     % Capacitance calculation  73     Etot = dat(1, 5);  74     lambda(i) = 200e-6 + i * 200e-6;  75     cap(i) = 2 * Etot / V ^ 2;  76  77     %Electric field  78     for j = 1:size(efield, 1)  79         if dat(j, 4) > 0  80             break;  81         end  82         if isnan(dat(j, 4)) == 0  83             efield(j, i) = dat(j, 4);  84         end  85     end  86 end  87  88 efieldsum = sum( efield );  89  90 figure( 'Color', [1 1 1] );  91 y = linspace(0, 250e-6, size(efield, 1));  92 contourf( lambda, y, efield, 50, 'edgecolor', 'none' );  93 title( 'Z-axis Electric Field Below Finger vs. Wavelength' );  94 ylabel( 'Z-axis Distance from Finger (m)' );  95 xlabel( 'Finger Wavelength (m)' );  96 colorbar  97  98 figure( 'Color', [1 1 1] ); 222  99 plot( lambda, efieldsum, 'o' ); 100 title( 'Totalized Z-axis Electric Field vs. Wavelength' ); 101 ylabel( 'Totalized Electric Field (V/m)' ); 102 xlabel( 'Finger Wavelength (m)' ); 103 104 figure( 'Color', [1 1 1] ); 105 plot( lambda, cap, 'o' ); 106 title( 'Capacitance vs. Wavelength' ); 107 ylabel( 'Capacitance (F)' ); 108 xlabel( 'Finger Wavelength (m)' ); 109 110 111 112  223   1 %Simulate FPW behaviour   2   3 clear all;   4   5 %Settings   6 tstep = 0.1e-6;         %Time step in s   7 tstop = 10e-6;          %Stop time   8 thickness = 40e-6;   9  10 %Begin Comsol model code  11  12 import com.comsol.model.*  13 import com.comsol.model.util.*  14  15 model = ModelUtil.create('Model');  16  17 model.modelPath('D:\Projects\Thesis\Comsol\FPWRev0');  18  19 model.name('TDstudyMatlab.mph');  20  21 ttmp = sprintf('%e [m]', thickness);  22 model.param.set('thickness', ttmp);  23 model.param.set('width', '100e-6 [m]');  24 model.param.set('fin_length', '100e-6 [m]');  25 model.param.set('lambda', '800e-6 [m]');  26 model.param.set('fin_height', '10e-6 [m]');  27  28 disp( 'Starting Comsol model generation...' );  29  30 model.modelNode.create('mod1');  31  32 disp( 'Compiling geometries...' );  33  34 model.geom.create('geom1', 3);  35 model.geom('geom1').feature.create('blk1', 'Block');  36 model.geom('geom1').feature.create('blk2', 'Block');  37 model.geom('geom1').feature.create('blk3', 'Block');  38 model.geom('geom1').feature.create('blk4', 'Block');  39 model.geom('geom1').feature.create('blk5', 'Block');  40 model.geom('geom1').feature.create('sph1', 'Sphere');  41 model.geom('geom1').feature.create('cyl1', 'Cylinder');  42 model.geom('geom1').feature.create('blk6', 'Block');  43 model.geom('geom1').feature('blk1').set('pos', {'0' '0' '-thickness/2'});  44 model.geom('geom1').feature('blk1').set('base', 'center');  45 model.geom('geom1').feature('blk1').set('size', {'0.01' 'width' 'thickness'});  46 model.geom('geom1').feature('blk2').set('pos', {'0' '0' 'fin_height / 2'});  47 model.geom('geom1').feature('blk2').set('base', 'center');  48 model.geom('geom1').feature('blk2').set('size', {'fin_length' 'width' 'fin_height'}); 224  49 model.geom('geom1').feature('blk3').set('pos', {'lambda / 2' '0' 'fin_height / 2'});  50 model.geom('geom1').feature('blk3').set('base', 'center');  51 model.geom('geom1').feature('blk3').set('size', {'fin_length' 'width' 'fin_height'});  52 model.geom('geom1').feature('blk4').set('pos', {'lambda' '0' 'fin_height / 2'});  53 model.geom('geom1').feature('blk4').set('base', 'center');  54 model.geom('geom1').feature('blk4').set('size', {'fin_length' 'width' 'fin_height'});  55 model.geom('geom1').feature('blk5').set('pos', {'lambda * 3 / 2' '0' 'fin_height / 2'});  56 model.geom('geom1').feature('blk5').set('base', 'center');  57 model.geom('geom1').feature('blk5').set('size', {'fin_length' 'width' 'fin_height'});  58 model.geom('geom1').feature('sph1').active(false);  59 model.geom('geom1').feature('sph1').set('pos', {'0' '0' '0'});  60 model.geom('geom1').feature('sph1').set('r', '0.01/1.9');  61 model.geom('geom1').feature('cyl1').set('pos', {'-0.01 * 1.05 / 2' '0' '0'});  62 model.geom('geom1').feature('cyl1').set('axis', {'1' '0' '0'});  63 model.geom('geom1').feature('cyl1').set('r', 'thickness * 5');  64 model.geom('geom1').feature('cyl1').set('h', '0.01 * 1.05');  65 model.geom('geom1').feature('blk6').active(false);  66 model.geom('geom1').feature('blk6').set('pos', {'0' '0' '-thickness/2'});  67 model.geom('geom1').feature('blk6').set('base', 'center');  68 model.geom('geom1').feature('blk6').set('size', {'0.01 * 1.05' 'width * 1.05' 'thickness * 10'});  69 model.geom('geom1').run;  70  71 model.material.create('mat1');  72 model.material('mat1').propertyGroup.create('StressCharge', 'Stress-charge form');  73 model.material('mat1').selection.set([2]);  74 model.material.create('mat2');  75 model.material('mat2').selection.set([3 4 5 6]);  76 model.material.create('mat3');  77 model.material('mat3').propertyGroup('def').func.create('eta', 'Piecewise');  78 model.material('mat3').propertyGroup('def').func.create('Cp', 'Piecewise');  79 model.material('mat3').propertyGroup('def').func.create('rho', 'Analytic');  80 model.material('mat3').propertyGroup('def').func.create('k', 'Piecewise');  81 model.material('mat3').propertyGroup('def').func.create('cs', 'Analytic');  82 model.material('mat3').selection.set([1]);  83  84 disp( 'Assigning physics...' );  85  86 model.physics.create('pzd', 'PiezoelectricDevices', 'geom1');  87 model.physics('pzd').feature('pzm1').feature.create('iss1', 'InitialStressandStrain', 3);  88 model.physics('pzd').feature('pzm1').feature('iss1').selection.set([2]);  89 model.physics('pzd').feature.create('roll1', 'Roller', 2);  90 model.physics('pzd').feature('roll1').selection.set([6 39]);  91 model.physics('pzd').feature.create('lemm1', 'LinearElasticModel', 3); 225  92 model.physics('pzd').feature('lemm1').selection.set([3 4 5 6]);  93 model.physics('pzd').feature.create('pot1', 'ElectricPotential', 2);  94 model.physics('pzd').feature('pot1').selection.set([11 12 13 14 15 16 25 26 27 28 29 30]);  95 model.physics('pzd').feature.create('gnd1', 'Ground', 2);  96 model.physics('pzd').feature('gnd1').selection.set([18 19 20 21 22 23 32 33 34 35 36 37]);  97 model.physics('pzd').feature.create('eqm1', 'ElectricalQuasistaticModel', 3);  98 model.physics('pzd').feature('eqm1').selection.set([1]);  99 100 disp( 'Building mesh...' ); 101 102 model.mesh.create('mesh1', 'geom1'); 103 model.mesh('mesh1').feature.create('ftet1', 'FreeTet'); 104 105 model.cpl.remove('int2'); 106 107 model.result.table.create('evl3', 'Table'); 108 109 model.view('view1').set('renderwireframe', true); 110 model.view('view1').set('transparency', 'on'); 111 112 disp( 'Compiling materials...' ); 113 114 model.material('mat1').name('PVDF'); 115 model.material('mat1').propertyGroup('def').set('density', '1778'); 116 model.material('mat1').propertyGroup('StressCharge').set('cE', {'3.61e9' '1.61e9' '1.42e9' '0' '0' '0' '1.61e9' '3.13e9' '1.31e9' '0' '0' '0' '1.42e9' '1.31e9' '1.63e9' '0' '0' '0' '0' '0' '0' '0.55e9' '0' '0' '0' '0' '0' '0' '0.59e9' '0' '0' '0' '0' '0' '0' '0.69e9'}); 117 model.material('mat1').propertyGroup('StressCharge').set('eES', {'0' '0' '0.0466' '0' '0' '0.0033' '0' '0' '-0.0157' '0' '0.0110' '0' '0.0159' '0' '0' '0' '0' '0'}); 118 model.material('mat1').propertyGroup('StressCharge').set('epsilonrS', {'6.6' '0' '0' '0' '8.3' '0' '0' '0' '7.3'}); 119 model.material('mat2').name('PEDOT'); 120 model.material('mat2').propertyGroup('def').set('youngsmodulus', '1e9'); 121 model.material('mat2').propertyGroup('def').set('poissonsratio', '0.35'); 122 model.material('mat2').propertyGroup('def').set('density', '1100'); 123 model.material('mat2').propertyGroup('def').set('relpermittivity', {'4' '0' '0' '0' '4' '0' '0' '0' '4'}); 124 model.material('mat3').name('Air'); 125 model.material('mat3').propertyGroup('def').func('eta').set('arg', 'T'); 126 model.material('mat3').propertyGroup('def').func('eta').set('pieces', {'200.0' '1600.0' '-8.38278E-7+8.35717342E-8*T^1-7.69429583E-11*T^2+4.6437266E-14*T^3-1.06585607 E-17*T^4'}); 127 model.material('mat3').propertyGroup('def').func('Cp').set('arg', 'T'); 128 model.material('mat3').propertyGroup('def').func('Cp').set('pieces', {'200.0' '1600.0' '1047.63657-0.372589265*T^1+9.45304214E-4*T^2-6.02409443E-7*T^3+1.2858961E- 10*T^4'}); 226 129 model.material('mat3').propertyGroup('def').func('rho').set('expr', 'pA*0.02897/8. 314/T'); 130 model.material('mat3').propertyGroup('def').func('rho').set('args', {'pA' 'T'}); 131 model.material('mat3').propertyGroup('def').func('rho').set('dermethod', 'manual'); 132 model.material('mat3').propertyGroup('def').func('rho').set('argders', {'pA' 'd (pA*0.02897/8.314/T,pA)'; 'T' 'd(pA*0.02897/8.314/T,T)'}); 133 model.material('mat3').propertyGroup('def').func('rho').set('plotargs', {'pA' '' ''; 'T' '' ''}); 134 model.material('mat3').propertyGroup('def').func('k').set('arg', 'T'); 135 model.material('mat3').propertyGroup('def').func('k').set('pieces', {'200.0' '1600.0' '-0.00227583562+1.15480022E-4*T^1-7.90252856E-8*T^2+4.11702505E-11*T^3- 7.43864331E-15*T^4'}); 136 model.material('mat3').propertyGroup('def').func('cs').set('expr', 'sqrt(1.4 *287*T)'); 137 model.material('mat3').propertyGroup('def').func('cs').set('args', {'T'}); 138 model.material('mat3').propertyGroup('def').func('cs').set('dermethod', 'manual'); 139 model.material('mat3').propertyGroup('def').func('cs').set('argders', {'T' 'd(sqrt (1.4*287*T),T)'}); 140 model.material('mat3').propertyGroup('def').func('cs').set('plotargs', {'T' '' ''}); 141 model.material('mat3').propertyGroup('def').set('relpermeability', {'1' '0' '0' '0' '1' '0' '0' '0' '1'}); 142 model.material('mat3').propertyGroup('def').set('relpermittivity', {'1' '0' '0' '0' '1' '0' '0' '0' '1'}); 143 model.material('mat3').propertyGroup('def').set('dynamicviscosity', 'eta(T[1/K]) [Pa*s]'); 144 model.material('mat3').propertyGroup('def').set('ratioofspecificheat', '1.4'); 145 model.material('mat3').propertyGroup('def').set('electricconductivity', {'0[S/m]' '0' '0' '0' '0[S/m]' '0' '0' '0' '0[S/m]'}); 146 model.material('mat3').propertyGroup('def').set('heatcapacity', 'Cp(T[1/K])[J/ (kg*K)]'); 147 model.material('mat3').propertyGroup('def').set('density', 'rho(pA[1/Pa],T[1/K]) [kg/m^3]'); 148 model.material('mat3').propertyGroup('def').set('thermalconductivity', {'k(T[1/K]) [W/(m*K)]' '0' '0' '0' 'k(T[1/K])[W/(m*K)]' '0' '0' '0' 'k(T[1/K])[W/(m*K)]'}); 149 model.material('mat3').propertyGroup('def').set('soundspeed', 'cs(T[1/K])[m/s]'); 150 model.material('mat3').propertyGroup('def').addInput('temperature'); 151 model.material('mat3').propertyGroup('def').addInput('pressure'); 152 153 model.physics('pzd').feature('pzm1').set('AdvMatRes', '1'); 154 model.physics('pzd').feature('pzm1').feature('iss1').set('Sil', {'10e6'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'}); 155 model.physics('pzd').feature('lemm1').set('minput_velocity_src', 'root.mod1.pzd. u_tX'); 156 model.physics('pzd').feature('pot1').set('V0', '0'); 157 model.physics('pzd').feature('eqm1').set('Fd_src', 'root.mod1.pzd.FdxX'); 158 model.physics('pzd').feature('eqm1').set('minput_velocity_src', 'root.mod1.pzd. u_tX'); 159 160 disp( 'Building mesh...' ); 227 161 162 model.mesh('mesh1').feature('size').set('hauto', 3); 163 model.mesh('mesh1').run; 164 165 disp( 'Running first solution...' ); 166 167 model.result.table('evl3').name('Evaluation 3D'); 168 model.result.table('evl3').comments('Interactive 3D values'); 169 170 model.study.create('std1'); 171 model.study('std1').feature.create('time', 'Transient'); 172 173 model.sol.create('sol1'); 174 model.sol('sol1').study('std1'); 175 model.sol('sol1').attach('std1'); 176 model.sol('sol1').feature.create('st1', 'StudyStep'); 177 model.sol('sol1').feature.create('v1', 'Variables'); 178 model.sol('sol1').feature.create('t1', 'Time'); 179 model.sol('sol1').feature('t1').feature.create('fc1', 'FullyCoupled'); 180 model.sol('sol1').feature('t1').feature.create('d1', 'Direct'); 181 model.sol('sol1').feature('t1').feature.remove('fcDef'); 182 183 model.result.create('pg1', 'PlotGroup3D'); 184 model.result('pg1').feature.create('surf1', 'Surface'); 185 model.result('pg1').feature('surf1').feature.create('def', 'Deform'); 186 model.result.create('pg2', 'PlotGroup3D'); 187 model.result('pg2').feature.create('slc1', 'Slice'); 188 model.result.create('pg3', 'PlotGroup3D'); 189 model.result('pg3').feature.create('surf1', 'Surface'); 190 191 model.study('std1').feature('time').set('tlist', tstep); 192 193 model.sol('sol1').feature('st1').name('Compile Equations: Time Dependent'); 194 model.sol('sol1').feature('st1').set('studystep', 'time'); 195 model.sol('sol1').feature('v1').set('control', 'time'); 196 model.sol('sol1').feature('v1').feature('mod1_V').set('scalemethod', 'manual'); 197 model.sol('sol1').feature('v1').feature('mod1_V').set('scaleval', '100'); 198 model.sol('sol1').feature('v1').feature('mod1_u').set('scalemethod', 'manual'); 199 model.sol('sol1').feature('v1').feature('mod1_u').set('scaleval', '1e-2*0. 010636258740741499'); 200 model.sol('sol1').feature('t1').set('control', 'time'); 201 model.sol('sol1').feature('t1').set('tlist', tstep); 202 model.sol('sol1').feature('t1').set('timemethod', 'genalpha'); 203 model.sol('sol1').feature('t1').feature('d1').set('linsolver', 'pardiso'); 204 model.sol('sol1').runAll; 205 206 disp( 'Preparing results...' ); 207 208 model.result('pg1').name('Displacement (pzd)'); 228 209 model.result('pg1').set('title', 'Surface: Total displacement (m)   Surface Deformation: Displacement field (Material) '); 210 model.result('pg1').set('titleactive', false); 211 model.result('pg1').feature('surf1').feature('def').set('scale', '1.290774009210853 E7'); 212 model.result('pg1').feature('surf1').feature('def').set('scaleactive', false); 213 model.result('pg2').name('Potential (pzd)'); 214 model.result('pg2').set('title', 'Slice: Electric potential (V) '); 215 model.result('pg2').set('titleactive', false); 216 model.result('pg2').feature('slc1').set('expr', 'V'); 217 model.result('pg2').feature('slc1').set('unit', 'V'); 218 model.result('pg2').feature('slc1').set('descr', 'Electric potential'); 219 model.result('pg2').feature('slc1').set('quickxnumber', '50'); 220 model.result('pg3').set('title', 'Surface: Electric field norm Total electric energy (V/m) '); 221 model.result('pg3').set('titleactive', false); 222 model.result('pg3').feature('surf1').set('expr', 'pzd.normE'); 223 model.result('pg3').feature('surf1').set('unit', 'V/m'); 224 model.result('pg3').feature('surf1').set('descr', 'Electric field norm Total electric energy'); 225 226 %Now iterate through time steps 227 model.sol('sol1').feature('v1').set('initmethod', 'sol'); 228 model.sol('sol1').feature('v1').set('initsol', 'sol1'); 229 230 disp( 'Project set, starting iteration...' ); 231 232 %Prep 233 figure('Color', [1 1 1]); 234 tin = 0; 235 x = linspace(-0.004, 0.004, 500); 236 y = linspace(0, 0, 500); 237 z = linspace(-thickness / 2, -thickness / 2, 500); 238 239 x1 = linspace(0, 0, 500); 240 y1 = linspace(0, 0, 500); 241 z1 = linspace(-thickness, 0, 500); 242 243 V = []; 244 d = []; 245 tlist = []; 246 247 %Iterator, data collection 248 for i = 1:round(tstop/tstep) 249     tin = tin + tstep; 250     tlist(end + 1) = tin; 251     amp = sinc(2 * 500000 * tin) - 50000 / 500000 * sinc(2 * 50000 * tin); 252     model.physics('pzd').feature('pot1').set('V0', amp); 253 229 254     model.sol('sol1').runAll; 255     model.result('pg1').run; 256     mphplot( model, 'pg1', 'rangenum', 1 ); 257     drawnow 258 259     Vtmp = mphinterp(model, 'V', 'coord', [x;y;z]);     %Voltage 260     V(:, i) = Vtmp(1, :); 261     dtmp = mphinterp(model, 'w', 'coord', [x;y;z]);     %z-component displacement field 262     d(:, i) = dtmp(1, :); 263     vtmp = mphinterp(model, 'pzd.u_tZ', 'coord', [x;y;z]);     %z-component velocity 264     v(:, i) = vtmp(1, :); 265     Etmp = mphinterp(model, 'pzd.intWe', 'coord', [x;y;z]);     %total electrical energy 266     Et(:, i) = Etmp(1, :); 267     Etmp = mphinterp(model, 'pzd.Ex', 'coord', [x;y;z]);     %Electric field along x-axis 268     Ex(:, i) = Etmp(1, :); 269     Etmp = mphinterp(model, 'pzd.Ez', 'coord', [x1;y1;z1]);     %Electric field along z-axis beneath finger 270     Ez(:, i) = Etmp(1, :); 271 272     disp( sprintf( 'Iteration complete, time index %e, applying amplitude: %f', tin, amp ) ); 273 end 274 275 %Now draw useful plots 276 figure('Color', [1 1 1]); 277 contourf( x, tlist, d', 50, 'edgecolor', 'none' ); 278 title('Z-axis Displacement'); 279 ylabel('Time index (s)'); 280 xlabel('X-axis location (m)'); 281 colorbar; 282 283 figure('Color', [1 1 1]); 284 contourf( x, tlist, V', 50, 'edgecolor', 'none' ); 285 title('Potential along the X-axis'); 286 ylabel('Time index (s)'); 287 xlabel('X-axis location (m)'); 288 colorbar; 289 290 figure('Color', [1 1 1]); 291 contourf( x, tlist, Ex', 50, 'edgecolor', 'none' ); 292 title('Electric field along the X-axis'); 293 ylabel('Time index (s)'); 294 xlabel('X-axis location (m)'); 295 colorbar; 296 297 figure('Color', [1 1 1]); 230 298 contourf( z1, tlist, Ez', 50, 'edgecolor', 'none' ); 299 title('Electric field along the Z-axis'); 300 ylabel('Time index (s)'); 301 xlabel('Z-axis location (m)'); 302 colorbar; 303 304  231   1 % Process computed variables such as d, v, V, E, etc from Comsol TD study   2 % Assumes appropriate variables are pre-loaded   3   4 %First velocity and wavelength calculations   5   6 %Find peaks in every time slot   7 dwidth = size(d, 1);   8 dtime = size(d, 2);   9 dpeaks = [];  10 for i = 1:dtime  11     lpoint = d(1, i);  12     climbing = 0;  13     meanval = mean(d(:, i));  14     for j = 2:dwidth  15         if d(j, i) > lpoint  16             climbing = 1;  17         end  18         if (climbing == 1) && (d(j, i) < lpoint) && (d(j, i) > meanval)  19             dpeaks(j, i) = d(j, i);  20             climbing = 0;  21         end  22         lpoint = d(j, i);  23     end  24 end  25  26 figure('Color', [1 1 1]);  27 contourf( x, tlist, dpeaks', 50, 'edgecolor', 'none' );  28  29 %Separate into groups  30 dgroupx = [];  31 dgroupt = [];  32 dgroupi = [];  33 done = 0;  34 g = 1;  35 gi = 0;  36 while done == 0  37     done = 1;  38     %Find first available point  39     for i = 1:dtime  40         for j = (dwidth / 2):-1:1  41             if dpeaks(j, i) ~= 0  42                 fits = 1;  43                 if done == 0  44                     %Make sure this point belongs to the same line  45                     fits = 0;  46                     for k = 1:gi  47                         if (dgroupt(k, g) > i - 3) && (dgroupt(k, g) < i + 1)  48                             if (dgroupx(k, g) > j - 5) && (dgroupx(k, g) < j + 5)  49                                 fits = 1; 232  50                             end  51                         end  52                     end  53                 end  54                 if fits == 1  55                     %Suck line out of dpeaks  56                     gi = gi + 1;  57                     dgroupx(gi, g) = j;  58                     dgroupt(gi, g) = i;  59                     dgroupi(gi, g) = dpeaks(j, i);  60                     dpeaks(j, i) = 0;  61                 end  62                 if done == 1  63                     done = 0;  64                 end  65             end  66         end  67     end  68  69     if( gi > 20 )  70         g = g + 1;  71     end  72     gi = 0;  73 end  74  75 %Now make lines and plot  76 figure('Color', [1 1 1]);  77 plot( dgroupx, dgroupt, 'x' );  78  79 %Sort  80 [i, j] = sort( sum(dgroupi), 2, 'descend');  81 dgroupi = dgroupi(:, j);  82 dgroupx = dgroupx(:, j);  83 dgroupt = dgroupt(:, j);  84  85 p = [];  86 px = [];  87 pt = [];  88 pi = [];  89 for i = 1:4  90     goodx = [];  91     goodt = [];  92     for j = 1:size(dgroupi, 1)  93         if (dgroupx(j, i) == 0) && (dgroupt(j, i) == 0)  94             continue  95         else  96             goodx(end + 1) = dgroupx(j, i);  97             goodt(end + 1) = dgroupt(j, i);  98         end 233  99     end 100 101     p(:, i) = polyfit(goodx, goodt, 1); 102     px(:, i) = 1:round(dwidth / 2); 103     pt(:, i) = polyval(p(:, i), px(:, i)); 104     pi(:, i) = sum(dgroupi(:, i)); 105 end 106 107 hold on 108 plot( px, pt ); 109 axis([0 dwidth 0 dtime]) 110 111 vel = []; 112 amp = []; 113 legs = []; 114 for i = 1:size(pi, 2) 115     vel(i) = -1 / (p(1, i) * tstep / (x(2) - x(1))); 116     amp(i) = pi(i); 117     legs{i} = sprintf( 'Vel: %.0f m/s at %.1e', vel(i), amp(i)); 118 end 119 120 legend( legs, 'Location', 'Best' ); 121 122  234   1 %Parse through PVA/Humidity data and perform theoretical calculations to   2 %determine material/polymer properties.  Uses .mat files in current   3 %directory represents individual tests   4   5 clear all   6 close all   7   8 %DATA COLLECTION SECTION   9  10 %Collect list of files  11 tests = what;  12 Psat = 3.0;         %kPa  13 R = 8.31446;  14 Mw = 18.02;         %g/mol  15 T = 24 + 273.15;    %Temperature in Kelvin  16  17 %Extract relevant data from all files  18 disp( 'Loading data...' );  19  20 psensS = [];  21 esensSL = [];  22 esensSH = [];  23 psensH = [];  24 esensHL = [];  25 esensHH = [];  26 layersPVA = [];  27 samples = [];  28 for i = 1:length(tests.mat)  29     if strcmp( tests.mat(i), 'errload.mat' )  30         continue;  31     end  32     disp( sprintf( 'Scanning %s...', tests.mat{i} ) );  33     load( tests.mat{i}, 'sensOut', 'layers' );  34  35     samples(i) = length(sensOut(:, 1));  36  37     psensS = [psensS;sensOut(:, 1)];  38     esensSL = [esensSL;sensOut(:, 2)];  39     esensSH = [esensSH;sensOut(:, 3)];  40     psensH = [psensH;sensOut(:, 4)];  41 %    esensHL = [esensHL;sensOut(:, 5)];  42 %    esensHH = [esensHH;sensOut(:, 6)];  43     layersPVA = [layersPVA;(ones(samples(i), 1) * layers)];  44 end  45  46 %Plot data  47 disp( 'First plot...' );  48  49 figure( 'Color', [1 1 1] ); 235  50 set( gca, 'FontName', 'Times', 'FontSize', [16] );  51 hLeg = [];  52 cstring='rgbcmky';  53  54 for i = 1:length(layersPVA)  55     hLeg(i) = errorbar( psensH(i), psensS(i), esensSL(i), esensSH(i), ['x' cstring (mod(layersPVA(i),7))] );  56     errorbar_x( psensH(i), psensS(i), 0.7, 0.7, ['x' cstring(mod(layersPVA(i),7))] );  57     hold on  58 end  59  60 xlabel( 'Relative Humidity (%)' );  61 ylabel( 'Frequency (Hz)' );  62 drawnow;  63  64 %FITTING SECTION  65  66 %Preparation of known material parameters  67 PVDF.density = 1780;     %kg/m^3  68 PVDF.PR = 0.35;          %Poisson ratio  69  70 PVA.PR = 0.47;           %Poisson ratio  71 PVA.density = 1269;       %kg/m^3  72  73 PEDOT.YM = 2.8e9;       %Pa  74 PEDOT.PR = 0.35;  75 PEDOT.density = 1500;   %kg/m^3  76 PEDOT.m = 7.7e-4;       %kg/m^2  77 PEDOT.d = 1e-6;       %m  78  79 lambda = 800e-6;        %Wavelength of IDTs, m  80  81 %Unknown parameters:  82 % PVDF parameters -- assume constant  83 % PVA Young's Modulus as function of humidity -- linear func of humidity  84 % PVA thickness as function of humidity -- linear func of humidity  85 % PVA mass per unit area as a function of humidity -- linear func of humidity  86  87 %Build initial approximation variation vector  88 %%%%1 - PVDF stress A (constant) [Pa]  89 A = 30e6;       %Reference  90 Ac = 30e6;      %Constraint (+/-)  91 %%%%2 - PVA Young's Modulus B (Bx + C) [Pa/%]  92 B = -2e6;  93 Bc = 2e6;  94 %B = -2e5;      %Reference  95 %Bc = 2e5;  96 %%%%3 - PVA Young's Modulus C (Bx + C) [Pa] 236  97 C = 2.2e9;  98 Cc = 0.5e9;  99 %%%%4 - PVA Thickness D (Dx + E) [m/%/layer] 100 D = 15e-9; 101 Dc = 5e-9; 102 %%%%5 - PVA Thickness E (Dx + E) [m/layer] 103 E = 3.15e-6; 104 Ec = 0.1e-6; 105 %%%%6 - PVA mass per unit area F (Fx + G) [kg/m^2/%/layer] 106 F = 10e-6; 107 Fc = 10e-6; 108 %%%%7 - PVA mass per unit area G (Fx + G) [kg/m^2/layer] 109 G = 4e-3; 110 Gc = 0.1e-3; 111 %%%%8 - PVA stress H (Hx + I) 112 H = 50e5; 113 Hc = 100e5; 114 %H = 1e5; 115 %Hc = 2e5; 116 %%%%9 - PVA stress I (Hx + I) 117 I = 50e6; 118 Ic = 100e6; 119 %I = 1e6; 120 %Ic = 5e6; 121 %%%%10 - Spare 122 J = 50e4; 123 Jc = 100e4; 124 %%%%11 - PVDF Young's Modulus 125 K = 1.375e9;  %Reference 126 Kc = 0.3e9; 127 %%%%12 - PVDF Thickness 128 L = 21e-6;      %Measured 129 Lc = 3e-6;      %Experimental 130 131 x0 = [A B C D E F G H I J K L];  %Initial guess matrix 132 x0c = [Ac Bc Cc Dc Ec Fc Gc Hc Ic Jc Kc Lc]; 133 134 %Save all information for fast loading of error calculator 135 showplot = 0; 136 disp( 'Saving variables...' ); 137 save errload 138 139 %Run multivariate problem solver 140 disp( 'Running multivariable solver...' ); 141 x = x0; 142 [x fval] = fminsearch( @errcalc, x0, optimset('Display', 'iter', 'MaxFunEvals', 100000, 'MaxIter', 100000, 'TolFun', 1e-6) ); %unconstrained nonlinear optimizer using Nelder-Mead Simplex method 143 x = constraints(x, x0, x0c); 237 144 145 disp( 'Optimized values:' ); 146 fprintf( 1, 'PVDF Stress: %f [MPa]\n', x(1) / 1e6 ); 147 fprintf( 1, 'PVDF Young''s Modulus: %f [GPa]\n', x(11) / 1e9 ); 148 fprintf( 1, 'PVDF Thickness: %f [um]\n', x(12) * 1e6 ); 149 fprintf( 1, 'PVA Stress: %fx^2 + %fx + %f [MPa]\n', x(10) / 1e6, x(8) / 1e6, x(9) / 1e6 ); 150 fprintf( 1, 'PVA Young''s Modulus: %fx + %f [GPa]\n', x(2) / 1e9, x(3) / 1e9 ); 151 fprintf( 1, 'PVA Thickness/layer: %fx + %f [um]\n', x(4) * 1e6, x(5) * 1e6 ); 152 fprintf( 1, 'PVA Mass/area/layer: %fx + %f [g/m^2]\n', x(6) * 1e3, x(7) * 1e3 ); 153 fprintf( 1, 'Zero-Humidity PVA Density: %f [kg/m^3]\n', x(7) / x(5) ); 154 155 %Generation of theoretical curves 156 xHum = linspace(10, 55, 100); 157 158 phase = []; 159 PVDF.S = x(1); 160 PVDF.YM = x(11); 161 PVDF.d = x(12); 162 PVDF.m = PVDF.density * PVDF.d;     %Mass per unit area 163 for i = 1:length(samples) 164     in = sum(samples(1:i)); 165     if in == 0 166         continue; 167     end 168     for j = 1:length(xHum) 169         PVA.S = x(8) * xHum(j) + x(9) + x(10) * xHum(j) ^ 2; 170         PVA.YM = x(2) * xHum(j) + x(3); 171         PVA.d = layersPVA(in) * (x(4) * xHum(j) + x(5)); 172         PVA.m = layersPVA(in) * (x(6) * xHum(j) + x(7)); 173         %PVA.d = (x(4) * xHum(j) + x(5));        %Reference 174         %PVA.m = (x(6) * xHum(j) + x(7)); 175 176         [v(j,i) f(j,i)] = psolve( PVDF, PVA, PEDOT, lambda );  %Solve 177         freq(j) = f(j,i); 178     end 179 180     hcurve = plot( xHum, freq, 'k-' ); 181     set(hcurve, 'Linewidth', 2); 182 end 183 184 for i = 1:length(layersPVA) 185     hLeg(i) = errorbar( psensH(i), psensS(i), esensSL(i), esensSH(i), ['x' cstring (mod(layersPVA(i),7))] ); 186     errorbar_x( psensH(i), psensS(i), 0.7, 0.7, ['x' cstring(mod(layersPVA(i),7))] ); 187     hold on 188 end 189 238 190 %hLegNew(1) = hLeg(find(layersPVA==1, 1 )); 191 %hLegNew(2) = hLeg(find(layersPVA==2, 1 )); 192 %hLegNew(3) = hLeg(find(layersPVA==3, 1 )); 193 %hLegNew(end + 1) = hcurve; 194 %legend( hLegNew, 'One Layer', 'Two Layers', 'Three Layers', 'Fitting Curve', 'Location', 'Best' ); 195 196 %MATERIAL CHARACTERIZATION 197 198 d = (x(4) / x(5) * xHum); 199 m = (x(6) / x(7) * xHum); 200 ym = (x(2) / x(3) * xHum); 201 202 density = (x(6) * xHum + x(7)) ./ (x(4) * xHum + x(5)) ./ (x(7)/x(5)) - 1; 203 204 figure( 'Color', [1 1 1] ); 205 set( gca, 'FontName', 'Times', 'FontSize', [16] ); 206 hline = plot( xHum, d * 100, 'r' ); 207 set( hline, 'Linewidth', 2); 208 hold on 209 hline = plot( xHum, m * 100, 'b' ); 210 set( hline, 'Linewidth', 2); 211 hline = plot( xHum, ym * 100, 'g' ); 212 set( hline, 'Linewidth', 2); 213 hline = plot( xHum, density * 100, 'c' ); 214 set( hline, 'Linewidth', 2); 215 xlabel( 'Relative Humidity (%)' ); 216 ylabel( 'Percentage Change (%)' ); 217 legend( 'Thickness', 'Mass per unit area', 'Young''s modulus', 'Density', 'Location', 'Best' ); 218 219 % Calculate partition coefficient - TODO 220 partcoeff = m(end) * PVA.density * T * R / (xHum(end) / 100 * Psat * Mw); 221 fprintf(1, 'Partition Coefficient: %f\n', partcoeff); 222 fprintf(1, 'Velocity: %f\n\n', mean(v(:,2))); 223  239 1 %Function to apply limiting constraints to fminsearch 2 3 function xout = constraints(xin, x0, x0c) 4 val = x0c .* sin(2 .* pi .* xin ./ x0) + x0; 5 xout = val; 6 end  240  1 % Calculate least squares error between theoretical and experimental  2 % PVA/humidity data  3 %Parameters:  4 %1 - PVDF stress A (constant) [Pa]  5 %2 - PVA Young's Modulus B (Bx + C) [Pa/%]  6 %3 - PVA Young's Modulus C (Bx + C) [Pa]  7 %4 - PVA Thickness D (Dx + E) [m/%/layer]  8 %5 - PVA Thickness E (Dx + E) [m/layer]  9 %6 - PVA mass per unit area F (Fx + G) [kg/m^2/%/layer] 10 %7 - PVA mass per unit area G (Fx + G) [kg/m^2/layer] 11 %8 - PVA stress H (Hx + I) 12 %9 - PVA stress I (Hx + I) 13 14 function f = errcalc(x) 15 16 %Load relevant data 17 load errload 18 19 %Apply constraints 20 x = constraints(x, x0, x0c); 21 22 PVDF.S = x(1); 23 PVDF.YM = x(11); 24 PVDF.d = x(12); 25 PVDF.m = PVDF.density * PVDF.d;     %Mass per unit area 26 27 %Calculate theoretical velocities and errors 28 err = 0; 29 for i = 1:length(layersPVA) 30     PVA.S = x(8) * psensH(i) + x(9) + x(10) * psensH(i) ^ 2; 31     PVA.YM = x(2) * psensH(i) + x(3); 32     PVA.d = layersPVA(i) * (x(4) * psensH(i) + x(5)); 33     PVA.m = layersPVA(i) * (x(6) * psensH(i) + x(7)); 34 %    PVA.d = (x(4) * psensH(i) + x(5)); %Reference 35 %    PVA.m = (x(6) * psensH(i) + x(7)); 36     [v(i) f(i)] = psolve( PVDF, PVA, PEDOT, lambda );  %Solve 37     %vexp = (psensS(i) + x(8)) * lambda / 360 / x(9);       %Phase 38     %vexp = (2 * 800e-6) ./ (psensS(i) * 4.96e-8 + x(9));       %Delay 39     vexp = lambda * psensS(i);      %Frequency 40 41     err = err + abs(vexp - v(i)) ^ 2;    %Error from sample points 42 end 43 44 %Contribute additional weighted error sources 45 err1 = ((PVA.density - x(7) / x(5)) / PVA.density) ^ 2;    %PVA density 46 partcoeff = (x(6) / x(7) * 30) * PVA.density * T * R / (30 / 100 * Psat * Mw); %Partition coefficient 47 err3 = ((20000 - partcoeff) / 20000) ^ 2; 48 241 49 err = err + 10 * err1 + 10 * err3; 50 51 if showplot 52     phase = v * 360 * x(9) / lambda - x(8); 53     plot( psensH, psensS, 'rx' ); 54     hold on 55     plot( psensH, phase, 'bo' ); 56     hold off 57     drawnow; 58 end 59 60 f = err; 61 62 end 63  242  1 %Solve for phase velocity and frequency based on input substrate and  2 %sensing layer  3  4 function [v, f] = psolve( subst, sens, pedot, lambda )  5     %Stress term  6     T = subst.S * subst.d + sens.S * sens.d;  %Assume PEDOT does not contribute  7  8     %Stiffness term  9     B = 2 * pi / lambda; 10     EprimeSubst = subst.YM / (1 - subst.PR ^ 2); 11     EprimeSens = sens.YM / (1 - sens.PR ^ 2); 12     EprimePedot = pedot.YM / (1 - pedot.PR ^ 2); 13     h0 = 0; 14     h1 = sens.d; 15     h2 = sens.d + pedot.d; 16     h3 = sens.d + pedot.d + subst.d; 17     x0 = ( EprimeSens * ( h1 ^ 2 - h0 ^ 2 ) + EprimePedot * ( h2 ^ 2 - h1 ^ 2 ) + EprimeSubst * ( h3 ^ 2 - h2 ^ 2 ) ) / ( 2 * ( EprimeSens * ( h1 - h0 ) + EprimePedot * ( h2 - h1 ) + EprimeSubst * ( h3 - h2 ) ) ); 18     D = 1/3 * ( EprimeSens * ( ( h1 - x0 ) ^ 3 - ( h0 - x0 ) ^ 3 ) + EprimePedot * ( ( h2 - x0 ) ^ 3 - ( h1 - x0 ) ^ 3 ) + EprimeSubst * ( ( h3 - x0 ) ^ 3 - ( h2 - x0 ) ^ 3 ) ); 19 20     %Mass term 21     M = subst.m + sens.m + pedot.m; 22 23     %Final velocity and frequency calculation 24     v = sqrt( ( T + B ^ 2 * D ) ./ M ); 25     f = v / lambda; 26 end 27  243   1 %Class library for Walus printer   2   3 classdef printclass < handle   4     properties (SetAccess = private)   5         curx = 0;   6         cury = 0;   7         code = '';   8         plotx = [];   9         ploty = [];  10         plotcolour = [0 0 1];  11         res = 0;  12         stepsize = 2.5;  13         detail = 1;  14         figname = 0;  15         doplot = false;  16         inloop = false;  17         loopcurx = 0;  18         loopcury = 0;  19         loopres = 0;  20         loopcount = 0;  21         loopcode = '';  22     end  23     methods  24         %Adds code to the existing code block.  Returns code block.  25         function newcode = addcode( pd, addition )  26             if pd.inloop == true  27                 pd.loopcode = strcat( pd.loopcode, addition );  28                 newcode = pd.loopcode;  29             else  30                 pd.code = strcat( pd.code, addition );  31                 newcode = pd.code;  32             end  33         end  34  35         function codedata = retcode( pd )  36             codedata = strcat( pd.code, 'S' );  37         end  38  39         %Add offset to current x-axis position  40         function newx = addx( pd, x )  41             if pd.inloop == true  42                 pd.loopcurx = pd.loopcurx + x;  43                 newx = pd.loopcurx;  44             else  45                 pd.curx = pd.curx + x;  46                 newx = pd.curx;  47             end  48         end  49 244  50         %Add offset to current x-axis position  51         function newy = addy( pd, y )  52             if pd.inloop == true  53                 pd.loopcury = pd.loopcury + y;  54                 newy = pd.loopcury;  55             else  56                 pd.cury = pd.cury + y;  57                 newy = pd.cury;  58             end  59         end  60  61         %Adds a point to the plot  62         function addplot( pd, x, y )  63             if pd.doplot == true  64                 pd.plotx = [pd.plotx x];  65                 pd.ploty = [pd.ploty y];  66                 plot( x, y, 'o', 'color', pd.plotcolour );  67                 drawnow;  68             end  69         end  70  71         %Sets the resolution  72         function setres( pd, newres )  73             if pd.inloop == true  74                 if newres == pd.loopres  75                     return;  76                 end  77             else  78                 if newres == pd.res  79                     return;  80                 end  81             end  82             pd.addcode( sprintf( 'REZ%04d', newres ) );  83             pd.res = newres;  84         end  85  86         %Sets plot colour  87         function setplotcolour( pd, newcolour )  88             pd.plotcolour = newcolour;  89         end  90  91         %Move printer along x-axis  92         function mx(pd, xdisp)  93             if xdisp == 0  94                 return;  95             end  96             xdisp = xdisp / pd.res / pd.stepsize;  %TODO - fractions  97             if ~mod( xdisp, 1 ) == true  98                 pd.addcode( sprintf( 'MX%+05d', xdisp ) ); 245  99             else 100                 error( 'Non-integer stepping in x-direction' ); 101             end 102         end 103 104         %Move printer along y-axis 105         function my(pd, ydisp) 106             if ydisp == 0 107                 return; 108             end 109             ydisp = ydisp / pd.res / pd.stepsize;  %TODO - fractions 110             if ~mod( ydisp, 1 ) == true 111                 pd.addcode( sprintf( 'MY%+05d', ydisp ) ); 112             else 113                 error( 'Non-integer stepping in y-direction' ); 114             end 115         end 116 117         %Print along x-axis 118         function px(pd, xdisp) 119             xdispp = xdisp / pd.res / pd.stepsize;  %TODO - fractions 120             if ~mod( xdispp, 1 ) == true 121                 pd.addcode( sprintf( 'PX%+05d', xdispp ) ); 122                 pd.addplot( linspace(pd.addx(0), pd.addx(0) + xdisp, abs(xdispp) + 1), pd.addy(0) * ones(abs(xdispp) + 1, 1)' ); 123             else 124                 error( 'Non-integer stepping in x-direction' ); 125             end 126         end 127 128         %Print along y-axis 129         function py(pd, ydisp) 130             ydispp = ydisp / pd.res / pd.stepsize;  %TODO - fractions 131             if ~mod( ydispp, 1 ) == true 132                 pd.addcode( sprintf( 'PY%+05d', ydispp ) ); 133                 pd.addplot( pd.addx(0) * ones(abs(ydispp) + 1, 1)', linspace(pd.addy (0), pd.addy(0) + ydisp, abs(ydispp) + 1) ); 134             else 135                 error( 'Non-integer stepping in y-direction' ); 136             end 137         end 138 139         %Instantiation class 140         function pd = printclass( initres, initstep, posx, posy )   %Initial resolution and x,y position 141             pd.curx = posx; 142             pd.cury = posy; 143             pd.stepsize = initstep; 144 246 145             pd.setres( initres ); 146         end 147 148         %Starts loop 149         function startloop( pd, num ) 150             pd.inloop = true;   %At this point, all functions will use the loop*. 151             pd.loopcount = num; 152             pd.loopcode = ''; 153             pd.loopcurx = pd.curx; 154             pd.loopcury = pd.cury; 155             pd.addcode( sprintf( '{%02d', num ) ); 156         end 157 158         %Stop loop - TODO - missing plotting 159         function stoploop( pd ) 160             pd.inloop = false; 161             pd.addx( pd.loopcurx - pd.curx ); 162             pd.addy( pd.loopcury - pd.cury ); 163             pd.addcode( pd.loopcode ); 164             pd.addcode( '}' ); 165 166             %Repeat commands for the plotter 167             codebak = pd.code; 168             for i = 1:(pd.loopcount - 1); 169                 pd.interpret( pd.loopcode(4:end) ); 170             end 171             pd.code = codebak; 172         end 173 174         %Activates plotting 175         function initplot( pd, figname ) 176             pd.figname = figname; 177             figure( pd.figname ); 178             plottitle = sprintf( 'X: %d Y: %d', pd.curx, pd.cury ); 179             xlabel('X (\mum)'); ylabel('Y (\mum)'); 180             title( plottitle ); 181             hold on; 182             pd.doplot = 1; 183         end 184 185         %Locates printer head to correct location without printing 186         function mlocate(pd, x, y) 187             if x ~= pd.addx(0) 188                 pd.mx( x - pd.addx(0) ); 189                 pd.addx( x - pd.addx(0) ); 190             end 191 192             if y ~=  pd.addy(0) 193                 pd.my( y - pd.addy(0) ); 247 194                 pd.addy( y - pd.addy(0) ); 195             end 196         end 197 198         %Prints from current location to target location 199         function plocate(pd, x, y) 200             if x ~= pd.addx(0) 201                 pd.px( x - pd.addx(0) ); 202                 pd.addx( x - pd.addx(0) ); 203             end 204 205             if y ~= pd.addy(0) 206                 pd.py( y - pd.addy(0) ); 207                 pd.addy( y - pd.addy(0) ); 208             end 209         end 210 211         %Set detail level 212         function setdetail(pd, newlevel) 213             if (newlevel < 1) || (newlevel > 3) 214                 return 215             end 216 217             pd.detail = newlevel; 218         end 219 220         %Get detail level 221         function detail = getdetail(pd) 222             detail = pd.detail; 223         end 224 225         %Draw a single point 226         function point(pd, x, y) 227             pd.mlocate(x, y); 228             pd.px( 0 ); 229         end 230 231         %Draw a line 232         function line(pd, x1, y1, x2, y2, direction) 233             if direction == 1  %Reverse direction, flip coefficients 234                 x3 = x1; 235                 y3 = y1; 236                 x1 = x2; 237                 y1 = y2; 238                 x2 = x3; 239                 y2 = y3; 240             end 241 242             %Print layer 248 243             switch( pd.detail ) 244                 case 1  %First layer 245                     %First move printer to appropriate location 246                     pd.mlocate( x1, y1 ); 247                     pd.plocate( x2, y2 ); 248 249                 case 2  %Second layer 250                     %First move printer to appropriate location 251                     pd.mlocate( x1, y1 ); 252 253                     %Shift by half a resolution 254                     pd.setres( pd.res / 2 ); 255                     offx = sign( x2 - x1 ) * pd.res * pd.stepsize; 256                     offy = sign( y2 - y1 ) * pd.res * pd.stepsize; 257                     pd.mlocate( pd.curx + offx, pd.cury + offy ); 258 259                     pd.setres( pd.res * 2 );    %Back to normal 260                     pd.plocate( x2 - offx, y2 - offy ); 261 262                     %Shift back by half a resolution 263                     pd.setres( pd.res / 2 ); 264                     pd.mlocate( pd.curx + offx, pd.cury + offy ); 265                     pd.setres( pd.res * 2 ); 266 267                 case 3 268                     %First move printer to appropriate location 269                     pd.mlocate( x1, y1 ); 270 271                     %Shift by a quarter and print at half resolution 272                     pd.setres( pd.res / 4 ); 273                     offx = sign( x2 - x1 ) * pd.res * pd.stepsize; 274                     offy = sign( y2 - y1 ) * pd.res * pd.stepsize; 275                     pd.mlocate( pd.curx + offx, pd.cury + offy ); 276 277                     pd.setres( pd.res * 2 );  %Still half original for printing 278                     pd.plocate( x2 - offx, y2 - offy ); 279 280                     %Shift back by half a resolution 281                     pd.setres( pd.res / 2 ); 282                     pd.mlocate( pd.curx + offx, pd.cury + offy ); 283                     pd.setres( pd.res * 4 ); 284 285                 otherwise 286                     error( 'Unsupported number of layers in line print' ); 287             end 288         end 289 290         %Draw a filled box (ie. pad) 291         function box(pd, x1, y1, x2, y2, orientation) 249 292             %Starting corner 293             pd.mlocate( x1, y1 ); 294 295             switch( orientation ) 296                 case 0  %Draw lines along x-axis 297                     %TODO - detail support 298 299                     numlines = (y2 - y1) / pd.res / pd.stepsize / 2; 300                     pd.startloop( numlines ); 301                     pd.plocate( x2, y1 ); 302                     pd.mlocate( x2, y1 + sign(y2 - y1) * pd.res * pd.stepsize ); 303                     pd.plocate( x1, y1 + sign(y2 - y1) * pd.res * pd.stepsize ); 304                     pd.mlocate( x1, y1 + 2 * sign(y2 - y1) * pd.res * pd.stepsize ); 305                     pd.stoploop(); 306 307                 case 1  %Draw lines along y-axis 308                     %TODO - detail support 309 310                     numlines = (x2 - x1) / pd.res / pd.stepsize / 2; 311                     pd.startloop( numlines ); 312                     pd.plocate( x1, y2 ); 313                     pd.mlocate( x1 + sign(x2 - x1) * pd.res * pd.stepsize, y2 ); 314                     pd.plocate( x1 + sign(x2 - x1) * pd.res * pd.stepsize, y1 ); 315                     pd.mlocate( x1 + 2 * sign(x2 - x1) * pd.res * pd.stepsize, y1 ); 316                     pd.stoploop(); 317 318                 otherwise 319                     error( 'Unsupported orientation selected in box' ); 320             end 321         end 322 323         %Interpret and plot a segment of generated code - TODO - add loop 324         %support 325         function interpret(pd, codeseg) 326             %Scan through code string and recreate with plot 327             i = 1; 328             while i < length(codeseg) 329                 switch codeseg(i) 330                     case 'R' 331                         newres = sscanf(codeseg((i+3):(i+6)), '%d'); 332                         pd.setres( newres ); 333                         i = i + 7; 334 335                     case 'M' 336                         newm = sscanf(codeseg((i+2):(i+6)), '%d'); 337                         newm = newm * pd.res * pd.stepsize; 338                         if codeseg(i + 1) == 'X' 339                             pd.mx( newm ); 340                             pd.addx( newm ); 250 341                         else 342                             pd.my( newm ); 343                             pd.addy( newm ); 344                         end 345                         i = i + 7; 346 347                     case 'P' 348                         newp = sscanf(codeseg((i+2):(i+6)), '%d'); 349                         newp = newp * pd.res * pd.stepsize; 350                         if codeseg(i + 1) == 'X' 351                             pd.px( newp ); 352                             pd.addx( newp ); 353                         else 354                             pd.py( newp ); 355                             pd.addy( newp ); 356                         end 357                         i = i + 7; 358 359                     otherwise 360                         i = i + 1; 361 362                 end 363             end 364         end 365 366     end % methods 367 end % classdef 368 369  251  1 %Printing library sample  2 %Using printing library rev1  3  4 clear all; close all; clc;  5  6 %Initialize, starting res 80, step size 2.5, origin at 0,0  7 pd = printclass( 80, 2.5, 0, 0 );  8  9 %Initialize plot 10 plotfig = figure; 11 pd.initplot( plotfig ); 12 13 %Simple line segments 14 pd.line( 200, 200, 200, 2000, 0 ); 15 pd.line( 200, 2000, 2000, 2000, 0 ); 16 pd.line( 2000, 2000, 2000, 1000, 0 ); 17 18 %Build thicker lines 19 20 for i = 1:3 21     pd.setdetail( i ); 22     switch i 23         case 1 24             pd.setplotcolour( [0 0 1] ); 25         case 2 26             pd.setplotcolour( [0 1 0] ); 27         case 3 28             pd.setplotcolour( [1 0 0] ); 29     end 30 31     pd.line( 600, 600, 1400, 600, 0 ); 32     pd.line( 600, 1400, 1400, 1400, 1 ); 33 end 34 35 %Back to defaults 36 pd.setplotcolour( [0 0 1] ); 37 pd.setdetail( 1 ); 38 39 %Draw points 40 pd.point(800, 800); 41 pd.point(1000, 1000); 42 43 %Now a box 44 pd.box( 4000, 200, 6000, 4200, 0 ); 45 46 %Now a denser box 47 pd.setres(40); 48 pd.setplotcolour( [0 1 0] ); 49 pd.box( 8000, 200, 12000, 1200, 1 ); 252 50 pd.setplotcolour( [0 0 1] ); 51 pd.setres(80); 52 53 %Show code 54 disp( pd.retcode() ); 55 56  253 Appendix E Conference Material Poster and other relevant conference material. 254             Neglecting stiffness, mass sensitivity (SM) can be expressed as:  )(M )()()( 2 m mDmTmv β+= PVA PVDF ρ m SdSmT 21 +=)( m = Applied polymer mass per unit area v(m) = Antisymmetric (A0) in-plane wave velocity T(m) = In-plane stress  coefficient M(m) = Total mass per unit area, including substrate D(m) = In-plane stiffness coefficient E = Young’s Modulus β = 2π / λ where λ is the IDT wavelength S1, S2 = In-plane stress contributed by substrate and polymer load λ=800 µm differential pattern A B Resonance Frequency Behaviour: In-plane wave velocity of strictly the substrate can be approximated in terms of the thickness to wavelength ratios [5].      Further approximation allows for:   With experimental agreement shown right. Average magnitude of out-of-plane velocity as a function of frequency λ = 800 μm, 18 μm thick λ = 800 μm, 125 μm thick λ = 400 μm, 125 μm thick Contact: Konrad Walus – konradw@ece.ubc.ca  - Department of Electrical and Computer Engineering The University of British Columbia, Vancouver, BC V6T 1Z4, Canada Laser Doppler Vibrometer Measurements: Procedure: 1. Pre-tension poled film and secure in frame. 2. Prepare ink.  The ink consists of a mixture of 95 wt% Clevios PH 1000 poly(3,4- ethylenedioxythiophene)poly(styrenesulfonate)(PEDOT:PSS), 5 wt% dimethyl sulfoxide (DMSO) and 0.1 wt% Triton X100 (surfactant) [3][4]. 3. The ink is printed using an inkjet nozzle (Microfab Inc.) with an orifice diameter of 40 µm.  The minimum achievable line width using this nozzle, ink, and substrate is approximately 100 µm, resulting in a minimum acoustic wavelength of 400 µm. Sensors with an acoustic wavelength of 800 µm or 400 µm are used in this work. The piezoelectric polymer, PVDF, is the substrate material. Manifesting piezoelectric properties within the PVDF requires the transition of the polymer chains from an α to a polar β phase through stretching and the application of a strong electric field at a temperature above the Curie temperature, which is around 100°C for PVDF [2].  The resulting films have a thickness, dPVDF = 18 μm or 125 μm. 2.  Stretching and Poling 4.  Device Characterization 5.  Load Sensitivity 3.  Electrode Printing Acknowledgments References 1.  Background  INKJET PRINTED ALL-POLYMER FLEXURAL PLATE WAVE SENSORS J.R. Busch, C. Sielmann, G. Man, D. Tsan, K. Walus, B. Stoeber  The University of British Columbia, Vancouver, CANADA x-y Contour Map of LDV Data x-axis position (m) y- ax is  p os iti on  (m ) 0.5 1 1.5 2 2.5 3 3.5 x 10 -3 1 2 3 4 5 6 7 x 10 -4 50X Gain Amplifier PVDF Sensor 50X 10x 10X Gain Amplifier Analog conditioning DSP Resonance Frequency Funding for this project is provided by the BCFIRST Natural Resources and Applied Science (NRAS) Endowment through the Research Team Program and by the Fraser Basin Council through the BC Clean Air Research (BC CLEAR) Fund. Support for equipment and travel was received from Natural Sciences and Engineering Research Council of Canada (NSERC), the Canada Foundation for Innovation (CFI) and the Transducer Research Foundation. We would also like to acknowledge Dr. Edmond Cretu for the use of his laboratory facilities including the Polytec MSA-500 LDV, Lisheng Wang for XRD measurement contributions and John Berring for equipment photos. [1] S. W. Wenzel and R. M. White, “Analytic comparison of the sensitivities of bulk-wave, surface-wave, and flexural plate-wave ultrasonic gravimetric sensors,” Applied Physics Letters, vol. 54, no. 20, p. 1976, 1989. [2] Y. Huan, Y. Liu, Y. Yang, “Simultaneous stretching and static electric field poling of poly(vinylidene fluoride-hexafluoropropylene) copolymer films,” Polymer Engineering & Science, vol. 47, no. 10, pp. 1630-1633, Oct. 2007. [3] J. Y. Kim, J. H. Jung, D. E. Lee, J. Joo, “Enhancement of electrical conductivity of poly(3,4-ethylenedioxythiophene)/poly(4- styrenesulfonate) by a change of solvents,” Synthetic Metals, vol. 126, no. 2-3, pp. 311-316, Feb. 2002. [4] G. Man, “Towards all-polymer surface acoustic wave chemical sensors for air quality monitoring,” Master’s Thesis, The University of British Columbia, 2009. [5] S. Wenzel, “Applications of Ultrasonic Lamb Waves,” Doctoral Dissertation, Berkeley, 1992. FPW Mass Measurement Design Concept: 1.Gas molecules are adsorbed by a thin, selective polymer layer (e.g. PVA) bonded to the piezoelectric substrate between the electrodes. 2.A high voltage alternating signal is applied to the transmitting IDT, generating a travelling wave. 3.The travelling wave is affected by density and stiffness changes caused by chemical adsorption. 4.The travelling wave is measured by the receiving IDT and is analyzed, relating small variations in transmission to target chemical concentration.  Flexural plate wave measurement concept XRD showing transition of PVDF from α to β phase through stretching and poling Inkjet printing setup, printing in progress, and completed λ=800 µm sensor Schematic of LDV measurement system Electronic Data Acquisition System Measurements: Contour map of instantaneous out-of- plane velocity of an FPW sensor Electrical measurement setup Electrical received signal (eight consecutive buffers) Electrical measurement schematic Resonant frequency of a sensor loaded with several PVA layers Normalized frequency as a function of applied mass, including tension and stiffness effects We demonstrate the fabrication and mass sensing performance of an all-polymer acoustic sensor.  Polyvinylidene fluoride (PVDF) is a low-cost piezoelectric material that forms the substrate of our sensor.  Polymers have a low acoustic wave speed, which can limit the overall sensitivity when used in a surface acoustic wave (SAW) configuration, suggesting a flexural plate wave (FPW) configuration.  All-polymer FPW mass sensors: • Detect mass on both sides of the substrate • Have mass sensitivity independent of frequency  low frequency operation • Can operate at long wavelengths, permitting the use of low cost techniques such as inkjet printing • Demonstrate good sensitivity due to low substrate density )()( mvmf ∝ Driving Waveform C and S are stress and stiffness constants, leading to resonant velocities and frequencies that vary with the PVDF thickness to wavelength ratio. dρf f m SM 2 1Δ Δ 1 0 − == 0Δ fff −= SM = Mass sensitivity (generally in cm2/g) f = Frequency of traveling wave f0 = Unperturbed resonant frequency of acoustic wave Δm = Change in total mass per unit area λ Approximation of FPW Wave Behaviour: The wave velocity can be measured by launching and receiving an acoustic wave through the IDTs. The velocity is a function of stress, stiffness and density [1]. Increasing layers of polyvinyl alcohol (PVA) were printed onto receiver A, resulting in a unilateral shift in frequency correlating to mass and stiffness response.  To calculate the mass sensitivity, effects of the PVA on tension and stiffness are mathematically removed by subtracting the theoretical impact of stiffness from the experimental data. This compensation results in a low-load mass sensitivity of -153 cm2/g, which compares favorably with the theoretical mass sensitivity of -156 cm2/g. mρdmM PVDFPVDF +=)( 3 2 )1(12 )(       + − = PVA PVDF ρ md σ EmD 255 Appendix F Delay Measurement Techniques Report on delay calculation methods and relative performance. 256 All-Polymer Flexural Plate Time of Flight Study This document briefly discusses the methodology and results from a series of time of flight tests on two high Q and low Q all-polymer flexural plate wave sensors.  Tests were performed using an electronic data acquisition system with 50 MS/s time resolution, with each time of flight mechanism specialized to increase time resolution by examining the shape of the received signal. Two sets of experiments were performed, with all time of flight and frequency measurements algorithms operating concurrently.  Small perturbations in the waveform delay and frequency are created by changing excitation waveform properties.  The impacts of the shifts are shown in a final table, comparing each algorithm’s ability to discriminate the delay and frequency changes over the collected noise.  Labview, DSP, and Matlab code are included in separate appendices. Sensors Examined: The tests involved two sensors, one of which representing IDTs with many fingers, and the other representing transmitter and receiver IDTs with only one pair of fingers each. Sensor # Thickness (d) Wavelength (λ) # of Fingers Tensioned Width 1 120 um 800 um 12 Yes 10 mm 2 60 um 800 um 2 Yes 17 mm  The extra width for sensor 2 is in part accidental but also useful, as it increases the amount of energy transferred with the wave, to some small extent compensating for the loss of incident energy resulting from the removal of the majority of the fingers. Driving Waveforms: Each sensor and acquisition methodology was exposed both to an FSK signal and pulse train. The FSK signal was composed of a sequence of 500 kHz pulses followed immediately by two 600 kHz pulses.  257 The long string of 500 KHz pulses earlier in the waveform (preamble) is intended to permit the stabilization of the signal through the amplifier prior to the contents of the signal becoming relevant. The second waveform tested, the pulse train, is similar to the FSK modulated signal with the exception that the entire signal is 550 kHz.  The pulse train provides a consistent, narrow bandwidth signal to the sensor that concentrates as much energy as possible into the resonance frequency of the IDTs.  The waveforms are driven by the function generator configured for 2 Vpp (50 Ohm output) driving the 50x amplifier, resulting in an excitation signal of 100 Vpp.  The receiver passes through a gain block which normalizes the received acoustic signal to ~1 Vpp. The following is an example of the received waveform from the Pulse Train input signal:  258 Details of Time of Flight Methods For all time of flight methods used, the output data is in samples with each sample representing 20 ns of time.  Unless specified otherwise, each technique first removes DC offsets and linear trending to minimize non-acoustic interference. Method #1: Peak Detect The Peak Detect method is based on the work of Papageorgiou, et al [1] and uses quadratic interpolation to pick up peaks and valleys in the received signal, after linearly shifting the signal around 0 Vpp:  The best two peaks and valleys are selected with the first peak used for delay calculation.  The quadratic interpolation occurs over 25 samples with the center being the peak or trough of each sinusoidal period. Method #2: Zero-Cross Detection The zero-cross detector is based on the work of Papageorgiou, et al [1] and is similar to the peak- detector, but linear regression interpolation is used rather than quadratic interpolation to estimate the precise point of amplitude-axis interception.  The linear interpolation consists of 21 points including and surrounding the detected zero- crossing points.  The second zero-crossing is used for delay measurement. Method #3:  Hilbert Transform The Hilbert Transform method is based on the work of Duncan [2].  The Hilbert transform of the incoming wave is mixed with the originating waveform to generate an envelope of the waveform.  The envelope magnitude is matched to an exponential fit, although this information 259 is not used at this time.  The envelope phase is mostly matched to a linear fit and the x-axis intercept is calculated.  The phase is then converted to a delay using the slope of the linear fit to represent radial velocity.  A demonstration of the output of the procedure:  The Hilbert Output window shows the incident wave (in white) plotted against the output of the Hilbert transform (in red).  After a complex domain summation (mixing), the resulting envelope magnitude can be seen in the Hilbert Magnitude window where the white line is the calculated envelope magnitude and the red is an exponential fit.  Only half the sample space is used for the fits in order to minimize interference caused by low/decayed signal strength.  The bottom right 260 plot shows the calculated Hilbert phase (in white) with a linear fit (in red).  The slope and intercept of the red linear fit is then used to calculate delay (in samples). Method #4:  Delay from DFT-Calculated Phase Calculating the delay from the DFT-calculated phase involves using the calculated phase and frequency, derived through DFT techniques, and uses   ϕ 360  where ϕ is phase angle in degrees, f is resonance frequency (Hz), and S is sampling time (s). This equation is implemented in the following LabView:  Calculated phase and frequency are determined external to the delay routing using the Single Tone Information VI, which leverages DFT techniques through a Hanning window. Method #5:  Cross-Correlation with Self The cross-correlation methodology permits the user to grab a “calibration” snapshot of the waveform which is then used with cross-correlation techniques to determine similarities with future waveform [3].  The resulting cross-correlation plot is passed through a quadratic peak detect (as described earlier) with a sample size of 50 to determine the peak of the correlation, functionally representing the time shift required in order to achieve maximum matching between the reference signal and newly acquired signal.  261 An example of the plots can be seen as follows:  Although it is difficult to see in the bottom left plot, there are two signals, white and red, representing the new waveform and previously stored calibration waveform respectively.  The plot on the bottom right shows the result of the correlation function, demonstrating a narrow peak in the center (500) emphasizing a high degree of correlation. Method #6:  BFSK cos Detection The BFSK cos method is based on work by Webster [4], where a variable frequency source is used and the point of frequency transition is interpolated.  It will will only produce meaningful results with an FSK (frequency shift key) input pattern.  The cos detection mechanism performs the following steps to calculate time-varying phase for reference frequencies of 500 kHz and 600 kHz: 1. Removal of DC offset and linear trending from input data 2. Determination of peaks using peak detect VI 3. Fitting of peak data to exponential fitting tool 4. Use of exponential fit amplitude and attenuation coefficient to normalize input waveform 5. Generation and mixing of normalized input waveform with idealized sinusoids at 500 and 600 kHz 262 6. Linear regressive fit to resulting mixed signals 7. Computation of precise time of interception of the two linear fits, representing the half- way point between 500 and 600 kHz in the FSK signal  The resulting plots illustrate these steps:  The green and blue linear fits in the bottom right plot represents 500 (white) and 600 (red) kHz respectively.  The result of the frequency mixing can be seen in the bottom right with a doubling of frequency and amplitude proportional to the phase error between the reference sinusoid and sample waveform. Method #7:  BFSK Goertzel Detection The Goertzel detection mechanism, similar to the BFSK cos detection mechanism, requires a BFSK signal to operate correctly.  The Goertzel algorithm is a computationally efficient DFT technique that calculates the phase and amplitude of a single frequency component.  It is often 263 used in digital touch tone dialling for decoding keypad button presses.  The Goertzel was implemented in LabView as shown:  The algorithm was then used with a 50 sample rolling buffer to calculate the magnitude of the 500 and 600 kHz components in the waveform data.  Unfortunately, the small amount of time that the data represents leads to very low convergence within the algorithm.  There is a similar challenge with FFT algorithms where small amounts of data create very low frequency resolution.  Similar to the BFSK cos method, exponential fits were applied to the resulting waveforms and their intercepts were calculated to determine the moment of interception.  The following plots demonstrate this process:  264 The left plot shows the computed Goertzel amplitude (white for 500 kHz and red for 600 kHz). The green and blue lines are exponential decay fits for the white and red curves respectively. System Perturbations In order to determine signal to noise ratio, various controllable perturbations were applied.  The experimental procedure is described as: 1. 2 min period of unperturbed noise measurement 2. 1 min period of 700 Hz increase to driving waveform frequency 3. 1 min return to unperturbed state 4. 1 min period of 1400 Hz increase to driving waveform frequency 5. 1 min return to unperturbed state 6. 1 min period of 2100 Hz increase to driving waveform frequency 7. 1 min return to unperturbed state 8. 1 min period of single sample (20 ns) delay added through LabView 9. 1 min return to unperturbed state 10. 1 min period of single sample (40 ns) delay added through LabView 11. 1 min return to unperturbed state 12. 1 min period of single sample (60 ns) delay added through LabView These tests allow the determination of signal to noise ratio of small and large signal perturbations occurring as frequency or delay shifts.  Although response to small, concurrent changes in frequency and delay is important for high analyte sensitivity, it is also important to appreciate large scale response as major temperature changes or other environmental factors can lead to suboptimal operating conditions with frequency and delay far from the ideal. Data and Analysis The section details the data collected from time of flight tests using the above algorithms. Sensor 1 with Pulse Train Sensor 1 is the standard sensor with 12 finger pairs, 120 µm thickness, and 800 µm wavelength. The sensor was tested on one side only without compensation. The following plot shows all data delay data captured for this test: 265  The following is the noise plot showcasing the noise floors of each algorithm:  266 The following shows the signal-to-noise ratio of every algorithm tested in this sensor/driving waveform configuration.  All measurements are in dB: Algorithm Frequency Perturbations Delay Perturbations +700 Hz Bump +1400 Hz Bump +2100 Hz Bump +20 ns Bump +40 ns Bump +60 ns Bump Peak Detect 23.8 -3.9 10.8 41.3 41.2 41.2 BFSK cos 35.3 31.0 32.3 44.8 43.9 43.1 Hilbert Transform 31.1 32.0 32.2 22.1 19.7 18.9 Zero Cross 25.9 0.0 0.0 42.0 41.9 41.9 BFSK Goertzel 12.3 4.8 5.1 29.8 33.5 40.7 DFT Freq/Phase 35.8 34.0 34.7 42.5 42.4 42.4 Cross Correlation 23.6 -8.9 9.5 42.6 42.6 42.7 Frequency 36.6 38.5 39.5 23.6 24.4 24.4 Phase 36.4 34.8 35.6 42.5 42.5 42.5  Sensor 1 with BFSK Signal Sensor 1 is the standard sensor with 12 finger pairs, 120 µm thickness, and 800 µm wavelength. The sensor was tested on one side only without compensation. The following plot shows all data delay data captured for this test:  267  The following is the noise plot showcasing the noise floors of each algorithm:  The following shows the signal-to-noise ratio of every algorithm tested in this sensor/driving waveform configuration.  All measurements are in dB: 120 um Thick, 800 um wavelength, 12 finger pair, BFSK train Algorithm Frequency Perturbations Delay Perturbations +700 Hz Bump +1400 Hz Bump +2100 Hz Bump +20 ns Bump +40 ns Bump +60 ns Bump Peak Detect 6.3 28.0 25.1 39.2 39.3 39.3 BFSK cos 10.7 22.3 16.5 35.6 37.0 30.5 Hilbert Transform 12.7 8.6 0.0 10.5 15.8 15.7 Zero Cross -3.9 27.0 23.4 37.7 37.8 37.7 BFSK Goertzel 25.3 20.1 21.7 31.9 30.8 29.9 DFT Freq/Phase 23.5 21.4 15.1 38.3 38.5 38.5 Cross Correlation 13.7 29.7 25.6 39.8 39.9 39.8 Frequency 31.2 28.8 28.8 19.6 20.2 20.6 Phase 23.4 21.5 15.3 38.3 38.5 38.5  268 Sensor 2 It was not possible to achieve a measurable signal with this sensor configuration, most likely caused by poor piezoelectric properties and high attenuation of the material. Summary and Discussion 120 um Thick, 800 um wavelength, 12 finger pair, pulse train Algorithm Frequency Perturbations Delay Perturbations +700 Hz Bump +1400 Hz Bump +2100 Hz Bump +20 ns Bump +40 ns Bump +60 ns Bump Peak Detect 23.8 -3.9 10.8 41.3 41.2 41.2 BFSK cos 35.3 31.0 32.3 44.8 43.9 43.1 Hilbert Transform 31.1 32.0 32.2 22.1 19.7 18.9 Zero Cross 25.9 0.0 0.0 42.0 41.9 41.9 BFSK Goertzel 12.3 4.8 5.1 29.8 33.5 40.7 DFT Freq/Phase 35.8 34.0 34.7 42.5 42.4 42.4 Cross Correlation 23.6 -8.9 9.5 42.6 42.6 42.7 Frequency 36.6 38.5 39.5 23.6 24.4 24.4 Phase 36.4 34.8 35.6 42.5 42.5 42.5 120 um Thick, 800 um wavelength, 12 finger pair, BFSK train Algorithm Frequency Perturbations Delay Perturbations +700 Hz Bump +1400 Hz Bump +2100 Hz Bump +20 ns Bump +40 ns Bump +60 ns Bump Peak Detect 6.3 28.0 25.1 39.2 39.3 39.3 BFSK cos 10.7 22.3 16.5 35.6 37.0 30.5 Hilbert Transform 12.7 8.6 0.0 10.5 15.8 15.7 Zero Cross -3.9 27.0 23.4 37.7 37.8 37.7 BFSK Goertzel 25.3 20.1 21.7 31.9 30.8 29.9 DFT Freq/Phase 23.5 21.4 15.1 38.3 38.5 38.5 Cross Correlation 13.7 29.7 25.6 39.8 39.9 39.8 Frequency 31.2 28.8 28.8 19.6 20.2 20.6 Phase 23.4 21.5 15.3 38.3 38.5 38.5  The results demonstrate some very noticeable trends.  Each SNR is normalized to the magnitude of the perturbation, meaning that an ideal result is one that shows a large but consistent SNR for every test within a category. • Frequency measurements perform consistently well with the pure sinusoid and show much lower SNR with the mixed 500/600 kHz waveform.  This is as expected.  However, 269 the frequency also demonstrated some non-linearity with increasing frequency shift, suggesting non-linearity within the actuation/acquisition/decoding process. • The shift in frequency when the delay, but not excitation frequency, was varied is due to the shift in power spectral density as a different subset of the exponentially decaying waveform is examined by the DFT algorithm. • The test performed with the pure pulse train shows overall much better performance than the BFSK signal. Peak Detect and Zero Cross Algorithms:  These algorithms performed exceptionally well in both tests, ranking these algorithms among the best for delay measurement.  This is the algorithm that has been used to date. BFSK cos Algorithm:  This algorithm performed well with pulse train actuation, but not very well with the BFSK actuation.  This is the only algorithm that attempts to normalize and compensate for exponential decay before performing delay detection.  The spectral bleeding and wide center frequency lobe due to wave decay must contribute more effectively than the received BFSK signal.  Further analysis and procedural verification is necessary to determine why the algorithm works with a non-BFSK signal. Hilbert Transform:  This algorithm needs to be explored further, as it has a bit of potential, but the noise floor is too high.  The signal magnitudes also vary substantially between the Pulse Train and BFSK Signal excitation waveforms.  Better performance may be observed by considering the phase intercept data independent of phase vs. time slope (used to convert to delay time).  As implemented, this method had the highest consistent sensitivity to frequency shifts. BFSK Goertzel:  This algorithm worked well with the BFSK signal as expected, but did not perform very well compared to other delay measurement techniques. DFT/Phase:  As expected, this algorithm performed moderately well for the Pulse Train signal and not as well for the BFSK waveform. Cross-Correlation:  This algorithm shows good consistency, signal to noise ratio, and ability to adapt to different waveforms, making this waveform one of the best for delay measurement.  A further benefit for the cross-correlation method is that it can provide additional information on overall changes in wave transfer function, including amplitude, thereby representing a large picture of perturbation in the measured signal.   270 References  [1] C. Papageorgiou, C. Kosmatopoulos, and T. Laopoulos, “Automated characterization and calibration of ultrasonic transducers,” in Electrotechnical Conference, 1998. MELECON 98., 9th Mediterranean, 1998, vol. 2, pp. 1214–1218 vol.2. [2] M. G. Duncan, “Real-time analytic signal processor for ultrasonic nondestructive testing,” in , 7th IEEE Instrumentation and Measurement Technology Conference, 1990. IMTC-90. Conference Record, 1990, pp. 32–37. [3] D. Marioli, C. Narduzzi, C. Offelli, D. Petri, E. Sardini, and A. Taroni, “Digital time-of- flight measurement for ultrasonic sensors,” IEEE Transactions on Instrumentation and Measurement, vol. 41, no. 1, pp. 93–97, Feb. 1992. [4] D. Webster, “A pulsed ultrasonic distance measurement system based upon phase digitizing,” IEEE Transactions on Instrumentation and Measurement, vol. 43, no. 4, pp. 578–582, Aug. 1994.  271 Appendix G Calibration System Rack Layout Calibration system rack diagram showing front and back of the rack. 272                   !#$!%         &!'%(' !)*$!%%(' !* +,!-(*.'!   &.(. / 0!%('1 (1  (. ! 1(2!'0'            &!'%(' !)*$!%3$!4). 0' +,5      6-78'( 9:;<=9>;<;*?+0' +(#* !@98?<=9:;<;*?+0' +(#* !@A.0+,=B+'+,C,!'&.(. /)!!1)'2!'3@.*D*1'!1' *5 273                                "#$%&'               ()"*+,"*- .,'&-"&/ 01"+)"+ 274

Cite

Citation Scheme:

        

Citations by CSL (citeproc-js)

Usage Statistics

Share

Embed

Customize your widget with the following options, then copy and paste the code below into the HTML of your page to embed this item in your website.
                        
                            <div id="ubcOpenCollectionsWidgetDisplay">
                            <script id="ubcOpenCollectionsWidget"
                            src="{[{embed.src}]}"
                            data-item="{[{embed.item}]}"
                            data-collection="{[{embed.collection}]}"
                            data-metadata="{[{embed.showMetadata}]}"
                            data-width="{[{embed.width}]}"
                            async >
                            </script>
                            </div>
                        
                    
IIIF logo Our image viewer uses the IIIF 2.0 standard. To load this item in other compatible viewers, use this url:
https://iiif.library.ubc.ca/presentation/dsp.24.1-0073105/manifest

Comment

Related Items