application of wave generator theory to the development …my.fit.edu/~swood/maila sepri - thesis...
TRANSCRIPT
Application of wave generator theory to the
development of a Wave Energy Converter
by
Maila Sepri
Bachelor of Science in Engineering
Swarthmore College
2005
A thesis submitted to Florida Institute of Technology
in partial fulfillment of the requirements for the degree of
Master of Science
In Ocean Engineering
Melbourne, Florida September 2008
© Copyright 2008 Maila Sepri All Rights Reserved
The author grants permission to make single copies ________________________
We the undersigned committee hereby approve the attached thesis
Application of wave generator theory to the
development of a Wave Energy Converter
by Maila Sepri
as fulfilling in part the requirements for the degree of
Master of Science in Ocean Engineering.
__________________________________
E.D. Thosteson, Ph.D., P.E. Assistant Professor, Ocean Engineering
__________________________________ S.L. Wood, Ph.D., P.E.
Assistant Professor, Ocean Engineering
__________________________________ H.M. Gutiérrez, Ph.D., P.E. Associate Professor, Mechanical and Aerospace Engineering
__________________________________
G.A. Maul, Ph.D. Professor and Head of Department, Marine and Environmental Systems
iii
Abstract
Application of wave generator theory to the development of a
Wave Energy Converter
by
Maila Sepri
Principal Advisor: E.D. Thosteson, Ph.D., P.E.
This project was intended as a the initial step towards developing a wave
energy converter (WEC) capable of providing at least a quarter-Watt of power to a
small aquatic environmental monitoring sensor package being developed by Ocean
Research and Conservation Association (ORCA) in Ft. Pierce, Florida. The focus of
this project was to apply theoretical wave mechanics equations and basic wave
generation technology to improving the power capture design of a basic direct drive
WEC. A single WEC with a linear induction generator as its power take-off
mechanism was designed and constructed, along with two interchangeable wave
absorbers. The base absorber design, a cylindrical buoy comparable to the
Archimedes Wave Swing, was intended to harness primarily potential energy. The
second absorber design employs a unique buoy with a hyperbolic curve on its
windward face, specially shaped to take advantage of both the kinematic energy in
water wave particles and the wave’s potential energy.
In order to estimate the available wave power and wave parameters at
deployment sites around the Indian River Lagoon on the east coast of Florida, a
computer model based on meteorological hindcasting and wave generation equations
was created. The model predicted that sufficient energy is available year-round for
iv
supporting the low-power sensor, given at least a 5% efficiency of input wave power to
output power across the load. Comparison to wave measurements made in the lagoon
show that, on average, the model overestimates the power by 38%. Nevertheless,
dependence of the hindcasting data on daily averages recorded some distance from the
coast suggests that more thorough calibration from in situ wind data should be
conducted.
A design wave of 10cm height and 1.2-second period traveling in 1m of water
depth was selected to determine the dimensions of the second buoy’s curved face.
Upon deployment, the WEC successfully logged the power output of the system in
multiple wave conditions. A set of data in which the wave conditions experienced by
both buoys were consistent was used to form a direct comparison of their
performances. The deployment conditions consisted of 8.48cm wave heights at
approximately 1.5-second periods in 1.7m water depth. Contrary to predictions, the
specially-designed buoy in fact showed wave absorption performance inferior to that
of the cylinder. Hydrodynamic effects, including smaller buoyant forces for a given
wave height, were observed to interfere with the curved buoy’s intended mode of
operation. Detailed modeling of the constructed system’s mechanical frequency
response is necessary for tuning the electrical system and developing an unbiased
analysis of the advantage of incorporating wave mechanics into WEC designs. In
addition, adaptive load and generator circuitry must be incorporated before the WEC
will be capable of achieving the efficiency needed to support a sensor system load.
v
Table of Contents List of Keywords.................................................................................................... vi List of Figures....................................................................................................... vii List of Tables ....................................................................................................... viii List of Abbreviations.............................................................................................. ix List of Symbols ....................................................................................................... x Preface ................................................................................................................. xii Acknowledgements.............................................................................................. xiv Dedication............................................................................................................ xv
1. Introduction.................................................................................................... 1 1.1 Existing WEC Designs ............................................................................ 1 1.2 Design Constraints .................................................................................. 6 1.2.1. Sensor Suite Requirements ............................................................... 6 1.2.2. Wave Energy Available in the IRL ................................................... 7 1.2.3. Challenges in Wave Energy Converter Design ................................ 19
1.3 Objective and Scope .............................................................................. 22 2. Design Concepts ........................................................................................... 23 2.1 Wave Generators and Absorbers ............................................................ 23 2.2 Application of Wave Theory to Buoy Design.......................................... 26 2.3 Mechanical Components ....................................................................... 32 2.3.1. Hydrodynamics ............................................................................. 34 2.3.2. Materials Selection......................................................................... 41 2.3.3. Dimensions ................................................................................... 42
2.4 Electronics Design................................................................................. 44 2.4.1. Power Generation Components...................................................... 50 2.4.2. Data Collection Circuitry ............................................................... 56
2.5 Software................................................................................................ 63 2.5.1 PIC Microcontroller Code.................................................................. 63 2.5.2 Post-processing Matlab® Code........................................................... 66
3. Construction ................................................................................................. 67 4. Testing Procedures ........................................................................................ 74 4.1. Calibration ............................................................................................ 74 4.1.1. ADC analog input block calibration................................................ 74 4.1.2. Frequency testing........................................................................... 76
4.2. Deployment .......................................................................................... 80 5. Results and Conclusions ................................................................................ 82 5.1. Practical Observations ........................................................................... 82 5.2. Testing Conditions ................................................................................ 84 5.3. WEC Performance Results..................................................................... 87
6. Recommendations for Future Work............................................................... 93
References ............................................................................................................ 98 Appendices......................................................................................................... 103
vi
List of Keywords
Alternative energy sources
Direct drive
Evanescent waves
Hindcasting
Hydrodynamics
Impedance matching
Indian River Lagoon
Linear generator
Sustainability
Wave absorber
Wave Energy Converter (WEC)
Wave mechanics
vii
List of Figures
Figure 1: Commercial WEC design drawings. .......................................................... 2
Figure 2: AWS scale prototype and OPT PowerBuoy ............................................... 3
Figure 3: ORCA sensor suite ................................................................................... 6
Figure 4: Example map from IRL wave power distribution model............................. 9
Figure 5: Pixel-scale image of Melbourne Harbor. .................................................. 13
Figure 6: Example of daily wind variation.............................................................. 14
Figure 7: PAFB 2006 wind speed histogram and density distribution....................... 15
Figure 8: Cumulative distribution of annual wind speeds ........................................ 16
Figure 9: Seasonal wave power maps ..................................................................... 17
Figure 10: Piston paddle, flap-type paddle, and plunger wavemakers ....................... 23
Figure 11: Difference between proposed buoy shapes.............................................. 24
Figure 12: Water particle trajectories under progressive waves at different depths..... 26
Figure 13: Block diagram of the WEC system......................................................... 33
Figure 14: Populated PCB ..................................................................................... 45
Figure 15: WEC printed circuit board schematic and layout.................................... 46
Figure 16: Block diagram of inputs and outputs to major circuitry components ........ 49
Figure 17: Magnetic gearing in a transverse flux machine........................................ 51
Figure 18: Winding the generator coil .................................................................... 68
Figure 19: Linear Inductance Generator box .......................................................... 70
Figure 20: Mechanical and structural components .................................................. 71
Figure 21: Buoy manufacturing processes............................................................... 73
Figure 22: Frequency calibration test configuration................................................. 77
Figure 23: Capacitor charging profiles and DC/DC converter power output plots. ... 79
Figure 24: Deployment site.................................................................................... 80
Figure 25: Frame assembly and deployment........................................................... 81
Figure 26: Floating levels of the buoys during deployment ...................................... 82
Figure 27: Incident wave analysis from 13 August 2008.. ........................................ 85
Figure 28: Capacitor voltage and DC/DC converter power output .......................... 88
viii
List of Tables
Table 1: PAFB 2006 wind speed and frequency of occurrence ................................. 16
Table 2: Seasonal wave height and power characteristics......................................... 17
Table 3: Comparison of modeled and measured wave conditions ............................ 19
Table 4: Comparison between standing wave coefficients of piston and exponential
curve wavemakers..................................................................................... 31
Table 5: Oscillation table calibration trial results..................................................... 79
Table 6: Deployment log ....................................................................................... 84
Table 7: Comparative performance characteristics for the cylindrical and hyperbolic
curve buoys .............................................................................................. 87
ix
List of Abbreviations
ADC Analog-to-Digital Converter
CEM Coastal Engineering Manual
CTD Conductivity (Salinity), Temperature, and Depth sensor
FDS Fully-Developed Seas
IRL Indian River lagoon
NWS National Weather Service
ORCA Ocean Research and Conservation Association
PAFB Patrick Air Force Base
PIC Programmable Interrupt Controller
PTO Power Take-Off
RMS Root-Mean-Square
RTC Real-Time clock
WEC Wave Energy Converter
x
List of Symbols
Ap Progressive wave coefficient
C Capacitance
CD Wind drag coefficient
Cm Standing wave coefficient
co Deep-water wave celerity
cg Group celerity
∀ Volumetric displacement
ε Induced voltage (electromotive force)
F Force (subscripted for identification)
g Acceleration due to gravity
h water depth
Hs Significant wave height, esp. determined by time-series analysis
Hmo Significant wave height, esp. determined by spectral frequency analysis
k Wave number
kp Progressive wave number
ks Standing wave component
λ Wavelength (EM wave)
L Inductance, Wavelength (Water wave)
m Mass (subscripted for identification)
mA-h Milliamp-hours
φ Velocity potential of a water wave
Φ Magnetic flux
ρ Density, specifically of lagoon water
R Real resistance (electrical or mechanical analog)
σ Wave frequency
S Stroke length of wave generator/absorber, Buoyant spring constant
T Wave period
Tp Peak wave period
xi
u Water particle velocity in the x-direction
U10 Wind speed at 10m altitude
w Water particle velocity in the z-direction
x Displacement along the X-axis (horizontal) direction
X Reactance, Fetch
ξ Water particle trajectory in z-direction
ζ Water particle trajectory in x-direction
y Displacement along the Y-axis (horizontal) direction
z Displacement along the Z-axis (vertical) direction, esp. height of a water
particle within the water column or the buoy with respect to the still water
line.
Z Impedance
xii
Preface
Concerns over climate change and fossil fuel availability have channeled
attention toward revising systems of energy usage around the world. Numerous
proposals for alternative energy solutions have been presented, ranging from wind
turbines and solar panels to biofuels and tidal and wave energy converters. Naturally,
these solutions are all application-dependent. While biofuels offer a renewable fuel
alternative for mobile vehicle engines, they are not viable for applications far from
filling stations, such as remote sensor packages. Similarly, solar and wind power
technologies have advanced to commercial availability, but some characteristics make
them non-ideal for the application targeted in this project. Firstly, both solar and
wind power devices must have the majority of their components above the surface of
the water, and the initial deployment locations in the Indian River Lagoon see a good
deal of recreational traffic. Any visible devices are thus susceptible to vandalism,
whether malicious or simply curiosity-driven, and weather. Specifically pertaining to
solar panels, bird-induced fouling and salt accumulation require constant cleaning to
allow sunlight to penetrate the housing. Another drawback to solar panels is that they
collect energy only for small angles of incidence; this limits the collection time to
approximately 5.5 hours per day for non-tracking solar panels. If the panel cover is
clouded by bird excretions or salt deposits, the energy collection during the key hours
will be further inhibited. Developing alternatives to these energy capture methods
may make the difference between creating an economical sensor and one that is
prohibitively expensive for widespread use.
While marine sources of stored energy also include tides and currents, this
project concerns only wave energy. This decision was made partly to focus the
xiii
project, but also because waves have a more pervasive effect throughout the entirety of
the lagoon and its tributaries than do currents or tides.
Taking advantage of localized renewable energy sources averts the energy loss
inherent in power transmission over long distances. Moreover, such a configuration
makes use of previously untapped mesoscale renewable energy supplies, which may be
on the scale of just tens of Watts or less, but which still provide sufficient power to
satisfy individual applications. For example, running a remote sensor suite on
traditional battery power would require frequent travel to the field site or a permanent
power line connecting the site to shore. This configuration would demand a larger
sum of energy than providing the low-power instrument with its own robust recharger,
based on renewable technology. Optimizing a wave energy converter design to take
advantage of the small ripples and chop in the Indian River Lagoon would make use
of readily available local reserves of energy.
Although coastal Florida’s wave and wind levels do not make it a candidate
for megawatt-scale generator research, small-scale development environments provide
a platform for economical testing and polishing of technology in natural conditions.
Improvements in wave energy absorption demonstrated as a result of testing this
project’s apparatus would allow it to serve as a scale model for enhancing a larger
system’s performance.
xiv
Acknowledgements
Dr. Edith Widder, Ocean Research and Conservation Association
Dr. Eric Thosteson
Dr. Stephen Wood
Dr. Héctor Gutiérrez
Edward W. and Lee Hill Snowdon Administrative Fund
Gertrude E. Skelly Foundation
Mr. Tony Cimaglia
Mr. Benjamin Burns
Mr. Doug Bowlus
Mr. Ed Martin
Mr. Bill Bailey
Mr. Bill Battin
Mr. Charley Phelps
Mr. Kevin Donnelly
Dr. Geoffrey Swain
Dr. Lee Harris
Dr. David Fleming
Dr. Lee Caraway
Dr. Kenneth Fulton and Family
Mr. Michael Vergalla
Mr. Anthony Tedeschi
Mr. Anass Jerrari
Ms. Kelli Zargiel
Dr. Paavo Sepri
Mrs. Ann Sepri
Ms. Ashley Naimaster
Mr. Abraham Stephens
xv
Dedication
To my parents, for their devotion to my multiple activities, encouragement of any
interest I decide to adopt, and for their patience…
and
to Tiia, my sister and best friend, for all our laughter.
1
1. Introduction
1.1 Existing WEC Designs
Although U.S. patents making use of wave energy date back to the 1880’s,
interest in wave energy converters (WECs) gained speed after the oil crisis of the
1970s. Over the past 3 decades a number of schemes have been proposed for capturing
wave energy and converting it into a useable form (see Appendix A). Developments
have increased pace in the past few years, buoyed by recent technological
improvements. A few WEC designs have progressed past the prototyping stage to be
integrated into a power grid [17]. A majority of the designs employ hydraulics or
pneumatics to spin turbines or pumps and power conventional generators. Design
drawings for four of these devices are shown in Figure 1. WaveGen’s Limpet 500 uses
the oscillating level of water in an inverted chamber to force air through a Wells
turbine at the roof [21]. Similarly, the OWEL (Offshore Wave Energy, Ltd) WEC
utilizes wave front forces to compress air in the preceding trough through a chamber,
and the rushing air in turn rotates a turbine [30]. Another, the Pelamis by Ocean
Power Delivery, Ltd., depends directly on wave steepness to pump pressurized oil
through hydraulic motors [31]. Aalborg University’s wave overtopping system Wave
Dragon channels waves into an artificial shoal and traps water from the breaking wave
crests at a higher elevation, then releasing it down to sea level through turbines [42].
The explanation behind implementing pneumatics or hydraulics in rotary
wave generators lies in the slow reciprocation speed of waves; gearing is needed to
increase the direct drive linear speed from only 0.5 to 2m/s to a typical generator
2
speed near 1500rpm [24]. Drawbacks to the pneumatics and hydraulics designs
include complexity and efficiency. The number of moving parts required for gearing
increases maintenance costs, and unavoidable part-loading (operation out of
resonance) drastically reduces turbine efficiency. In addition, hydraulic seal durability
has been drawn into question for variable velocity applications [24].
(a)
(b)
(c)
(d)
Figure 1: Commercial WEC design drawings, from their website descriptions. (a) Limpet
500 [21]. (b) OWEL [30]. (c) Pelamis [31]. (d) Wave Dragon [42].
The most commonly proposed alternative to conventional generators is the
linear inductance generator. This device employs permanent magnets to induce
electromagnetic fields on coils, exciting electrical current. Since any change in the
magnetic field creates a current in the wire, mechanical coupling to wave motion
ensures that some amount of power is transferred to the circuitry. This design offers
the advantage of fewer moving parts to be threatened by biofouling and corrosion, and
also less complexity in the generator stage. Unlike a rotating motor, the linear motion
of a magnet through a coil is one of the most basic concepts in electromagnetic theory.
Other benefits include high force density in the generator and reasonable efficiency at
3
low speeds [32]. Nevertheless, higher velocities are preferable because they induce
higher voltages on the coils, and many aspects of linear generator design determine
their performance efficiencies.
Despite a plethora of studies on linear generators for WECs [19, 20, 23, 24, 32,
39, 43, 41, 45], only two systems are notably beyond the design stage: the Archimedes
Wave Swing (AWS) and Ocean Power
Technologies’ PowerBuoy. These devices,
made by AWS Ocean Energy, Ltd., and
Ocean Power Technologies (OPT),
respectively, share generator geometries, but
their absorber components operate on
different principles. The moving component
of the AWS is a cylindrical, air-filled,
pressurized chamber that rises and plunges
according to the pressure head created by
waves propagating above it. The Power Take-
Off (PTO) system is a linear synchronous
generator using multiple permanent magnets
on the translator [32]. The relative motion of
the translator (coupled to the “floater”
cylinder) to the base section (secured to the
sea-floor) induces current in the inductor
located in the base. Creative positioning of
the magnets, coils, and core material on this
translator are being explored for increased
efficiency of the generator. Scale prototypes
of the AWS have verified model predictions,
and a pilot plant is currently being studied off the coast of Portugal (Figure 2). OPT’s
PowerBuoy, which has undergone field testing in both the Atlantic and Pacific
Oceans, pierces the water surface and depends on wave heights’ lifting of the buoy to
drive its linear generator [28]. While little has been published to reveal the
(a)
(b)
Figure 2: (a) AWS scale prototype
before deploy-ment [32], and (b) OPT
PowerBuoy [28]
4
composition and operation of the PowerBuoy’s generator, OPT has acted as the
assignee in multiple patents on piezoelectric power conversion systems, such as that in
[11].
Literature has not yet concluded on the comparative efficiency of linear
generators versus that of rotary generators in WECs. An industry standard procedure
for rating efficiencies must be established for the blossoming WEC designs to resolve
the question of optimal topology. Meanwhile, it is instructive to weigh other factors.
Only two other challenges have been presented in literature regarding linear
generators. These are weight requirements and the increased difficulty in transferring
power to a grid due to amplitude and frequency fluctuations in the voltage [10].
Firstly, large quantities of permanent magnets needed for large-scale generation add
substantial weight to the translator. The WEC must be designed to accommodate or
make use of this weight. Secondly, rotary generators are intended to operate at a rated
voltage, with power generation levels thus determined by current output, but linear
generators will vary in both voltage and current. This complicates the powering of a
battery charger circuit, which requires a clean DC signal, so a rectifier and DC-DC
converter must be used.
One way to interpret the wide variety of WEC designs discussed above is that
each wave energy capture mechanism is designed around the PTO technology
available. Logically, if rotary generators are to be used, the motion of the wave must
be converted into rotary motion. For linear generators, linear motion is needed. The
challenge to WECs is that wave energy consists of both types of motion: vertical
(linear) displacement of the surface as a wave propagates through the water mass, and
elliptical motion of the water particles themselves. An energy analysis of a wave shows
that wave energy consists of equal parts hydrostatic (potential) energy and kinetic
energy. Simply harvesting the potential energy stored by the water surface, as does the
AWS, neglects to use the dynamic portion of the energy. Using only the wave’s
velocity loses the hydrostatic portion of the energy.
This concept indicates that, while efficiency of the generator is crucial to the
system’s performance, the other requirement for efficiency is effective transfer of
kinetic and potential energy from the wave to the absorption device. Fortunately,
5
wave absorption is not a newborn field. Numerous attempts have been made to
dissipate wave energy in laboratory wave tanks by using the reverse technology of
wave generators. The original motivation behind these efforts was to minimize noise
from reflections and reduce settling time between experiments by removing wave
energy at the end of the wave channel. The development also shows that computations
nearly identical to wave generation equations may be applied to wave absorption [98].
Conveniently, wave generators have become quite efficient. A logical next step, then,
is to design a WEC that operates in the reverse of a wave generator. In this case, a
variety of wave generator geometries are available, including both piston- and flapper-
paddle generators, as well as plunger-type generators. In the wave absorber scheme,
the motor that conventionally drives the wave generation paddle or plunger becomes
the electrical generator driven by the paddle or plunger. Integrating the PTO with the
absorber then becomes a study on inverse-engineering efficient wave generators. This
thesis hypothesizes that focusing the design process on wave generation technology
should improve wave energy capture efficiency.
6
1.2 Design Constraints
This section discusses the conditions that determined basic design decisions,
motivated by the intended application.
1.2.1. Sensor Suite Requirements
The marine monitoring sensor suite for which this WEC system is intended is
being developed from the component level upwards by Ocean Research and
Conservation Association (ORCA) in order to create an affordable platform for
collecting oceanographic data. Its first generation version includes the sensors and
supporting circuitry to record water conductivity, temperature, depth, flow magnitude
and direction, optical backscatter (turbidity), wave height, wave period, package GPS
location, orientation, and speed of sound. Additional capabilities are planned for
future versions. Currently, resolution and regularity of data collection in the field is
severely limited by the power available to remote sensor systems. The purpose of this
system is to make spatially and temporally dense sampling economically and
logistically feasible for the scientific and educa-
tional communities by providing ample data
storage, regular data transmission and low
power consumption.
In the current design, a continuous
supply of 0.25W enables a pair of Li-Polymer
batteries to support the system for 2.5 days,
sampling at a rate of once every five minutes
and transmitting data via cellular
communications every hour. Since the sensor
suite can support six of these batteries and
deployment durations of at least a month are
desired, the package will require a lengthy
power supply tether if a local (renewable energy) battery recharger is not implemented.
Figure 3: ORCA sensor suite
7
While initial tests are being conducted on boat dock pilings in the Indian River
Lagoon (IRL) near Fort Pierce, Florida, future deployments in remote locations will
require reliable alternatives to a land-based power tether. The device in this project
was designed as a stand-alone mechanism that would eventually support a short tether
for feeding power to a battery charger within the sensor suite.
As per the power requirements mentioned above, the equivalent continuous
supply required to maintain operation is 0.25W. This is a time-averaged value; up to
6W is required during sampling and data transmission, and only a few milliwatts
during the intervals between. Similarly, wave power is neither continuous nor
smooth, so a WEC serving the sensor package would be expected to smooth the
supply voltage and store excess power as it becomes available so that reserves are
available when waves dwindle.
1.2.2. Wave Energy Available in the IRL
In order to gage the feasibility of harnessing the equivalent of 0.25W
continuously in the intended deployment region, it was first necessary to quantify the
wave power available in the region. For instance, useful estimates include the energy
content of the predominant IRL wave climate, the mean energy value, the energy
content of peak and lull wave events, the number of hours per day during which these
conditions are likely to occur, and seasonal variation statistics. The following sections
detail the computer model written to arrive at these estimates. First, a few definitions
will be helpful.
1.2.2.1 Wave Parameters and Theory
As detailed in [7], wave energy is dependent upon the height of the wave. The
potential energy is the work involved in lifting a volume of water of a given density
from the trough’s center of gravity to the height of the crest’s center of gravity; kinetic
energy is the energy of water particles moving at a given velocity. Both the potential
and kinetic components of the energy are proportional to the square of the wave
height, so the average energy per unit surface area is given by
8
1 2
8
1gHE ρ=
where ρ is the water density, g is gravitational acceleration, and H is the wave height
from trough to crest. Note that wave energy is described in terms of energy density:
the amount of energy per unit area of water surface, integrated over the depth of the
water. While wave energy is dependent upon only wave height (not depth or period),
most of the energy is concentrated in the region between the surface and a depth equal
to half the wavelength. For this reason, and for power calculation, the height, period,
and water depth must be known in WEC design. Energy flux, or power per unit
width of wave crest, is the amount of energy per unit time that a wave carries over a
line of unit width parallel to its crest.
2 gEcP =
where Cg is the speed of energy transmission, called the group velocity. This value
depends on the ratio of depth to wavelength. In shallow water, the group velocity is
the same as the phase celerity of individual waves, but as the depth increases to greater
than 5% of the wavelength, the group celerity begins to approach half the phase speed.
To put a physical scale on the power predicted by these equations into familiar terms,
a 0.75m, 6-second wave breaking in 1m of sea water, not uncommon on Florida’s
Atlantic coast during the winter [27], carries over 2.04kW of power per meter of wave
front. During the summer, a typical 0.25m, 8-second wave carries just over 0.23kW.
In conclusion, in order to calculate the wave power in a certain area, the region’s
typical wave heights, periods, and water depth must be known. Design depth for the
wave absorber should be based upon half the wavelength of the predominant wave
climate.
1.2.2.2 Modeling the IRL Wave Energy
Installing sensors in multiple locations and collecting data over a period of
time offers a straightforward and reliable method for determining typical local wave
climates, but at the current time an extensive set of wave data is not available for the
IRL. Meteorological data, on the other hand, is accessible, so an alternative method is
9
to use historical meteorological data to hindcast, or mathematically model, the wave
conditions corresponding to the wind record. Sample data must be collected to verify
the model’s predictions, yet the model is useful for both creating initial estimates of
energy magnitudes and discerning trends and relationships between locations in close
proximity. A convenient way to present results from these models is to generate color-
coded maps of the IRL showing available wave power, in W/m of wave front, at each
location, such as in Figure 4. The full MathWorks Matlab® code for completing the
maps can be found in Appendix C, but the general equations and concepts will be
discussed here so that the procedures followed are clear.
Figure 4: Example map of IRL wave power distribution, in W/m,
generated using wind data hindcasting models
The equations used to calculate wave height based on wind data are provided
in the Coastal Engineering Manual (CEM), compiled by the United States Army
Corps of Engineers [32]. The equations are both theoretically- and empirically-based,
and they state that the main input arguments to the hindcasting model are the water
depth, d, 10-m elevation wind speed, U10, and straight-line wind fetch, X. Due to the
empirical coefficients in these formulas, SI units must be used. Equations for wave
growth that take fetch into account were needed because of the limitations imposed by
10
the barrier island on one side of the lagoon and the mainland on the other. The
significant wave height, Hs, is defined as the highest 1/3 of the waves, and is given by
3 2
1
2
2
210134
×= −
*
*s
u
gX
g
u. H
where g is gravitational acceleration and *u is the friction velocity related to the
standard 10-m elevation wind speed by
4 2
10* *UCu D=
with wind stress drag coefficient CD calculated as below.
5 ( ) *U..*. CD 100350110010 +=
If the wind speed is measured at an altitude other than the standard reference height of
10m, or if it is measured inland or for only a short time interval, equations and plots
are given to adjust the value, but the author refers interested readers to Part II, Chapter
2 of the CEM for further information. The peak period is given by
6 3
1
27510
=
*
*p
u
gX
g
u.T
The CEM equations account for depth, steepness, and fetch limitations on the wave
height and period. With the exception of a deep shipping channel that runs along the
axis of the lagoon, the water depth of the IRL averages to slightly over 1.5m. For
simplicity and also conservatism in energy estimates, 1m was chosen as the water
depth for all predictions. This imparts a factor of safety into the calculations, since
larger waves generated in 1.5m water depth would break upon encountering a shoal of
1m water depth. Since studies have refuted the effect of bottom friction on wave
generation, shallow-water wave generation is calculated in the same way as in deep
water, with the exception that the peak period’s upper bound is given by
7 2
1
, 78.9
=
g
hT SWp .
11
In the case that the period in 6 is greater than that of 7, the Tp,SW value should
replace Tp, and the measured fetch X should be replaced by a dimensionless fetch
X derived from the new peak period and Equation 6.
8
3
*751.0ˆ
=
u
gTX
p
Since winds often change frequently, a criterion for assessing the applicability
of these equations is the duration for which wind traveling at U10 traversed the fetch X.
Intervals shorter than t(x,u) given below yield duration-limited waves.
9 33.034.0
67.0
*23.77 ),(
gU
Xuxt
a
=
This criterion is not automatically tested in the Matlab® code, but the result is printed
so that the user may check the wind record to verify that the wind blew at the input
speed and direction for a sufficient amount of time. The code does ensure that wave
height predictions do not exceed depth and steepness breaking limitations by applying
the relations in 10 and 11, respectively.
10 hH d 6.0lim_ = 1
11 7
lim_
LH s =
One important point to note is that this depth limitation is not the same as the
dispersion equation depth limitation based on the value of kh, explained further in
Section 2.2 below. This means that waves predicted by the model will not exceed the
breaking criterion, but they are not necessarily deep water waves. This condition must
be tested independently when the shape of the waves predicted by this model is of
concern.
Since the above formulas all assume that the waves are fetch-limited, the fully-
developed sea (FDS) wave height is calculated very approximately for comparison.
1 This depth-limitation coefficient of 0.6 is used for random waves. The less conservative coefficient accepted for monochromatic waves is 0.78, but the use of significant wave height inherently implies random wave conditions.
12
12 g
U. H FDS
2
10270=
After significant wave heights and peak periods have been assigned to the locations of
interest, the wave energy and power can be computed using 1 and 2. In the
process, the group velocity of the waves must be computed. The dispersion equation
relates wavelength and period at a given depth and requires iteration to solve for the
wavelength.
13 )tanh(2 khgk=σ
In 13, σ is the wave frequency equal to 2/T, and k is the wave number, given by
2/L. The wave celerity is given simply by wavelength L divided by wave period T,
14 T
Lc =
and the group velocity by
15 nccg =
where
16
+=
)2sinh(
21
2
1
kh
khn .
The factor n accounts for the phenomenon that energy propagates at the speed of the
group of waves, which may be different than the phase speed of individual waves. The
energy travels only as fast as the foremost boundary of the group, so the power is
limited by the group velocity. In deep water (h/L > ½), Equation 16 simplifies to
0.5, while in shallow water (h/L < 1/20), n approaches unity.
Equation 16 concludes the inventory of formulas included in the modeling
code, so before the results of the simulations are presented, an account of the fetch-
and wind velocity- determination is needed. The maps generated by the simulation
are intended to show the power distribution over the entire lagoon, so fetch is very
direction- and location- dependent. In order to assign each point in the lagoon an X-
value for a given wind velocity, a basic image-processing program was written to find
the straight-line distance from each pixel on a map to the shoreline in the direction of
the wind. First a screen capture is taken of a Google Earth satellite image of the
13
region of interest in the lagoon. By enabling the “Postal Code Boundaries” layer
(within the US Government menu), yellow lines highlighting the coastlines are
conveniently added to the image, so that the program will be able to pick out the land
from the water. One caveat is that the image must be aligned such that the north-
south compass direction is exactly vertical while the screen shot is taken. The image is
then saved as a bitmap, and the actual east-west and north-south distances (in meters)
spanned by the image must be noted using the ruler tool in Google Earth. These
dimensions provide the program with a scale upon which the fetches are calculated.
For some maps, a good deal of pixel-level editing must precede application of the
fetch-calculating code. For instance, the barrier island’s eastern coast must be
highlighted red rather than yellow in order to decrease computation time and increase
color resolution within the lagoon on the final power maps. In addition, intricate
coastlines with capes and north/south-oriented corners confuse the program unless a
distinct coastline-land-coastline pattern is drawn (see Figure 5).
Figure 5: Pixel-scale image of Melbourne Harbor showing (a) the original intricate coastline
highlighted with yellow corners and (b) edited so that all corners and jetties have gaps
between yellow pixels to create a distinct coastline-land-coastline pixel pattern.
When these steps are completed, the program uses the yellow borders to create
a black and white image (black land and white water) and then assigns a fetch value to
each pixel in the water by following a search in the direction of the approaching wind
until it finds the first coastline pixel.
The last parameter required to run the program is wind velocity. As stated
earlier, useful wave energy estimates would include predominant, peak, and lull
14
conditions, as well as the frequency with which those conditions should be expected.
A study conducted over 30 years by the National Weather Service (NWS) at the
Melbourne International Airport [100] and another conducted over 66 years by the
National Climatic Data Center (NCDC) [98] provided monthly summaries of speed
and direction in wind rose format, and a year’s worth of digital wind data from Patrick
Air Force Base (PAFB) was used to create histograms of the wind speeds and their
yearly duration. The PAFB data was recorded every five minutes throughout 2006. A
qualitative comparison of the PAFB data with the NWS wind roses showed (a) that
the wind distribution on the barrier island (PAFB) does not differ greatly from that of
the mainland (NWS) and (b) that 2006 did not deviate greatly from the 30-year
average [24]. Another important conclusion derived from the digital data is that the
minimum duration to achieve fetch-limited conditions should be checked when
conditions are predicted, because both wind speed and direction can vary greatly over
the span of a day. As seen in Figure 6, variations of 7 m/s and 150˚ may occur in just
a few hours.
0
1
2
3
4
5
6
7
8
9
Time of Day
Wind Speed (m/s)
-40
10
60
110
160
210
260
310
360
Wind direction
(degrees from North)
Wind Speed
Wind Direction
Figure 6: Example of daily wind variation, plotted from
PAFB digital data from 7 June 2006.
This minimum duration varies primarily with the direction of the wind, as approaches
parallel to the length of the lagoon (maximum possible fetch) will need time to
15
generate their maximum power potential. If the minimum duration is not met,
changes in wind will simply be assumed to reduce the predicted energy, as the CEM
monograms do not account for such small-scale fetch and time parameters. A
normalized histogram compiling data from the entire year is shown in Figure 7.
0 2 4 6 8 10 12 14 16 180
0.02
0.04
0.06
0.08
0.1
0.12
Windspeed (m/s)
Percentage of Hours Annually
Figure 7: PAFB 2006 wind speed histogram and density distribution
Aptly similar in shape to the JONSWAP spectrum for fetch-limited, deep-water
waves, the histogram shows the number of hours over the course of 2006 that PAFB
experienced winds of the given speed. The mode is easily seen as the peak in Figure 7;
it represents the wind speed that occurs most often annually. This value corresponds
to the predominant wave climate mentioned above. The power mean is given as the
speed that generates the mean value of wave energy flux density, calculated as the first
moment of the wave power histogram.2 Peak and lull periods of energy content are
integral in determining the survivability and dependability, respectively, of the WEC,
and should not be omitted from any long-term study of WEC feasibility. However,
2 The power histogram was determined by plotting on a log-log scale the wave energy versus wind speed for a range of wind speeds and a given average fetch, and then measuring the slope in order to assign an exponent to the wind speed/wave energy relationship. This exponent was determined to be 1.3 for a fetch of 1.5km and 2.38 for 4.5km.
16
these events were not simulated extensively with the modeling in this project, as the
requisite statistical analysis of daily patterns of wind durations is beyond the scope of
the project. In a related strain, it is worth noting that no tropical events occurred in
the region in 2006, so the extreme weather conditions are not factored into this data.
The number of bins into which the histogram is divided greatly affects the number of
hours corresponding to each speed, so a cumulative probability density function
method is useful in quantifying the number of hours per year that winds of at least a
given speed are likely to occur. The results are given in Figure 8 and Table 1.
0 2 4 6 8 10 12 14 16 180
1000
2000
3000
4000
5000
6000
7000
8000
9000
Wind speed (m/s)
Hours per year
Figure 8: Cumulative distribution of annual wind speeds
Table 1: PAFB 2006 wind speed and frequency of occurrence
Wind speed (m/s)
Annual hours during which speed is greater
Average daily hours during which speed
is greater Mode 3.15 4665 12.7 Power mean 4.11 3050 8.35
Using the wind directions from the 30-year study’s monthly wind roses to associate
months with a season, the year’s worth of digital data was divided into winter
(November – February), spring (March – April), and summer/fall (May – October). A
17
fourth season is not distinguished here due to the similarity of the fall months’ wind
directions to those of the summer months’. The wind speed corresponding to the first
moment of each season’s wave power distribution was used with the MATLAB®
program to generate the wave power maps in Figure 9. This wind speed represents the
wind that creates the average power seen in the location annually.
Figure 9: Seasonal wave power maps. (a) Winter prevalent conditions of 4.76 m/s winds
from the north yield power up to 65 W/m2. (b) Spring prevalent conditions of 4.34 m/s
winds from the southeast yield power up to 27 W/m2. (c) Summer prevalent conditions of
4.11 m/s winds from the east yield power up to 13 W/m2.
Table 2: Seasonal wave height and power characteristics
Annual Spring Summer/Fall Winter Wind Direction E SE E N Mean Power Wind Speed (m/s) 4.11 4.34 4.11 4.75 Hs (m) 0.10 0.13 0.10 0.18 Tp (s) 1.2 1.3 1.2 1.6 Mean Condition Max Power (W/m) 13 27 13 65
It is important to note that the equations used to generate the maps do not
account for diffraction of waves around barriers or bathymetric effects like refraction
over sloped terrain, so the boundaries between regions sheltered by outcroppings of
18
land and those less sheltered are defined with artificial sharpness. Other factors that
affect wave parameters include temperature gradients, reflection, and tides.
1.2.2.3. Comparison to Field Measurements
In order to verify that the wave properties predicted by the hindcasting model
do indeed correspond to actual conditions in the IRL, a series of water level
measurements was conducted. A 0.5m-long Ocean Sensor Systems Wave Logger was
deployed on a piling at various locations around the lagoon in the vicinity of
Melbourne, FL. This instrument is a user-calibrated capacitive-type wave gage with a
programmable data collection frequency. It stores the stream of water level data to a
Compact Flash Card in text form in a CSV file. The wind and wave directions, GPS
coordinates, and sample time were documented during each deployment, and the
average wind speed for that time was recorded from the NWS webpage. In addition,
the wind speeds from the hours preceding the data collection time were noted in order
to determine if the minimum wave-generating wind duration had been achieved.
The documented wave-generating wind speeds and directions were then used
as input conditions in the models, and the output peak periods, significant wave
heights, and minimum durations were compared to the measured data. In order to
extract these characterizing properties from the wave gage water level data, the CSV
file had to be re-saved as an Excel (.xls) file and reformatted using the
convertOSS_WEC.m Matlab® program given in Appendix C. The time series was
then run through a zero up-crossing routine to identify individual waves, and a
cumulative distribution was created to determine the height of the largest third of the
waves. The frequency of peak energy content, and thus the peak period, was
determined by generating a wave energy spectrum. The period associated with the
peak in the energy spectrum was selected as the peak period. The results of the
comparison are presented in Table 3. The comparison reveals that the model is useful
for targeting a very approximate range of wave heights and periods for given weather
conditions. Wave periods generally corresponded within 15%, but percent differences
in the 40% range were common with the wave heights. Notably, the modeling
conducted here overestimated wave heights, causing the average overestimation of
19
wave power to be 38%. Nevertheless, trends were preserved, so WEC designs based
on modeling wave parameters may be improved after a sufficient amount of wave data
is collected for the specific site of deployment.
Table 3: Comparison of modeled and measured wave conditions
Location/ Date
Generating Wind direction
Avg. Wind Speed (m/s)
Hs (m) measured
Hs (m) model
T (s) measured
T (s) model
Anchorage/ Aug 13
130 3.5 0.108 0.141 1.52 1.59
Front Street/ Aug 17
115 2.6 0.065 0.076 0.93 1.16
Front Street/ Aug 21 108 5.3 0.055 0.094 1.05 1.2
An important consideration is the source of the wind data used to hindcast the
waves; the daily average speed and direction from the NWS record at the Melbourne
Airport may not represent actual on-site meteorological conditions. For true
calibration of the model, multiple data sets must be collected that include in situ wind
records for the period of time leading up to wave data collection.
1.2.3. Challenges in Wave Energy Converter Design
WECs face a unique set of challenges to implementation and efficiency. Like
marine structures of all kinds, they are subject to the extreme biofouling and corrosion
elements in the aquatic environment. Not all marine structures, however, rely on
constant unimpeded movement for efficiency, as WECs do. Lancaster University’s PS
Frog addresses this by minimizing external moving components, by encasing all power
take-off (PTO) mechanisms within a closed hull [13]. For designs in which this is not
possible, bio-resistant materials and coatings should be used for long-term
deployments. As this project is a proof-of-concept, a brief materials study was
conducted before purchasing construction materials, but long-term performance under
loading design will be left for future generations of the WEC. Exposure to continual
wave forces and episodic storm forces make robustness and simplicity of repair a
major design consideration.
20
A second hurdle, and one that has been studied extensively, is tuning the WEC
system to efficiently use a broad spectrum of wave frequencies, heights, and shapes.
As was mentioned briefly above with conventional rotational generators, any dynamic
system has a characteristic resonance frequency at which it operates most efficiently.
Resonance means that, as the exciting force acting on the system approaches a
particular frequency, the system reacts with the greatest possible amplitude of
oscillation. When no damping is present, an excitation force matching the system’s
natural frequency will produce undamped motion at the same frequency, such that the
resonant and natural frequencies of the system coincide. However, damping from the
water’s viscosity, system friction and loading, etc., will always be present, so the
damped natural frequency is slightly lower than the resonant frequency. The motion
is still maximized when the system’s actual natural frequency and the excitation
frequency are equal. This sensitivity to excitation frequency can both help and hinder
wave energy capture. If the WEC has a natural frequency in water that is close to that
of the approaching waves, maximum oscillation speeds and therefore maximum
power transfer will occur [11]. However, for wave periods dissimilar to the resonance
period, efficiency will drop. Ocean waves are rarely monochromatic, and the wave
climate of any location is not constant over time. For the WEC designer this creates
an unavoidable trade-off between optimizing the resonance frequency for maximum
performance efficiency at peak frequency and optimizing for fairly high efficiency over
a broad range of frequencies [3, 8, 9]. The optimal design would balance high
efficiency at the resonant frequency with fairly efficient operation over a wide
bandwidth. An ideal solution, although one that has yet to be successfully
implemented, is to enable the WEC to adjust its natural frequency in real time to
match current wave conditions. The models and measurements detailed above were
used to select an appropriate characteristic frequency, but attempts to optimize for or
adapt to multiple frequencies is beyond the scope of this project.
Another challenge, and the one that has been specifically addressed with this
project, is capturing the most energy possible from an approaching wave. As
discussed in Section 1.1, many current designs make use of either the hydrostatic or
the dynamic portions of the wave’s energy. A wave generator, however, supplies both
21
components of energy to the generated wave. This project proposes the use of inverse
wave generator theory so that the maximum possible energy may be absorbed for
conversion to electricity.
22
1.3 Objective and Scope
In an effort to improve wave energy capture efficiency, the wave absorber
shape of a basic direct drive WEC was modified using knowledge of wave mechanics
and wave generators. A single PTO section consisting of a linear induction generator
and its supporting circuitry was designed and built to accommodate interchangeable
buoys. Both a cylindrical buoy shaped like the AWS’ floater and a plunger buoy with
a specially curved face were constructed. The curve was contoured to match the
hyperbolic profile of water particle displacements in an approaching wave of height
0.1m and period 1.2 seconds in a water depth of 1m. The two buoys were then
deployed in same location during similar conditions in order to ascertain whether the
customized shape enhances wave energy absorption. In this way, the system focuses
upon testing the wave absorber efficiency’s effect on WEC power generation. The
device was designed as a stand-alone, watertight mechanism such that future versions
may be connected to the sensor suite with a short tether, over which power can be fed
to a battery charger.
23
2. Design Concepts
2.1 Wave Generators and Absorbers
In deciding to use wave generation technology to design wave absorbers, a few
design options were available. The two main classes of wave generators are paddles
(including both piston and flapper types) and plungers [41]. As seen in Figure 10,
paddle-type generators are simple boards that translate while positioned vertically (in
the case of the piston) or that pivot about the end attached to the ground (in the case of
the flap). The plunger type generally consists of a wedge-shaped block that is thrust
downwards into the water’s surface and pulled up again at a desired frequency. The
angle the wedge face makes with the vertical wall is denoted β.
Figure 10: Piston paddle, flap-type paddle, and plunger wavemakers
As the motion of the plunger is similar to that of a buoy bobbing at the surface, this
wave generator design is similar to that of the AWS’ and PowerBuoy’s absorbers, and
their cylindrical body shapes provide the control model for this project’s wave absorber
comparison. The WEC’s linear inductor PTO is coupled to the vertical motion of the
buoy, as shown in Figure 11. As the wave moves the buoy up and down, the magnet
24
is driven through a coil in the box above the buoy. This WEC is anchored to a piling
during deployment, with the buoy submerged and its top resting on the surface. An
advantage discussed earlier is shielding the WEC from of both storm forces and
curious vandals by positioning the entire PTO under the surface, like the AWS. For
simplicity of construction and deployment, that geometry was not used in this
prototype, but the same technology may be inverted and submerged in a subsequent
version, after the concepts have been successfully demonstrated. The floater of the
AWS was designed with survivability in mind; it is actually submerged at least 6m
below the surface so that a large passing wave pushes it downwards under the
hydrostatic pressure, rather than lifts it to the point of structural damage. Also shown
in Figure 11 is the proposed change to the buoy shape, which centers upon buoy
movement being directly coupled to wave motion. Any improvement in energy
capture displayed by the modified floater shape would suggest that increased emphasis
on wave mechanics would be a beneficial consideration for direct-drive WECs like the
AWS.
Figure 11: Difference between proposed buoy shapes
In general, plunger wavemakers are designed for single-direction wave
generation. In the new buoy design, all sides except the wave-absorbing face are flat in
order to minimize transmission of wave energy back to the water in other directions.
The rod restrains the buoy to vertical movement, and thus the wave energy
retransmitted to the water through radiation from the reverse side of the buoy is kept
to a minimum. Eventually, giving the buoy freedom to rotate on the rod that connects
25
it to the translator would allow the buoy to rotate as wave direction shifts without
requiring the entire apparatus to be moved. However, due to the potential
complication of the buoy’s yaw dynamics, the direction was fixed in the prototype to
avoid admitting too many variables into the performance analysis. The primary
reasoning behind the hyperbolic curve-shaped profile of the new wedge buoy is to
better match the wavemaker surface with the natural particle trajectories in waves.
Hence the hyperbolic profile is derived from theoretical equations of water particle
trajectories in wave mechanics.
In any wave generator geometry, the forced displacement of water transfers
both potential and kinetic energy to the water particles. However, the boundary
conditions at the paddles’, cylinder’s, and wedge-shaped plunger’s faces do not match
the elliptical trajectories of water particles under the progressive wave at a figurative
“infinite” distance from the wave generator. For this reason, some of the power put
into a wave generation system is lost in creating vertical standing, or evanescent, waves
that compensate for the mismatch at the boundary. In essence, some of the wave
energy approaching the paddle will be diffused into creating vertically propagating
standing waves that oscillate in front of the paddle. These evanescent waves decay
with distance from the paddle in the same way that particle movement decays with
depth in progressive waves. A quantitative explanation of this is given in the next
section.
26
2.2 Application of Wave Theory to Buoy Design
Many of the most energetic waves generated by IRL wave simulations based
on meteorological hindcasting have depth-to-wavelength ratios that qualify them as
transitional depth waves, rather than as shallow- or deep-water waves. The deep
depth regime criterion is important during the WEC design process because it
determines the shape of water particle movements. Particles in a wave do not translate
significantly as the wave propagates; they travel in elliptical trajectories given by
17
∫
∫
−+
==
−+
−==
)cos(sinh
)(sinh
2
)sin(sinh
)(cosh
2
tkxkh
zhkHwdt
tkxkh
zhkHudt
σξ
σς
where ζ and ξ are the time-variant positions in the x- and y-directions, respectively.
The depth of the water particle, z, becomes increasingly negative as depth from the
surface at z=0 increases. The time-invariant terms in these equations are the
horizontal and vertical axes lengths. As kh→0 in shallow water, ξ shrinks relative to
ζ , so the ellipses become increasingly horizontal. In deep water, however, the
trajectories are circular, and axis magnitude decreases exponentially with depth.
Figure 12: Water particle trajectories under progressive waves at different depths [8]
These particle trajectories come into consideration when deciding on the type of wave
generator to use. Piston paddles force equal horizontal displacement of water particles
27
over the entire depth, thus creating waves more akin to shallow water-type waves than
do flapper paddles. In the absorber regime, it is therefore logical that piston paddles
should better absorb energy from shallow water waves than from deep water waves.
The following equation can be used to predict the stroke of a piston paddle generating
a wave of height H:
18 ( )
hkhk
hk
S
H
pp
p
22sinh
12cosh2
+
−=
Dean and Dalrymple state that linear theory for plunger wavemakers making small
vertical motions and with small angle β is the same as that for piston paddle
wavemakers. This is logical because as a triangular wedge oscillates vertically, the
proximal water particles all experience forced horizontal displacement of equal
magnitude, regardless of depth, as with a piston paddle. The cylindrical buoy has β=0,
and the curve-faced buoy has a small β at the deepest section. Using 18 for the latter
buoy, however, would result in an underestimated height-to-stroke prediction because
it does not accurately represent the effect of the upper portion of the hyperbolic curve-
faced buoy, where β is large. Due to this section the buoy’s profile has some similarity
to a flapper paddle, which displaces surface particles more than particles near the sea
floor. The flapper paddle has a height-to-stroke ratio given by
19 hkhk
hkhkhk
hk
hk
S
H
pp
ppp
p
p
22sinh
1coshsinhsinh4
+
+−
=
These equations are derived from the Laplace equation with the dynamic and
kinematic free surface boundary conditions, the bottom boundary condition, and the
lateral boundary condition imposed by the wavemaker. The following equation,
derived in Appendix E, expresses the height-to-stroke ratio of an exponential decay-
faced plunger optimized for strictly deep water waves:
20 ( )
( ) ( )1222sinh
sinh
2 −+
+= − hk
p
hk
pp
p pp ehkehkhk
hk
S
H
If, however, the plunger’s curved face is shaped to match exactly the water particle
trajectories’ magnitudes in shallow-water or transitional regime waves, a hyperbolic
curve results of the form
28
21 ( )( )
( )hkzhkS
zSp
p
sinh
cosh)(
+=
Evidence that this stroke profile should perfectly match the water particle trajectory in
a linear wave is shown when the S(z) in 21 is substituted into the equation relating
generated waveforms and the progressive wave heights far from the paddle (see
Appendix E); the height-to-stroke ratio is exactly equal to one. Since basic
wavemaker theory is based upon volumetric displacement of water by the wavemaking
body, a plunger whose stroke displaces the same volume of water from a certain
control volume as a progressive wave would move naturally from that control volume
needs to travel only the same distance as the water particles it is exciting.
For a given stroke S, a flapper paddle creates smaller amplitude wave than a
piston paddle, since it displaces half the water volume. This means that in the inverse,
the same wave will create a greater stroke on a flapper paddle absorber than on a
piston paddle absorber. By extension, a concave-faced paddle (or plunger) displaces
even less water per stroke than a flapper paddle and therefore would undergo a greater
stroke when absorbing a given wave. For a 13cm wave in a meter of water with a 1.3-
second period (generated by a northerly 5m/s wind in the IRL), the flapper paddle
stroke would be between 10 and 11cm while the piston paddle stroke would be slightly
over 7cm. An exponential decay plunger traverses a stroke of 13.7cm, and the
hyperbolic curve plunger has a stroke equal to the wave height, 13cm. The average
power needed to generate such waves with a comparable wavemaker is given by
Equation 2. For this example, the result is approximately 20 W/m.
Since kh=2.419 (between /10 and ) in example above, this is a transitional
water depth wave, and the particle motions will be more like those created by the
generator of Equation 21 than any of the other three. The reason behind the
hyperbolic curve buoy traversing a greater stroke than the cylinder is that, in the wave
generator scheme, its smaller internal volume requires a larger stroke to displace the
amount of water contained in the wave peak. The exponential decay plunger
displaces even less volume and therefore needs a greater stroke length, regardless of
the wave type. Nevertheless, the theory in this project recommends the hyperbolic
decay buoy over the exponential decay buoy for intermediate wave types. While a
29
linear generator does depend on translator speed to spike its voltage, matching the
wave mechanics should take maximum advantage of both the kinetic and potential
energy in the waves. In the absorber scheme, if the wave transmits energy to the buoy
as it would another water particle, the buoy will gain both the kinetic and potential
components of the wave energy. If, however, the wave encounters the buoy as a
disruptive solid body, wave forces vary over the extent of the buoy’s surface.
Momentum is instead transferred back to the water particles as the wave energy is
partially dissipated in diffraction and radiation of waves off the buoy. These concepts
are discussed further in the Hydrodynamics section below, and they explain why the
cylindrical buoy should dissipate more energy per unit absorption width than the
hyperbolically curved block. For the similar shapes of the exponential and hyperbolic
curves, we look to evanescent wave generation to determine the better choice. The
hyperbolic curve-shaped absorber face is an attempt to minimize evanescent wave
generation by matching the face movement with water particle movement. The
exponential decay buoy is specifically targeted for deep-water waves. Ideally the front
face of a wave generator, be it a paddle or a plunger, would move identically to the
motion of water particles to create deep water wave particle motions directly in front
of the paddle. This condition would not produce evanescent waves. While elliptical
motion is impossible for a flat piston or flapper face, a specially curved face should
better match the trajectories, since the face displaces neighboring water particles by the
same amount as particles move far from the paddle. By making the remaining faces of
the plunger vertical, little energy will be transferred back into wave energy on the other
sides of the buoy.
In order to verify that the hyperbolic curve profile associated with water
particles in a progressive wave will minimize evanescent wave generation, the
wavemaker theory velocity potential, Φ, was calculated for a paddle with a stroke
s(z)=S*cosh(kp(h+z))/sinh(kph) for z=0 at the surface and increasingly negative z with
depth. For comparison, calculations for the exponential decay profile s(z) = S*exp(kpz)
were also performed.
Before the equations for velocity potential are presented, a side note
concerning these stroke equations should be discussed. In each of the three cases, s(z)
30
represents the maximum stroke width at a given depth, and not the equation defining
the curve of the plunger’s face. If f(z,t) represents the curve of the buoy’s geometry,
s(z)=f(z, T/2 ) - f(z,0). In other words, s(z) represents the difference between the buoy
face’s positions at the crest and at the trough. For a wedge plunger, f(z,t)=S1/h[z-
η(t)+h], but the stroke width resulting from a sinusoidal wave of amplitude H/2 is a
constant: s(z) = S1H/h. Thus the wedge-shaped piston emulates a piston paddle with
stroke s(z) =S2=S1H/h. As it turns out, for both curved buoy geometries, the difference
between the face positions over time results in a stroke width defined by the same form
of equation, simply with a different magnitude value. This means that the buoy must
be dimensioned such that a stroke width of magnitude S, matching the particles’
horizontal displacements, is a result of the difference in face positions at the crest and
trough of the design waves’ height.
The velocity potential is defined by
22 ∑
∞
=
+−
+−+=
1
)cos()])((cos[))(exp(
))sin())(cosh(
n
ssn
ppp
tzhnkxnkC
txkzhkA
σ
σφ
where subscripts p are associated with progressive waves and subscripts s with standing
waves, and
23
∫
∫
−
−
+
+−
=0
2
0
))((cosh
))(cosh(2
)(
h
pp
h
p
p
dzzhkk
dzzhkzS
A
σ
and
24
∫
∫
−
−
+
+
=0
2
0
)))(((cos)(
)))((cos(2
)(
h
ss
h
s
m
dzzhmkmk
dzzhmkzS
C
σ
Applying the paddle wavemaker velocity potential equations to the curved plunger is
valid because of the condition that linear theory closely matches the theory of piston
wavemakers for plungers with a small β and small vertical motion [7]. Since all terms
31
within the summation in Equation 22 correspond to standing (evanescent) waves,
any stroke S(z) that results in all Cm terms approaching zero will minimize the standing
wave magnitude. The Matlab® code that performed this test is given in Appendix C.
Under a given set of wave conditions, inserting s(z) = S for the profile of a wedge-
shaped plunger, s(z) =S*exp(kpz) for an exponential decay plunger, and
s(z)=S*cosh(kp(h+z))/sinh(kph) for a hyperbolically curved plunger shows that the Cm
values are smaller for the exponential decay paddle than for a straight piston paddle.
The magnitude of this reduction depends upon how closely the wave conforms to the
deep water regime. Under the mean power conditions predicted with the IRL
simulations, the difference was on the order of 2.5 to 12.5 times smaller, as shown in
Table 4. Because these incident waves were of the transitional regime, the
hyperbolically curved plunger conformed to water particle motion even more aptly
than the exponential decay plunger. The Cm values resulting from the hyperbolically
curved plunger were 6 orders of magnitude smaller than the piston paddle. A
numerical integration routine was used to perform these calculations, but the results
were made independent of the trapezoidal integration resolution by running the code
with finer and finer resolution until the output did not change with a finer grid. This
also suggests that the Cm values of the hyperbolically curved plunger might have been
zero if not for rounding in the numerical computation process.
Table 4: Comparison between standing wave coefficients of piston and exponential curve
wavemakers for various wave conditions and integration resolutions in 1m water
depth with a resolution of 0.0001m.
Piston
Exponential Curve
Hyperbolic curve
Cm(1) Cm(2) Cm(3) Cm(4) Cm(5) Cm(6) Cm(7) Cm(8)
0.0563 -0.0039 0.0011 -0.0004 0.0002 -0.0001 0.0001 -0.0001 -0.0076 -0.0005 -0.0002 -0.0001 0.0 0.0 0.0 0.0
T1 = 1.3s
H1 = 0.13m 0.64e-5 -0.09e-5 0.02e-5 -0.04e-5 0.02e-5 -0.01e-5 0.01e-5 0.0
0.0432 -0.0034 0.0009 -0.0004 0.0002 -0.0001 0.0001 0.0 -0.0165 -0.0008 -0.0004 -0.0001 -0.0001 0.0 0.0 0.0
T2 = 1.6s H2 = 0.18m
0.31e-5 -0.18e-5 0.05e-5 -0.04e-5 0.03e-5 -0.02e-5 0.01e-5 0.0 0.0540 -0.0037 0.0010 -0.0004 0.0002 -0.0001 0.0001 0.0 -0.0043 -0.0004 -0.0001 0.0 0.0 0.0 0.0 0.0
T3 = 1.2s
H3 = 0.1m 0.44e-5 -0.04e-5 0.04e-5 -0.01e-5 0.0 0.0 0.0 0.0
32
2.3 Mechanical Components
Mechanically, the WEC operates by coupling the movement of a magnet with
the vertical movement of the plunger suspended at the surface of the waves. As the
buoy plunger moves up and down with passing waves, it lifts the long vertical rod
above it, as shown in Figure 11. This rod slides through the bearings on the piling-
secured frame, which in turn supports the electronics box containing the linear
generator’s coil. Thus as the buoy moves up and down, the magnet moves vertically
through the coil. The primary source of resistance to this movement are friction from
the polyethylene bearings acting on the aluminum rod, which is caused by the bending
moment on the buoy’s rod due to the wave forces on the buoy. In the simplest
formulation, if the vertical wave forces acting on the buoy are able to overcome the
friction forces derived from the horizontal wave forces, the plunger oscillates in heave
and thus drives current through the generator. However, in any case where the body is
sufficiently large in comparison to the wavelength, the wave kinematics will not be
constant over the entire body, and the absorber’s motion will not automatically match
the magnitude and phase of the wave; many other forces and physical factors work in
conjunction to determine the system’s characteristic equation of motion. In order to
predict the performance of the plunger under a given excitation force, a complete
formulation of these physical properties must be completed. Since the modified
plunger shape was initially designed with the presumption that the face would move in
phase with the water particles, these details cannot be ignored. A block diagram of the
system’s individual components is shown in Figure 13. The following section presents
a general acknowledgement of the forces acting on the WEC system and estimates the
values of many physical coefficients based on calculations or literature values. The
general conclusion is that the parameters are impossible to accurately enumerate
without some preliminary physical testing, especially for the specially curved buoy, so
the system was designed as if the body diameter is small enough in relation to the
wavelength for it to be interpreted as a water particle. Afterwards, a discussion of the
materials selection and dimensions of the system are given to explain some of the
values in the section preceding it.
Figure 13: Block diagram of the W
EC system
showing input and output states of each component. The wind speed and direction
determine the wave height, length, and period in a given water depth. Those wave parameters determine the position and velocity
of the absorber buoy over time, which in turn govern the current induced in the coil by the magnet. The magnetic field induced by
the coil’s back EMF interacts with the permanent magnet to also influence the position and velocity of the buoy, since it is directly
coupled to the magnet. This total current in the coil is limited by the load current and by the voltage of the capacitor it is
charging. The circuitry performs according to the amount of power supplied to it.
Absorber
Radiation forces
Load
v(t), i(t)
Capacitor v(t), Load i(t)
Coil v(t), i(t)
Wind U,
θ
Water d
WEC
Wave
H, L, T
)(
),(
tz
tz
&
Fu (reaction due to coil B-field)
Wind/water
interaction
Power take-off
(generator)
Circuitry
34
2.3.1. Hydrodynamics
The wave absorber is constrained to move vertically (in the z-direction) only.
The sum of the forces acting in heave has been broken down in [11] as
25 ufvbreo FFFFFFzm +++++=&&
where mo is the buoy’s mass, z&& is the vertical acceleration, Fe, Fr, and Fb are the wave’s
excitation, radiation, and buoyant forces acting on the cylinder, Fv is the viscous force
imparted by skin drag of the fluid moving past the body, Ff is the sum of the frictional
forces opposing the excitation motion, and Fu is the load force imparted by the
generator as it delivers energy to the circuitry. A frequency-dependent form of the
above equation isolates the absorbed components from the excitation and radiated
components:
26 rem
mm FFui
SuRumi ˆˆˆˆˆ +=++
ωω
Although the subscripts m generally signify mechanical coefficients, load impedances
are also included in these terms. The carats in 26 recognize that the variables have
complex values. As will be expanded upon below, viscous and frictional power
dissipation and the real portion of the load determine Rm, and the buoyant force, along
with capacitive loads and any restoring springs built into the hardware, contribute to
Sm. While masses control the value of mm, it will be seen later that inductive loads are
also included in this term.
The splitting of the linear wave’s forces into three components takes advantage
of superposition to simplify calculations. Fe symbolizes the excitation force, which
accounts for the incident wave force and the diffraction forces resulting when the
incident wave strikes a stationary (non-heaving) body with force Fi, and diffracts
around it, causing the diffraction force Fd to act on the body. The incident component
is usually enumerated according to the Froude-Krylov approximation [46], and in
cases where the body’s diameter is much smaller than the wavelength, the diffraction
component is negligible. Otherwise, the diffraction component Fd must be calculated
as the surface integral of the derivative of the diffracted wave’s velocity potential with
respect to time:
35
27 dSnt
F Dd
ˆ∫∫
∂
∂−=
φρ
where dS indicates the integral is carried out over the body’s surface. The WEC’s
design conditions of 0.1m wave heights and 1.2-second periods in 1m water depths
dictate that its absorber width-to-wavelength ratio will be 0.1936. Fortunately, this
value is just slightly under the threshold of 0.2 that allows diffraction forces to be
ignored [46]. Numerical computations have been published for the Froude-Krylov
excitation forces on simple body geometries, such as a cylinder [10]. The results are
presented as plots of the transfer function relating incident wave amplitude to the
excitation force, with respect to wave frequency. Although the wave frequencies and
water depth in the computations were clearly outside the range of those used in this
project, a rough value for Fe acting on the WEC, given the design wave parameters,
was estimated roughly by locating the point on the plot’s x-axis with a kh value
identical to the WEC design wave’s. For the WEC design conditions, kh = 2.817.
Through back-calculation it was determined that the plot in [10] should be read at
ω=1.09 rad/s. This value was 400kN per meter of wave amplitude, given the WEC’s
capture width-to-water depth ratio and the wave frequency. Hence 40kN acts on the
bottom surface of the cylindrical absorber buoy when it encounters a 0.1m wave of a
1.2 second period. Because no literature is available for heave dynamics of irregular
shapes like the hyperbolic curve, a separate set of excitation calculations was not
performed, and the excitation force on both buoys is assumed to be equal.
The radiation force, Fr, and the buoyant spring force, Fb, account for the forces
reacting on a floating body as it oscillates in flat water. (Note that the linear
combination of diffraction and radiation forces is used to describe the forces acting on
a body in heave in linear wave conditions.) Fr includes the phenomena of “added
mass” and radiation damping. Added mass is a convenient way to interpret the
additional force needed to accelerate the fluid surrounding a body when it is, in turn,
accelerating. It is a function of geometry only and has the form
28 ( )zmiRF arr&ω+−=
36
where ma is the added mass and R is the radiation resistance (damping term).
Radiation resistance accounts for the power carried away from the vicinity of the buoy
by radiated waves. Added mass, on the other hand, accounts for the potential and
kinetic energy stored in the water particles adjacent to the buoy as radiation waves are
created. These two coefficients have been estimated in literature for vertical cylinders
in various water depths [10, 35, 37, 47], but the widely varying methods of applying
and reporting the input parameters make comparison between the sources difficult.
To achieve consistency in the face of the multiple formulations, the method and source
[10] used to estimate the excitation force above were again used for determining Fr.
These values are Rr = 105 N·s·m-1 and ma = 2.5×105kg. For the wave parameters given,
the maximum vertical velocity is 0.2618ms-1, and thus the maximum magnitude of the
sinusoidal radiation force is |Fr|=343.7kN, acting against vertical motion.
Again, similar numerical models for the hyperbolic curve’s radiation forces do
not exist, but it is worth setting forth the desired conditions for Rr and ma to yield
optimum power absorption. It has been shown that the maximum power absorption is
only 50% of the incident power if a symmetrical buoy moves with only one mode of
motion, such as heave, but that this limit does not necessarily apply to an
asymmetrical body in heave [12]. Maximum power is absorbed (although not
necessarily used by the load) when the buoy’s velocity and the excitation force act in
phase with each other. This is the optimum phase condition, and in general, it means
that the body’s position lags the water surface height, and therefore heave force of the
wave. A prerequisite for the optimum phase condition is that the system’s natural
frequency and the wave frequency must be equal. Using 26 and 28, the system
impedance can be expressed as
29 ( ) ( )
−+++=
ωω m
amrme S
mmiRRz
F
ˆ
ˆ
&
The minimum impedance to velocity occurs when the imaginary components in 25
cancel. This means that, at the excitation frequency of the wave, ω0, the relation
between the body mass, the added mass, and the coefficient accounting for the
buoyant spring and reactive load forces should be
37
30 ( )am
m
mm
S
+=0ω
For a symmetrical body able to absorb only half the wave power, the mechanical and
radiated impedances must be complex conjugates, implying that Rm and Rr must be
equal. For an asymmetrical body, it is simply desired that Rr be minimized to allow
for minimum radiated power. The optimum added mass value depends on the body
mass and total spring force for any given frequency. Minimizing the reactive
component also avoids phase shifting of the force with respect to the velocity. Any
phase shift present not only brings the system out of resonance but also paves the way
for the evanescent modes to dissipate energy as they try to match the boundary
conditions of the incident and radiated waves.
For the WEC’s cylindrical buoy to float in equilibrium with the top resting at the
surface of the water, mm = 73.95kg, while mm = 23.4kg for the hyperbolic curve buoy.
These masses are determined by the mass of the water displaced by the buoys’
volumes, and they are in part balanced by the weight of the rod and hardware above it.
Additional mass may be added via fishing weights in chambers inside the buoys to
ensure that they rest at the water level. If the buoys are deployed with lower mass, the
buoys will not float completely submerged, but the reduced mass would allow for
greater acceleration. For this device, the buoyant spring force Fb is fundamentally tied
to the body mass, as it, too, depends on the floating level of the body. Fb is the
hydrostatic force acting to restore a heave-displaced body to its equilibrium level in the
water. It is therefore equal to the weight of the displaced water and takes the form
31 dbdb zSgF =∀= ρ
where d∀ is the additional (positive) or reduced (negative) volume submerged when
the body is displaced by a distance zd from its equilibrium floating position. This force
is zero if the buoy moves in phase with the incident wave, but it changes in proportion
to the submergence depth of a buoy moving out-of-phase with the wave. The buoyant
force has therefore been expressed in three dimensions as a spring force dependent on
body geometry, where the spring constant for each of the directions is given by the
coefficients (or equations) in the 6x6 matrix bS . For a body moving strictly in heave,
38
all but the S3,3 coefficients equal zero, and S3,3 = Sb in 31 and forms a portion of Sm in
29. Other contributions to Sm may include a mechanical spring if present in the
design, and capacitance in the load. S3,3 is a function of the horizontal planar area, so
for the cylindrical buoy in heave,
32 db zrgF 2πρ−=
where the negative sign indicates that the force acts in the positive (upwards) direction
when negative values of zd (signifying submersion below equilibrium at z=0) occur.
For the hyperbolic curve, the equation is more complicated due to the increase in
planar area as distance from the bottom face increases:
33 ( )∫−
+⋅−=dzz
z
b dzzSbwgF0
0
)(ρ
where w is the capture width equal to the cylinder’s 2r, the stroke width S(z) is the
curve defined by 21, and b is the constant depth of the additional rectangular area
that contains the buoy rod at the back of the buoy. For consistency with 21, z must
be defined as zero at the top of the buoy, which was designed to coincide with the
water’s surface. Again, z becomes increasingly negative as depth from the surface
increases. For the case in which the buoy floats above the water’s surface, 33
defines z0 as the negative-quantity z-value on the buoy that coincides with the surface
at equilibrium, and zd is measured from this reference point with the same sign
convention as in 32. The effect of these equations is that a 1cm submersion imparts
a 14.51N force on the cylinder, while the same submersion on the curved buoy
floating 0.34m below the top imparts only 4.66N upwards. For the case that the buoys
float with their top faces level to the water surface and also move out of phase with the
wave, they will be overtopped. No buoyant force acts when they are overtopped, since
the submerged volume is unchanged. Instead, a hydrostatic force from the added
water pressure further forces the buoy downwards, and an increased viscous force
occurs as the buoy rises to the surface again.
The viscous force, Fv, is synonymous with the total drag on the object and
consists of skin friction and pressure distribution components. Both components are
linked to the speed of the fluid passing over the surface, and therefore Fv may be
39
modeled as a damping force as in 26. The skin friction is the integral of the shear
force over the surface area of the body. Since shear force is proportional to the
velocity gradient in Newtonian fluids like water, the velocity field near the surface of
the buoy determines the skin friction. Skin friction overwhelms pressure forces at low
speeds (Reynolds numbers less than 1). The pressure distribution portion of the drag is
caused by the pressure difference between the bottom face of the buoy and the top as
the body moves downward through the water column; if it moves at a higher speed
than the water particles, stagnation will occur at the bottom face, and the pressure
difference will impede motion. Skin friction plays a negligible role for Reynolds
numbers higher than 105, so at higher velocities, pressure differences dominate. The
Reynolds number for the cylindrical buoy is 1.06×105 at the maximum vertical
velocity, and it is 3.17×104 for the hyperbolic curve. These values are near the
pressure-dominated end of the transition region. Fortunately, total drag has been
determined to be of the form
34 2
2vACF pDD ρ=
where CD is a coefficient based on body geometry and Ap is the planar area of the body
facing the fluid traveling at velocity v with respect to the body. For a cylinder with a
length-to-diameter ratio near 1.0, CD = 0.93 for Re>105 [26]. With Ap=r2=0.1464m2,
ρ =1010kg·m-3, and vmax=0.2618m·s-1, the maximum drag force should be 4.94N. This
is fairly negligible in comparison to the other forces acting on the buoy. A drag
coefficient for the bottom of the hyperbolic curve buoy is not readily available, but it
was estimated as that for a rectangular sold (CD = 1.0), yielding a maximum drag force
of 1.16N.
The friction force Ff is due to contact of the aluminum rod with the
polyethylene bearings in the WEC frame. Friction force is quantified by
35 NFf µ=
where µ is the coefficient of static friction and N is the normal force, caused by the
bending moment on the buoy’s rod due to horizontal wave forces on the buoy. Based
on empirical equations for wave loading on a vertical wave barrier, a 0.1m wave
40
height with a 1.2-second period in 1.0m of depth will impart 218.6N of force per unit
width of barrier. Wave barriers have a similar geometry to the WEC in that they
extend partway down the water column. The equation for wave force per unit width
of barrier, Fmo, is given in [5] by
36 7.0
386.0
)cosh(
)sinh(
−
=
=
pL
w
omo
pp
p
oo
h
wFF
hkk
hkgHF ρ
where w is the depth of submersion of the barrier’s bottom face from the still water
line. Moment calculations about the support points on the frame were then used to
approximate the horizontal support forces acting on the aluminum rod to maintain a
total moment of zero. The two moment arms were dictated by the height of the frame
and the distance of the top of the buoy from the bottom of the frame. The total
friction, using µ=0.16 for UHMW polyethylene against steel, was estimated around
56N.
The final force for which we must account is the electrical reaction force of the
load, denoted Fu in 25. As the energy from the wave is converted into electricity in
the generator, an opposing voltage, called the back electromagnetic force (EMF),
develops to resist changes in current in the inductor. The force actually exerted upon
the buoy-coupled magnet depends on the counter-magnetic field generated by the
current running through the inductor. Since the self-capacitance of the coil is
negligible at the design operation frequencies (see Section 2.4.1), the generator circuit
can be modeled as series RL circuit also in series with the back EMF, signified by a
variable voltage source. The output voltage available to the load, vout, is thus given by
37 outemf vdt
diLiR =−− intε
where Rint is the internal resistance of the inductor. The physical background behind
this force and estimated values are discussed more thoroughly in the Electronics
41
Design section below, but the most important feature is its proportionality to the
magnet’s velocity:
38 zK zemf&=ε
Kz is determined by the dimensions of the coil and properties of the magnet. As
indicated by 26 above, the load is expected to contribute both a real and an
imaginary component to the system’s response, thus determining the value of the
current traveling through and from the generator. The generator and its circuitry
should be designed to hold real and reactive power proportional to the buoy’s heave
velocity. In an ideal case, the back EMF would induce the proper amount of reaction
force to keep the magnet moving in resonance with the mechanical portion of the
system.
The conclusion derived from these very rough estimates prior to testing was
that if the hyperbolically curved buoy were to be able to absorb the incident wave
energy without losing half of the power in radiation waves, as was expected from the
symmetrical cylinder, the excitation force should be sufficient to drive the buoy. The
cylinder is much less likely to be immune to the radiation forces, and therefore the
excitation forces were expected to be insufficient to overcome the forces opposing
oscillation. In addition, the radiation impedance term proposes a physical explanation
for why the standing wave coefficients calculated above indicate that the greater stroke
of an exponential decay buoy would not in fact yield more energy than a hyperbolic
curve buoy matched to the water particle trajectories.
2.3.2. Materials Selection
Topics of concern when selecting materials included biofouling, corrosion, and
robustness during extreme weather events. For this prototype version, cost,
machinability, ease of deployment, and ease of procurement played large roles as well.
A complete parts list of raw materials can be found in Appendix B, but a brief
discussion of each component is given here to explain design decisions. The majority
of the components shown in Figure 11 are composed of Ultra Corrosion-Resistant
Architectural Aluminum (Alloy 6063). Aluminum was selected for its light weight
42
and machinability, and the 6063 alloy is the most suitable for outdoor and humid
environments. Steel is much more corrosion-resistant than aluminum and should be
used for long-term deployments, but for this prototype testing, the light-weight
material’s maneuverability was preferable.
The low-friction bearings through which the generator rod and buoy rod move
are Ultra-High Molecular Weight Polyethylene tubes. This material is a thermoplastic
whose molecules are composed of extremely long polymer chains, giving it high
impact strength and abrasion resistance. It is self-lubricating and has a coefficient of
friction similar to Teflon, allowing for low-resistance movement. Another important
trait is its low moisture absorption.
A Pelican Case (size specification 1300) was purchased to that house the PTO
and circuitry. Made from Polypropylene copolymer, it has an o-ring seal, making it
watertight. A hole will be drilled into the top and bottom to accommodate the rod
that drives the generator magnet, and an aluminum fitting with an o-ring seals the
electronics from the elements. The magnet itself is a Neodymium iron boron (NdFeB,
or rare earth) magnet encased in epoxy to protect against corrosion. The connection
between the buoy rod and the generator shaft is made with polyurethane fasteners to
damp vibrations.
The purpose of the plunger is to absorb energy as if it were a water particle, so
the buoy is designed to be nearly neutrally buoyant. While the polystyrene foam
comprising the buoy itself is positively buoyant, fishing weights were added as needed
to the weight of the aluminum rod, magnet, and fittings in order to offset the
buoyancy. The buoy is coated with a layer of 6-oz. weight E-glass fiberglass with
epoxy resin fiberglass to protect it from water absorption and deformation.
2.3.3. Dimensions
The dimensions of the WEC are determined by the dimensions of the waves in
which it will be operating. The WEC was designed to operate normally for waves up
to 0.25m in height. This constraint was selected based on measurements of from the
lagoon under average conditions; while average seasonal wave heights were as given
43
in Table 3, the measured spectrum had a sizeable component of up to 0.25m. This
means that the prototype is not designed to be tested for efficiency in extreme weather
conditions, but it should be able to survive them.
Since wave energy propagates to a depth equal to only half the wavelength,
creating the buoy reaching deeper than this depth would cause extra fluid friction to
retard its motion. Not extending deep enough would waste a portion of the energy
available. In water of the 1m design depth, setting the buoy depth to 0.5m below the
surface covers the full energy region for waves with periods up to 0.8s. Since periods
shorter than this are either unlikely or not the energetic waves targeted for absorption,
we are not concerned with the additional drag on the buoy for waves under 0.8s. The
0.4318m buoy width was selected as the greatest diameter cylindrical buoy that could
be manufactured on the Florida Tech CNC machine, and the capture widths of the
two buoys needed to be equal to perform a power absorption comparison free of any
nonlinearities in the WEC’s ability to report wave energy excitation.
Axial stress in the translator rod supporting the buoy was calculated to ensure
they would not fail under the static weight of the WEC and the dynamic loading of the
waves. Given the horizontal wave loading calculated above for average conditions
and the dimensions of the frame, the round translator rod is expected to experience
surface flexural stresses due to bending moments of up to 2.758×108N·m-2, below the
yield stress of the aluminum by a safety factor of 5.2. Further calculations for the
extreme wave height loadings were not pursued since the testing of the hypothesis
requires waves similar to the design wave.
44
2.4 Electronics Design
In accordance with the scope of the project, the circuitry in this prototype
version of the WEC is intended to measure the comparative power output between the
two buoy shapes. As such, the generator must serve as a transducer between
mechanical energy in the buoy and electrical energy measured in circuitry. Given this
objective and the need to keep the project’s scope at a reasonable level, the circuit was
not optimized to collect sufficient power to support the ORCA sensor suite. In future
versions, more emphasis on the generator and circuitry design phase can greatly
improve the power generation levels. Another feature to note is that the power
measurement circuitry is supported by two batteries: one to power the circuit during
data collection and another to maintain the real-time clock’s user-set initial time and
date even while power to the circuit is turned off. The circuitry power is supplied via a
9V battery connected to a LM1117 low-dropout linear voltage regulator, which then
distributes 5V power and logic levels to the rest of the circuit. The clock reserve
battery is a 3.6V C-cell Lithium/thionyl chloride battery rated at 8.5Ah and a 20-year
shelf-time. An obvious goal for future versions is to achieve self-sufficiency using
power collected from the waves, but in the current version it is important to ensure
that data collection can continue in the event of minimal or zero power generation.
The circuit draws 96mA at startup, 78mA during capacitor charging, and 114mA
while the DC/DC converter is operating. Averaging this to 100mA continual
operation, the 9V battery should be able to support the circuit through four hours of
continuous data acquisition and storage before its voltage drops to 6.2V, the minimum
voltage needed for the LM117 to function.
Aside from these limitations, the circuitry was designed keeping in
consideration the eventual goal of powering the sensor suite’s battery charger. The
Texas Instruments bq2057 Li-Ion/Li-Polymer Charge Management ICs require a DC
voltage between 4.5V and 15V, so the convenient value of 5.0V was selected as the
output across the load resistor that substitutes for the charger in this prototype. The
measurement circuitry serves to record the generator voltage, load voltage, and the
45
voltage across two current sense resistors, along with the time of each measurement.
While the current sense resistor on the output of the DC/DC converter simply
reiterates the current passing through the user-selectable load, another resistor on the
input of the DC/DC converter is needed to determine the coil’s raw power generation.
The real power output of the DC/DC converter is the most applicable result in the
long-term, but in the case that no appreciable difference in real power is observed
between the wave absorbers, the input-side current sense resistor offers a second
measurement opportunity, independent of the remaining power management circuitry
and programming. In this way, the real-time power output can be compared with the
wave conditions recorded on a real-time wave gage, allowing for calculation of the
WEC system’s efficiency. The following sections describe in detail the design decisions
involved in building the generator and selecting the individual components integrated
into the printed circuit board (PCB). For a full inventory of parts, please see
Appendix B. A photo of the manufactured and populated PCB is shown below in
Figure 14, and the PCB schematic, with electrically connected traces labeled for
neatness purposes, is shown in Figure 15. A block diagram of the inputs and outputs
of each major circuitry component is given in Figure 16.
Figure 14: Populated PCB
Figure 15: (a) Schem
atic of WEC power generation and measurement printed circuit board
Figure 15: (b) Schematic of WEC power generation and measurement printed circuit board (contd.)
Figure 15: (c) Board layout of WEC power generation and measurement printed circuit board
Figure 16: Block diagram of inputs and outputs to major circuitry components. The position and velocity of the magnet within
the coil determine the induced current and voltage across the coil. These values may also be limited if the voltage on the capacitor
is higher than the coil’s voltage spike, and by the current being allowed to flow through the DC/DC converter. The capacitor’s
voltage governs when the load will be switched into the circuit, and it ultimately governs the amount of input power available to
the DC/DC converter. This power determines the operating efficiency of the DC/DC converter and thus the output power.
Generator
assembly
Rectifier
Capacitor
Load i(t)
)(
),(
tz
tz
&
Coil v(t), i(t)
Coil |v(t)|-1.2V,
|i(t)|
Capacitor v(t)
vin(t), iin(t)
Load
v(t), i(t)
Capacitor v(t)
Microcontroller/
Relay
DC/DC
Converter
50
2.4.1. Power Generation Components
Magnet and Coil
The power take-off element of this WEC is, as described previously, a linear
generator consisting of a simple coil of insulated copper magnet wire and a disc-
shaped magnet that translates through the center of the coil. The precedent for this
generator topography has been set theoretically in literature [20, 23, 24, 32, 43] and
practically by the Archimedes Wave Swing and the PowerBuoy. The linear topology is
attractive for its minimum of maintenance-intensive moving and interfacing
components, as compared to rotational motor, hydraulic, and pneumatic systems.
The gears and sealing in those conventional systems serve to interface the low
reciprocating speeds of the waves to the high, ~1500rpm speeds required in rotary
electric generators. The high speed of the field-providing components with respect to
the armature, or power-producing components, is the basic tenet behind generating
enough voltage to drive loads. Faraday’s Law of Induction states that the
electromotive force, or induced voltage, ε, generated across a closed circuit is
proportional to the time rate of change of the magnetic flux, ΦB, through the circuit.
39 t
B
∂
Φ∂=ε
While generators containing electromagnets use alternating current to alter the field
quickly over time, permanent-magnet generators rely on the movement of the magnet
with respect to the circuit to achieve the change in flux. Thus voltage generated is
proportional to magnet velocity in these systems. As such, the useful force (denoted as
Fu above) acting on the plunger buoy due to the generator has been modeled as a
damper in literature [10, 24]. The direction of the force always acts to retard the
motion, since Lenz’s law holds that the induced electromotive force will act to oppose
the change in flux that caused it. A closed circuit can be approximated by a single
loop in a tightly-wound coil, and thus a coil with N loops subjected to the same
magnetic flux will generate N times the voltage level.
Various schemes for creating higher-frequency electrical signals from the low
frequencies of wave-excited linear motion have been evaluated for their practicality
51
and airgap shear stress production ability. These innovative topologies include
longitudinal- and transverse-flux permanent magnet linear machines and the similar
Vernier hybrid machine [24]. These generators rely on alignment of iron teeth on the
translator with magnets of alternating polarities on the stator to electrically gear the
magnetic field frequencies to higher frequencies, as shown in Figure 17.
These studies generally hold that the
innovative geometries lend themselves
to both higher shear stresses within the
gap between the magnets and the coil
and higher normal (attraction) forces
between the magnets and the steel
armature. Hence the power-generating
potential is increased, but the increased
danger of contact between translator
and stator requires a heavier, sturdier
support structure. In comparison, a
simple air-cored tubular machine with
no iron on the stator avoids the risk of
magnetic forcing hindering the translator’s motion, but at the expense of shear force
density and thus power generation. The lack of iron to concentrate the flux causes the
magnetic field to decay quickly with distance from the surface of the magnet; increased
magnetic material is needed to increase flux in the coils. Recognizing this drawback,
the air-cored tubular machine, or simple disc magnet translating through a coil, was
chosen to simplify construction and physical analysis. Commercial linear generators
with the combination of low speed and low torque are not readily available, so the
physically basic magnet-in-a-coil geometry was implemented.
The initial design for the linear generator was based upon a U.S. patent [19]
and the circuit observed in a shake-powered flashlight. Calculations for the inductor’s
dimensions were then made to target the stroke of the magnet and the frequency at
which the oscillation would occur. In order to extract the most power from the coil,
the power take-off component’s impedance should be complex conjugate of the
Figure 17: Magnetic gearing in a transverse
flux machine [24]
52
mechanical impedance of the system [12]. The real part of that mechanical impedance
includes the viscous and frictional resistance, along with any radiated resistance. The
mechanical reactance includes the buoyant spring force, radiation reactance (added
mass) and body mass. From 29 it can be seen that, for a given excitation frequency,
any load capacitance must add to the mass terms, while load inductance add to the
buoyant spring force to complete Sm. Controlling these load values can allow for the
condition in 30 to be met.
It should be made clear that the circuit in the current WEC was designed
without knowledge of the added mass or even the final buoyant force and body mass
values. Instead it was assumed that the capacitive and inductive components of the
load must resonate at the excitation frequency to maintain system resonance. The
ramifications of this design on total system efficiency depend on each buoy’s
mechanical characteristics and will be discussed further in the Results section. For
any RLC circuit, the resonance frequency is given by
40 LC
f rπ2
1=
Given the predominate wave climate in the IRL, the target resonance frequency range
was between 0.67 and 2 Hz. The appropriate combination of inductance and
capacitance was thus calculated for that frequency range using
41 22
2
1
2
2
4 cLC
πλλ −
=
where λi are the wavelengths of the electricity at the limits of the frequency range.
Hence the LC value targeted was 0.05s2. This is a very high product of inductance and
capacitance, as typical inductor values are on the order of microhenries, while
capacitors’ maximum rated voltages drop quickly for values above a few millifarads.
Capacitors present a trade-off between high capacitance and the voltage level at which
they suffer physical damage. Supercapacitors small enough to be inserted on a PCB
can be purchased with values on the order of 5 Farads, but their limiting voltages are
less than the 5V that is desirable to keep the charging circuit operating (please see
DC/DC converter section below). A variety of supercapacitors rated for 6.3V (25%
factor of safety) were purchased with values between 0.47F and 1F. A capacitance on
53
the order of 0.5F then requires an inductor of approximately 0.1H. A guide manual
for winding coils and transformers [4] was used to determine the correct dimensions
for achieving such a high inductance value. The following criteria were used to
determine the dimensions:
• Inductor length is inversely proportional to inductance.
• Inductor cross-sectional area is proportional to inductance.
• Inductance is proportional to the square of the number of turns in the coil.
• Capacitance of the coil increases with the voltage difference between adjacent
turns.
• Resistance (and therefore real power loss) increases with the gage of the wire.
• The number of turns per inch is limited by the thickness of the wire, but adding
layers to the coil decreases the magnetic flux density acting on the more distant
coils.
Certain parameters were dictated by the geometry of the problem. The length
of the coil should not exceed the expected wave height, as this would waste decreased
inductance on turns that are not exposed to appreciable magnetic field changes. In the
end, the length was determined by the safe range of motion for the oscillation testing
machine, 0.635m (2.5 in). This was also appropriate for the size of the design wave
height, as a wave 0.1m (4 in) in height would allow the magnet to travel past the ends
of the coil, thus producing the maximum exposure to changing fields. The cross-
sectional area was maximized by using the magnet with the largest diameter available
for purchase. Rare earth, or Neodymium-Iron-Boron (NdFeB), magnets were used for
their high flux density, economy, and better mechanical resistance to brittle fracture as
compared to Samarium-Cobalt magnets. Two 1.5-inch outer diameter, 0.375-inch
thickness, N40-strength ring magnet (with a 0.5-inch inner diameter to accommodate
the supporting axle) were purchased, and the coil was wound around a 1.625-inch
outer diameter PVC former to minimize the airgap thickness. A bank-winding
geometry, in which successive layers are wrapped atop the layers closest to the former
in a wine bottle stack format, before the first layer is completed, minimizes the voltage
54
difference and therefore capacitance between adjacent turns. The number of turns
needed to achieve the desired inductance was determined by the following equation
for bank-winding inductance from [4]
42 cba
NaL
1093
2.0 22
++=
where a= 1.625” (inner diameter of coil), b=2.5” (coil length), c=0.1” (estimated radial
depth of winding for 10 layers of 30AWG wire), and L= 5×104µF (factor of safety built
in for possible losses). This yielded N=1640 windings, and thus 2000windings were
completed to compensate for inexact winding. The bank-winding geometry was
roughly attempted, but the hand-winding procedure was not precise, so some added
degree of capacitance was expected. In the end, tests and calculations placed the
inductor as having somewhere between 0.10 and 0.25 H of inductance, with a
resistance of 175Ω and a capacitance of 0.35µF. The impedance of a non-ideal
inductor is modeled as a series combination of the inductor and a resistor, all in
parallel with the capacitance. Hence the total source impedance in Ohms is
43 ( )[ ] ( )582 101.61075.81
25.0175−− ×+×−
+=
ωωω
j
jZs
As will be discussed in the Results section, this impedance cannot include the
supercapacitor capacitance, although that was the intention during the design phase.
The supercapacitor was located downstream of the rectifier (discussed next), and
therefore could not discharge across the inductor to complete the oscillation cycle.
The implication of this is that excitation forces on the order of kilohertz, rather than
the design operating frequency of 0.83Hz, would be needed to raise the source
impedance significantly above 175Ω, so the source impedance is defined as 175Ω with
no phase shift.
Rectifier
The full-wave rectifier serves to invert the negative voltages generated during
the downward stroke of the magnet in the coil. The ST Microelectronics L6210 was
selected for its low forward voltage drop Schottky diodes (only 0.65 to 0.8V loss per
pair at 100mA). In addition, the 50V reverse voltage per diode and the maximum
55
current rating of 4A are more than enough to ensure the rectifier can withstand the
conditions supplied to it by the generator. The rectified current is connected in parallel
with a 22000µF capacitor such that any charge generated in the coil is stored until an
appropriate voltage is achieved to power the DC/DC converter. The supercapacitor’s
value was calculated in conjunction with the inductor’s value with the intention of
matching the target wave excitation frequency, as described above.
DC/DC Converter
The Texas Instruments TPS61202 DC/DC voltage converter was chosen for
its potential to operate at high efficiencies, its fixed 5V output, its wide range of input
voltages (especially its low 0.5V startup voltage), its low quiescent current of 55µA or
less, its ability to automatically switch between a boost converter and a voltage
regulator, and its advertised applicability in battery-power circuitry.
The microcontroller operates a relay switch that latches the converter into and
out of the circuit based on the voltage present on the inductor/capacitor component.
Since the DC/DC converter’s efficiency falls quickly from its rated 90% when the
input voltage drops under 3V, the relay detaches the converter (and thus the load as
well) from the generator circuitry when the magnet’s movement fails to maintain at
least 3V on the capacitor. This allows the capacitor to charge unloaded until it reaches
a voltage level at which it can again support the load. Although the data sheet lists the
minimum startup voltage as 0.5V, preliminary tests showed that the converter draws a
surge of current during startup, which the capacitor could not sustain while carrying a
low potential. For this reason, the microcontroller waits until 5V has been stored on
the capacitor before connecting the converter and load back into the circuit. This
scheme also ensures that the converter will spend virtually zero time operating as a
Down Conversion Mode regulator, which dissipates more power than a boost
converter.
The constant 5V output drops to 0V when the switch releases the converter for
the capacitor to charge, and it latches right back to 5V when the switch is restored.
The tradeoff between the latching voltage input value and constant operation should
be further investigated to achieve a constant DC voltage supply from the output. One
56
caveat is that the efficiency of the converter drops greatly for output currents 10mA
and under.
The primary drawback of the TPS61202 is that it is available only in the
miniscule 3mm×3mm QFN-10 package. While this is intended as a space-saving
attribute, it makes soldering to a footprint onto a PCB very difficult. For prototyping a
SchmartboardTM surfboard was purchased, which is specially designed such that extra
reserves of solder on the leads facilitate soldering to small-pitch chips.
The use of a 2N3904 NPN transistor on the relay controlling the DC/DC
converter input pin allows the device to be switched on and off in the PIC®
microcontroller’s software. This configuration produces a ~0.6V drop across the
transistor, causing the relay to receive 4.4V rather than 5V on the pin that controls its
internal magnetic switch. While this type of voltage drop on a low-side load NPN
configuration is generally undesirable, the RSB-5-S relay functions normally down to
3.5V, so the configuration is acceptable. In this way, a high signal from the PIC’s
control line turns the DC/DC converter on while a low signal turns it off.
2.4.2. Data Collection Circuitry
Microcontroller
Due to familiarity with the family of microcontrollers, the Microchip®
PIC18F-series was selected as the central controller for data collection and component
latching on the PCB. The 18F4523 was selected for its 12-bit analog-to-digital
converter (ADC). Other chips in the 18F series provide only 10 bits of resolution on
their internal ADCs. Microchip’s MPLAB® Integrated Development Environment
(IDE) was used in to write the microcontroller programs in the C language, using
MPLAB’s C18 compiler libraries. The microcontroller runs on a 20MHz crystal
oscillator, allowing for 200ns instruction cycles.
Programming and Communication
Interfaces for both the MPLAB ICD 2 and PICkit 2 are designed into the
circuit board to provide programming interface versatility for future users. These
57
interfaces allow the PIC microcontroller to be programmed without the need to
physically remove the chip from and replace it into its 40-pin socket on the board.
These programmers are also useful when operated in debug mode, in which they can
step through a PIC program to display the function of each line of code.
The serial data line on the PIC is accessible for initializing the RTC and
monitoring the data storage messaging during debugging. A Maxim MAX233 logic
level converter switches the 0-5V logic of the PIC to the ±15V logic of a PC, and the
serial data is fed out through a DB9 connector interface. This may be accessed using
the HyperTerminal serial port communications software available with any Windows
operating systems prior to Vista.
Load and Current Sense Resistors
A pair of resistors forming a voltage divider and two separate 10Ω current
sense resistors serve as the prototype’s load and current sensing elements, respectively.
The resistors are connected to the board via Molex connector housings so that the load
values can be changed as wave conditions vary during testing. The series load
resistors used during deployments were 4.7kΩ each This value was settled upon taking
the ADC’s saturation level and the DC/DC converter’s output level into account.
Controlled sinusoidal excitation of the magnet with oscillations near 1Hz showed that
both saturated and low duty cycle power outputs were possible with a ~10kΩ load,
depending on the magnitude. With 5V across a 10kΩ load, 0.5mA of current can be
expected to flow. This translates to a 2.5mW saturation level for power dissipation.
The bq2057 consumes 300mW of power itself, so eventually a larger current is desired
to increase the power output capacity. This can be accomplished by reducing the load
resistance. A 500Ω load allows for 50mW of power, while a 100Ω saturates at
250mW. The caveat with increased output capacity is that it causes the supercapacitor
to drain more quickly, thus switching the DC/DC converter out of the circuit more
frequently. Under manual excitation, a 500Ω load provided a subjectively selected
good balance between increased output power and appropriate operation durations.
However, with steady sinusoidal velocity excitation, the magnet’s speed was not high
enough to maintain capacitor voltage for such a low load, and a 10kΩ load was
58
needed before the versatility of both saturated and unsaturated test conditions was
possible. The middle ground achieved by these operating conditions was desired to
allow for fast initial analysis of which buoy shape yields more constant power capture;
with the current hardware, 10kΩ was necessary to make apparent which of the buoys
can support converter operations for a longer duration in a given set of wave
conditions.
The PIC’s ADC saturates at 5V, so no amplification is needed for measuring
the load resistor, which experiences essentially the entire 5V drop across it. With 5V
running across 500Ω, a 10mA current can be expected. This creates a 10mV drop
across the 1.0Ω current sense resistor. A specialized current-sense operational
amplifier with a fixed gain of 100V/V is used as a high-side amplifier to increase the
current sensing signal to 1V. This only uses a fifth of the ADC’s resolution capability,
but increasing the amplification further risks increasing noise levels. The sense resistor
is a 5% tolerance carbon film resistor, meaning that exactly 10mA traveling across it
could produce between 9.5 and 10.5mV. With the gain of 100 and the 12-bit, 0-5V
ADC, this translates to readings anywhere between 778 and 860 counts out of 4095,
without even taking into account the uncertainty in the load resistor, current level or
the DC/DC converter output voltage. Filtering and averaging the data removed time-
varying noise from the data, but in future versions, more expense can be applied
toward a higher-accuracy sense resistor.
The MAX4372 operational amplifier was chosen for its intended application
as a precision current sensing amplifier (to ensure minimal uncertainty is contributed
in the amplification stage), its low 30µA current consumption, and its wide signal
input range that includes voltages near zero. Its high-side configuration prevents
ground path interference on loads that require grounded signals, such as the battery
charger. To ensure the output signal could actually sink to the low voltage rail during
times of no current flow, a negative voltage supply was connected through a pull-down
resistor to the output pin of the op amp. A MAX889 was selected for the task of
voltage inversion due to its availability, and its (absolute value) minimum output
voltage of -2.5V was configured to minimize ambient current flow. Power dissipation
added by the MAX889 is approximately 36mW.
59
While the load resistor with the known DC/DC converter output voltage
applied across it is, in itself, sufficient for measuring the power dissipated by the load,
keeping the current sense resistor in place allows for the option of connecting the
rectifier output directly to the resistor series. This unregulated measurement mode
would allow for analysis of the generator’s passive ability to support the battery
charger, without being subject to the switch control regime or the power requirements
involved in operating the DC/DC converter. While this configuration was not
explored in this set of tests, the feature is explained here for future investigation.
Filtering, Buffering, A/D Conversion
As mentioned above, 12-bit ADC was specially selected to gain higher
resolution on the power measurement data. Higher-resolution ADCs, however,
cannot automatically guarantee higher accuracy data if the noise level on the input
signal is too high or if the sampling frequency it too high to support the signal’s
source’s impedance.
Filtering aids in noise reduction. Since the LC circuit was designed for
resonance with waves between 0.67 and 2Hz, the data recording frequency fr must be
no lower than 4Hz to avoid aliasing. A low-pass RC filter must be added before A/D
conversion to minimize the effect of high-frequency noise on the data. A general rule
for RC filtering is to select a filtering cutoff frequency fc that is 10 times greater than the
highest data frequency, thus suppressing any higher-frequency signals by more than
3dB. A 50Hz fc was selected to reliably support fr up to 5Hz. To achieve an RC time
constant of 0.02s, a 200kΩ resistor and a 1µF capacitor was used for each filter. The
sampling frequency fs was then designed to be approximately 500Hz, or 10 times larger
than fc, and thus suppressed by 20dB (to a tenth of its amplitude). After the circuit has
been completed, calculating the standard deviation of data recorded during DC input
conditions indicates whether or not noise contributes a low enough uncertainty to the
recorded value to merit using a higher-resolution ADC. The completed PCB’s
standard deviation was measured to be zero given a DC signal, since no variation in
ADC output was recorded at a given input voltage.
60
While the filtering minimizes the effects of high-frequency noise, it presents
another problem for the ADC. ADCs contain internal capacitors that must fully
charge in order to maintain availability of the correct input voltage to the internal
comparators as they loop through calculations and identify the voltage value. The PIC
data sheet warns that source impedance on the analog line should not exceed 2.5kΩ in
order to avoid voltage divider effects with the internal impedance of these ADC
capacitors. With the RC filter on the signal line, the impedance would rise above
230kΩ for even the lowest design frequency waves. For this reason a unity-gain op
amp was added to the back of each filter as a buffer to reduce the signal’s source
impedance into the ADC, and thus supply more current to the internal ADC
capacitors. The MCP604 op amp is capable of sourcing 22mA continuously, meaning
that the capacitors with maximum 30pF of capacitance in the PIC’s ADCs could
charge from zero to 5V in less than a nanosecond. This is orders of magnitude shorter
than the maximum signal acquisition time selectable for the PIC’s ADC, which is
16µs. The A-to-D comparator calculations take a minimum of 10.4µs. Hence the
entire process uses 26.4µs per conversion. Using a sampling frequency of 518Hz
means that four A-to-D conversions (coil voltage, load voltage, DC/DC converter
input current, and DC/DC converter output current) are requested only every 1.9ms,
or one every 0.483ms. Hence the ADC has 0.483ms to carry out an operation that
requires only 26.4µs. The buffer thus makes it possible for the ADC to accurately use
its 12 bits to measure dynamic signals at the requested sampling frequency.
A 12-bit ADC would ideally separate the full-scale input voltage neatly into 212
= 4096 bins, each signifying 1/4096th of the full scale. For the circuit’s 0 to 4.096V full
scale input, each ADC count should signify 1mV. This 1mV resolution was verified
on the small scale by matching an increase in the recorded ADC value with the
number of millivolts by which a controlled DC input signal was raised. Nevertheless,
a broader-range calibration is needed to ensure proper interpretation of the data, so a
calibration of the entire analog input block to each ADC was carried out. Due to the
dependence of the ADCs’ operating characteristics on actual input impedance values,
this had to be conducted after the printed circuit board’s manufacture and population,
not on the prototype breadboard, since any resistance in the PCB traces may alter
61
intermediate voltages slightly. The calibration of each of the four analog in put blocks
to the PIC was carried out by generating a controlled voltage (for the coil- and load-
monitoring ADCs) or controlled current (for the current sense resistor-monitoring
ADCs) and fitting a linear equation to the corresponding ADC values as monitored
over HyperTerminal. The complete step-by-step calibration procedures are detailed
for repeatability in the Testing Procedures section below.
Real-Time Clock (RTC)
In order to correlate the measured power generated with the wave power
acting to excite the buoy, the ST Microelectronics M41T80 was added to the board.
This RTC was selected for compatibility with the ORCA sensor suite, so that future
integration into the control scheme will be less complicated. It communicates with the
PIC over I2C, and it has a pin dedicated to outputting a user-programmable frequency
square wave. A PIC program was written which allows the user to initialize the
RTC’s time setting via HyperTerminal®. The Lithium C-cell battery then allows it to
retain this setting after the circuit has been powered down. The M41T80 supplies the
PIC with the year, month, day, hour, minute, second, and hundredth of a second. In
binary coded decimal (BCD) format. This data is read every time the PIC records an
averaged data point.
DataStorage
A Logomatic V1.0 by Sparkfun Electronics was employed to capture data
written directly to the serial bus to an SD card. A configuration file stored on the SD
card instructs the Logomatic to operate at the desired UART mode and baud rate.
The Logomatic offers ADC capabilities, as well, but these channels were unused in
this application. As such, the only signals required for the power measurement circuit
are the data transmit, file stop, and file reset lines. The stop and reset lines remain
high until the end of a sampling period, at which point they are dipped low for a short
time before returning to high to begin another sample set. These lines are controlled
by PIC output pins, which are then run through 2N3904 NPN transistors. The stop
and reset lines use pull-up resistors on board the Logomatic, so connecting the NPNs’
62
collectors to the stop/reset pins and their emitters to ground allows the voltage at the
pin to dip to zero when the transistor is turned on by the PIC. This dip in voltage
closes the text file being written to the SD card, ensuring validity of the data recorded.
63
2.5 Software
Brief mention has been made of individual software routines when the
hardware associated with them was presented. In this section a full description and
user’s guide to the PIC microcontroller programs and the MATLAB® post-processing
routines is given. The code for these programs can be found in Appendices C and D.
2.5.1 PIC Microcontroller Code
The PIC code was written, compiled, and debugged in Microchip’s
programming interface, MPLAB IDE, version 8.00. Given that the PIC18 family of
microcontrollers was used, the C18 Toolsuite (which includes the MPLAB C18
Compiler, MPLIB Librarian, MPLINK Object Linker, MPASM Assembler) was
selected during project file configuration. The only other project configuration setting
required was declaring 18f4523.lkr as the linker file, since the hardware
configuration bits were programmed into the code. The code, then, is written in a C-
based language defined by the C18 Libraries. The documentation for these libraries
and development tools is available on Microchip’s website [22].
The project consists of seven source files: WECfinal.c, SetClock.c,
ConfigRTCSq.c, ReadClock.c, I2CRandomRead.c, I2CByteWrite.c, and
ConvertTime.c. The main() function is contained in WECfinal.c, and the
functions defined in the other files are called from within the main function. The main
function also calls an interrupt service routine (ISR) called RTC_sample_ISR(),
which is defined within the same WECfianl.c file. Global variables that define the
sampling and record frequencies, record length, and resistor values installed in the
PCB are set at the beginning of this file as well. This means that when a change in
sampling frequency, record length, or current sense resistor value is desired, the
program must be recompiled, and the PIC reprogrammed.
The general structure of the code sends the PIC into a continuous loop of ADC-
sampling and data-writing directly after initial setup procedures. Each iteration of the
loop performs time-averaging on samples from the four ADC ports, reads the clock’s
64
time, and writes the time and data to the serial port. This loop runs for the duration
requested by the record length global variable before sending a signal to the Logomatic
to reset and create a new file on the SD card. Within the loop, each iteration’s timing
is controlled by a flag set within the ISR. The ISR initiates on every falling edge of a
controlled-frequency square wave signal sent from the RTC to the PIC; a counter in
the ISR keeps track of the number of samples collected before setting the flag to
indicate the data should be averaged and written to the serial port.
Upon initial power-up of the entire circuit, the PIC sends power to various
peripheral devices on the board, and the PIC routine prompts the user to initialize its
real-time clock. At this juncture in the code, the SetClock() function is called. The
initialization is necessary if the battery that preserves the RTC’s time setting has been
removed from the circuit at any time since its previous use.3 To complete this
operation, the PCB must be connected to a PC’s serial or USB port via the DB9
connector on the PCB. Running the Hilgraeve. Inc., Windows-compatible software
HyperTerminal, connected with 115200 baud, 8 data bits, 1 stop bit, and no parity or
flow control, allows the prompt “Set Clock YYMMDDHHMMSS>” to be displayed on
the PC screen upon circuitry power-up. The user must then respond with twelve digits
corresponding to the date and time before a carriage return. Since these values are
relayed directly to the RTC via I2C communications, they must fall within the
boundaries of the RTC’s registers’ 00-99 year (YY) range, 01-12 month (MM) range,
01-31 day (DD) range, 00-23 hour (HH) range, or 00-59 minute (MM) and second (SS)
range. If incompatible values are entered, the routine will freeze, and power must be
cycled to the circuitry. The SetClock() function is nearly identical to that written
by Tony Cimaglia for implementation of the RTC in the ORCA sensor suite.
3 Note that this function call should be commented out during the final compilation and programming before WEC deployment in order to avoid the need of user-input whenever power is cycled to the circuit. The RTC’s battery connection must be maintained during and subsequent to programming, but it is important to make this coding change before deployment to ensure that sampling is not completely halted during an unintended power cycle.
65
Next the main() function calls the ConfigRTCSq() function in order to set
the frequency of the square wave generated by the RTC, which in turn drives the
interrupt prompting the PIC to sample its ADCs. As mentioned above, the frequency
is hard-coded into the WECfinal.c file. The value used for testing during this project
was 512 Hz. All communications with the RTC are conducted via the PIC’s I2C bus.
Thus both the SetClock()and ConfigRTCSq() functions call the
I2CByteWrite() function to relay initializations and settings. In addition, the
main loop gathers current time data from the RTC over the I2C bus using the
I2CRandomRead() function. ConvertTime() then reformats the binary-coded
decimal (BCD) data into decimal format for recording. These three functions are also
heavily based on Tony Cimaglia’s sensor suite code.
As a final note on the PIC code, it should be emphasized that seamless
sampling at the prescribed data rate relies on calculated pairing of appropriate
sampling and recording frequencies. The 512Hz sampling rate and 8Hz record
frequency were chosen to accommodate the RC filter cutoff frequency of 50Hz.
However, the amount of time required for the PIC to carry out all the operations
within one iteration determines the upper bound of the sampling rate that the RTC
may request. Using the formulae on pages 232 and 233 of the PIC18f4523’s data
sheet, it was determined that four ADC acquisitions would require a minimum time of
105.6µs to complete. This is well within the 1.9ms window allowed by the 512Hz
interrupt operation. Nevertheless, every eighth of a second, all the averaging, clock
reading, and serial port writing operations in the main loop must be completed within
this 1.9ms window, or the data will be sampled but not recorded. That these
operations can be completed at this frequency is proven by the complete data record
supplied during testing. The RTC has the capability of outputting square waves of
certain frequencies, ranging as high as 32.768kHz. It should be noted that both the
ADC’s settling and acquisition times and the PIC’s ability to complete commands in
the allotted time must be taken into account when raising the sampling frequency in
pursuit of higher accuracy data.
66
2.5.2 Post-processing Matlab® Code
The main goal of the post-processing code is to determine the efficiency of the
WEC given a text file containing the generator data time series and the comma-
separated value (.csv) file from the OSSI Wavelogger containing the corresponding
wave time series. The names of these files are input as strings, along with the water
depth in the test location, as the arguments of the primary post-processing function,
defined in efficiency_spectrum.m. The files are imported into the Matlab®
environment as matrices and separated into individual array variables. The data from
the Wavelogger must be specially reformatted; this operation is completed by calling
the convertOSS_WEC() function. The function also plots the water level time series
in centimeters and outputs a seven-column matrix containing the date, time, and water
level in centimeters. The compiled time arrays generated by the WEC and
Wavelogger data files are compared to determine if they started recording data
simultaneously. This implies that the RTCs on each instrument must be perfectly
synced prior to deployment so that the time series data may be compared. Then, if
one instrument was powered on before the other, the disparity between the records’
start times is displayed to indicate that the user should edit the input files.
The routine then converts the ADC values into voltage and current values using
the calibration coefficients hard-coded into the script. From these values the
instantaneous power into and out of the DC/DC converter, the DC/DC converter’s
efficiency, the percentage of the time that the converter is being used, and the total
accumulated charge are calculated. The wave height is analyzed in the frequency
domain to identify peak frequencies and total energy into the system (via the area
under the wave power spectrum). The power out of the system is computed as the
average power emitted from the DC/DC converter over the course of the sampling
period. The efficiency of the system is therefore the average power generated divided
by the average incident wave power. The frequency domain analysis enables
determination of whether the WEC’s target frequency range dominates the excitation
forces. If needed, a subset of the total data record may be selected for a comparison to
be made between the efficiencies of the separate buoys under the same conditions.
67
3. Construction
All components of the WEC were machined at the Florida Tech Machine
shop or assembled in the Underwater Technologies Laboratory on the Florida Tech
campus. For fine-pitched soldering, the help of Tony Cimaglia and the ORCA
microscope were requested. This section details manufacturing procedures so that
future work on the project may be consistent or include improvements.
Coil
The coil dimensions and bank-winding geometry were designed according to
the equations for inductance given in section 2.4.1. Since the magnet would
eventually need to move freely through the inside axis of the coil in as close proximity
to the wire as possible, the wound wire needed to be epoxied and the former removed.
Initially a lathe was proposed to feed the wire at a controlled speed onto a former, but
students attempting this method discovered it was very apt to break the wire or cause
the shielding to split and short the coil. The coil-winding machine located at the
Applied Magnetics Laboratory in Melbourne may eventually be a good solution, but
because it does not have an operator or a manual, the hand-winding method was used
to quickly create a preliminary test coil. This test coil yielded sufficient energy so that
the method was used to quickly, albeit rudimentarily, wind the final coil used in
testing.
The former was constructed from a 1.625” outer-diameter PVC pipe covered
with Lithium grease and wrapped in wax paper to create lubrication for eventual
removal from within the coil. The wrapped pipe was inserted into two wide cardboard
68
rings, positioned apart from each other by the desired length of the coil. These served
as endstops to facilitate layering of the bank-wound wire, as shown in Figure 18. A
sturdier shielded 12-inch segment of
wire was soldered and shrink-
wrapped to the end of the magnet
wire before winding commenced to
give the coil’s electrical connections
reinforcement against wear and tear
(visible as the shorter, yellow wire in
the prototype shown in Figure 18).
The first 20 windings were wrapped
on the first layer to establish a base
that wouldn’t slide as additional
layers were wound into the
“crevices” between the wires on the layer below. After 2 layers had been wound
around a short segment of the pipe, a layer of West System epoxy (Fast Hardener) was
brushed on to begin giving the wires a medium in which to set. Although true bank-
winding, with clean layering of wires in the crevices of the supporting layer’s wires,
was the ideal goal, the hand-winding method degenerated quickly to simply striving to
keep tight windings as close to the first end of the pipe segment as possible and
working slowly toward the other end, applying epoxy along the way. The number of
windings was counted as winding progressed in order to match the design variable N.
One important feature was maintaining flat, 90° ends of the coil in order to keep
mating with the other generator pieces as smooth as possible.
After the epoxy had cured for 24 hours, the PVC pipe was slipped out of the
center of the coil, leaving the freely standing coil to mate with its supporting pieces. A
connector housing was crimped onto the ends of the free leads to provide for clean and
reliable attachment to the PCB.
Figure 18: Winding the generator coil
69
PCB
The schematic in Figure 15 was drawn in CadSoft Computer, Inc.’s EAGLE
Layout Editor. The traces were routed using the software’s Autorouter capabilities,
using a vertical default orientation for component-side traces and horizontal default
orientation for the bottom side. A ground plane was also added to the bottom side to
reduce noise. The excellon- and gerb274x- CAM files were generated to the
specifications of Advanced Circuits’ printed circuit board manufacturing, and the files
were checked for design rules compatibility using the FreeDFM online service. After
manufacturing, the components were soldered to the board in-house. The RS232 port
was then connected to a USB port on a computer via a serial/USB converter cable,
and the microcontroller was programmed using the PICkit2. The RTC time was
initialized, and then its separate battery attached to preserve the time setting. Plastic
adhesive-based stand-offs were screwed to holes in the PCB to allow for mounting
inside the Pelican case that houses the electronics.
LIG box
The electronics and coil are housed within a Pelican Case 1300 watertight and
corrosion-proof box, which was modified with a hole in the top and bottom to allow
the magnet to travel vertically through the coil. The challenge was designing a
completely sealed path for the magnet to travel while maintaining close proximity to
the magnet wire of the coil. A pair of o-ring-sealed bulkheads was fashioned from a
Type II PVC cylinder using a lathe in order to both support the coil and pressure-seal
the electronics from the weather elements to which the magnet is exposed (Figure 19).
The threading on the bulkhead endcap and its corresponding nut was accomplished
using a CNC mill. Closed-cell foam gasket material seals the junctures between the
bulkheads and the tubes supporting the coil and between these tubes and the coil. This
creates a smooth, 1.625-inch diameter tunnel through which the 1.5-inch diameter
magnet can freely travel. The magnet has ten inches of travel before the frame
carrying the Pelican case limits its motion.
The assembly design makes it possible for the coil to be replaced with a
maximum of 2 other fittings needing to be re-manufactured: the two disks interfacing
70
the coil with the white polyethylene tubes. As the tubes are 2.365 inches in outer
diameter, a new interfacing disk would require a 1.625-inch hole through the middle, a
2.365-inch indentation on one face, and another indentation of the new coil’s outer
diameter on the other face. When these are all assembled, the pressure from the
latched Pelican Case and the aluminum frame holding it ensure sealing of the
bulkhead junctures.
(a)
(b)
(c)
(d)
Figure 19: Linear Inductance Generator box with (a) bulkhead seal design drawings, (b)
bulkhead inside box, (c) circuit board and coil inside box, and (d) closed box displaying
through-hole magnet path.
71
Frame
The square-channel aluminum for the main frame was cut to dimension using
a mitre saw and then welded together with the solid rectangular bars of aluminum that
comprise the crossbars. The 1.5-inch holes in the crossbars were milled out using a
CNC machine. Inch-long segments of polyethylene with a 1.1-inch inner diameter
were press-fitted into the holes to serve as low-friction bearings, keeping the 1-inch
diameter, buoy-driven aluminum rod oscillating vertically. The cage stabilizing the
LIG box allows the Pelican Case to be slipped into place from above and a crossbar to
be screwed across the top to apply enough pressure for the coil to stay in alignment.
Neoprene rubber pads on the inner faces of the cage also help in maintaining
alignment. Slits for the stainless steel banding were milled into the 6-inch-wide C-
channel for attaching to the piling, and the 22-inch section was bolted to the backplate
of the frame.
(a)
(b)
(c)
(d)
Figure 20: Aluminum frame, C-channel strapped to piling, and magnet on its support rod
72
The translator rod holding the magnet consists of two segments of 1-inch diameter
solid aluminum rod, each threaded at one end axially with a ¼”-20 tap. A threaded
rod passes through the hole in the ring magnet and into the tapped holes. At the top
and bottom of this rod, through the cross-sections, are tapped a ¼”-20 hole so that
polyurethane rubber rectangles can be screwed in tangentially to serve as vibration
relief while coupling the translator to the buoy rod via the horizontal braces. The top
horizontal brace was welded to the rod driven by the buoy, but for convenience in
assembly and dismantling, the bottom support was screwed into the rod.
Buoy
The buoys were carved from polystyrene foam blocks using a CNC mill in the
Florida Tech Machine Shop. The G-code files were generated via MasterCam
software from the .igs files saved from Autodesk Inventor drawings. Each buoy was
manufactured in two halves to allow for an ABS plastic tube to be screwed into place
in the center. This 1.5-inch OD tube, which stretches the entire length of the buoy,
serves to both guard the foam from damage as the aluminum rod is inserted and to
secure the buoy at the intended angle of incidence. A pin inserted through a hole in
the rod and a hole in the aluminum dowel aligns the buoy. In future versions, the
buoy may be left free to rotate so that the entire apparatus would not need to be shifted
as wave direction shifts, but for this prototype, the angle variable needed to be
eliminated.
The foam was then covered with 6-oz. E-glass fabric and DOW Chemical
Company’s 331 Epoxy Resin. Epoxy needed to be used for the first coat, a least,
because polyester resin melts polystyrene foam. Due to the simplicity of the
geometries, a careful handworking layup process was sufficient for obtaining a suitably
smooth surface, without the need for vacuum bagging or creating a female mold.
Sanding of the final forms was necessary before applying the yellow polyester gel coat,
and a clear coat was also applied on the outer surface.
In order to add receptacles to hold weights, four holes were drilled into the top
of each buoy using a Dremel Tool to cleanly pierce the fiberglass and an extended-
73
length drill bit to reach 14 inches into the foam. PVC pipes (2x 1.5” diameter and 2x
2” diameter), capped on one end and threaded on the other were inserted into the
holes, and expanding watertight glue was used to secure them in place. A threaded
endcap is screwed into place after the weights are inserted to seal the receptacles.
(a)
(b)
(c)
(d)
(e)
(f)
(g)
(h)
(i)
Figure 21: Buoy CNCing (a-b), fiberglassing (c-e), gelcoating (f), weight receptacle
insertion (g), and finished product (h-i).
74
4. Testing Procedures
4.1. Calibration
4.1.1. ADC analog input block calibration
This section lists the steps by which the post-processing coefficients for each of
the four ADCs were determined. As mentioned in the electronics segment above, a 0-
4.096V, 12-bit ADC ideally assigns an additional count for every 4.096V/4096 ≈
1.0mV jump in voltage, but true operation can only be ascertained in the final circuit.
This is especially important for the current-sense measurements because the ADC
voltage readings are indirect measurements of the current signals and depend on the
operation characteristics of the intermediate amplifiers. The ADC values were viewed
via HyperTerminal, and the corresponding voltages and currents driving the ADC
values were recorded to yield the coefficients displayed in Appendix F.
First, to calibrate the coil/supercapactor voltage ADC, the voltage divider was
kept intact, with 1MΩ as the upper load and 2.2MΩ as the lower load, but the
DC/DC converter surfboard was removed from the circuit. This isolated the testing
from the effects of the relay switching on when the coil achieved the threshold voltage.
A perfect follower transistor circuit (eg. containing a LF411 op amp, a TIP102
Darlington transistor, and a potentiometer) was used to apply a controlled voltage to
the supercapacitor terminals. Intervals of 0.5V between 0 and 5.6V were found to be
appropriate. The voltage was allowed to settle before each ADC digital value and the
corresponding voltage on the coil were recorded.
75
The load voltage ADC was calibrated in the same method as the coil, except
that different components were removed from the board during the process. The
controlled voltage (0 to 5.0V in steps of 0.5V), was applied directly across the voltage
divider, so that the DC/DC converter remained removed, thus avoiding forcing
voltage backwards across it. For safety, the supercapacitor was also removed. Rather
than the typical 2kΩ-magnitude loads used during operation, higher 1MΩ or 680Ω
resistors were inserted into the load voltage divider to so that the perfect follower
circuit was able to source sufficient current at the high end of its voltage range.
The current-sense ADCs’ calibrations were slightly more involved. The load
current calibration requires that the DC/DC converter remain uninstalled and a 10Ω
resistor be inserted as the sense resistance. Depending on the range and accuracy
being tested, a pair of identical resistors between 560Ω and 1kΩ was loaded into the
load slots. An ammeter was installed in series between the power supply and the high
side of the current sense amplifier. The power supply unit was set to 5.0V with the
output current-limited, starting at 0mV. The current over the 560Ω resistor pair was
varied between 0 and 4.1mA, resulting in 41mV across the 10Ω sense resistor. The
100x gain op amp thus supplied up to 4.1V to the ADC, which saturates at 4.096V.
The calibration coefficient was determined by recording the current measured along
with the corresponding ADC value.
Using higher load resistance values limits the current to below this ADC-
determined saturation current of 4.096mV, since the 5.0V setting actively determines
the power output from the supply at times when the impedance is so high that it draws
less than the set current limit. It was determined that testing the current-sense
components with a few varying load resistance values was necessary to ensure that the
high-side resistor setup behaves consistently, especially at low current values. This
precaution was taken because current-limiting the power supply to such low
amperages was observed to prevent the preset 5.0V from being supplied, as well. This
means that, while the ammeter-measured current may be known, the “high side” in
the load resistor series could be below its intended operational voltage. When it is
very low, perhaps within 1.3mV of ground, the op amp is unable to amplify the signal
dependably. The MAX4372 op amp has a 0.3mV typical input offset voltage, and
76
although its full-scale common-mode input range is listed at 0-28V, this means that the
difference between the input pins can be as low as zero, but the voltage value at either
input pin may be read as 0.3mV when the actual voltage level lies in the range of 0-
0.3mV.
In order to calibrate the ADC measuring the current entering the DC/DC
converter, the DC/DC converter was removed, and a 1.2k to 1.8k resistance value was
inserted between pins 4 and 5 of the DC/DC converter header. This allowed the input
voltage to drain to ground without the uncertainty of the DC/DC converter’s
adaptable input impedance. An ammeter was set in series between the current-limited
power supply and the 10Ω sense resistor’s high side. Again, the current was varied
between 0 and 4.1mA (or, again, the maximum current dictated by the resistance)
using the power supply’s control knobs. After the ADC values and current levels were
recorded, the circuit was tested with the DC/DC converter in place to verify that its
input impedance never dropped below the lowest resistance tested. If so, the ADC
values would have climbed out of the bounds of the calibration data, and testing of a
lower resistance value would have been required to accommodate the higher current
draw.
4.1.2. Frequency testing
Due to the emphasis on frequency targeting in the design of the WEC, it was
very important to test the functioning of the PCB module under a variety of controlled
frequencies to understand its performance before deployment. The LC circuit was
designed for resonance over a bandwidth of 0.67 to 2 Hz, so operation over this
frequency band needed to be verified. Of equal importance, the maximum current
load sustainable at each frequency needed to be determined in order to prevent
saturation of the DC/DC converter output during deployment. With the existing
rectification circuit, saturation during eventual battery-charging applications would
simply mean that available energy would be drained or not collected, but the battery
would constantly receive energy. However, during the absorber performance
comparison, it would mean the inability to distinguish which absorber actually
77
captured more energy. To avoid saturation, the load resistance must simply be
reduced. This issue was discovered when initial circuit testing with simple hand-
controlled excitation saturated the capacitor with various high-resistance loads.
During frequency testing, the original objective was to determine the load resistance
value that would give a 50% ratio of on-to-off time during the record. This would
allow the appropriate resistance value to be installed during deployment, based on
measurement of the current wave frequency and magnitude. In the end, the trials
allowed for targeting of the load resistance’s magnitude, but due to the conclusions
derived in the process, fine-tuning of the resistance was not pursued.
In order to characterize the load capabilities of the LC circuit under controlled
frequency conditions, the PCB was tested with the oscillation table in the Florida Tech
MAE department. The oscillation velocity is controlled using the frequency and
voltage amplitude settings on a signal generator. The coil was secured to the table,
and the magnet, attached to its aluminum rod, was affixed to the moving plate on the
oscillating platform, as shown in
Figure 22.
Three main observations
resulted from the trials.
• The ability of the PCB’s
capacitor to charge is heavily
affected by the specific
combination of frequency and
stroke length, rather than
either alone. However,
because rather extreme
conditions (i.e. high energy,
long period waves) in the lagoon would be needed to reach the low frequency
threshold of this coil, wave heights will be the more limiting factor. Higher
frequencies do create higher magnetic flux derivatives, allowing the capacitor to
charge faster, but high frequency oscillations of low magnitude cannot provide a
sufficient voltage spike to charge the capacitor to 5V. Thus the DC/DC converter
Figure 22: Frequency calibration test setup
78
never turns on for low-magnitude oscillations. The detriment of a lower frequency
is pronounced for a given wave height, but the WEC is much more likely to
experience short-period waves with too little height than tall waves with too low a
frequency.
• A mild drift in the table’s position over time affected the capacitor’s charging
profile enough to yield appreciable differences between two trials of the same input
settings. As the oscillation’s zero-position approached the end of the coil, the
charging time for the capacitor decreased. Quantifiable patterns were not derived
from these observations, but variation by up to 65% between trials did demonstrate
that the circuitry component values, excitation frequency, and excitation
magnitude alone cannot predict the circuit’s performance. Median position also
plays a governing role in the capacitor’s ability to charge. For this reason it is
important to ensure that both buoys begin their trials at the same equilibrium
position with respect to the coil.
• Due to the high variability of the circuit’s performance under similar sets of inputs,
the goal of a 50% on-to-off ratio for determining load resistance was traded for
determining a load that is capable of causing saturation under some conditions and
of discharging under other, only slightly modified, conditions. This selection of
time in operation should contribute to more reliable detection of differences in
power take-off abilities than using current measurements alone. A load value of
10kΩ was selected.
A table of results of the oscillation table testing is given below. The input test
conditions, the average power, and the percentage of time that the DC/DC converter
was outputting power are included. An example comparing two capacitor charging
profiles is plotted with the output power in Figure 23. The test conditions that
generated the plots are a 1Hz oscillation with a 7.70cm stroke length and a 1.5Hz,
5.13cm stroke, both draining into a 10kΩ load. For the combinations shown, the
higher frequency induced a higher percentage of power generation time, but as can be
seen in Table 5, some pairs of trials exhibited greater dependence on a longer stroke
length than on frequency. An overall efficiency based on the force needed to
79
accelerate the magnet, the magnet’s velocity through the coil, and the output power
indicated that a very low efficiency near 0.26% was exhibited by the generator system.
Improvements in generator efficiency are discussed in Chapter 6 below.
Table 5: Oscillation table calibration trial results
Frequency (Hz) 0.75 0.75 0.85 0.85 1 1 1.5
Amplitude (cm) 8.98 10.26 7.92 9.06 6.74 7.70 5.13
Load resistance = 10kΩ
Record time (s) 124.89 162.05 103.36 121.45 61.65 234.65 138.43
Avg. power (mW) 0.059 1.509 0.087 1.518 0.080 0.095 0.237
“On” time ratio 5.31% 99.92% 7.48% 99.90% 6.85% 8.57% 19.88%
Load resistance = 1kΩ
Record time (s) 110.62 102.99 72.72 --- 57.22 61.77 93.52
Avg. power (mW) 0.546 1.52 0.877 --- 0.77 01.194 1.623
“On” time ratio 3.77% 11.20% 6.07% --- 5.35% 8.73% 11.94%
0 20 40 60 80 100 120-1
0
1
2
3
4
5
time (s)
DC/D
C converter output
Power out (mW)
Coil Voltage (V)
0 20 40 60 80 100 120
-1
0
1
2
3
4
5
time (s)
DC/D
C converter output
Power out (mW)
Coil Voltage (V)
Figure 23: Capacitor charging profiles and DC/DC converter power output plots showing
the difference in performance between 1Hz, 7.7cm oscillations (left) and 1.5Hz, 5.1cm
oscillations (right).
80
4.2. Deployment
The primary field testing of the wave energy converter was conducted on a
piling near the eastern coast of the Indian River Lagoon in Brevard County,
approximately four miles north of Sebastian Inlet. This location was chosen for the
convenience of an accessible dock nearby. Because of the eastern shoreline location,
the low wind climate of the summer, and the need to obtain wave heights as large as
the design wave of the hyperbolic curve, it was necessary to select days for testing
during which the wind originated from an at least partially western direction. Data
was collected on 3, 12, 13, and 26 August 2008.
During setup, the C-channel was strapped to
the piling using two 152-sized hose clamps threaded
through slits on the legs of the C-channel. Originally
¾” stainless steel Pelco banding and buckles were
used, but the need to shift the height of the apparatus
on the piling with tides and with the differing floating
levels of the two buoys proved the hose clamps to be
more convenient with the current hardware. The frame
was bolted using four ½”-13 bolts through the
backplate, which contains threaded holes. The frame
was oriented toward the direction of the approaching
waves. By standing on a ladder, it was possible for a
single person assemble the remainder of the apparatus.
The magnet’s translator rod and the rod onto which
the buoy is inserted were coated with lithium grease,
threaded through the polyethylene bearings and in turn
coupled to each other with the bottom horizontal
brace, as shown in Figure 25. The magnet was also
screwed into place on the rod, but the top rubber
stoppers and screws affixing the buoy direction could not be tightened into place until
the electronics box was inserted. The long buoy rod was then inserted into the tube at
Figure 24: Deployment site
Deployment site
Sebastian Inlet
81
the buoy’s center and secured with a plate threaded into the bottom of the rod. At this
point it was possible to verify that the buoy was floating at the correct height, such that
its movement was not limited more often by its top extent than its bottom extent, or
vice versa.
Figure 25: Frame assembly and deployment
The WEC circuitry was preprogrammed with the RTC time synced to the
wave gage’s RTC and preserved with the 3.6V battery attached. The PCB was
screwed into its place in the box on land, and immediately preceding deployment, the
main power battery was attached. After the box was set in its place in the frame and
the final rubber stoppers and screws installed, the official start time was recorded such
that premature data points could be ignored in the data record.
An Ocean Sensor Systems Wave Logger II with a 0.5m staff was deployed on
the dock adjacent to the WEC’s piling. Although measuring in the immediate
proximity is preferable to the dock’s approximately five-meter distance, measuring
from the same piling would have made obtaining data unaffected by the WEC’s
movements impossible. Data was gathered in 20-minute-long files, and the wave
direction noted. After 2-3 files had been collected for one buoy, the WEC was
disassembled only to the point where exchanging the buoys was possible, and a new
set of WEC and wave gage files was collected for the second buoy.
82
5. Results and Conclusions
5.1. Practical Observations
A few design modifications became necessary during final planning and the
early stages of deployment. Initially, the buoys were intended to float completely
submerged, with the top faces level with the water surface. After the final weight of
the buoys and hardware was recorded, it became evident that their own weights would
not nearly offset the buoyancy provided by displacing the full volumes, and added
weight would be needed to submerge them to the desired depth. The hyperbolic curve
buoy was indeed deployed with enough weight added (36lbs) via fishing sinkers to
nearly submerge it properly, but the added inertia prevented almost all movement of
the buoy. For this reason the final deployment conditions were modified such that the
buoys both weighed the same amount (and therefore displaced the same volume of
water) rather than floated at the same level. For this to occur, 4.25lbs of weight were
added to the hyperbolic curve, bringing the finished weight of each buoy to 13lbs.
(a)
(b)
(c)
Figure 26: Floating levels of the buoys. (a) Curved buoy with 21 lbs
added. (b) Curved buoy with 4.25 lbs added to bring it to the cylindrical
buoy's weight. (c) Cylindrical buoy without weight added
83
Not sinking the cylindrical buoy does not affect its expected performance, as it was
designed to simply harvest the potential component of the wave energy. By riding
atop the wave surface, the cylinder experiences strictly potential energy excitation.
This modified geometry, however, does compromise the theory behind the hyperbolic
curve’s performance because it cannot float at the level for which its curve is intended
to match the water particle movements. Nevertheless, it is unquestionable that the
hydrodynamic effect of the added inertia impedes the motion of the curved buoy, so a
modified experiment was necessary to create a closer contest. Clearly, adding the even
higher weight needed to sink the cylinder would impede its motion to a greater degree,
rendering this WEC ineffective for such a comparison.
The conclusion gained from this segment is that other hydrodynamic
properties (including body mass, added mass, and the change in buoyant force with
respect to time) overwhelm kinematic effects for bodies floating in heave. Some
suggestions for changing the buoy shapes or adding a mechanical spring force in order
to revisit the issue of inertia versus proper submersion are given in Chapter 6 below.
Nevertheless, other valuable and more quantitative conclusions were possible from
testing the adapted setup, and these are discussed next.
84
5.2. Testing Conditions
Enumerating the testing conditions must include both circuitry component
values and the wave climate under which the WEC was deployed. As shown in Table
6, the initial capacitance values were changed for subsequent deployments. This is
because the capacitor charge and discharge rates under hand-driven excitation were so
steep during the first deployment that a more gradual charging profile was desired for
distinguishing between the two buoys’ performances during more favorable wave
climates (see Figure 28). Because the 0.47F supercapacitor was unable to charge to
5.0V during oscillation table trials, a median value of 22000µF was used for the
remainder of the deployments. The values that remained constant for all trials were
the inductance (measured as being between 0.1H and 0.25H), and the load resistance
of 10kΩ. The approximate water depth was 1.2m in the immediate vicinity of the
piling, except for during the last deployment on 26 August 2008, when storm water
runoff increased the depth to 1.7m.
Table 6: Deployment log
Date Wind Direction
Avg. Wind speed4 (m/s)
C (µF)
Tp (s)
Hs (cm)
Hmo (cm)
Avg. Wave power (W/m)
3.08.08 190˚ 2.41 4700 1.15 0.66 0.57 0.037 12.08.08 215˚ 2.91 22000 1.34 9.44 7.10 6.794 13.08.08 240˚ 4.96 22000 1.66 15.24 11.71 24.668 26.08.08 220˚ 4.25 22000 1.55 8.73 8.48 11.625
From the wave records gathered by the Ocean Sensor Systems Wave Logger, a
time series analysis and a spectral analysis were conducted in Matlab® to characterize
the input wave conditions. First, the time series of water level data was de-trended to
remove dependence on tides from the spectral analysis. Then a zero-up-crossing
routine was conducted on the data to determine the most numerous periods and wave
4 Recorded from the National Weather Service log of daily wind from the Melbourne International Airport [28]. Given the variability of wind speed over the course of the day and across the sixteen miles that separate the deployment site from the airport, these wind values can only characterize the general wind conditions from the day
85
heights during the course of the deployment. The histograms for data collected on 13
August 2008 are displayed in Figure 27.
13:55:12 14:09:36 14:24:00 14:38:24 14:52:480
10
20
30
40
time (hh:mm:ss)
Eta (cm)
0 500 1000 1500 2000 2500 3000-20
-10
0
10
20
30
time (s)
Eta (cm)
0 0.5 1 1.5 2 2.5 30
100
200
300
400
500
T (s) 0 0.1 0.2 0.3 0.4
0
50
100
150
200
250
300
350
H (m) 0 2 4 60
0.5
1
1.5
2x 10
-5
frequencies (Hz)
Sxx
Figure 27: Incident wave analysis from 13 August 2008. Raw and de-trended time series
(top) wave period histogram (left), wave height histogram (center), and wave power
spectrum (right).
Encouragingly, the histogram of wave heights shows a similar shape to the
narrow-banded Rayleigh distribution, indicating that in the IRL, targeting the WEC’s
absorber and circuitry resonance frequencies to the concurrent wave climate should
improve energy conversion. The narrow-banded spectrum observation is supported by
the steep peak in the power spectrum. A bimodal spectrum, for instance, would
require targeting both “predominate” wave properties, and a broad-banded spectrum
would similarly indicate that a large range of LC values would need to be active
simultaneously to take advantage of most of the available energy. This is possible with
switched capacitance control, but the task should be simpler to tune when vastly
divergent values are not required. The significant wave height, Hs, or the average
86
height of the tallest third of the waves, was determined using a cumulative count from
this histogram. The variance of the wave displacement was used to calculate the
significant wave height, Hmo, spectrally. Slight differences yielded by the two methods
for determining significant wave height were logged. The peak wave period was
determined from the frequency at which the power spectrum peaked.
The measurements allowed for the incident wave power to be calculated as
being between 37mW and over 24W per meter of wave front during various days of
testing. Approximately 6W was measured repeatedly. While the low end of this
range is much too weak to support the ORCA sensor suite, all but one day of data
collection registered energy levels that should be able to support the sensor if the WEC
were eventually optimized to achieve 5% efficiency. Without disregarding the
admittedly selective choice of deployment dates and times according to wave energy
potential, this does verify the meteorological hindcasting model’s assertion that
reasonable efficiency can be expected to support the sensor even during the annual
summer lull in wave climate.
Another important observation from the extended wave records during each
deployment is that the significant wave height in the IRL is very sensitive to shifting
wind speeds and tides. This is evident in the plot of the raw water level data in Figure
27. For this reason it is important to take the short-term incident wave climate into
careful consideration when determining the comparative performance between the
cylindrical and hyperbolic curve buoys.
87
5.3. WEC Performance Results
In order to arrive at an unbiased comparison between the two buoys’
performances, the 20-minute wave record associated with each set of WEC data was
divided into subsets, and a data windowing routine was conducted on each to
determine the shorter-term wave properties through spectral analysis. This method
contributes to both a more accurate overall wave climate calculation and the ability to
select segments of data during which both buoys were truly subjected to the same
significant wave heights. Table 7 and Figure 28 show the results of this comparison.
Table 7: Comparative performance characteristics for the cylindrical and hyperbolic curve
buoys
Cylinder Buoy Hyperbolic Curve Buoy
Hmo = 8.49cm
Tp = 1.50s
Hmo = 8.47cm
Tp = 1.66s
Average capture width incident power (mW)
4707 5333
Average power output (mW) 0.1251 0.0446
WEC efficiency (%) 0.00266% 0.00084%
Percent of time operating 8.30% 3.11%
mA-h generated per hour of deployment 0.053 0.029
Hmo = 16.44cm
Tp = 1.495s
Hmo = 13.62cm
Tp = 1.268s
Average capture width incident power (mW)
18543 10234
Average power output (mW) 0.140 0.0636
WEC efficiency (%) 0.00076% 0.00062%
Percent of time operating 9.87% 4.50%
mA-h generated per hour of deployment
0.412 0.189
88
0 200 400 600 800 1000 1200-15
-10
-5
0
5
10
15
20
25
time (s)
Eta (cm)
Power out (mW)
Coil Voltage (V)
0 200 400 600 800 1000 1200-5
0
5
10
15
20
time (s)
Eta (cm)Power out (mW)Coil Voltage (V)
Figure 28: Capacitor voltage and DC/DC converter power output backdropped by the wave
displacement time series acting on it during the deployment. Results from the clinder buoy
are shown in the top, while the comparatively slower charging profile of the curved buoy is
shown on the bottom.
89
The first comparison relates nearly identical excitation conditions, although
the curve buoy experienced slightly more incident power. The second comparison
shows to less similar excitation conditions, this time with the cylindrical buoy
experiencing more incident energy. Clearly the higher efficiency, longer active
operation time, and denser charging profile over the same timescale indicate that the
cylindrical buoy was able to absorb energy from the waves more effectively than the
hyperbolic curve in both the trials. Although these results were not anticipated by
theory, they were not surprising given the observed motions of the respective buoys.
Direct measurements of oscillation magnitude were not collected, but the cylindrical
buoy visibly oscillated with greater frequency, if not amplitude, under the same wave
excitation conditions. For objective comparison, a buoy position sensor should be
implemented.
These results beg for an explanation for the specially-designed buoy’s inferior
performance. As mentioned above, the inertial term governs the buoy’s acceleration.
A high body mass will prevent substantial acceleration given a certain combination of
external forces. This issue was skirted by setting the buoys’ weights equal, leaving
added mass and buoyant force considerations to govern the effect of the excitation
force from Equation 25 on the buoy’s acceleration. Nevertheless, the inertia of
individual water particles is low, and a large solid mass of any shape cannot move
with the dynamics of a water particle. Modifying the composite density of the heaving
body affected the buoyant force behavior; the m in the zm && term could not be modified
without affecting the forces on the right-hand-side of the equation. Without a constant
buoyant force, the natural frequency becomes very dependent on the changing depth
of submersion of the buoy. For the cylindrical buoy, its large horizontal cross-
sectional area at every z-coordinate means that any small change in water surface level
it encounters before beginning its heave motion immediately submerges a large
volume of the buoy. The buoyant spring force acting on the cylinder is therefore
proportionally greater than that acting on the curve by the difference between
submerged volume, given a certain rise in water level. A comparison of kinematic
contribution to wave absorption would therefore need both buoys to have equal
horizontal cross-sectional areas at every z-coordinate.
90
Additional suggestions for resolving the hydrodynamic issues affecting the
heaving buoy are presented in the next section, but the overall performance of the
WEC should also be mentioned here. The overall efficiency did not nearly approach
the 5% target set by the wave climate and the sensor suite’s power requirements, but
the ability to obtain a measurable power output from the simple, rugged apparatus
gives practical evidence that the waves in the IRL offer a promising source of power
for small-scale electronics. A nearly 7000% increase in efficiency is needed to support
the ORCA sensor suite during the summer months. The first component upon which
improvements should focus is the power take-off section. While further developments
to advance the performance can also be carried out, some revisions to the existing
setup should be completed first.
It was recognized during the data analysis phase that the intended generator
resonance and maximum power transfer impedance matching did not in fact occur in
the current hardware configuration. Because the rectifier prevented discharge of the
capacitor back to the inductor, current flows toward the capacitor only, and only when
the voltage induced by the magnet in the coil is greater than the capacitor’s voltage by
at least two diode drops. At other times, when the wave excitation forces are too low
or the capacitor voltage is too high, the generator terminals form an open circuit, and
any energy generated by the coil is dissipated by its internal resistance. Due to the
small self-capacitance of the coil, the voltage is likely to spike quickly, so voltage
spikes sufficient to overcome the diode drop may be quite common even for small
waves. However, their durations are short-lived as the current flows into a large
capacitance, and without a significant imaginary component to the generator’s
impedance, no power can be preserved as reactive power. Adding the supercapacitor
in parallel with the coil upstream of the rectifier would accomplish this purpose.
Tuning the LC circuit to be allow for total system resonance with the wave excitation
force, as in 30, would allow for optimum operation of the WEC. In this case, a
second, much smaller capacitor would need to replace the downstream capacitor to
power the load circuitry. This smaller capacitor would only need to be large enough
to sustain the DC/DC converter and its load over the course of half a wave period,
until the next spike in voltage occurs.
91
The open-circuit impedance of the coil, or source impedance, is, as stated
above, 175Ω. When the coil voltage spikes sufficiently, the capacitor and remaining
downstream circuitry become the load. Due to the downstream capacitor, the value of
this load depends on the frequency of the coil signal, which in the current
configuration is solely dependent on the magnet’s traveling frequency. Consider the
22000µF capacitor used for testing and the design wave frequency of 5.236rad/s.
Assuming that the buoy were to travel at the wave frequency, the value of the load
impedance would be 8.66Ω whenever the DC/DC converter is switched into the
circuit as coil voltage spikes. (This calculation assumes the measured 40% DC/DC
converter average efficiency, an average capacitor voltage of 4.25V, and a load resistor
of 10kΩ.) If the DC/DC converter is switched out of the circuit during the spike, the
capacitor-dominated load impedance is negligibly higher at 8.68Ω. In both cases the
load is phase-shifted by -90˚. The implications of these impedance levels are that most
of the energy is dissipated within the coil because the load impedance consisting of the
supercapacitor and DC/DC converter circuitry is so much lower than the source
impedance, consisting of the coil. Maximum power transfer for any electrical system
occurs when the source and load have impedances that are complex conjugates of
each other. Hence the need to return a portion of the reactive energy to the
mechanical system in order to compensate for reactive impedance from added mass
and buoyancy creates a trade-off between total system resonance and circuitry power
transfer. In combination with the very important issue of creating a truly resonant LC
circuit, this optimization should be considered in future versions. If the mechanical
components can be designed such that the system resonance coincides with the
excitation force, designing the LC circuit to have no resultant reactive component at
the excitation frequency optimizes both components. Mechanical tuning, however, is
likely to be harder than electrical tuning, and therefore the optimum power transfer is
liable to be sacrificed for a control method that allows for better absorption and thus
higher total power generation. This is accomplished by adding [C(ω)]-1 to the
numerator and L(ω) to the denominator in 30 to bring the system oscillation back to
ω0. In addition, the load must contain a method of compensating for the DC/DC
92
converter being removed during periods of low capacitor voltage, such that load
impedance levels are maintained.
An improvement in efficiency of the PCB can be achieved by replacing the
relay circuitry with a MOSFET to control the DC/DC converter’s activation. The
highest DC/DC converter efficiencies are achieved when the power supplied to it is
sufficient to maintain an output current above 100mA. The efficiency of the
TPS61202 drops extremely quickly for low output currents and low input voltages.
The latter issue was solved by using the relay and microcontroller code, but in a self-
sufficient version of the WEC, low power consumption by the control circuitry will
determine whether the generated power will be sufficient to maintain the higher output
currents needed for 90% efficiency and higher. The DC/DC converter efficiencies
ranged in general between 30% and 60% during data collection.
93
6. Recommendations for Future Work
In order to facilitate future improvements, this section enumerates areas of
development that this current research indicates will be most crucial to increasing the
WEC’s efficiency enough to support the ORCA sensor suite.
Real-time tuning for wave conditions, directions, and tides.
Currently the load resistance consists of a pair of resistors inserted into the
circuit with pin headers that can only be interchanged manually. As indicated by the
frequency calibrations, the value of the load resistance determines how quickly the
capacitor discharges, and therefore, the load value would ideally shift for different
wave conditions and generator frequencies. A maximum power point tracking
algorithm, which adjusts the source and load impedances in real time by switching the
signal frequencies on resistors, capacitors, and inductors as needed according to the
power output of the DC/DC converter, is a promising avenue for tuning the circuit’s
performance.
In order to adapt to changing directions without manual rotation of the
apparatus on the piling, any directional buoys should be made self-orienting, such as
with vanes attached in the downstream direction.
Another process that must be made automatic is adjustment to tidal levels.
Because of the sensitivity of the coil to the magnet’s median position in its oscillation,
the small effect o tidal rise affects the efficiency of the system appreciably. Since
decreasing the length of a coil also increases its inductance, a favorable option seems
to be attaching multiple shorter coils axially and switching each coil into the circuit
94
when its level is appropriate for the floating buoy’s position. Another solution to the
tidal issue is to affix the entire generator and frame to a floating ring that encircles the
piling such that they all move with the tides, and thus the absorber could always float
at the same position in relation to the coil. This adaption would also prepare the
system’s design for operation as a free-floating buoy in the open ocean, where no
pilings are available for anchoring.
Deployment considerations
Changes that would vastly improve the convenience of deployment include
easy shifting of the device height on the piling and access to data and the circuitry
during WEC operation.
Currently the hose clamps must be loosened and re-tightened in order to slide
the device as a unit vertically on the piling with tidal changes. Although multiple
holes were drilled into the backboard to give the frame mobility with respect to the C-
channel, unscrewing and re-screwing the bolts is not in fact more convenient, and it
allows only for integral, rather than continuous, selection of height. Milling slits into
the backboard to serve as tracks for bolts secured in the backboard would allow the
frame to be moved easily while a longer-term solution to tidal changes is developed.
The addition of a segment of 0.95” diameter aluminum rod to the bottom of
the buoy-support rod will allow for smooth, continuous movement in larger wave
climates than is now possible. This can be done by milling a short rod to the correct
diameter and threading a ¼”-20 hole into each end axially, so that a threaded rod can
secure the extension at its top end, and the buoy’s bottom plate can still be screwed in
at its bottom to hold the buoy in place.
Modifying the electronics box to allow for accessibility to the circuit board
without any disassembly of the WEC frame during operation would prevent data loss
due to circuitry issues during deployments. Rotating the box to allow its lid to open
from the side, rather than the top, is a good first step. Orienting the circuit board such
that both batteries, as well as the SD card and programming headers, are accessible
without removing the PCB from the box would increase convenience, as well.
95
Ultimately, streaming data to an LCD display visible from the outside of the box or
even transmitting data wirelessly would greatly reduce the difficulty of deployment.
Buoy shape modifications
Since the primary focus of this research was to determine the performance
differences between a buoy that takes advantage of solely potential wave energy and
one that also takes advantage of kinetic wave energy, suggestions for modifications to
create a comparison unbiased by other hydrodynamic effects are made here. Although
thorough modeling of all hydrodynamic parameters is recommended before any
significant expense is committed to manufacturing, the primary issue is hypothesized
to be the horizontal cross-sectional area differences between the buoys. While the
total volumetric displacement for two buoys of equal weight is the same, the cylinder
displaces all this volume over only 6.6cm of submersion, while the hyperbolic curve
does so with its bottom floating 16cm under the surface. In order to make the buoyant
force acting on each buoy the same for any wave height, the cross-sectional area at
every level of the hyperbolic curve should be made equal to those on the cylinder,
meanwhile maintaining the special curve at the forward face. This requires an
interesting geometry of the back face of the curved buoy, or a cavity in the middle of
the cylinder to provide reduced inertia and buoyant force at that level. Furthermore,
the back sides of the buoy should be identical in order for diffraction effects not to
interfere with the comparisons.
The primary issue to be dealt with concerning the hydrodynamics is the
inertial force involved in sinking the buoys. Two possible solutions are adding a
mechanical spring to impart a continual submersion force on the buoy and creating
holes in the centers of the buoys to reduce the body mass. The first solution provides a
method for substituting the spring’s restoring force for the restoring force currently
served by the buoy’s weight, thereby maintaining submersion while reducing inertia.
The second solution proposes a scheme in which the buoy contains vertical holes
penetrating its entire depth. Such holes would allow water to fill the tubes at the
trough of the wave but stay at the same inertial level as the buoy rises at the crest, thus
emptying out of the tube partially. While a solid body cannot move with the dynamics
96
as the same volume of individual water particles, this solution would reduce the
movement-minimizing inertial force on the buoy, with minor effects of increased
viscous drag and an altered added mass.
Another naval architecture-related improvement is the distribution of added
weights in the buoys, particularly in the hyperbolic curve. Space considerations
dictated that the weight receptacles be installed at the top of the buoys and behind the
zy plane separating the curve from the volume that encloses the rod. The end result,
however, was a natural moment about the y-axis of the hyperbolic curve buoy, since
the center of gravity and center of buoyancy are not vertically aligned. This adds to
the frictional force acting on that supportive rod’s bearings, thus further impeding
motion.
Again, detailed hydrodynamic modeling should be carried out prior to
modified field experimentation. In addition, a useful test for determining whether
wave mechanics-based design is worth further investigation is wave tank testing with
the design wave. While the IRL served as a platform for testing in true deployment
conditions, the wave mechanics of waves other than the design wave are not expected
to contribute to improved operation. Isolating the test to the design wave would
provide an important evaluation of the kinetic energy-absorbing ability of the
hyperbolic curve.
For improved absorption analysis, a buoy position sensor should also be
incorporated such that the movement of the buoy can be isolated from the operation of
the electronics, allowing each component’s effect on the other to be determined and
optimized for cooperative performance.
Power take-off issues
In addition to the points made in the previous section’s circuitry analysis, a
few improvements could increase the actual conversion from mechanical to electrical
energy. Two identical ring magnets oriented in the same direction were used in this
version of the WEC. By orienting these magnets in opposite directions, the change in
magnetic flux is twice as great over the course of the same stroke length. Incidentally,
97
new magnets must be purchased if the two rings are allowed to align and attach,
because N40 NdFeB magnets of this size are too strong to wrest apart afterwards
without damage. By extension, increasing the number of magnets and alternating
poles further increases the change in magnetic flux over a single stroke length.
During a redesign of the generator stage, other geometries may be considered.
Although the expense and bulk of high-flux linear generators such as Vernier hybrid
machines or transverse flux machines is not suggested until other aspects of the WEC
design are addressed, gearing the translator’s motion to a commercial rotational motor
may be a useful intermediate step for focusing analysis on the wave absorber
component. The concept of a linear generator is ultimately attractive for reducing
complexity of the mechanical coupling, but as in any engineering design, multiple
iterations of the design spiral are needed before all the specially-designed components
operate together as intended.
98
References
1. Aggidis, G.A., A. Bradshaw, M.J. French, A.P. McCabe, J.A.C. Meadowcroft,
and M.B. Widden. “PS Frog MK 5 WEC Developments & Design
Progress.” World Renewable Energy Congress (2005): 1199-1204.
2. Archimedes Wave Swing. Retrieved on 23 May 2007.
<http://www.awsocean.com/ >
3. Beyene, A., and J.H. Wilson. “Parameter Variation and Part-Load Efficiencies of
Wave Energy Conversion.” Journal of Energy Engineering, v.132, n.1
(2006): 15-26.
4. Build Your Own Coils and Transformers. New Delhi: BPB Publications, 1992.
5. Burcharth, H.F. and Hughes, S.A. “Fundamentals of Design.” Coastal Engineering
Manual, Part VI-5.1. U.S. Army Corps of Engineers: Washington, DC,
(2002)..
6. Climatic Wind Data for the United States. Asheville: NOAA National Climatic Data
Center (1998).
7. Dean, R.G., and R.A. Dalrymple. Water Wave Mechanics for Engineers and Scientists.
V.2, Hackensack: World Scientific, 1991.
8. Duckers, L.J., F.P. Lockett, B.W. Loughridge, A.M. Peatfield, M.J. West, and
P.R.S. White. “Optimisation of the Clam Wave Energy Converter.”
Renewable Energy, v.5, n.5-8 (1994): 1464-1466.
9. Duclos, G., A. Babarit, and A.H. Clément. “Optimizing the Power Take Off of a
Wave Energy Converter With Regard to the Wave Climate.”
Transactions of the ASME, v.128 (2006): 56-64.
10. Eriksson, M., J. Isberg, and M. Leijon. “Hydrodynamic modeling of a direct drive
wave energy converter.” International Journal of Engineering Science, v.43
(2005): 1377-1387.
99
11. Epstein, M.Y. “Piezoelectric Generation of Electrical Power from Surface Waves
on Bodies of Water Using Suspended Weighted Members.” United States
Patent 5578889 (1996).
12. Falnes, J. Ocean Waves and Oscillating Systems. Linear Interactions Including Wave-
Energy Extraction. UK: Cambridge University Press, 2002. ISBN
0521782112.
13. French, M.J., and R. Bracewell. “PS Frog: A Point-Absorber Wave Energy
Converter Working in a Pitch/Surge Mode.” Fifth International
Conference on Energy Options; the role of alternatives in the world energy scene
(1987): 198-200.
14. Gerber, J.S., and G.W. Taylor. “Installation of a Scaleable wave energy
Conversion System in Oahu, Hawaii.” Proceedings of the Thirteenth
International Offshore and Polar Engineering Conference (2003): 361-367.
15. Henderson, R. “Design, simulation, and testing of a novel hydraulic power take-
off system for the Pelamis wave energy converter.” Renewable Energy,
v.31 (2006): 271-283.
16. Hudson, J.A., D.C. Phillips, and N.J.M. Wilkins. “Review: Materials aspects of
wave energy converters.” Jounal of Materials Science, v.15 (1980): 1337-
1363.
17. Jones, A.T., and A. Westwood. “Recent Progress in Offshore Renewable Energy
Technology Development.” IEEE Power Engineering society General
Meeting, v.2 (2005): 2017-2022.
18. Kofoed, J.P., P. Frigaard, E. Friis-Madsen, and H.C. Sørensen. “Prototype testing
of the wave energy converter wave dragon.” Renewable Energy, v.31
(2006): 181-189.
19. Konotchick, J.A. “Linear Motion Electric Power Generator.” United States Patent
5347186 (1996).
20. Leijon, M., O. Danielsson, M. Eriksson, K. Thorburn, H. Bernhoff, J. Isberg, J.
Sundberg, I. Ivanova, E, Sjöstedt, O. Ågren, K.E. Karlsson, and A.
Wolfbrandt. “An electrical approach to wave energy conversion.”
Renewable Energy, v.31 (2006): 1309-1319.
100
21. Limpet. Retrieved on 23 May 2007.
<http://www.wavegen.co.uk/what_we_offer_limpet.htm>
22. Microchip. Retrieved 29 May 2008. <www.microchip.com>
23. Mueller, M.A., and N.J. Baker. “Direct drive electrical power take-off for offshore
marine energy converters.” Proceedings of the Institution of Mechanical
Engineers v.219, Part A3 (2005): 223-234.
24. Mueller, M.A., and N.J. Baker. “A low-speed reciprocating permanent magnet
generator for direct drive wave energy converters.” Power Electronics,
Machines, and Drives, n.487 (2002): 468-473.
25. Mulligan, C. Is there a Relationship between Larval Supply, Wind, and Barnacle
Recruitment in a Subtropical Estuary?. Master’s Thesis, Florida Institute
of Technology, 2007.
26. Munson, B.R., Young, D.F, and Okiishi, T.H. Fundamentals of Fluid Mechanics, 4th
Ed. USA: Johen Wiley & Sons, Inc, 2002.
27. Naimaster, A. Sebastian Inlet Wave Gage Historical Data. Retrieved 28 July 2007.
<http://research.fit.edu/wavedata/historical_data.html>
28. National Weather Service Observed Weather Report Archives. Retrieved 1-18 August
2008. <http://www.weather.gov/climate/index.php?wfo=mlb>
29. Ocean Power Technologies. Retrieved on 20 June 2008.
<http://www.oceanpowertechnologies.com/products.htm>
30. OWEL. Retrieved on 23 May 2007. <http://owel.co.uk/owel.htm>
31. Pelamis. Retrieved on 23 May 2007.
<http://www.oceanpd.com/Pelamis/default.html>
32. Polinder, H., M.E.C. Damen, and F. Gardner. “Linear PM Generator System for
Wave Energy Conversion in the AWS.” IEEE Transactions on Energy
Conversion, v.19, n.3 (2004): 583-589.
33. Resio, D., Bratos, S., and Thompson, E. “Meteorology and Wave Climate.” In
Coastal Engineering Manual, Part II, Chapter II-2, Engineer Manual 1110-2-
1100. Washington, DC: U.S. Army Corps of Engineers, 2002.
34. Retzler, C. “Measurements of the slow drift dynamics of a model Pelamis wave
energy converter.” Renewable Energy, v.31 (2006): 257-269.
101
35. Sabuncu, T., and Calisal, S. “Hydrodynamic Coefficients for Vertical Circular
Cylinders at Finite Depth.” Ocean Engineering, v.8 (1981): 25-63.
36. Simmons, W.J. “Use of Scrap Tires to Harness Wave Energy.” Proceedings of the
First International Conference on Ocean Energy Recovery (1989): 129-139.
37. Smith, G.H., and L. Johanning. “Mooring Research to Support Marine Energy
Development.” Sea Technology, v.47, n.4 (2006): 23-26.
38. Techet, A.H. “Derivation of Added Mass around a Sphere.”13.012 Hydrodynamics,
Fall 2005. (Massachusetts Institute of Technology: MIT
OpenCourseWare), http://ocw.mit.edu (Accessed 15 June 2008).
License: Creative Commons BY-NC-SA
39. Thorburn, K., H. Bernhoff, and M. Leijon. “Wave energy transmission system
concepts for linear generator arrays.” Ocean Engineering, v.31 (2004):
1339-1349.
40. Vining, J. “Ocean Wave Energy Conversion.” Report, University of Wisconsin –
Madison, 2005.
41. Wang, S. “Plunger-type Wavemakers: Theory and Experiment.” Journal of
Hydraulic Research, v.12, n.3 (1974): 357-388.
42. Wave Dragon. (2005) Retrieved on 23 May 2007.
<http://www.wavedragon.net/index.php?option=com_content&task=
view&id=6&Itemid=5>
43. Wolfbrandt, A. “Automated Design of a inear Generator for Wave Energy
Converters—A Simplified Model.” IEEE Transactions on Magnetics v.42,
n.7 (2006): 1812-1818.
44. Wolfe, D.E. “Capturing the Energy of Ocean Waves.” 37th Intersociety Energy
Conversion Engineering Conference (2002): 460-463.
45. Xiang, J., P.R.M. Brooking, and M.A. Mueller. “Control Requirements of Direct
Drive Wave Energy Converters.” Proceedings of IEEE TENCON ’02
(2002): 2053-2056.
102
46. Yue, D.K.P
“Lecture 13: Unsteady Motion - Added Mass.” 13.021 Marine
Hydrodynamics, Spring 2005. (Massachusetts Institute of
Technology: MIT OpenCourseWare), http://ocw.mit.edu
(Accessed 15 June 2008). License: Creative Commons BY-
NC-SA
“Lecture 22: Wave Forces on a Body.” 13.021 Marine Hydrodynamics,
Spring 2005. (Massachusetts Institute of Technology: MIT
OpenCourseWare), http://ocw.mit.edu (Accessed 15 June
2008) License: Creative Commons BY-NC-SA
47. Yueng, R.W. “Added mass and damping of a vertical cylinder in finite-depth
waters.” Applied Ocean Research, v.3, n.3 (1981)
Appendices
Appendix A: Table of WEC Companies [from 40] ...............................................105
Appendix B: Parts List ...........................................................................................114
Appendix C: Matlab® Code ..................................................................................118
C.1: IRL Wave Power Modeling .......................................................................118
C.1.1: detect_land_red.m ....................................................................118
C.1.2: fetch_calc_red.m.......................................................................123
C.1.3: wave_calc.m...................................................................................126
C.1.4: energy_calc.m..............................................................................128
C.1.5: L_calc.m..........................................................................................130
C.1.6: do_it_all.m...................................................................................130
C.1.7: energy_slope.m ...........................................................................131
C.1.8: calc_hist.m...................................................................................133
C.1.9: convertOSS.m ................................................................................134
C.1.10: process_wave_data.m .............................................................136
C.2: Wave Properties .........................................................................................138
C.2.1: newton_raphson.m.......................................................................138
C.2.2: sine_particles.m.......................................................................139
C.2.3: sine_particles_with_time.m...............................................141
C.3: Wavemaker Optimization...........................................................................143
C.3.1: stroke.m..........................................................................................143
C.3.2: find_standing.m .........................................................................144
C.3.3: paddleswath.m..............................................................................146
C.3.4: Smatrix.m .......................................................................................147
C.4: WEC Design Calculations..........................................................................149
C.4.1: buoy_def.m .....................................................................................149
C.4.2: find_best_magnet.m..................................................................150
C.4.3: gen_dims.m .....................................................................................152
C.4.4: force_moment_calc.m ...............................................................152
C.5: Postprocessing Routines.............................................................................153
C.5.1: freq_calibration.m..................................................................153
C.5.2: efficiency_spectrum.m...........................................................155
C.5.3: convertOSS_WEC.m .....................................................................161
C.5.4: spectral_anal.m .........................................................................163
C.5.5: heights.m .......................................................................................166
Appendix D: PIC Microcontroller Code................................................................168
D.1: WECfinal.c...................................................................................168
D.2: ConfigRTCsq.c.............................................................................174
D.3: ConvertTime.c............................................................................176
D.4: I2CByteWrite.c ..........................................................................177
D.5 I2CRandomRead.c........................................................................178
D.6: ReadClock.c .................................................................................180
D.7: SetClock.c....................................................................................181
Appendix E: Derivation of H/S..............................................................................183
E.1 Exponential Decay Paddle...........................................................................183
E.2 Hyperbolic Curve Paddle.............................................................................186
Appendix F: Calibration Results............................................................................187
Glossary .................................................................................................................190
Appendix A: Table of WEC Companies [from 40]
Company
Name
Product
Special Notes
Base
Location
Projects
Website
374's Electric
Power
Corporation
Ocean Surf
Energy System
s
Stoughton,
MA
www.374electric.com/welcome.
htm
ABS Alaskan
Small water
generators
(micro-hydro
turbines)
Alternative energy and rem
ote
power products
Fairbanks,
AK
Residential consumers
www.absak.com
Aqua Energy
Group, Ltd.
"AquaBuOY"
Wave Energy
Converter
Point-absorber incorporating a
hose-pump which uses water as
the hydraulic fluid
Mercer
Island, WA
1MW Power Plant - Clallum
County Public Utility
(Makah Bay, WA)
www.aquaenergygroup.com
Float
Incorporated
"Pneumatically
Stabilized
Platform
" (PSP)
Floating Ocean Real Estate -
uses an OWC to extract energy
from waves
San Diego,
CA
www.floatinc.com
Florida Hydro
Power and
Light
Company
Offshore Gulf
Stream Current
Energy
Palatka, FL
www.floridahydro.com
GCK
Technology,
Inc.
"Gorlov Helical
Turbine"
Power take-off for ocean and
tidal currents: rotates in same
direction regardless of water
flow direction, received Edison
Patent Award
San Antonio,
TX
www.gcktechnology.com/GCK
Hawaii
Energy Dept.
Ocean Thermal
Energy
Conversion
(OTEC Energy)
Honolulu, HI
5MW Pre-C
ommercial Plant
www.hawaii.gov/dbedt/ert/b
ib/bib_otec.htm
l
HydroVenturi
"Rochester
Venturi"
Tidal current electrical
generation: no moving
mechanical or electrical parts
underwater, water flow
pressure reduction brings in air
which is used to generate
electricity
San
Francisco, CA
60kW Dem
o Unit North of
England
www.hydroventuri.com
Independent
Natural
Resources,
Inc. (IN
RI)
"SEADOG
Pump"
Point-absorber incorporating a
piston for pumping water or air
into a turbine
Eden Prairie,
MN
1/32-scale prototype was
tested in the wave tank of
Texas A&M University
www.inri.us
Kinetic
Energy
System
s
"Hydrokinetic
Generator",
"KESC
Bowsprit",
"KESC Tidal
Generator"
Tidal current energy: meant for
flood and ebb tides, 600kW
with products ranging 35%-65%
efficiency
Ocala, FL
www.kineticenergysystem
s.com
Marine
Development
Associates,
Inc.
OTEC
Saratoga, CA
Project RATAK: 5-10 M
W
OTEC for the Gov't of the
Marshall Islands; OTEC
Development Plan Review
for Gov't of Taiw
an;
Assessm
ent for Philippine
Gov't; MDA's Island Nation
OTEC Program
www.m
arinedevelopmentinc.c
om/ocean_e nergy.htm
Marine
Innovation &
Technology
Ocean Current
Farm
Berkeley, CA
www.m
inifloat.com/ocean.htm
Mo-T.O
.P.S
Oceanic
Power
System
s
"Wind Goose"
OTEC variant
Del Rio, TX
www.isfind.com
OCEES,
International-
Ocean
Engineering
and Energy
System
s OTEC
Honolulu, HI
www.ocees.com/mainpages/
otec.htm
l
Ocean M
otion
International
LLC (OMI)
"WavePump"
Point absorber array whose
buoys pump seawater through a
hydro-turbine generator as it
descends in a wave trough
Colorado and
Oregon
Functioning 1/20th scale
model of new
OMI
WavePump design is
unveiled in Dana Point, CA
(June 2002); OMI submits
application to Hawaii
Renew
able RFP (April 2004),
submits application to
present investm
ent
opportunity at the Novem
ber
2003 NREL Industry Growth
Forum
www.oceanmotion.w
s
Ocean Power
Technologies,
Inc.
"PowerBuoy"
Near Shore W
ave Energy Point
Absorber: passed the rigorous
Environmental Assessm
ent
process to install units in
Hawaii, Initial Public Offering
(IPO) AIM
Market of the
London Stock Exchange
(“AIM
-OPT”) on October 21,
2003
West
Trenton, NJ;
VIC
,
Australia
Partnering with Iberdrola
S.A
. in Spain and Total in
France; Partnering with US
Navy in Hawaii; Contracts
with Lockheed M
artin Corp.
and New
Jersey Board of
Public Utilities
www.oceanpowertechnologies
.com
Ocean W
ave
Energy
Company
"Ocean W
ave
Energy
Converter"
Completed bench top trials with
full size components under a
Small Business Innovation
Research contract from the US
Coast Guard
Bristol, RI
www.owec.com
Ocenergy
Near Shore,
Offshore W
ave
Energy for
Hydrogen
Production
Norw
alk, CT
www.ocenergy.com
ReE
nergy
Group PLC
(“ReE
nergy”)
"Oases"
Uses wave power generation
technology as a cost effective
method for desalination
UK (US: San
Diego, CA)
Contracts in M
exico,
California, Peru and
Morocco
www.renergypacific.com
Scientific
Applications
& Research
Associates
(SARA) Inc.
Point Absorber
with
Magnetohydrody
namic G
enerator
Magnetohydrodynamic (MHD)
Generator; Alm
ost no moving
parts. No gears, no levers, no
turbines, no drive belts, no
bearings, etc.
Huntington
Beach, CA
DOE contract Phase II SBIR
Program: design, construct,
and dem
onstrate a 50-100
kW M
HD unit
www.sara.com/energy/WEC.
htm
l
Sea Solar
Power
International
OTEC
University of Maryland tests
confirm
heat transfer with 3.4%
total cycle efficiency etc.
(perfect Carnot Cycle efficiency
is 7.4%)
Baltim
ore,
MD
www.seasolarpower.com
SeaVolt
Technologies
"Wave Rider"
Near Shore Point Absorber:
uses hydraulics for power take-
off
Berkeley, CA
www.seavolt.com
Tidal Electric,
Inc.
Tidal Lagoons
Uses a rubble mound
impoundment structure and
low-head hydroelectric
generating equipment situated a
mile or more offshore in a high
tidal range area. Shallow tidal
flats provide the most
economical sites
West
Sim
sbury,
CT;
Anchorage,
AK; London,
UK
60 M
W Swansea Bay project,
UK: measures 5 km2 in area
and about a mile offshore;
project agreem
ent with
Liaoning Province, China
www.tidalelectric.com
UEK
Corporation
Underwater
Electric Kite
Hydro kinetic turbines for
Current, Tidal, OWC Energy;
no dams or im
poundments
required since no foundation is
necessary
Annapolis,
MD
DOE contract SBIR
/DOE
DE-FG02-00ER82930;
Contract with Ontario Power
Generation to test the hydro
kinetic 'Twin Turbines'
uekus.com
Verdant
Power
Instream Energy
Generation
Technology
(IEGT)
Tidal Current Energy: free-flow
hydropower technology or
kinetic hydro energy system
s Arlington, VA
In conjunction with G
CK
Technology, 1MW Tidal Site
at Merrimack River, MA.
Uses GCK's Gorlov Helical
Turbine; Testing in the
Potomac River, Carderock,
MD; Prototype in New
York
City's East River
www.verdantpower.com
Wader, LLC
Hydrocratic
Generator
Salinity Gradient Energy
Laguna
Beach, CA
www.w
aderllc.com
Seapower
Pacific Pty.
Ltd.
(Shareholders:
Renew
able
Energy
Holdings Plc
(REH) - UK;
Pacific Hydro
Ltd. -
Australia;
Carnegie)
"CETO" W
ave
power converter
Near Shore Point Absorber:
wave crests depress a disk
which delivers pressurized
water to shore where energy
conversion takes place
West Perth,
Western
Australia
100kW in-sea prototype,
2005
www.carnegiecorp.com.au/O
perations/Renew
able_Wave_E
nergy_Project_2004.htm
l
Blue Energy
Canada
The Davis
Turbine
(Vertical Axis
Turbine for
Tidal Currents)
Proof of Concept Review: US
Arm
y Corps of Engineers, the
National Research Council of
Canada, et al - RW Beck
(Engineering) Inc., Sept. 2005
Alberta,
Canada
Proposed tidal energy project
for Scotland's Pentland Firth
www.bluenergy.com
Wavem
ill
Energy Corp.
"Wavem
ill"
shoreline and nearshore
applications with patented
suction chamber and enclosed
surge wall
Dartmouth
(Halifax),
Nova Scotia,
Canada
August 2001: scaled model of
the ESW W
avem
ill®
www.w
avem
ill.com
China New
Energy (CNE)
Tidal Energy,
Ocean Current,
Wave Energy,
Thermal Energy,
Salinity
Gradients
CNE is a non-profit research
network founded by
Guangzhou Institute of Energy
Conversion, Chinese Academ
y
of Sciences, while jointly under
the direction of State M
inistry
of Science & Technology, State
Economic & Trade Commission
and Chinese Academ
y of
Sciences
Guangzhou,
China
www.new
energy.org.cn/engli
sh/ocean/index.htm
Wave Dragon
"Wave Dragon"
Overtopping wave energy
converter uses large collector
arm
s to funnel water to a
Kaplan turbine which turns a
PM generator
København,
Denmark
January 2005: 20 kW W
ave
Dragon prototype taken
offline after one year and
nine months of continuous
real sea testing
www.w
avedragon.net
WavePlane
Production
A/S
"WavePlane"
Overtopping wave energy
converter uses a fly-w
heel-tube
for power take-off
Gentofte,
Denmark
September 2002 to April
2003: WavePlane underwent
3:10 sea tests in Japan by
NKK
www.w
aveplane.com
DAEDALUS
Inform
atics
"WECA" (Wave
Energy
Conversion
Activator)
20kW OWC device
Athens,
Greece
www.daedalus.gr
Hydam
Technologies
Ltd.
"McC
abe Wave
Pump" (MWP)
Point absorber with two
rectangular steel pontoons
which move in relation to a
stationary central raft. The
hinges of the pontoons drive a
hydraulic power take-off
system
.
Kerry, Ireland
Has received funding from
the Irish M
arine Institute
n/a
Clearpower
Technology
Ltd. (also
listed as
Wavebob Ltd.
and duQuesne
Environmenta
l Ltd.)
"Wavebob"
Self-reacting point absorber that
extracts power from the relative
movem
ent of tw
o floating
bodies that have different heave
frequency responses. This
property enables the Wavebob
to utilize energy from more
wave frequencies than
conventional single buoy point
absorbers.
Dublin,
Ireland
1/50th and 1/20th scale tests
conducted at the Hydraulics
and M
aritime Research
Centre (U
CC, Cork) and the
large wave channel of the
German Coastal Defence
Centre (H
anover University
and the Technical University
of Braunschweig)
www.clearpower.ie
National
Institute of
Ocean
Technology
(NIO
T)
"Backward Bent
Ducted Buoy"
(BBDB)
OWC device with variable
resistance induction generator
Vizhinjam,
Kerala (India)
1/13 prototype gives air
power / wave power
conversion above 60%
(started Dec. 1990 with
improvem
ents added over
time)
www.niot.res.in/m1/Wave.htm
S.D
.E. Energy
Ltd.
Offshore wave
energy
OWC / Overtopping device
works by forcing waves into
cavity separated from hydraulic
oil by mem
brane. Incoming
waves pressurize the oil which
drives a hydraulic generator.
Tel Aviv,
Israel
Israeli government has
authorized S.D
.E. to produce
and sell 4MW of electricity
for 20 years, at 5.25 cents per
kWh. Project is approved
with partial financing by the
Chief Scientist of Israel.
www.sde.co.il
JAMSTEC
"Mighty W
hale"
OWC device with three
induction generators
Yokosuka,
Japan
28 M
arch 1998: deployment
of 110 kW prototype at
Gokasho Bay, Japan funded
by Japan's Science and
Technology Agency
www.jamstec.go.jp/jamstec/
MTD/Whale
Ecofys
"Wave Rotor"
Orbital currents in waves and
tidal currents induce
hydrodynamic lift which turns a
set of blades around a vertical
axis
Utrecht, The
Netherlands
Oct. and Nov. 2004: 1/10
scale model tested at NaREC
in Blyth (0.5 M
W model to
be installed in UK)
www.ecofys.com
Neptune
System
s
Magnetohydrody
namic (MHD)
generator in a
buoy wave
energy converter
and tidal current
energy converter
Uses a 20 m diameter
superconducting magnet
solenoid (SMES) which
produces a magnetic field
strength of 5 Tesla with energy
content ~100 G
J. The tidal
generator can deliver 4 M
W
power installed at a 3 m/s tidal
current velocity.
Breda, The
Netherlands
www.neptunesystem
s.net
Hammerfest
Stroem
AS
"Tidekraft"
Underwater turbine props
similar to wind turbine props
collect tidal current energy
Hammerfest,
Norw
ay
25 Sept. 2005, 'The Blue
Concept' project: prototype
installed at Kvalsundet
producing 21 GWh per year
www.e-tidevannsenergi.com
Ing Arvid
Nesheim
Point absorber
Absorbs energy from vertical,
pivotal, horizontal backwards
and forw
ards (to-and-fro)
motion via a hydraulics system
Vollen,
Norw
ay
www.anwsite.com
WAVEenergy
AS
"Seawave Slot-
Cone Generator
(SSG)"
Overtopping wave energy
converter with multi-stage
turbine (M
ST)
Norw
ay
Has received funding from
the European Commission
FP-6-2004-Energy-3 (7 Apr.
2005) and the Norw
egian
Research Council to develop
the MST turbine (25 Jan
2005)
www.w
aveenergy.no/index.htm
Sea Electrical
Generators,
Ltd.
Point absorber
Made from cheap recycled
plastic (polyethylene,
polypropylene), meant to be
replaced every five years
Russia
easy-energy.iatp.org.ua
Vortex
Oscillation
Technology,
Ltd. in
partnership
with The
Engineering
Business Ltd.
(Northumberl
and, England)
"Stingray"
Oscillating wings extract energy
from tidal currents
Moscow,
Russia
2004: 5 M
W installation off
the coast of Scotland
www.vortexosc.com/index.ph
p, www.engb.com
Yakov Kolp
"Sea W
ave
Energy
Converter
(SWEC)"
Wave oscillation generator
with capacity from kilo to
megawatt range
Russia
www.rvf.ru/engl/expo-
yakor.php
Seabased
Energy AB
Point Absorber
with Linear
Generator
Linear permanent magnet
generator with large number of
poles and NdFeB
magnets that
allow for high magnetic
excitation with smaller magnets
Uppsala,
Sweden
Working with the Division
for Electricity and Lightning
Research at Uppsala
University, Sweden
www.seabased.com
Sea Power
International
AB
Overtopping
wave energy
converter
Near shore W
EC
Stockholm
,
Sweden
www.seapower.se
Naturalist
Wave Power
Plant AB
Hydraulic-based
offshore W
EC
Waves rotate joints of chassis
which pressurizes mineral oil.
This drives a hydraulic
generator.
Ankara,
Turkey
www.dalgaenerjisi.com/ana-
english.asp,
www.w
ipo.int/pctdb/en/fetc
h.jsp?LANG=E
NG&DBSELECT=PCT&SER
VER_TYPE=19&SORT=11492
88-
KEY&TYPE_FIELD=256&ID
B=0&ID
OC=630415&ELEME
NT_SET=IA
,WO,TTL-
EN&RESULT=1&TOTAL=1
&START=1&DISP=25&FOR
M=SEP-0/HITNUM,B-
ENG,D
P,M
C,PA,A
BSUM-
ENG&QUERY=wo%2f020751
51
AWS Ocean
Energy Ltd.
"Archim
edes
Wave Swing"
Air-filled, submerged point
absorber uses a linear
generator. W
ave crests depress
the device, and troughs force it
upwards.
Ross-shire,
England
24 M
ay 2004: 2MW
installation of prototype off
of Portugal
www.awsocean.com,
www.w
aveswing.com
Embley
Energy Ltd.
"Sperboy"
Floating buoy with multiple
oscillating water columns of
different lengths to utilize a
larger range of wavelengths
England
The Carbon Trust is
evaluating the Sperboy
through their Marine Energy
Challenge programme
www.thecarbontrust.co.uk/ct
marine2/Page1.htm
Marine
Current
Turbines, Ltd.
(MCT) and IT
Power
"SEAFLOW"
marine current
turbine
Tidal currents drive tw
o blades
around a horizontal axis like an
underwater wind turbine
Hampshire,
UK
31 M
ay 2003: The Carbon
Trust sponsors construction
of a 300kW experim
ental
turbine 3km offshore from
Lynmouth, Devon, 2003-3-
122-1-2
www.itpower.co.uk,
www.m
arineturbines.com
Ocean Power
Delivery, Ltd.
"Pelamis"
Near shore cylindrical structure
whose hinges drive hydraulic
motors as the power-take off
Edinburgh,
Scotland, UK
2.25MW Prototype: three
Pelamis P-750 machines
located 5km off the
Portuguese coast
www.oceanpd.com
ORECon Ltd.
"MRC" System
Multiple oscillating water
column
Plymouth,
UK
June 2005: FEED for a 2MW
pre-production prototype
www.orecon.com
Offshore
Wave Energy
Ltd. (O
WEL)
"Grampus"
Long inlets trap and compress
the air in wave troughs.
Reservoirs accumulate the
compressed air which drives a
turbine.
Portsm
outh,
UK
Future project: tank-testing
18 metre long physical model
www.owel.co.uk
The Wave
Power Group
at the
University of
Edinburgh
"Salter's Duck"
and "Sloped IPS
Buoy"
Both are point absorbers using
hydraulics power take-off
Edinburgh,
Scotland, UK
Salter's Duck project no
longer funded, Sloped IPS
Buoy applying for EPSRC
programme funding
www.m
ech.ed.ac.uk/research
/wavepower/index.htm
Wavegen
"LIM
PET"
Shoreline OWC
Northumber-
land, England
June 2004: first generation of
Breakwater Turbine installed
on the Lim
pet plant
www.w
avegen.co.uk
Appendix B: Parts List
Function
Distributor
Part Number
Total Price
Hardware
6063 Al round rod, 1" dia., 8' length
Buoy rod, generator translator
McM
aster-Carr
1640T37
$42.53
6063 Al square tube, 1" x 1" x 6' Q
ty:
4
Main frame
McM
aster-Carr
88875K33
82.88
6063 Al rectangular bar, 1/2" x 2" x
8'
Main frame crossmembers
McM
aster-Carr
89755K62
54.05
6063 Al U-channel, 2" base x 1/2"
leg x 8' length
LIG Box cage, bottom support for
buoy
McM
aster-Carr
9001K39
26.75
Al 6061 round tube, 1" ID x 1.5"
OD, 12" length
Segment fits around buoy rod to
strengthen connection to translator
McM
aster-Carr
9056K271
15.04
UHMW polyethylene tube,
0.97"IDx1.5"ODx1' length
Low-friction bearings for buoy and
translator rods, pressed into holes in
frame
McM
aster-Carr
8705K141
6.11
UHMW Polyethylene tube, 1.625"
ID 2.365" OD, 1' length
Risers for coil inside Pelican Case
McM
aster-Carr
8705K74
14.02
ABS plastic tube, 1"ID x 1.5"OD x 5'
length
Tube inside buoy
McM
aster-Carr
1839T22
40.10
Type I PVC rod, 4" OD, 12" length
Generator bulkheads
McM
aster-Carr
8745K28
26.52
Neoprene/EPDM/SBR Closed-cell
Foam Rubber, Sheet 3/8" thick, 1'
length
Coil gaskets, box frame padding
McM
aster-Carr
8647K45
13.40
Polyurethane sheet, 6" x 6" x 1/2",
60A hardness
Vibration relief coupler between
translator and buoy rod
McM
aster-Carr
8716K242
23.23
Al 6061-T6 RH Thread 1/4"-20
fully threaded rod, 4" long, pack of
10
Compress bulkhead fittings to coil,
connect halves of magnet rod through
magnet
McM
aster-Carr
93225A874
8.62
Al Hex-head 1/4"-20 cap screw, 3"
length, pack of 10
Various connections
McM
aster-Carr
93306A558
7.15
Size -339 o-rings, Qty: 4
Seal bulkhead fittings to Pelican Case
ORCA
Donated
Pelican case 1300, silver, with foam Linear Inductance Generator housing
Techni-Tool, Inc.
6031300SILVER
38.34
NdFeB ring magnets, 1.5” OD, Qty: 2
Magnet in generator
Super Magnet Man
R1111
16.00
1-lb. Spool of #30 AWG Enameled
Magnet Wire
Coil
Force Field
0930
17.00
West System epoxy
To set coil
UTL
Available
Polystyrene foam
Buoy
FIT Machine shop
Donated
6-oz E-glass fabric
Buoy cover
Fiber Glass Florida
Donated by
MFP
DER 331 epoxy resin and hardener
Buoy cover
Fiber Glass Florida
19248 Donated by
MFP
3M K-1 Scotchlite Bubbles
Buoy cover
Fiber Glass Florida
15.00
Various screws, 1” length
Secure ABS tube inside foam
UTL
Available
Polyester Gelcoat Series 944
Buoy coating
Progress Plastics
Donated by
MFP
U-channel (6” base, 2” legs))
Piling mount
FIT machine shop
Donated
316 SS ¾” band
Piling mounting band
Pelco Utility Products
US-8124-06 105.35/100’
316 SS Buckle Qty: 4
Piling mounting band
Pelco Utility Products
US-8124-56
79.25/100
Compression Spring
Provide return force for
Reid Supply
CX-39, CX-47
CX-49, CX-50
15.95
Electronics
PIC18f4523
Microprocessor
Microchip
PIC18F4523-E/P
Sampled
Logomatic Serial SD Datalogger
Data recording
SparkFun Electronics
WIG-00752
59.95
256MB SD card
Storage space
Available
DC/DC converter
Creates 5V output
Texas Instruments
TPS61202DRC
Sampled
Chip scale (QFN) 10,32 surfboard,
.5mm pitch
DC/DC converter surfboard
SchmartBoard
202-0017-01
9.99
Serial access Real Time Clock with
alarm
Global timekeeper for data collection
consistency
ST Microelectronics
M41T80M6E
Sampled
9V battery clip
Main power connection
IC 3.3V 150MA LDO REG SOT-
23-5
Main power voltage regulator
Digikey Electronics
296-11021-1-ND
0.84
CONN DB9 FEMALE .318" R/A
NICKEL
Serial connection for HyperTerminal
Digikey Electronics
182-809FE-ND
4.46
CONN HEADER 2POS .100
VERT GOLD Qty: 7
Load and current-sense resistor
connectors
Digikey Electronics
WM2700-ND
4.20
CONN TERM FEMALE 22-
30AWG GOLD Qty: 30
Load and current-sense resistor
connectors
Digikey Electronics
WM2624-ND
8.58
CONN HOUS 2POS .100
W/RAMP/RIB Qty:10
Load and current-sense resistor
connectors
Digikey Electronics
WM2000
1.31
CONN HEADER .100 SNGL STR
36POS
Header to be soldered into Logomatic
Digikey Electronics
929647-02-36-
ND
3.31
CONN HEADER .100 SNGL
R/A 36POS
RTC and PICkit2 headers
Digikey Electronics
929550-01-36-
ND
3.96
0.5W, 1ohm, 5% tolerance carbon
film resistor Qty: 2
Digikey Electronics
1.0H-ND
0.26
2.2uH inductor, axial, 10%
tolerance
DC/DC converter inductor
Digikey Electronics
M9977-ND
1.13
1F, 6.3V supercapacitor
Digikey Electronics
604-1018-ND
6.15
0.68F, 6.3V supercapacitor
Digikey Electronics
604-1017-ND
6.15
0.47F, 6.3V supercapacitor
Digikey Electronics
604-1016-ND
6.15
L6210 IC diode bridge Schottky
dual 16DIP
Rectifier
Digikey Electronics
497-3646-ND
2.97
0.1uF ceramic capacitor, 100V Qty: 4
Digikey Electronics
P4910-ND
1.92
22pF capacitor Qty: 2
Microcontroller oscillator capacitors
Digikey Electronics
490-3709-ND
0.56
1uF electrolytic capacitor, Qty: 9
Digikey Electronics
P824-ND
1.26
10uF electrolytic capacitor, Qty: 5
Digikey Electronics
P5309-ND
0.85
20.0MHz crystal oscillator, 18pF,
HC49/US
PIC oscillator
Digikey Electronics
300-6042-ND
0.70
32.786kHz crystal oscillator
RTC oscillator
Digikey Electronics
X801-ND
2.70
2-pin screw terminal block, 0.2"
pitch Qty: 2
Power and Supercapacitor connectors
Digikey Electronics
ED1609-ND
0.92
Green LED, 3mm T-1
DC/DC converter ON indicator
Digikey Electronics
LG 3330-LP-1-0-
10-BULK-ND
0.09
Blue LED, 3mm T-1
Power indicator
Digikey Electronics
160-1600-ND
0.60
RJ11 jack, PCB right angle, no
panel stops
Microchip universal programmer
connector
Digikey Electronics
A24907-ND
2.02
IC REF PREC VOLT
MICROPWR 8-SOIC
4.096 voltage reference for ADCs
Digikey Electronics
LM4140CCM-
4.1-ND
3.58
DIODE ZENER 5W 5.6V DO-15
Supercapacitor protection diode
Digikey Electronics
1N5339BTPMSC
T-ND
0.39
MOSFET P-CH 20V 2.4A SOT-23
Digikey Electronics
NTR4101PT1G
OSCT-ND
0.36
IC OPAMP QUAD SNGL
SUPPLY 14DIP Qty: 2
ADC buffers
Digikey Electronics
MCP604-I/P-ND
3.16
CONN SOCKET STRIP 50PIN
.100 STR
Digikey Electronics
ED6350-ND
7.26
MAX233
TTL/RS232 logic level converter
Maxim Integrated
Products
MAX233CPP
Sampled
Single Pole, Double Throw Relay
Switches DC/DC converter into/out
of circuit
All Electronics
RSB-5
2.25
2N3904 NPN Transistor, Qty: 3
Digikey Electronics
2N390FS-ND
0.33
MAX4372, Qty: 2
Current sense op amp
Maxim Integrated
Products
MAX4372HESA
Sampled
1N4148 Switching diode, Qty: 2
Reverse polarity protection diode
Digikey Electronics
1N4148FS-ND
0.08
1N4001 Rectifier
Power selector diode or RTC
Digikey Electronics
1N4001FSCT-
ND
0.11
1N4007 Rectifier
Power selector diode or RTC
Digikey Electronics
1N4007FSCT-
ND
0.10
Resistors:
7 x 1k
4 x 20k
1 x 100k
1 x 1M
1 x 2.2M
Available
PCB adhesive standoffs
Available
Appendix C: Matlab® Code
C.1: IR
L W
ave Pow
er M
odeling
C.1.1: detect_land_red.m
Detecting land from a bitmap image screen-captured from Google Earth (modified to highlight coastlines) and saving it as a black-and-white
figure file
function[b_w_map, IRLfeatures, atlantic_flag] = detect_land_red(image_file)
%For example, image_file could be 'big_map/fort_pierce_all_red.bmp'
load_str = ['imread(', 'image_file',')']
map = eval(load_str);
figure;
image(map);
jpixels = size(map,1); %number of rows
ipixels = size(map,2); %number of columns
%*********** Initializations *****************
%Define IRLfeatures contains the IRLwidth IRLstart_pixel and IRLstop_pixel]of each row;
% initialize all to zero
%Also, initialize the indexed output fetch map to 0 and the RGB output fetch map
% to white for debugging; default = not over the atlantic ocean
IRLfeatures = zeros(jpixels, 3);
fetch = zeros(jpixels, ipixels);
atlantic_flag = zeros(jpixels, ipixels);
b_w_map = ones(jpixels, ipixels, 3);
%Define yellow border as anything within the RGB thresholds set here
yellow_threshold = [140 140 79];
red_threshold = [255 0 0 ];
purple_threshold = [128 0 255];
%******************* Algorithm ********************
%Run through each pixel and find the IRL coastlines
for (j=1:jpixels)
for (i=1:ipixels)
if(i == 1) %assume pixels (:,1) are over land
IRLflag = 0;
atlantic_flag(j,i) = 0;
last_yellow = -10;
yellow_counter = 0;
end
%Purple pixels prevent fetch from being calculated near a jetty
if(map(j,i,1)==purple_threshold(1) && map(j,i,2)==purple_threshold(2) && map(j,i,3)==purple_threshold(3))
b_w_map(j,i,:)=0; %black
while(~(map(j,i,1)~=red_threshold(1) && map(j,i,2)~=red_threshold(2) && map(j,i,3)~=red_threshold(3)))
atlantic_flag(j,i) = 1;
IRLflag = 0;
b_w_map(j,m,:)=0; %black
% if((map(j,i,1)>yellow_threshold(1)) && (map(j,i,2)>yellow_threshold(2)) &&
%
(map(j,i,3)<yellow_threshold(3)))
% b_w_map(j,m,:)=0; %black
% else
% b_w_map(j,m,:)=1; %white
% end
i=i+1;
end
end
%first red pixel marks atlantic coastline
if(map(j,i,1)==red_threshold(1) && map(j,i,2)==red_threshold(2) && map(j,i,3)==red_threshold(3))
for m=i:ipixels
b_w_map(j,m,:)=1; %white
atlantic_flag(j,m) = 1;
IRLflag = 0;
end
break;
end
if (~IRLflag) %if current pixel is not located over the IRL, map it as black and check if it's a coastline
b_w_map(j,i,:) = 0; %black
fetch(j,i) = -20; %lowest value in fetch calculation
% if current pixel is yellow, it's either the 1st yellow pixel
% on the west coast, a random pixel, or a consecutive yellow pixel on the east coast
if ((map(j,i,1)> yellow_threshold(1)) && (map(j,i,2)> yellow_threshold(2)) && (map(j,i,3)<
yellow_threshold(3)))
if(last_yellow == i-1) %if 2 yellow pixels occur consecutively on the east side of the lagoon
last_yellow = i;
b_w_map(j,i,:) = 0; %black
fetch(j,i) = -20;
continue; %don't reflip the flag to 'over the IRL
elseif(i>1 && i<ipixels-1 && j>1 && j<jpixels-1) %for non-border pixels
if(proximo(map,i,j,yellow_threshold(1),yellow_threshold(2),yellow_threshold(2))) %random
%yellow pixel
%disp('proximo yellow, not in IRL')
b_w_map(j,i,:) = 0; %black
fetch(j,i) = -20;
continue; %go on to the next pixel
else %we are on the west side of the lagoon, so:
if(IRLfeatures(j,2)==0)
IRLfeatures(j,2) = i; %set the start pixel for row j as the first yellow pixel
end
IRLflag = 1; %flip the flag to over the IRL
last_yellow = i;
end
end
end
else %current pixel is located over the IRL
%if the current pixel is yellow, it's either a pixel on the
%eastern IRL coast, a corner, or a random pixel in the IRL
if ((map(j,i,1)> yellow_threshold(1)) && (map(j,i,2)> yellow_threshold(2)) && (map(j,i,3)<
yellow_threshold(3)))
if(last_yellow == i-1) %keep track of consecutive yellow pixels
last_yellow = i;
b_w_map(j,i,:) = 0; %black
fetch(j,i) = -20;
continue; %skip the rest b/c the flag shouldn't be reversed again
else %if the current pixel is the first yellow (coastline) pixel, flip the flag
b_w_map(j,i,:) = 0; %black
fetch(j,i) = -20;
last_yellow = i;
IRLflag = 0; %now we are not over the lagoon anymore
IRLfeatures(j,3) = i; %set the end pixel for row j as the last yellow pixel
end
end
end
end
end
figure;
image(b_w_map);
title('Land and water');
% load_str2 = ['save ',BWmap_name];
% eval(loadstr2);
%***************** Subfunctions ********************
function [is_alone] = proximo(map, i, j, yellow_R_threshold, yellow_G_threshold, yellow_B_threshold)
if (...
((map(j-1,i-1,1)>yellow_R_threshold) && (map(j-1,i-1,2)> yellow_G_threshold) && (map(j-1,i-1,3)<
yellow_B_threshold)) ||...
((map(j-1,i,1)> yellow_R_threshold) && (map(j-1,i,2)>yellow_G_threshold) && (map(j-1,i,3)<
yellow_B_threshold)) ||...
((map(j-1,i+1,1)> yellow_R_threshold) && (map(j-1,i+1,2)> yellow_G_threshold) && (map(j-1,i+1,3)<
yellow_B_threshold)) ||...
((map(j,i-1,1)>yellow_R_threshold) && (map(j,i-1,2)> yellow_G_threshold)&& map(j,i-1,3)<
yellow_B_threshold)) ||...
((map(j,i+1,1)>yellow_R_threshold) && (map(j,i+1,2)>yellow_G_threshold) && (map(j,i+1,3)<
yellow_B_threshold)) ||...
((map(j+1,i-1,1)>yellow_R_threshold) && (map(j+1,i-1,2)> yellow_G_threshold) && (map(j+1,i-1,3)<
yellow_B_threshold)) ||...
((map(j+1,i,1)>yellow_R_threshold)&&(map(j+1,i,2)>yellow_G_threshold) && (map(j+1,i,3)<
yellow_B_threshold)) ||...
((map(j+1,i+1,1)> yellow_R_threshold)&&(map(j+1,i+1,2)> yellow_G_threshold) && (map(j+1,i+1,3)<
yellow_B_threshold))...
)
is_alone = 0;
else
is_alone = 1;
end
function [is_corner] = corner_check(map, i, j, yellow_R_threshold, yellow_G_threshold, yellow_B_threshold)
%if all the pixels above or all the pixels below (but not both) are NOT
%yellow, return 1 (IS a corner); else return 0 (ISN'T a corner)
if (xor( ...
( ...
((map(j-1,i-1,1)> yellow_R_threshold) && (map(j-1,i-1,2)> yellow_G_threshold) && (map(j-1,i-1,3)<
yellow_B_threshold)) ||...
((map(j-1,i,1)>yellow_R_threshold) &&(map(j-1,i,2)>yellow_G_threshold) &&(map(j-1,i,3)<
yellow_B_threshold)) ||...
((map(j-1,i+1,1)> yellow_R_threshold) && (map(j-1,i+1,2)> yellow_G_threshold) && (map(j-1,i+1,3)<
yellow_B_threshold)) ...
),...
(...
((map(j+1,i-1,1)> yellow_R_threshold) && (map(j+1,i-1,2)> yellow_G_threshold) && (map(j+1,i-1,3)<
yellow_B_threshold)) ||...
((map(j+1,i,1)>yellow_R_threshold) &&(map(j+1,i,2)>yellow_G_threshold) &&(map(j+1,i,3)<
yellow_B_threshold)) ||...
((map(j+1,i+1,1)> yellow_R_threshold) && (map(j+1,i+1,2)> yellow_G_threshold) && (map(j+1,i+1,3)<
yellow_B_threshold))...
)...
) ...
)
disp('corner1')
is_corner = 1;
else
disp('corner0')
is_corner = 0;
end
C.1.2: fetch_calc_red.m
Calculates fetch from each pixel (on the B&W map created above) to the nearest land in the direction from which the wind is blowing.
Requires the three matrices returned above, plus a image scale (in m) in both the N-S and E-W directions, and the direction from which the
wind blows
function[fetch] = fetch_calc_red(b_w_map, IRLfeatures, atlantic_flag, jlength, ilength, theta)
jpixels = size(b_w_map,1); %number of rows
ipixels = size(b_w_map,2); %number of columns
iscale = ilength/ipixels; %in meters/pixel
jscale = jlength/jpixels;
%Now calculate and plot fetch
for (j=1:jpixels)
for (i=1:ipixels)
moves = 0; %reset row deviation counter each time we move to a new pixel
b=j; %(b,a) is the target shorline pixel; start the search at the current pixel
a=i;
if(b_w_map(j,i,1)==0 && b_w_map(j,i,2)==0 && b_w_map(j,i,3)==0)
fetch(j,i)=-1;
continue;
elseif(atlantic_flag(j,i)==1)
for(c=i:ipixels)
if((theta>45 && theta<135) || (theta>225 && theta<315))
fetch(j,c) = abs(0.075*ilength*sin(theta));
else
fetch(j,c) = abs(0.075*jlength*cos(theta));
end
end
i=ipixels; %skip the rest of the row for now, just for speed's sake
continue;
else %pixel is over the IRL; determine the fetch for this pixel
IRLfeatures(j,1) = IRLfeatures(j,1)+1; %increment the width of the IRL for row j
%while the we don't land on a black (coast) pixel or go over
%the ocean
while(b_w_map(b,a,:)==1)
if(atlantic_flag(b,a)==0)
moves = moves+1;
%keep track of the # of rows above/below j we move
% in finding the coast
% move right/left by the corresponding num of pixels
if(theta == 90)
b=j;
a = i+moves;
elseif(theta==270)
b=j;
a = i-moves;
elseif((theta>45 && theta<135) || (theta>225 && theta<315))
b = j-moves*sign(cos(theta*pi/180)); %move up/down by a row
a = i+moves*(round(sign(sin(theta*pi/180))*abs(tan(theta*pi/180))));
else
a = i+moves*sign(sin(theta*pi/180)); %move right/left by a row
b = j-moves*(round(sign(cos(theta*pi/180))*abs(cot(theta*pi/180))));
end
% deal with pixels off the map, leaving RGB white to show borders are not
% accounted for
if(a<1 || a>ipixels || b<1 || b>jpixels)
fetch(j,i) = -20;
break;
end
else
break;
end
end
end
% when we've reached a coastline pixel, record the fetch
fetch(j,i) = sqrt(((b-j)*jscale)^2 + (((a-i)*iscale)^2));
end
end
figure;
fetch_colors = colormap;
fetch_colors(1,3)=0;
colormap(fetch_colors);
imagesc(fetch);
colorbar('eastoutside');
title('Brevard IRL Fetch, wind from %d degrees');
C.1.3: wave_calc.m
Uses fetch, windspeed, and an average depth to calculate the significant wave height, peak period, fully-developed sea height, and FDS
required duration on the maps created in AB.1.1 and AB.1.2
function[wave_heights, Tp, H_FDS, t_req_max] = wave_calc(fetch_matrix, b_w_map, windspeed, avg_depth)
% arguments: Wind Speed, Fetch, and Depth
% returns: a matrix of wave heights and a column of wave periods, printed
% to an image
%*******Initializations*********
jpixels = size(fetch_matrix,1); %number of rows
ipixels = size(fetch_matrix,2); %number of columns
Tp = zeros(jpixels, ipixels);
wave_heights = ones(jpixels, ipixels);
H_FDS = ones(jpixels, ipixels);
t_req_max = 0;
g = 9.8;
Ua = windspeed; %10m elevation windspeed
F = fetch_matrix;
d = avg_depth;
Cd = 0.001*(1.1+0.035*Ua);
Ustar = sqrt(Cd*Ua^2);
Tp_SW = 9.78*(d/g)^(1/2);
for(j=1:jpixels)
for(i=1:ipixels)
if(b_w_map(j,i,:)==0)
wave_heights(j,i) = 0;
H_FDS(j,i) = 0;
else
t_req = 77.23*F(j,i)^0.67/(Ua^0.34*g^0.33);
if(t_req > t_req_max)
t_req_max = t_req;
end
H_FDS(j,i) = 0.27*Ua^2/g;
wave_heights(j,i) = Ustar^2/g * 4.13*10^(-2) * (g*F(j,i)./Ustar^2).^(1/2);
Tp(j,i) = Ustar/g * 0.751 * (g*F(j,i)./Ustar^2).^(1/3);
if(Tp_SW < Tp(j,i))
Tp(j,i) = Tp_SW;
%disp('depth-limited at %d,%d', j,i)
non_dim_F = (g*Tp(j,i)/(Ustar*0.751))^3;
wave_heights(j,i) = Ustar.^2./g .* 4.13*10^(-2) * (non_dim_F).^(1/2);
end
if(wave_heights(j,i)>0.6*d)
%disp('steepness-limited at %d,%d', j,i)
wave_heights(j,i) = 0.6*d;
end
end
end
end
%t_req_max
figure;
fetch_colors = colormap;
fetch_colors(1,3)=0;
colormap(fetch_colors);
imagesc(wave_heights);
colorbar('eastoutside');
title('Brevard IRL Wave Heights, %d degrees, %d m/s');
figure;
colormap(fetch_colors);
imagesc(Tp);
colorbar('eastoutside');
title('Brevard IRL Peak Period, %d degrees, %d m/s');
C.1.4: energy_calc.m
Uses wave conditions calculated above to determine energy content and power of waves for each pixel on the map.
function[E, P] = energy_calc(wave_heights, Tp, atlantic_flag)
g=9.81; %m/s^2
rho = 1000; %kg/m^3
d = 1; %m
[wavelengths,k] = L_calc(Tp,d);
Co = wavelengths./Tp;
n = 1/2*(1 + 2.*k.*d./sinh(2.*k.*d));
Cg = n.*Co;
for j=1:size(wave_heights,1)
for i=1:size(wave_heights,2)
if(wave_heights(j,i) > wavelengths(j,i)*1/7 || wave_heights(j,i) > 0.78*d)
H_limited(j,i) = (wavelengths(j,i)*1/7 < 0.78*d)*wavelengths(j,i)*1/7 ...
+ (wavelengths(j,i)*1/7 >= 0.78*d)*0.78*d;
else
H_limited(j,i) = wave_heights(j,i);
end
end
end
E = 1/8*rho*g*H_limited.^2;
P = E.* Cg;
maxP=max(max(P));
for j=1:size(P,1)
for i=1:size(P,2)
if atlantic_flag(j,i)==1
P(j,i)=.15*maxP;
end
end
end
figure;
fig_colors = colormap;
fig_colors(1,3)=0;
colormap(fig_colors);
imagesc(E);
colorbar('eastoutside');
title('Fort Pierce IRL Wave Energy, wind from %d degrees at %d m/s');
figure;
colormap(fig_colors);
imagesc(P);
colorbar('eastoutside');
title('Fort Pierce IRL Wave Power, wind from %d degrees at %d m/s');
C.1.5: L_calc.m
Matrix version of dispersion equation solver for L and k, given h and an [m x n] matrix T. Called in energy_calc.m above.
function[L,k] = L_calc(T,h)
CLOSE_ENOUGH = 1e-10; % threshold for ending iterations
g=9.81; % defines acceleration due to gravity in m/s^2
Lo=g*(T.^2)./(2*pi); % defines Lo from the dispersion eq'n, same dimensions as T
L=Lo; % initializes L, the wavelength matrix, which has dim of T
diff=ones(size(L)); % initializes the difference variable to a (relatively) large value
n=0;
N=0;
for i=1:size(diff,1),
for j=1:size(diff,2),
while diff(i,j) > CLOSE_ENOUGH, % this is the loop for iterative application of dispersion eq'n
L2 = Lo.*tanh((2*pi*h)./L);
diff=abs(L2-L); % diff tells how close the previous loop's and the current
% loop's L vlaues are
L=L2; % updates L
n=n+1;
end % breaks out of loop when diff<0.001
N=N+n;
end
end
k=(2*pi)./(L);
C.1.6: do_it_all.m
Calls all the above IRL wave energy functions in the correct order to avoid confusion with arguments needed. The initial mapreading function
must be called before running this m-file, since that operation is only needed once.
fetch = fetch_calc_red(bw_map, IRL_features, atl_flag,54000,28250,42.4);
sprintf('finished fetch. entering wave height calc.')
[wave_heights, Tp, H_FDS, t_req_max] = wave_calc(fetch, bw_map,8.4,1);
[E, P] = energy_calc(wave_heights, Tp, atl_flag);
C.1.7: energy_slope.m
Allows for an estimation of wave power in a depth of 1m given either 4.5km or 1.5km fetchand an array of wind speeds; plots
wave power versus wind speed on a log-log plot. Intended as a generalized estimate of wave power for various locations in the
lagoon.
function[wave_H, P, Tp]=energy_slope(windspeed, fetch)
%fetch = 4500 for optimistic, 1500 for conservative
g = 9.8;
rho=1000;
Ua = windspeed; %10m elevation windspeed,array
F = fetch;
d = 1;
Cd = 0.001.*(1.1.*ones(size(Ua))+0.03.*Ua);
Ustar = sqrt(Cd.*Ua.^2);
Tp_SW = 9.78*(d/g)^(1/2);
t_req = 77.23*F^0.67./(Ua.^0.34.*g^0.33);
H_FDS = 0.27.*Ua.^2./g;
wave_H = Ustar.^2/g * 4.13*10^(-2) .* (g*F./Ustar.^2).^(1/2);
Tp = Ustar./g * 0.751 .* (g*F./Ustar.^2).^(1/3);
for i=1:length(Tp)
if(Tp(i)>Tp_SW)
sprintf('period-limited at %d', i)
Tp(i) = Tp_SW;
non_dim_F = (g*Tp(i)./(Ustar.*0.751)).^3;
wave_H = Ustar.^2./g .* 4.13*10^(-2) .* (non_dim_F).^(1/2);
end
if(wave_H(i)>0.6*d)
sprintf('depth-limited at %d', i)
wave_H(i) = 0.6*d;
end
end
[wavelengths,k] = L_calc(Tp,d);
Co = wavelengths./Tp;
n = 1/2*(1 + 2.*k.*d./sinh(2.*k.*d));
Cg = n.*Co;
for i=1:length(wave_H)
if(wave_H(i) > wavelengths(i)*1/7 || wave_H(i) > 0.78*d)
H_lim(i) = (wavelengths(i)*1/7 < 0.78*d)*wavelengths(i)*1/7 ...
+ (wavelengths(i)*1/7 >= 0.78*d)*0.78*d;
else
H_lim(i) = wave_H(i);
end
end
E = 1/8*rho*g*H_lim.^2;
P = E.* Cg;
loglog(Ua,P)
title('Wave Power vs. Wind Speed');
xlabel('Wind Speed (m/s)')
ylabel('Wave Power (W/m)')
C.1.8: calc_hist.m
Prints histograms of the wind speed in a data set of wind speeds recorded every 5 minutes and loaded as a data file into Matlab®;
intended for use with the data extracted from text files of PAFB wind records for 2006
function[month_mins, daily_mins, total_month_hrs,xmonth, monthPcentrd] =
calc_hist(Month_m,total_days_in_month,days_of_data)
[month_mins,xmonth]=hist(Month_m,30);
month_mins=month_mins*5;
daily_mins=month_mins/days_of_data; %size(month,2); %240 for year_m, 278 for yrdata
total_month_hrs=total_days_in_month.*daily_mins/60;
stem(xmonth, total_month_hrs)
title('___ Wind Distribution')
xlabel('Windspeed (m/s)')
ylabel('Hours per month')
figure;
total_month_hrs_norm = total_month_hrs/(24*total_days_in_month);
stem(xmonth, total_month_hrs_norm)
title('___ Normalized Wind Distribution')
xlabel('Windspeed (m/s)')
ylabel('Relative Hours')
figure;
for i = 1:length(month_mins)
cumulative(i) = sum(total_month_hrs(1:i));
end
plot(xmonth,cumulative(length(cumulative))-cumulative)
title('Cumulative Distribution of Annual Wind')
xlabel('Windspeed (m/s)')
ylabel('Hours')
xmonthpwr=xmonth.^(1.3); %exp=1.3 for 1.5km fetch, 2.3797 for 4.5km fetch
monthPcentrd=(sum(xmonthpwr.*total_month_hrs)./sum(total_month_hrs))^(1/1.3);
C.1.9: convertOSS.m
Reformats a .xls file containing raw OSSI Wave Logger data into a new .xls file containing columns with the date, collection time,
time during sampling, and water level in cm.
function convertOSS(Hz)
%This function inputs a text file of water level "counts" recorded by the
%capacitance wave gage and converts them to cm with a formula given by
%Ocean Sensor Systems. A time stamp for only the first count was originally
%taken from the text file; it is used to generate time stamps for all data
%such that there is one column of time stamps and one column of water level
%in cm.
%Hz is the fequency at which the wave gage was configured to sample
%Input file
matrix = xlsread('WLOG_000.xls');
a = size(matrix);
%Omit column 13, which has all zeroes (due to formatting of inputted
%matrix)
for i = 1:12
new(:,i) = matrix(:,i);
end
%Concatenate all the rows of water level data into one large row
new2 = new(1,:);
for i = 2:a(1)
new2 = [new2,new(i,:)];
end
%Transpose water level data to a column of length b
new2 = new2';
%Convert from counts to cm
new2 = new2.*50./4096;
b = length(new2);
%Add timestamps for all water level data points from timestamp given at
%beginning of data series
date(1) = datenum([2007 8 11 15 57 0]);
for i = 2:b
%1/864000 is the fraction of one day that 1/10 of a second constitutes
%1/20 of a second is how often data are sampled
date(i) = date(i-1) + (1./(86400*Hz));
end
%Transpose the timestamps into a column
date = date';
%Change from julian to vector date
date2 = datevec([date]);
%Create matrix with vector date and column of water levels
final = [date2,new2];
size(final)
%Write new csv file with data in proper format
dlmwrite('final.csv',final,',');
%Plot data for visual inspection
plot(date,new2)
set(gca,'Box','Off');
set(gca,'FontSize',10);
datetick('x',13,'keepticks','keeplimits');
C.1.10: process_wave_data.m
Performs zero-up-crossing analysis on a time series of water levels and returns the significant wave height and peak period and
prints the amplitude spectrum
function [N, wave_heights, zero_ups, periods, freqs, amp_spec] = process_wave_data(eta, t, Hz)
% Zero up-crossing wave height analysis
n=1;
m=2;
for i = 1:length(eta)
if(eta(1)<0)
if(eta(i)>0)
z1=i;
break
end
end
if(eta(1)>0)
if(eta(i)<0)
z1=i;
break;
end
end
end
zero_ups(1) = (t(z1)+t(z1+1))/2;
last_upcrossing = z1;
for i = z1:(length(eta)-2)
if( (eta(i+1) > 0) & (eta(i) < 0) )
zero_ups(m) = (t(i+1) + t(i))/2;
periods(m-1) = zero_ups(m)-zero_ups(m-1);
m = m+1;
segment = eta(last_upcrossing:i);
%look for crests
crests(n) = max(segment);
%look for troughs
troughs(n) = min(segment);
last_upcrossing = i+1;
n = n+1;
end
end
N = n-1
wave_heights = crests-troughs;
wave_heights = wave_heights';
zero_ups = zero_ups';
crests = crests';
troughs = troughs';
periods = periods';
figure;
subplot(2,1,1), plot(wave_heights);
subplot(2,1,2), plot(t, eta);
xlabel('t (s)');
figure;
[freq_heights, x_heights] = hist(wave_heights,40)
subplot(2,1,1), bar(x_heights, freq_heights);
title('Hs');
for i = 1:length(freq_heights)
cumulative(i) = sum(freq_heights(1:i));
end
subplot(2,1,2), plot(x_heights, cumulative);
Hs_threshhold = 2/3*cumulative(length(cumulative))
figure;
hist(periods,30)
title('Tp');
% Energy spectrum generation
Ts = 1/Hz;
ne = length(eta);
Tr = t(ne-1)-t(1);
fr = 1/Tr;
fN = 1/(2*Ts);
freqs = [0, fr:fr:fN, -fN+fr:fr:-fr];
Eta = eta(1:length(freqs));
sig_spec = fft(Eta)/ne;
amp_spec = abs(sig_spec);
figure;
stem(freqs, amp_spec);
C.2: W
ave Properties
C.2.1: newton_raphson.m
Newton-Raphson method for solving dispersion equation to calculate wavelength of linear water waves; performs same function as
L_calc.m above.
function[kp] = newton_raphson(T,h)
CLOSE_ENOUGH = 1e-10;
g = 9.81; %gravitational accel
k = 0.5; %initialize k
k_next = 0.8; %intialize k_next to greater than k+CLOSE_ENOUGH
sigma = 2*pi/T; %wave frequency
n=0;
while abs(k-k_next)>CLOSE_ENOUGH,
k = k_next;
f = sigma^2-g*k*tanh(k*h); %want this to equal 0
df_dk = -g*(k*(h*(1/(cosh(k*h))^2))+tanh(k*h));
k_next = k - f/df_dk;
n = n+1;
end
%display results, inputs, and number of cycles
kp=k;
C.2.2: sine_particles.m
Calculates and illustrates particle vertical and horizontal displacement at a given time in a water column over 4 wavelengths for a
linear wave
function[x_disp,y_disp,z,x] = sine_particles(T,h,H)
%water particle positions over 4 wavelengths at t=T/2
% in y-direction, for z=0;
% in x-direction, for x=0:L/2
kp = newton_raphson(T,h)
L=2*pi/kp;
x=[0:.01:4*L];
z=[H/2:-.01:-h];
t=0.5*T %Note that since we are modeling over more than a wavelength, the choice of t is not
important
for i = 1:length(x)
for j=1:length(z)
% deep water (linear) ellipses of wave particle movement
x_disp(j,i) = -H/2*cosh(kp*(h+z(j)))/sinh(kp*h).*sin(kp.*x(i)-2*pi/T*t);
y_disp(j,i) = H/2*sinh(kp*(h+z(j)))/sinh(kp*h).*cos(kp.*x(i)-2*pi/T*t);
end
end
for i=1:length(z)
if z(i)>0
continue;
else
p=i;
break;
end
end
p
for j=p:length(z)
plot(x,h+z(j)+y_disp(j,:))
hold on;
end
ylabel('z (m)')
xlabel('x (m)')
title('water particle vertical displacements at t=T/2 for x=0 to 4L')
figure;
for i = 1:length(x)/4+2 %only one wavelength, plus 2 columns to get the full effect
plot(x(i)+x_disp(p:length(z),i),z(p:length(z)),'b', x(i), H/2*cos(kp*x(i)-2*pi/T*t), 'r')
hold on;
end
ylabel('z (m)')
xlabel('x (m)')
title('water particle x-displacement at t=T/2 for x=0 to L')
figure;
for j = p:length(z)
for i = 1:5:1.5*(length(z)-p)
plot(x(i)+x_disp(j,i),h+z(j)+y_disp(j,i),'b', x(i), h+ H/2*cos(kp*x(i)-2*pi/T*t),'r')
hold on;
end
end
ylabel('z (m)')
xlabel('x (m)')
title('water particle positions at t=T/2 for x=0 to L')
C.2.3: sine_particles_with_time.m
Same as sine_particles.m except additionally illustrates the movement of particles over 0.1 seconds.
function[x_disp,y_disp,z,x] = sine_particles(T,h,H)
%water particle positions over 4 wavelengths at t=T/2
% in y-direction, for z=0;
% in x-direction, for x=0:L/2
kp = newton_raphson(T,h)
L=2*pi/kp;
x=[0:.01:4*L];
z=[H/2:-.01:-h];
t=0.5*T %Note that since we are modeling over more than a wavelength, the choice of t is not
important
for i = 1:length(x)
for j=1:length(z)
% deep water (linear) ellipses of wave particle movement
x_disp(j,i) = -H/2*cosh(kp*(h+z(j)))/sinh(kp*h).*sin(kp.*x(i)-2*pi/T*t);
y_disp(j,i) = H/2*sinh(kp*(h+z(j)))/sinh(kp*h).*cos(kp.*x(i)-2*pi/T*t);
end
end
for i=1:length(z)
if z(i)>0
continue;
else
p=i;
break;
end
end
p
for j=p:length(z)
plot(x,h+z(j)+y_disp(j,:))
hold on;
end
ylabel('z (m)')
xlabel('x (m)')
title('water particle vertical displacements at t=T/2 for x=0 to 4L')
figure;
for i = 1:length(x)/4+2 %only one wavelength, plus 2 columns to get the full effect
plot(x(i)+x_disp(p:length(z),i),z(p:length(z)),'b', x(i), H/2*cos(kp*x(i)-2*pi/T*t), 'r')
hold on;
end
ylabel('z (m)')
xlabel('x (m)')
title('water particle x-displacement at t=T/2 for x=0 to L')
figure;
for j = p:length(z)
for i = 1:5:1.5*(length(z)-p)
plot(x(i)+x_disp(j,i),h+z(j)+y_disp(j,i),'b', x(i), h+ H/2*cos(kp*x(i)-2*pi/T*t),'r')
hold on;
end
end
ylabel('z (m)')
xlabel('x (m)')
title('water particle positions at t=T/2 for x=0 to L')
C.3: W
avemak
er O
ptim
ization
C.3.1: stroke.m
Calculates the stroke needed to generate waves with parameters h, T, H using a flapper paddle
function[Sflap, Spiston, Sexp, Sexp1, Shyp] = stroke(h,T,H)
%Calculates stroke needed to generate waves with parameters h,T,H with a
%flapper paddle, piston paddle, exponential decay, and hyperbolic curve
%plunger
g=9.8;
kp = newton_raphson(T,h)
Sflap=H/(4*(sinh(kp*h)/(kp*h))*(kp*h*sinh(kp*h)-cosh(kp*h)+1)/(sinh(2*kp*h)+2*kp*h));
Spiston = H/(2*(cosh(2*kp*h)-1)/(sinh(2*kp*h)+2*kp*h));
z = [-h:.001:0];
arrrrgh = 4*kp.*sinh(kp*h)./(sinh(2*kp*h)+2*kp*h).*(trapz(z,exp(kp*z).*cosh(kp*(h+z))));
Sexp = H/arrrrgh;
arrrgh1 = 4*kp.*sinh(kp*h)./(sinh(2*kp*h)+2*kp*h).*(exp(-kp*h)*(2*kp*h+exp(2*kp*h)-1))/(4*kp);
Sexp1=H/arrrgh1;
Shyp=H;
kh = [0:.01:6];
H_S_flap = 4.*(sinh(kh)./kh).*(kh.*sinh(kh)-cosh(kh)+1)./(sinh(2*kh)+2*kh);
H_S_piston = 2*(cosh(2*kh)-1)./(sinh(2*kh)+2*kh);
H_S_exp = 4*kp.*sinh(kh)./(sinh(2*kh)+2*kh).*(exp(-kh).*(2*kh+exp(2*kh)-1))/(4*kp);
H_S_hyp = 1;
figure;
plot(kh, H_S_flap, 'b', kh, H_S_piston, 'r', kh, H_S_exp, 'g', kh, H_S_hyp, 'c')
ylabel('H/S')
xlabel('kh')
legend('flap', 'piston', 'exponential decay', 'hyperbolic')
figure;
plot(kh, 1./H_S_flap, 'b', kh, 1./H_S_piston, 'r', kh, 1./H_S_exp, 'g', kh, 1/H_S_hyp, 'c' )
ylabel('S/H')
xlabel('kh')
legend('flap', 'piston', 'exponential decay', 'hyperbolic')
C.3.2: find_standing.m
Demonstration that Standing (Evanescent) Wave Components are Negligible for Exponential Decay-Shaped Paddles, and that
results improve for higher-resolution integration
function[H,ks,kp,Sz]=find_standing(T,h,n,S)
%Calculates evanescent wave coefficients for exponential decay paddle with
%stroke Sz; Based on Ch.6 Dean & Dalrymple
%Also calculates significant wave height generated and standing and
%progeressive
%T = incoming wave period
%h = water depth
%n = number of terms of the standing wave desired
%S = max stroke length
kp=newton_raphson(T,h); %progressive wave component
g=9.81;
kh=0.0001:0.0001:2*n*pi; %all frequencies for at least as many cycles as desired terms
y1=-tan(kh); % = sigma^2*h/(g*k*h), for k=ks
plot(kh,y1,'b') %the places where y1 and y2 cross are standing wave k's
hold on;
s=2*pi/T; %sigma
y2=s^2*h./(g*kh);
plot(kh,y2,'r');
hold off;
m=1;
for j=1:length(kh) %find crossing frequencies
if(y1(j)<y2(j));
continue;
else
break;
end
end
for i=j:length(kh)
if(y1(i)>=y2(i))
ks(m)=kh(i)/h;
continue;
else
if(y1(i-1)>=y2(i-1) && y1(i)<y2(i))
m=m+1;
if(m>n)
break;
end
end
continue;
end
end
ks
z=[0:-.0001:-h];
Sz=S*exp(kp*z); %exponential decay paddle
figure;
plot(Sz,z);
for m=1:n
C(m)=trapz(z,1/2*Sz.*(s*cos(ks(m)*(h+z))))/(ks(m)*trapz(z,(cos(ks(m)*(h+z))).^2));
end
C
Ap = -trapz(z,Sz./2*s.*cosh(kp*(h+z)))/(kp*trapz(z,(cosh(kp*(h+z))).^2))
H = -2*Ap./g*s*cosh(kp*h)
C.3.3: paddleswath.m
Illustration of Lateral Boundary Condition at Face of Exponential-Decay-Shaped Plunger Buoy, given deep-water sinusoidal
waves
function[dS]=paddleswath(T,h,S,H)
% Calculates the position of the exponential decay buoy face for all depths
% at t=0, t=T/4, and t=T/2
% Plots paddle face movement (and therefore particle displacement) over
% time at the surface and at half-depth.
% Plots maximum differnce in face position for all depths
kp = newton_raphson(T,h);
z = [H/2:-.01:-h]; %Plots show +eta to sea floor at -h
t = [0:.01:2*T]; %Plots over 2 periods
eta = H/2*cos(2*pi/T*t); %Sine wave at surface
%in general, s(z,t) = S*exp(kp*(z-eta));
S0t=S*exp(kp*(0-eta)); %Buoy face at top of buoy, wrt t
S0_5t=S*exp(kp*(-0.5*h-eta)); %Buoy face at buoy half-way down, wrt t
Sz0=S*exp(kp*(z-H/2)); %Buoy face when buoy top is at +H/2, wrt z
SzT_2=S*exp(kp*(z+H/2)); %Buoy face when buoy top is at -H/2, wrt z
SzT_4=S*exp(kp*(z+0)); %Buoy face when buoy top is at 0, wrt z
dS = Sz0-SzT_2; %Difference in face displacement betw. crest and trough
plot(Sz0,z, SzT_4,z,SzT_2,z); %Plot face position at various times
axis([0,S,-h,H/2]);
title('Sinusoidal Buoy Motion in Z-axis');
ylabel('z (m)');
xlabel('S(z) (m)');
legend('t=0', 't=0.25T', 't=0.5T');
figure;
plot(t,S0t,'b',t,S0_5t,'r'); %Plot face position at given z over 2 periods
title('Strokes at z=0 and z=-0.5h wrt time');
ylabel('S (m)');
xlabel('t (s)');
legend('Top of buoy', 'Half-way down buoy');
figure;
title('Extent of the paddle stroke wrt z');
plot(dS,z);
C.3.4: Smatrix.m
Same as AB.6, except calculated with more resolution
function[s,z,t]=Smatrix(T,h,S,H)
%Plots the surface of an exponential decay paddle over time, and
%shows particle movement diameters with depth given sinusoidal
%movement of the buoy
kp = newton_raphson(T,h);
z = [H/2:-.01:-h];
t = [0:.01:4*T];
eta = H/2*(cos(2*pi/T*t));
w = H/2*2*pi/T*cos(2*pi/T*t); % vertical velocity = derivative of eta wrt t
s = zeros((H/2+h)/.01,4*T/.01); % initialize stroke matrix
for j=1:length(z) % rows are increasing depth
for i=1:length(t) % columns are increasing time
s(j,i) = S*exp(kp*(z(j)-eta(i)));
end
end
plot(s,z); %plot the face of the buoy at each time
axis([0,0.5,-h,H/2+0.1]);
title('Buoy/Paddle face position over 4 periods');
ylabel('z (m)');
xlabel('x (m)');
figure;
plot(t,s(51,:),t,s(76,:),t,s(length(z),:));
%Note: all s-values over S are invalid, and therefore the highest row in s
%to hold totally valid values is -eta
hold on;
% for n=1:8
% plot(t,(n+.5*((-1)^n-1))*pi*.215-(-1)^n*.215*acos(1-t/.215)-sqrt(2*.215*t-t.^2),'m');
% end
title('Water particle movement at various depths given sinsoidal buoy movement');
xlabel('t (s)');
ylabel('stroke (m)');
legend('z=-0.25m', 'z=-0.5m', 'z=-1m');
hold off;
S_extent = [max(s,[],2)-min(s,[],2)];
figure;
plot(S_extent,z);
title('Depth vs. Magnitude of horizontal particle movement at paddle face');
C.4: W
EC D
esign Calculation
s
C.4.1: buoy_def.m
Creates an excel file defining the profile of the buoy; to be used with Autodesk Inventor as the source of the widths defining the buoy
profile
function[curve] = buoy_def(h,T,H)
z=[-h:.01:0];
kp = newton_raphson(T,h);
L = 2*pi/kp;
d_min = L/2;
[Sflap, Spiston, Sexp, Sexp1, Shyp] = stroke(h,T,H);
curve = Shyp*cosh(kp*(h+z))/sinh(kp*h);
curve = curve';
% xlswrite('buoy_curve.xls', 'param name', 'A1');
% xlswrite('buoy_curve.xls', 'value', 'B2');
% xlswrite('buoy_curve.xls', 'unit', 'C1');
xlswrite('buoy_curve1.xls', curve, 'B1:B100');
xlswrite('buoy_curve1.xls', 'm', 'C1:C103');
xlswrite('buoy_curve1.xls', kp, 'B101:B101');
xlswrite('buoy_curve1.xls', L, 'B102:B102');
xlswrite('buoy_curve1.xls', d_min, 'B103:B103');
xlswrite('buoy_curve1.xls', 'ul', 'C101:C101');
C.4.2: find_best_magnet.m
Used for calculating BHmax strength and mass of a ring magnet given its dimensions and N-rating
function[V,BHmax1_V, BHmax2_V, mass] = find_best_magnet(OD, ID, L, N, mm_or_in)
% V returns in cubic meters
% BHmaxes return in KJ
% masses return in grams
if mm_or_in == 'mm'
elseif mm_or_in == 'in'
ID = ID*25.4;
OD = OD*25.4;
L = L*25.4;
else
return;
end
A = ((OD/2)^2-(ID/2)^2)*pi;
V = A*L*10^-9;
switch N
case 35,
BHmax1_V = 263*V;
BHmax2_V = 279*V;
case 38
BHmax1_V = 287*V;
BHmax2_V = 303*V;
case 40
BHmax1_V = 303*V;
BHmax2_V = 318*V;
case 42
BHmax1_V = 318*V;
BHmax2_V = 334*V;
case 45
BHmax1_V = 342*V;
BHmax2_V = 358*V;
case 50
BHmax1_V = 374*V;
BHmax2_V = 406*V;
otherwise
BHmax1_V = 0;
BHmax2_V = 0;
end
mass = V*7500*10^3;
C.4.3: gen_dims.m
Calculates the number of turns and turns per inch per layer for the linear generator, given the ideal inductance, former diameter,
coil length and depth, and number of layers permissible
function[] = gen_dims(L,a,b,c,layers)
%b=[1:.1:5];
Nsqd = L*(3*a+9.*b+10*c)/(0.2*a^2);
N = sqrt(Nsqd)
TPI = N./b
TPIpLayer = TPI./layers
%plot(b,TPIpLayer);
R = 306/(1000*36)*b
C.4.4: force_moment_calc.m
Calculates wave forces on a partial-depth wave barrier, based on equations from the CEM, section VI-5-52
function[Fmo] = force_moment_calc(w, h, rho, Hs, Tp, r_wave_rod)
%w = barrier penetration depth,
%h = water depth
%r_wave_rod = distance from SWL to first support
g=9.8;
[Lp,kp] = L_calc(Tp,h);
Fo = rho*g*Hs*sinh(kp*h)/(kp*cosh(kp*h));
Fmo = Fo*(w/h)^(0.386*(h/Lp)^-0.7);
w_h = w/h
h_Lp = h/Lp
M = Fmo*r_wave_rod;
C.5: Postprocessing Rou
tines
C.5.1: freq_calibration.m
Displays the power output and proportion of the record time that the DC/DC converter was powered during a trial of the
oscillation table, given the oscillation frequency and distance and the record of the circuit’s data.
function[speed, mA_h_WEC, WEC_avg_pwr, on_ratio] = freq_calibration(WEC_file, xls_sheet, excitation_freq, travel)
%*****************Load Files*****************
%xls files entered as strings, for example,
%'test_data/front_street_180408_WEC.xls'.
%import the data/text file from the WEC into excel and read
%here. The user interface import is used for retrieving non-strictly-numerical data
speed = 2*travel*excitation_freq;
load_str = ['xlsread(', 'WEC_file',',','xls_sheet',')'];
WEC_data = eval(load_str);
pause;
Rsense = 10;
Rsense1 = 10;
WEC_freq = 8;
load_slope = 488.9; %ADC counts per V
sense_slope = 938.24; %ADC counts per mA
sense_offset = 266; %ADC counts at 0 current
sense1_slope = 1006; %ADC counts per mA
coil_slope = 674.52; %ADC counts per V
count_Vload = 0;
%************Retrieve date and initialize time ******
hour_W = WEC_data(3:length(WEC_data)-1,1);
minutes_W = WEC_data(3:length(WEC_data)-1,2);
seconds_W = WEC_data(3:length(WEC_data)-1,3);
file_string = [xls_sheet];
WEC_time = ((hour_W-hour_W(1))*3600)+((minutes_W-minutes_W(1))*60)+(seconds_W-seconds_W(1)); %time elapsed since
data collection start, in seconds
ADCsense = WEC_data(3:length(WEC_data)-1,6);
ADCload = WEC_data(3:length(WEC_data)-1,7);
ADCcoil = WEC_data(3:length(WEC_data)-1,4);
ADCsense1 = WEC_data(3:length(WEC_data)-1,5);
Isense = (ADCsense-sense_offset)./sense_slope; %in mA (from calibration and 0V ICs)
Vload = ADCload./load_slope; %slope in ADC counts per volt, 0 offset
Vcoil = ADCcoil./coil_slope; %slope in ADC counts per volt, 0 offset
Isense1 = (ADCsense1)./sense1_slope; %in mA (from calibration and 0V ICs)
P1 = Isense1.*Vcoil; %mW into DC/DC converter
P2 = Isense.*Vload; %mW out of DC/DC converter
DCDCefficiency = P2./P1;
comparison_data = [Vcoil'; Isense1'; Isense'; Vload'; P1'; P2'; DCDCefficiency']'
load_str = ['save ', file_string,'_data comparison_data'];
eval(load_str);
mA_h_WEC = sum(Isense1)/(WEC_freq*(WEC_time(length(WEC_time)))); %hours*milliamps, per hour of sampling
for i = 1:length(comparison_data)
if comparison_data(i,4)>4.90
count_Vload = count_Vload + 1;
end
end
on_ratio = count_Vload/length(comparison_data)*100;
WEC_charge = sum(P2/1000)/(WEC_freq); %total energy collected, in N*m=V*A*s
WEC_n = length(WEC_time);
Tr = WEC_time(WEC_n-1)-WEC_time(1);
WEC_avg_pwr = WEC_charge/Tr*1000; %mW
str =['avg speed = ', num2str(speed),' (in/s)'];
disp(str)
str =['Tr = ', num2str(Tr),' (s)'];
disp(str)
str =['total energy (charge)= ', num2str(mA_h_WEC),' (mA-s per second of sampling)'];
disp(str)
str =['avg_pwr = ', num2str(WEC_avg_pwr),' (mW)'];
disp(str)
str =['ON ratio = ', num2str(on_ratio),'%'];
disp(str)
%Plot shows how coil output corresponds to input wave time series
figure;
plot(WEC_time, P2, 'm', WEC_time, Vcoil, 'r');
title('DC/DC Power Out and Coil Voltage vs. time');
legend('Power out (mW)', 'Coil Voltage (V)');
C.5.2: efficiency_spectrum.m
Conducts the WEC performance and spectral analysis calculations given .xls files containing the OSS wave staff record and the
WEC data record
function[Hs, Hmo, Tp, wg_avg_power, WEC_avg_power, efficiency, on_ratio] = efficiency_spectrum(WEC_file,
WEC_worksheet, wave_file, water_depth)
%*****************Load Files*****************
%Files entered as strings, for example,
%'test_data/front_street_180408_WEC.xls'.
%Both files should be xls files; import the csv file from wg into Excel and
%process here; import the data/text file from the WEC into excel and read
%here. The user interface import is used for retrieving non-strictly-numerical data
load_str = ['xlsread(', 'WEC_file', ', WEC_worksheet' ,')'];
WEC_data = eval(load_str);
load_str = ['uiimport(', 'wave_file',')'];
eval(load_str);
pause;
Rsense = 10;
Rsense1 = 10;
WEC_freq = 8;
load_slope = 488.9; %ADC counts per V
sense_slope = 938.24; %ADC counts per mA
sense_offset = 266; %ADC counts at 0 current
sense1_slope = 1006; %ADC counts per mA
coil_slope = 674.52; %ADC counts per V
density = 1015; %lagoon water, in kg/m^3
capture_width = 0.4318; %meters
n_seg = 1024; %number of data points per spectrum in wave analysis
%************Retrieve date and initialize time ******
day_W = WEC_data(1,1);
month_W = WEC_data(1,2);
year_W = WEC_data(1,3);
hour_W = WEC_data(3:length(WEC_data)-1,1); %remove final row in case of partial data
minutes_W = WEC_data(3:length(WEC_data)-1,2);
seconds_W = WEC_data(3:length(WEC_data)-1,3);
year_wg = char(textdata(1,1))-0; %turns 'Y07' into an array of 3 ascii values
year_wg = 2000+[(year_wg(2)-48)*10+(year_wg(3)-48)]; %converts to a decimal year
month_wg = char(textdata(1,2))-0;
month_wg = [(month_wg(2)-48)*10+(month_wg(3)-48)];
day_wg = char(textdata(1,3))-0;
day_wg = [(day_wg(2)-48)*10+(day_wg(3)-48)];
hour_wg = char(textdata(1,4))-0;
hour_wg = [(hour_wg(2)-48)*10+(hour_wg(3)-48)];
mins_wg = char(textdata(1,5))-0;
mins_wg = [(mins_wg(2)-48)*10+(mins_wg(3)-48)];
secs_wg = char(textdata(1,6))-0;
secs_wg = [(secs_wg(2)-48)*10+(secs_wg(3)-48)];
freq_wg = char(textdata(1,7))-0;
freq_wg = [(freq_wg(2)-48)*10+(freq_wg(3)-48)];
clear data;
if (day_W ~= day_wg) | (month_W ~= month_wg) | (year_W ~= year_wg)
display('Dates do not match');
disp('WEC: ')
WEC_date_str = ['day: ',num2str(day_W),' month: ',num2str(month_W),'year: ',num2str(year_W)];
%hour_W(1),minutes_W(1),seconds_W(1)
disp(WEC_date_str)
disp('wg:')
wg_date_str = ['day: ',num2str(day_wg),' month: ',num2str(month_wg),'year: ',num2str(year_wg)];
%hour_wg(1),mins_wg(1),secs_wg(1)
disp(wg_date_str)
end
date_string = [num2str(day_W),'_',num2str(month_W),'_',num2str(year_W)];
wg_final = [num2str(day_W),'_',num2str(month_W),'_',num2str(year_W),'_',WEC_worksheet,'_','wg.csv'];
wg_data = convertOSS_WEC(wave_file,freq_wg,wg_final,year_wg,month_wg,day_wg,hour_wg,mins_wg,secs_wg);
WEC_time = ((hour_W-hour_W(1))*3600)+((minutes_W-minutes_W(1))*60)+(seconds_W-seconds_W(1)); %time elapsed since
data collection start, in seconds
wg_time = ((wg_data(:,4)-wg_data(1,4))*3600)+((wg_data(:,5)-wg_data(1,5))*60)+(wg_data(:,6)-wg_data(1,6)); %time
elapsed since data collection start, in seconds
delta_t = ((hour_wg(1)*3600+mins_wg(1)*60+secs_wg(1))-(hour_W(1)*3600+minutes_W(1)*60+seconds_W(1)));
%************ Separate data into variables ***********
wave_data = wg_data(:,7); %wave height in cm
wg_time = wg_time(~isnan(wave_data)); %remove data indeces with NANs in the wave gage data
wave_data = wave_data(~isnan(wave_data)); %remove data indeces with NANs in the wave gage data
ADCsense = WEC_data(3:length(WEC_data)-1,6);
ADCload = WEC_data(3:length(WEC_data)-1,7);
ADCcoil = WEC_data(3:length(WEC_data)-1,4);
ADCsense1 = WEC_data(3:length(WEC_data)-1,5);
%**************Calculate WEC performance results*************
Isense = (ADCsense-sense_offset)./sense_slope; %in mA (from calibration and 0V ICs)
Vload = ADCload./load_slope; %slope in ADC counts per volt, 0 offset
Vcoil = ADCcoil./coil_slope; %slope in ADC counts per volt, 0 offset
Isense1 = (ADCsense1)./sense1_slope; %in mA (from calibration and 0V ICs)
P1 = Isense1.*Vcoil; %mW into DC/DC converter
P2 = Isense.*Vload; %mW out of DC/DC converter
DCDCefficiency = P2./P1;
comparison_data = [Vcoil'; Isense1'; Isense'; Vload'; P1'; P2'; DCDCefficiency']';
% limit the data to full cap charge cycles
i=1;
while(Vcoil(i)>=3)
i=i+1;
end
j=length(Vcoil);
while(Vcoil(j)>=3)
j=j-1;
end
comparison_data = comparison_data(i:j,:);
Isense = Isense(i:j);
Vload = Vload(i:j);
Vcoil = Vcoil(i:j);
Isense1 = Isense1(i:j);
P1 = P1(i:j);
P2 = P2(i:j);
DCDCefficiency = DCDCefficiency(i:j);
WEC_time = WEC_time(1:j-i+1);
WEC_outfile = [date_string,'_',WEC_worksheet,'_WEC.csv'];
load_str = ['dlmwrite(','WEC_outfile',',','comparison_data',')'];
eval(load_str);
count_Vload = 0;
for i = 1:length(comparison_data)
if comparison_data(i,4)>4.90
count_Vload = count_Vload + 1;
end
end
on_ratio = count_Vload/length(comparison_data)*100; % Percentage of time DC/DC converter was outputting power
mA_h_WEC = sum(Isense1)/(WEC_freq*(WEC_time(length(WEC_time)))); %hours*milliamps, per hour of sampling
WEC_charge = sum(P2/1000)/(WEC_freq); %total energy collected, in N*m=V*A*s
WEC_n = length(WEC_time);
Tr = WEC_time(WEC_n-1)-WEC_time(1);
WEC_avg_power = WEC_charge/Tr*1000; %mW
%***************Incoming wave analysis*****************
eta = (detrend(wave_data))/100; %in m
figure(1);
subplot(2,1,2),plot(wg_time, eta*100);
xlabel('time (s)')
figure; %Plot how coil output corresponds to input wave time series
%plot(wg_time, eta*100, 'b', WEC_time, P2, 'm', WEC_time, Vcoil, 'r'); %use when wave record is shorter than WEC
record
plot(wg_time(1:round(length(P2)*10/8)), eta(1:round(length(P2)*10/8))*100, 'b', WEC_time, P2, 'm', WEC_time, Vcoil,
'r');
title('Eta, DC/DC Power Out, and Coil Voltage vs time');
legend('Eta (cm)', 'Power out (mW)', 'Coil Voltage (V)');
xlabel('time (s)');
%*** Time series analysis ***
[wave_heights, T, Hs] = heights(eta, wg_time);
figure;
plot(wave_heights);
title('Wave Heights (m)');
figure;
hist(wave_heights, 20);
title('Wave Heights Histogram (Hmode)');
xlabel('H (m)')
figure;
hist(T, 20)
title('Wave Period Histogram (Tmode)')
xlabel('T (s)')
%*** Frequency analysis ***
[Tp, Lp, kp, Hmo, variance] = spectral_anal(eta, wg_time, water_depth, P2, Vcoil, n_seg);
Hmo_avg = mean(Hmo);
Tp_avg = mean(Tp);
Lp_avg = mean(Lp);
kp_avg = mean(kp);
var_avg = mean(variance);
wg_energy = var_avg * 1010 * 9.81; %J/m^2
Cg = 1/2*(1+(2*kp_avg*water_depth)./sinh(2*kp_avg*water_depth))* Lp_avg/Tp_avg;
wg_avg_power = wg_energy*Cg*capture_width*1000; %(in mW)
efficiency = WEC_avg_power/wg_avg_power;
str = ['WEC record started ',num2str(delta_t),'s before wavegage record'];
disp(str)
str = [' WG Record time = ',num2str( wg_time(1024)-wg_time(1) ),' (s)'];
disp(str)
str = ['Hs = ', num2str(Hs),' (m)'];
disp(str)
str = ['Hmo = ', num2str(Hmo_avg),' (m)'];
disp(str)
str = ['Tp = ', num2str(Tp_avg),' (s)'];
disp(str)
str = [' Variance = ', num2str(var_avg),' (m^2)'];
disp(str)
str = [' Incident wave energy = 1/8*rho*g*Hmo^2 = ',num2str(wg_energy),' (J/m^2)'];
disp(str)
str = [' Wave avg power per m wavefront = ', num2str(wg_avg_power/capture_width),' (mW)'];
disp(str)
str = [' WEC avg excitation power = ', num2str(wg_avg_power),' (mW)'];
disp(str)
str =['Total energy = sum(Power*dt) = ', num2str(WEC_charge),' (J)'];
disp(str)
str =[' WEC avg power output = ', num2str(WEC_avg_power),' (mW)'];
disp(str)
str =['WEC efficiency = ', num2str(efficiency*100),'%'];
disp(str)
str =[' ON ratio = ', num2str(on_ratio),' (%)'];
disp(str)
figure;
subplot(2,1,1), stem(wg_freqs, wg_sig_spect, 'b');
subplot(2,1,2), stem(wg_freqs, wg_amp_spect, 'b');
title('Signal and Amplitude Spectra for Incident Wave Power')
xlabel('Hz')
C.5.3: convertOSS_WEC.m
Reformats the wavegage record into a time and a water surface data vector
function[final] = convertOSS_WEC(file,Hz,outfile,yr,month,day,hr,min,sec)
%This function inputs a text file of water level "counts" recorded by the
%capacitance wave gage and converts them to cm with a formula given by
%Ocean Sensor Systems. A time stamp for only the first count was originally
%taken from the text file; it is used to generate time stamps for all data
%such that there is one column of time stamps and one column of water level
%in cm.
%Hz is the fequency at which the wave gage was configured to sample
%Input file
load_str = ['xlsread(', 'file',')'];
matrix = eval(load_str);
a = size(matrix);
%Omit column 13, which has all zeroes (due to formatting of inputted
%matrix)
for i = 1:12
new(:,i) = matrix(:,i);
end
%Concatenate all the rows of water level data into one large row
new2 = new(1,:);
for i = 2:a(1)
new2 = [new2,new(i,:)];
end
%Transpose water level data to a column of length b
new2 = new2';
%Convert from counts to cm
new2 = new2.*50./4096;
b = length(new2);
%Add timestamps for all water level data points from timestamp given at
%beginning of data series
date(1) = datenum([yr month day hr min sec]);
for i = 2:b
%1/864000 is the fraction of one day that 1/10 of a second constitutes
%1/20 of a second is how often data are sampled
date(i) = date(i-1) + (1./(86400*Hz));
end
%Transpose the timestamps into a column
date = date';
%Change from julian to vector date
date2 = datevec([date]);
%Create matrix with vector date and column of water levels
final = [date2,new2];
%size(final);
%Write new csv file with data in proper format
load_str = ['dlmwrite(','outfile',',','final',')'];
eval(load_str);
%Plot data for visual inspection
figure;
subplot(2,1,1),plot(date,new2)
title('Eta (cm) vs time, first raw from OSS converter, then from upcrossing code');
xlabel('time (hh:mm:ss)')
set(gca,'Box','Off');
set(gca,'FontSize',10);
datetick('x',13,'keepticks','keeplimits');
C.5.4: spectral_anal.m
Divides the wavegage record into segments, windows it, and determines the wave properties based on FFT analysis.
function [Tp, Lp, kp, Hmo, variance, first_data_point, last_data_point] =
spectral_anal(eta, t, water_depth, P2, Vcoil, n_seg,a, b)
n = length(eta);
ni = (floor(n/n_seg))*4-3 %number of "subspectra" with 75% overlap
Tr = t(n_seg)-t(1);
Ts = Tr/n_seg;
fr = 1/Tr;
fN = 1/(2*Ts);
wg_freqs = [0, fr:fr:fN, -fN+fr:fr:-fr];
pos_freqs = [0, fr:fr:fN];
my_window = blackmanharris(n_seg);
window_area = mean(my_window);
my_window = my_window/window_area;
var_threshhold = 0.0005;
for i = 0:1:ni-1
%*** Window the data subset and create the subspectrum ***
current_eta = [eta(1+i*n_seg/4:(i+4)*n_seg/4)].*my_window;
if( i == a-1 )
str = ['first at ',num2str(1+i*n_seg/4) ];
first_data_point = (1+i*n_seg/4);
end
if ( i == b)
str = ['last at ',num2str((i+4)*n_seg/4 )];
last_data_point = (i+4)*n_seg/4;
end
%current_P2 = [P2(1+i*1024*10/8:(i+1)*1024*10/8)];
sig_spect =fft(current_eta)/n_seg;
amp_spect = abs(sig_spect);
pwr_spec = sig_spect.*conj(sig_spect);
pwr_spec_cont = pwr_spec/fr; %divide by fr for continuous spectrum
%*** Various methods for calculating variance; should agree ***
wg_pwr_spec_var = sum(pwr_spec_cont)*fr; %variance of eta(t) = time-avg wave energy/rho*g =
% auto-correlation of t=0 (in m^2)
wg_var_trap = trapz(wg_freqs,pwr_spec_cont);
eta_mean = sum(current_eta)/n_seg;
eta_var = sum((current_eta-eta_mean).^2)/n_seg;
eta_var_function = var(current_eta);
if(abs(wg_pwr_spec_var-wg_var_trap)> var_threshhold |...
abs(wg_pwr_spec_var-eta_var)> var_threshhold | ...
abs(wg_pwr_spec_var-eta_var_function)> var_threshhold)
disp('********** Check variance **********');
pause;
end
current_Hmo = sqrt(8*wg_pwr_spec_var);
[Tp_value, Tp_index] = max(pwr_spec_cont);
Tp_current = abs(1/wg_freqs(Tp_index));
while(isinf(Tp_current) | Tp_current > 5)
pwr_spec_cont(Tp_index) = 0;
[Tp_value, Tp_index] = max(pwr_spec_cont);
Tp_current = abs(1/wg_freqs(Tp_index));
end
[current_Lp,current_kp] = L_calc(Tp_current,water_depth);
%[wave_heights,periods, current_Hs ] = heights(current_eta, t);
if( mod(i,30)==0)
figure;
% subplot(3,2,3), hist(wave_heights, 15);
% title('Wave Heights Histogram (Hmode)');
% xlabel('H (m)')
% subplot(3,2,4), hist(periods, 15);
% title('Wave Period Histogram (Tmode)')
% xlabel('T (s)')
%Plot shows how coil output corresponds to input wave time series
%plot(wg_time, eta*100, 'b', WEC_time, P2, 'm', WEC_time, Vcoil, 'r');
subplot(3,1,1), plot(t(1:length(current_eta)), (current_eta)*100, 'b');
title('Eta, DC/DC Power Out, and Coil Voltage vs time');
legend('Eta (cm)')%, 'Power out (mW)', 'Coil Voltage (V)');
xlabel('time (s)');
subplot(3,1,3),stem(pos_freqs, 2*pwr_spec(1:n_seg/2+1), 'b')
title('Incident Wave Power Spectrum')
xlabel('frequencies (Hz)');
ylabel('Sxx');
end
variance(i+1) = wg_pwr_spec_var;
Hmo(i+1) = current_Hmo;
Tp(i+1) = Tp_current;
Lp(i+1) = current_Lp;
kp(i+1) = current_kp;
end
C.5.5: heights.m
Zero up-crossing analysis of wave time series
function [wave_heights, periods, Hs ] = heights(eta, t)
n=1;
m=2;
for i = 1:length(eta)
if(eta(1)<0)
if(eta(i)>0)
z1=i;
break
end
end
if(eta(1)>0)
if(eta(i)<0)
z1=i;
break;
end
end
end
zero_ups(1) = (t(z1)+t(z1+1))/2;
last_upcrossing = z1;
for i = z1:(length(eta)-2)
if( (eta(i+1) > 0) & (eta(i) < 0) )
zero_ups(m) = (t(i+1) + t(i))/2;
periods(m-1) = zero_ups(m)-zero_ups(m-1);
m = m+1;
segment = eta(last_upcrossing:i);
%look for crests
crests(n) = max(segment);
%look for troughs
troughs(n) = min(segment);
last_upcrossing = i+1;
n = n+1;
end
end
N = n-1;
wave_heights = crests-troughs;
wave_heights = wave_heights';
zero_ups = zero_ups';
crests = crests';
troughs = troughs';
periods = periods';
sorted_heights = sort(wave_heights, 'ascend');
Hs_threshhold = round(2/3*length(sorted_heights));
Hs = mean(sorted_heights(Hs_threshhold:end));
Appendix D: PIC
Microcontroller Code
D.1:
WECfinal.c
Contains main loop
#include <p18f4523.h>
#include <delays.h>
#include <usart.h>
#include <stdio.h>
#include <adc.h>
#include <math.h>
#include <stdlib.h>
#include <timers.h>
#include <portb.h>
#include "wec.h"
/****
ADDS INTERRUPTS to SAMPLING FREQ CONTROL, DATA LOGGER (115200 baud), RTC and ADC
****/
// ************* CONFIGURATION BITS **************** //
#pragma config OSC = HS
// oscillator selection
#pragma config FCMEN = OFF
// fail safe clock monitor
#pragma config IESO = OFF
// internal external oscillator switch over
#pragma config PWRT = ON
// power up timer
#pragma config BOREN = OFF
// brown out reset
#pragma config WDT = OFF
// watchdog timer
#pragma config MCLRE = ON
// MCLR enable
#pragma config LPT1OSC = OFF
// T1 oscillator enable
#pragma config PBADEN = OFF
// port B A/D enable
#pragma config CCP2MX = PORTC
// CCP2 mux
#pragma config STVREN = OFF
// stack overflow reset
#pragma config LVP = OFF
// low voltage ICSP
// *********** VARIABLE DECLARATIONS *********** //
// **** User-defined constant variables **** //
int sample_freq = 512;
//sampling frequency in Hz; use 512 for a wave up to 5Hz in freq., with fc = 50 on
filter
int T_record = 1800;
// record length in seconds
int record_freq = 8;
int bits_to_shift = 6;
//bits_to_shift = log base 2 of (sample_freq/record_freq)
float Rsense = 10;
// in Ohms
float Rsense1 = 10;
// **** Data variables **** //
int volatile ADCsense, ADCload, ADCcoil, ADCsense1;
unsigned long volatile ADCsense_sum, ADCload_sum, ADCcoil_sum , ADCsense1_sum;
int ADCsense_write = 0, ADCload_write = 0, ADCcoil_write = 0, ADCsense1_write = 0;
// **** Clock variables **** //
unsigned char volatile hundredths;
unsigned char volatile hours;
unsigned char volatile minutes;
unsigned char volatile seconds;
unsigned char volatile day;
unsigned char volatile month;
unsigned char volatile year;
// **** Sample rate Variables **** //
unsigned far ram char DateHeader[14];
unsigned far ram char WriteBuffer[60];
volatile int sample_counter = 0;
volatile char WriteFlag = 0;
long j = 0;
int samples_per_avg;
int n;
int k;
// *************************************************** //
// **** ISR declaration **** //
void RTC_sample_ISR(void);
#pragma code high_vector = 0x08 //high-priority interrupt
void interrupt_at_high_vector(void)
_asm GOTO RTC_sample_ISR _endasm
#pragma code
#pragma interrupt RTC_sample_ISR
void RTC_sample_ISR(void)
while (BusyADC());
SetChanADC( ADC_CH4 );
//Note that Vref is on CH3
while (BusyADC());
ConvertADC();
while (BusyADC());
ADCsense1 = ReadADC();
while (BusyADC());
SetChanADC( ADC_CH0 );
while (BusyADC());
ConvertADC();
while (BusyADC());
ADCsense = ReadADC();
while (BusyADC());
SetChanADC( ADC_CH1 );
while (BusyADC());
ConvertADC();
while (BusyADC());
ADCload = ReadADC();
while (BusyADC());
SetChanADC( ADC_CH2 );
while (BusyADC());
ConvertADC();
while (BusyADC());
ADCcoil = ReadADC();
ADCsense_sum += ADCsense;
ADCload_sum += ADCload;
ADCcoil_sum += ADCcoil;
ADCsense1_sum += ADCsense1;
sample_counter++;
if( ADCcoil < 1981) // 3V on coil. 660.23 ADC counts/volt from calibration
PORTBbits.RB5 = 0;
//De-activate switch, removing DC/DC converter from circuit
else if ( ADCcoil > 3301 ) // 5V on coil. 660.23 ADC counts/volt from calibration
PORTBbits.RB5 = 1;
//else maintain current operation
if(sample_counter == samples_per_avg-1)
sample_counter = 0;
WriteFlag = 1;
INTCONbits.INT0IF = 0;
// clear INT0 interrupt flag
// ******************* //
// ************* MAIN PROGRAM ************* //
void main (void)
OpenPORTB( PORTB_PULLUPS_ON );
TRISCbits.TRISC3 = 0; // configure SCL as an output for I2C master mode
TRISBbits.TRISB5 = 0; // DC/DC converter switch controller (NPN low-side load: 1=on, 0=off)
TRISBbits.TRISB4 = 0; // Logomatic reset pin 37 (NPN high-side load: 1=5V on load, 0=0V on load )
TRISBbits.TRISB3 = 0; // Logomatic stop pin 36 (NPN high-side load)
TRISBbits.TRISB2 = 0; // Logomatic power pin 35 (PNP low-side load: 1=off, 0=on)
TRISBbits.TRISB1 = 0; // Enable for 4.096V reference; 0=off, 5V=on
TRISBbits.TRISB0 = 1; // input square wave from RTC - INT0
PORTBbits.RB1 = 1;
// enable voltage reference
PORTBbits.RB3 = 0;
// start with reset and stop pins hi on Logomatic (off)
PORTBbits.RB4 = 0;
PORTBbits.RB5 = 0;
// start with DC/DC converter removed from circuit (switch off)
n = record_freq * T_record; //number of samples written to memory
samples_per_avg = sample_freq/record_freq;
//
ADCON1 = 00011010;
//Set first 5 ADC ports to analog (automatic)
PORTBbits.RB2 = 0;
// turn Logomatic on
SetClock();
//set time on RTC if it has lost power (comment out otherwise)
ConfigRTCSq(sample_freq);
OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE &
USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 10);
OpenADC(ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_0_TAD,
ADC_CH0 & ADC_INT_OFF & ADC_REF_VREFPLUS_VSS, 10);
ADCsense_sum = 0;
ADCload_sum = 0;
ADCcoil_sum = 0;
ADCsense1_sum = 0;
ReadClock();
ConvertTime();
k=1;
while(k<20)
Delay10KTCYx(800);
// delay at power up to allow Logomatic to prepare for receiving metadata
k=k+1;
//end of while
sprintf(DateHeader,"%02d %02d 20%02d\r",day,month,year);
//not enough time to write entire data string during loop at fs=512, frecord=4, so write base info at top of file
while( BusyUSART() );
TXSTAbits.SENDB = 0;
putsUSART(DateHeader);
while( BusyUSART() );
putrsUSART("hours mins seconds Vcoil Vsense1 Vsense Vload\r");
// Initialize external INT0 interrupt, which is always high priority
INTCONbits.INT0IF = 0;
// Start with INT0 interrupt flag clear
INTCON2bits.INTEDG0 = 0;
// Interrupt on falling edge
INTCONbits.INT0IE = 1;
// Enable INT0 interrupt
INTCONbits.GIE = 1;
// Global interrupt enable
INTCONbits.RBIE = 0;
// disable RB interrupt
INTCONbits.TMR0IE = 0;
// disable TMR0 interrupt
while(1)
//
PORTBbits.RB2 = 0;
// turn Logomatic on
if(WriteFlag)
WriteFlag = 0;
j++;
ADCsense_write = ADCsense_sum >> bits_to_shift;
ADCload_write = ADCload_sum >> bits_to_shift;
ADCcoil_write = ADCcoil_sum >> bits_to_shift;
ADCsense1_write = ADCsense1_sum >> bits_to_shift;
ADCsense_sum = 0;
ADCload_sum = 0;
ADCcoil_sum = 0;
ADCsense1_sum = 0;
ReadClock();
ConvertTime();
sprintf(WriteBuffer,"%02d %02d %02d.%02d %d %d %d %d\r", hours, minutes, seconds, hundredths,
ADCcoil_write, ADCsense1_write, ADCsense_write, ADCload_write);
while( BusyUSART() );
TXSTAbits.SENDB = 0;
putsUSART(WriteBuffer);
while( BusyUSART() );
if (j == n)
INTCONbits.INT0IE = 0;
// Disable INT0 interrupt
PORTBbits.RB3 = 1;
//stop file
Delay10KTCYx(5000);
// 1s delay
PORTBbits.RB4 = 1;
//reset
Delay10KTCYx(5000);
// 1s delay
PORTBbits.RB3 = 0;
//stop file
PORTBbits.RB4 = 0;
//reset
j = 0;
sample_counter = 0;
INTCONbits.INT0IE = 1;
// Enable INT0 interrupt
//end of if
//end of while
//end of main
D.2:
ConfigRTCsq.c
Programs square wave output pin’s frequency
#include <p18f4523.h>
#include <i2c.h>
#include "wec.h"
void ConfigRTCSq( int Hz )
char RS3_0;
int i; //for debugging
//Configure frequency of square wave output on RTC pin 7
switch(Hz)
case 1:
RS3_0 = 0b11110000;
break;
case 2:
RS3_0 = 0b11100000;
break;
case 4:
RS3_0 = 0b11010000;
break;
case 8:
RS3_0 = 0b11000000;
break;
case 16:
RS3_0 = 0b10110000;
break;
case 32:
RS3_0 = 0b10100000;
break;
case 64:
RS3_0 = 0b10010000;
break;
case 128:
RS3_0 = 0b10000000;
break;
case 256:
RS3_0 = 0b01110000;
break;
case 512:
RS3_0 = 0b01100000;
break;
case 1024:
RS3_0 = 0b01010000;
break;
default:
RS3_0 = 0b00000000;
//no square wave
break;
// Configure and open the I2C port
OpenI2C( MASTER, SLEW_ON);
//RTC communicates at 400kHz, so slew rate control must be enabled
SSPADD = 0x0B;
//RTC address = 0xD0 = 0b11010000
//SQWE (Square wave enable) address is 0x0A bit 6
I2CByteWrite( 0xD0, 0x0A , 0b01000000 );
//SQW address = 0x13 = 19;
I2CByteWrite( 0xD0, 0x13 , RS3_0 );
i = 3;
CloseI2C();
D.3:
ConvertTime.c
Reformats time data from BCD to decimal format
/****
Adapted for PIC18F from code written by Tony Cimaglia of Ocean Recon for a dsPIC30
****/
#include "wec.h"
void ConvertTime(void)
extern unsigned volatile char hundredths;
extern unsigned volatile char hours;
extern unsigned volatile char minutes;
extern unsigned volatile char seconds;
extern unsigned volatile char day;
extern unsigned volatile char month;
extern unsigned volatile char year;
hundredths = ((hundredths & 0b11110000)>>4)*10+(hundredths & 0b00001111);
// convert hundredths from BCD to decmial
seconds = ((seconds & 0b01110000)>>4)*10+(seconds & 0b00001111); // convert seconds from BCD to decmial
minutes = ((minutes & 0b01110000)>>4)*10+(minutes & 0b00001111); // convert minutes from BCD to decmial
hours = ((hours & 0b00110000)>>4)*10+(hours & 0b00001111); // convert hours from BCD to decmia
day = ((day & 0b00110000)>>4)*10+(day & 0b00001111); // convert day from BCD to decmial
month = ((month & 0b00010000)>>4)*10+(month & 0b00001111); // convert month from BCD to decmial
year = ((year & 0b11110000)>>4)*10+(year & 0b00001111); // convert year from BCD to decmial
D.4:
I2CByteWrite.c
Writes a byte of data from the RTC to the PIC via the I2C bus
/* ****
Based on EEByteWrite() written by Tony Cimaglia of Ocean Recon
Adapted for PIC18F from dsPIC. Intended for use in I2C Master mode
Writes one byte of data to a one-byte adrressable I2C device
**** */
#include <p18f4523.h>
#include <i2c.h>
#include "wec.h"
void I2CByteWrite(
unsigned char control1, //address byte of device
unsigned char address, //address location on device
unsigned char data ) //data to be written to the location
IdleI2C();
// waits for I2C port to become idle
StartI2C();
// I2C start condition
while(SSPCON2bits.SEN);
// wait until end of start condition
IdleI2C();
WriteI2C(control1);
// send the slave address, control code
while(SSPSTATbits.BF);
//wait until address is transmitted
while(SSPCON2bits.ACKSTAT);
//test for ACK condition received
IdleI2C();
WriteI2C(address);
// send the address where the data should be written
while(SSPSTATbits.BF);
while(SSPCON2bits.ACKSTAT);
IdleI2C();
WriteI2C(data);
//send data to be written
while(SSPSTATbits.BF);
while(SSPCON2bits.ACKSTAT);
IdleI2C();
StopI2C();
// start the stop condition
while(SSPCON2bits.PEN);
// wait until stop condition is over
IdleI2C();
D.5
I2CRandomRead.c
/* Adapted for use with a PIC18F from code written by Tony Cimaglia for a dsPIC30. Reads one byte of data from a
one-byte address device */
#include <p18f4523.h>
#include <i2c.h>
#include "wec.h"
unsigned char I2CRandomRead( unsigned char control,
// address byte of decive with 0 in last bit for "write"
//unsigned char address ) address of loaction in device
unsigned char data = '0';
// variable to hold read data
IdleI2C();
// waits for I2C port to become idle
StartI2C();
// I2C start condition
while(SSPCON2bits.SEN);
// wait until end of start condition
IdleI2C();
// waits for I2C port to become idle
WriteI2C(control);
// send the slave address (plus write condition LSB)
while(SSPSTATbits.BF);
//wait until address is transmitted
while(SSPCON2bits.ACKSTAT);
//test for ACK condition received
IdleI2C();
// waits for I2C port to become idle
WriteI2C(address);
// send the slave address
while(SSPSTATbits.BF);
while(SSPCON2bits.ACKSTAT);
IdleI2C();
StopI2C();
// start the stop condition
while(SSPCON2bits.PEN);
// wait till stop condition is over
control +=1;
// set last bit of control to 1 to indicate read action
IdleI2C();
// waits for I2C port to become idle
StartI2C();
// I2C start condition
while(SSPCON2bits.SEN);
// wait until end of start condition
IdleI2C();
// waits for I2C port to become idle
WriteI2C(control);
// send the slave address (plus read condition)
while(SSPSTATbits.BF);
while(SSPCON2bits.ACKSTAT);
IdleI2C();
// waits for I2C port to become idle
data = ReadI2C();
// read a data byte from the bus
NotAckI2C();
// send not acknowlage bit to end reading
while(SSPCON2bits.ACKSTAT);
IdleI2C();
StopI2C();
// start the stop condition
while(SSPCON2bits.PEN);
// wait until stop condition is over
IdleI2C();
// wait until the bus is idle
return data;
// return the data
D.6:
ReadClock.c
//
Adapted for PIC18F from code written by Tony Cimaglia for
//
//
a dsPIC30 for Ocean Research and Conservation Association
//
//
This program reads the RTC.
//
#include <p18f4523.h>
#include <i2c.h>
#include "wec.h"
void ReadClock(void)
extern unsigned volatile char hundredths;
extern unsigned volatile char seconds;
extern unsigned volatile char minutes;
extern unsigned volatile char hours;
extern unsigned volatile char day;
extern unsigned volatile char month;
extern unsigned volatile char year;
// Configure and open the I2C port
OpenI2C( MASTER, SLEW_ON);
//RTC communicates at 400kHz, so slew rate control must be enabled
SSPADD = 0x0B;
/*
(I2C_ON & I2C_IDLE_STOP & I2C_CLK_HLD & I2C_IPMI_DIS & I2C_7BIT_ADD
& I2C_SLW_DIS & I2C_SM_DIS & I2C_GCALL_DIS & I2C_STR_DIS &
I2C_NACK & I2C_ACK_DIS & I2C_RCV_DIS & I2C_STOP_DIS & I2C_RESTART_DIS
& I2C_START_DIS, 0x07);
*/
hundredths
= I2CRandomRead(0b11010000, 0);
// read hundredths from clock
seconds
= I2CRandomRead(0b11010000, 1);
// read seconds from clock
minutes
= I2CRandomRead(0b11010000, 2);
// read minutes from clock
hours
= I2CRandomRead(0b11010000, 3);
// read hours from clock
day
= I2CRandomRead(0b11010000, 5);
// read day from clock
month
= I2CRandomRead(0b11010000, 6);
// read month from clock
year
= I2CRandomRead(0b11010000, 7);
// read year from clock
CloseI2C();
D.7:
SetClock.c
// **** Adapted for the PIC18f from Tony Cimaglia's SetClock() function
//
written for the dsPIC30 for Ocean Recon **** //
#include <p18f4523.h>
#include <stdio.h>
#include <usart.h>
#include <i2c.h>
#include "wec.h"
void SetClock(void)
char ClockBuffer[13] = 0,0,0,0,0,0,0,0,0,0,0,0,0;
unsigned int DataIn = 0;
char j = 0;
char TxData[28];
unsigned char hours;
unsigned char minutes;
unsigned char seconds;
unsigned char day;
unsigned char month;
char year;
/******************* Set up UART *******************/
OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE &
USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 10);
/***************************************************/
TXSTAbits.SENDB = 0;
sprintf(TxData, "\r\nSet Clock\r\nYYMMDDHHMMSS>\0");
while(BusyUSART());
putsUSART(TxData);
while(BusyUSART());
j = 0;
// Get Incomming Time Data
while(DataIn != 0x0D)
while(!PIR1bits.RCIF);
DataIn = RCREG;
PIR1bits.RCIF = 0;
putcUSART( DataIn ); //check the time being entered
while(BusyUSART());
ClockBuffer[j] = DataIn - 48;
//Turn ascii into decimal
j = j + 1;
CloseUSART();
//Convert decimal to BDC format
year
= ClockBuffer[0] << 4 | ClockBuffer[1];
month = ClockBuffer[2] << 4 | ClockBuffer[3];
day
= ClockBuffer[4] << 4 | ClockBuffer[5];
hours = ClockBuffer[6] << 4 | ClockBuffer[7];
minutes = ClockBuffer[8] << 4 | ClockBuffer[9];
seconds = ClockBuffer[10] << 4 | ClockBuffer[11];
// configure and open the I2C port
OpenI2C( MASTER, SLEW_ON);
//RTC communicates at 400kHz, so slew rate control must be enabled
SSPADD = 0x0B;
I2CByteWrite(0xD0,0x07,year);
I2CByteWrite(0xD0,0x06,month);
I2CByteWrite(0xD0,0x05,day);
I2CByteWrite(0xD0,0x03,hours);
I2CByteWrite(0xD0,0x02,minutes);
I2CByteWrite(0xD0,0x01,seconds);
CloseI2C();
183
Appendix E: Derivation of H/S
E.1 Exponential Decay Paddle
The water surface displacement for large x (far from the paddle) is given by
( ) ( ) ( ))cos2
)coscosh 1
0
txkH
txkhkg
A
tgppp
p
z
σσσφ
η −=−−
=∂∂
==
where
∫
∫
−
−
+
+−
=0
2
0
))((cosh
))(cosh(2
)(
h
pp
h
p
p
dzzhkk
dzzhkzS
A
σ
and zk pSezS =)(
Substituting and canceling the cosine term,
( )2
cosh
))((cosh
))(cosh(2
)(
- 0
2
0
Hhk
dzzhkgk
dzzhkzS
p
h
pp
h
p
=
+
+−
∫
∫
−
− σσ
From the hyperbolic cosine properties,
( )
( )[ ]( )
2 cosh
1)(2cosh2
1
)(cosh
2
0
0
2 Hhk
dzzhk
dzzhke
gk
Sp
h
p
h
p
zk
p
p
=
++
+
∫
∫
−
−σ
( )
( )( )
2 cosh
2
)(2sinh
2
1
)(cosh
2
0
0
2 Hhk
zk
zhk
dzzhke
gk
Sp
hp
p
h
p
zk
p
p
=
+
+
+
−
−∫σ
184
( )
( ) ( )2
cosh
2
2sinh
)(cosh
0
2 Hhk
k
hkhk
dzzhke
gk
Sp
p
pp
h
p
zk
p
p
=
+
+
∫−σ
Substituting the dispersion equation into the first coefficient and solving for H/S,
( )hkgk pp tanh2 =σ
( )[ ]( )
( ) ( )S
Hhk
k
hkhk
dzzhke
hk p
p
pp
h
p
zk
p
p
cosh
2
2sinh
)(cosh
tanh2
0
=
+
+∫−
( )( ) ( )
S
Hdzzhke
hkhk
hkk
h
p
zk
pp
pp p )(cosh2sinh
sinh4
0
=+
+ ∫−
In order to solve the final integral, convert the hyperbolic cosine into its
exponential form:
( )∫−
+0
)(cosh h
p
zkdzzhke p
∫−
+−+
+=
0 )()(
2
h
zhkzhkzk
dzee
epp
p
∫−
−−
+=
0
2
h
zkhkzkhkzk
dzeeee
epppp
p
∫−
−
+=
0 2
2
h
hkzkhk
dzeee ppp
02
22
1
h
hk
p
zkhk
zek
eep
pp
−
−
+=
−−+= −
−hk
p
hkhk
p
hk
p
ppp
hek
ee
k
e
20
22
1
2
185
( )
+−= −− hkhk
p
hk
pp
p
heek
e 21
22
1
( )
+−=
+−=
−−−−
p
hk
p
hkhk
p
hk
p
hkhk
k
hekee
k
hekee pppppp
4
2
4
21
2
( )
−+=
−−
p
hk
p
hk
k
ehke pp
4
12
2
186
E.2 Hyperbolic Curve Paddle
Starting once again from
( )2
cosh
))((cosh
))(cosh(2
)(
- 0
2
0
Hhk
dzzhkgk
dzzhkzS
p
h
pp
h
p
=
+
+−
∫
∫
−
− σσ
and substituting
( )( )( )hk
zhkSzS
p
p
sinh
cosh)(
+=
yields
( )( )( ) ( )( )
( )2
cosh
))((cosh
coshsinh
cosh
2
0
2
0
Hhk
dzzhkgk
dzzhkhk
zhkS
p
h
pp
h
p
p
p
=
+
++
∫
∫
−
− σ
σ
Since this leaves cosh2 terms in both the numerator’s and denominator’s integrals,
we cancel them to yield
( ) ( )2
coshsinh
1
2
2 Hhk
hkgk
Sp
pp
=σ
( ) S
H
hkgk pp
tanh
2
=σ
According to the dispersion relation,
( )hkgk pp tanh2 =σ
and therefore
1=S
H
187
Appendix F: Calibration Results
Current into DC/DC converter (Rsense = 10Ω, Vsense = 100mV max)
Rload = 1130Ω Applied Current (mA)
0 0.52 0.75 1.08 1.51 2.05 2.5 3.05 3.56 4.05 4.14
Vout op amp 0.26 0.685 0.869 1.12 1.515 2.05 2.49 3.03 3.53 4.02 4.09
ADC value 252 673 855 1105 1486 2019 2455 2986 3487 3961 4031
Rload = 1338Ω Applied Current (mA)
0 0.25 0.49 0.75 1.04 1.52 2.02 2.51 3.01 3.51 4.1
Vout op amp 0.258 0.465 0.65 0.842 1.064 1.534 2.02 2.51 2.99 3.49 4.09
ADC value 250 452 634 824 1041 1505 1991 2473 2954 3444 4030
Rload = 1973Ω Applied Current (mA)
0 0.25 0.5 0.75 1.01 1.25 1.5 2.01 2.25 2.53
Vout op amp 0.258 0.433 0.592 0.774 1.026 1.271 1.516 2.08 2.25 2.53
ADC value 263 423 577 757 1005 1245 1487 1988 2221 2494
ADC Value vs. Applied Current
y = 939.36x + 131.23
R2 = 0.9985
y = 942.55x + 118.14
R2 = 0.9992y = 932.81x + 106.3
R2 = 0.9970
1000
2000
3000
4000
5000
0 1 2 3 4 5Applied current (mA)
ADC value
Rload = 1338
Rload =1120
Rload = 1973
Linear (Rload = 1338)
Linear (Rload =1120)
Linear (Rload = 1973)
Average slope: 938.24 counts/mA All four 12-bit ADCs were programmed to use a voltage reference of 4.096V as the ceiling value, 4096 counts. In addition to the 10Ω sense resistor tests shown above and on the following page, calibration for a 1Ω sense resistor was also conducted. However, the low currents present during field testing create too low a voltage across this smaller resistance for the operational amplifier to boost dependably. Due to the 0.3V input offset voltage of the op amp, nonlinear operation was observed for currents less than 2mA on both current sense resistors, regardless of the attached load resistance value. Performance data for the 1Ω tests is available in electronic format in the file “\data processing\ADC calibrations.xls.”
188
Current out of DC/DC converter (Rsense = 10Ω, 100mV max)
Rload = 1178Ω Applied Current (mA) 0 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.05
Vout op amp 0 0.459 0.738 1.019 1.535 2.03 2.52 3.03 3.53 4.03 4.08
ADC value 0 448 723 1000 1508 2008 2492 2995 3492 3983 4031
Rload = 1493Ω Applied Current (mA) 0 0.25 0.5 0.75 1 1.25 1.5 2 2.5 3 4.04
Vout op amp 0.002 0.18 0.473 0.762 1.033 1.282 1.534 2.02 2.53 3.03 4.08
ADC value 0 174 462 747 1013 1258 1507 1999 2501 2997 4028
Rload = 1780Ω Applied Current (mA) 0 0.25 0.5 0.75 1 1.25 1.5 2 2.5 3.01
Vout op amp 0 0.19 0.489 0.781 1.033 1.281 1.533 2.02 2.52 3.04
ADC value 0 187 478 766 1013 1258 1506 2000 2495 3003
Isense1 ADC Value vs. Applied Current
y = 1006x - 13.098
R2 = 0.9995
y = 1006.1x - 18.732
R2 = 0.9996
y = 1001.1x - 13.164
R2 = 0.9999
0
1000
2000
3000
4000
5000
0 1 2 3 4 5
Applied current (mA)
ADC value
Rload = 1178
Rload = 1493
Rload = 1780
Linear (Rload = 1780)
Linear (Rload = 1493)
Linear (Rload = 1178)
Average Slope = 1006 counts/mA
189
Voltage on Capacitor (5.4V max)
Rload = 1130Ω Vcap total (V) 0 0.5 1.01 1.5 2.00 2.51 3.02 3.50 4.00 4.50 5.03 5.60
ADC value 0 332 672 1005 1351 1690 2038 2359 2701 3034 3394 3780
V at divider (1M+2.2M)
0 0.319 0.644 0.96 1.28 1.6 1.942 2.24 2.56 2.88 3.22 3.58
Vlow/Vtotal - 0.639 0.640 0.64 0.64 0.637 0.643 0.64 0.64 0.64 0.640 0.64
Voltage across Load Resistors (Output of DC/DC Converter) (5.0V max)
Voltage divider 666Ω+662Ω Vload total (V) 0 0.5 1 1.5 2.00 2.50 3.04 3.50 4.00 4.55 5.04
ADC value 0 242 485 729 974 1216 1464 1707 1949 2218 2460
V at divider 0 0.25 0.49 0.74 0.99 1.23 1.48 1.73 1.97 2.25 2.49
Vlow/Vtotal - 0.5 0.49 0.493 0.495 0.492 0.487 0.494 0.493 0.495 0.494
Voltage divider 1kΩ+1kΩ Vload total (V) 0 0.5 1.003 1.5 2.03 2.50 3.01 3.50 4.00 4.50 5.04
ADC value 0 241 488 732 996 1228 1479 1720 1967 2212 2460
V at divider 0 0.249 0.5 0.748 1.01 1.245 1.5 1.74 1.99 2.24 2.49
Vlow/Vtotal - 0.498 0.499 0.499 0.498 0.498 0.498 0.497 0.498 0.498 0.494
ADC values vs Voltage at component
y = 674.52x
R2 = 1
y = 487.03x
R2 = 0.9999
y = 490.82x - 1.3938
R2 = 1
0
500
1000
1500
2000
2500
3000
3500
4000
0 1 2 3 4 5 6Applied voltage (V)
ADC value
Capacitor VoltageVload @ Rload = 1.2kVload @ Rload = 2kLinear (Capacitor Voltage)Linear (Vload @ Rload = 1.2k)Linear (Vload @ Rload = 2k)
Average slopes:
Capacitor voltage: 674.52 counts/V Load voltage: 488.9 counts/V
190
Glossary
Active (real) power: Useful component of power that is dissipated by the purely
real component of impedance (resistance), distinguished from reactive
power by its net transfer of energy in one direction over time.
Added mass: The inertia added to a system when a body surrounded by a fluid
accelerates and must therefore accelerate the fluid occupying the space
and nearby spaces.
Airgap Shear Stress: The force per unit surface area occurring in the small space
between the rotor and stator in a generator, resulting from the interaction
between the magnetic field-producing component and the inductive
armature. This quantity determines the power factor of the
motor/generator, and it is limited by the material properties of the flux-
carrying component and the heating, reactance, etc. of the current-
carrying component.
Apparent power: Imaginary component of complex powr, defined as the product of
voltage and current in an electrical system.
Bandwidth: Segment in the frequency spectrum across which the frequencies of
interest span, especially the range of frequencies passed by a signal
processing filter or the range of frequencies over which significant power
is available in a wave spectrum.
Capture (width) ratio: Quotient of extracted power divided by the power incident
on the cross-section of the buoy.
Complex power: Total power in a system, incluing that component not dissipated
over time, but stored in the imaginary impedance, unusable until
converted to real power.
Damping coefficient: Constant of proportionality describing the energy dissipated
proportional to velocity in a mechanical system and proportional to
current in an electrical system, such as by viscous forces and resistances.
191
Direct drive linear generator: A pwer-generating mechanism that transfers power
without any gear or belt intermediary reductions, allowing for reduced
frictional losses and reduced noise, but requiring a special motor and
control system due to the relatively high torque at lower speeds than
conventional motors.
Excitation (vs Radiation): Component of wave forces acting on an initially
stationary floating body due to both the incident wave pressure
distribution and the pressure distribution of diffracted waves bending
around the body.
Fourier transform: Mathematical analysis technique of characterizing a signal’s
components involving conversion from the time domain to the frequency
domain.
Harmonic: Integer multiple of the frequency of interest.
Heave: Linear vertical motion of a floating body.
Inductive coupling: The transfer of energy from one circuit component to another
through a shared magnetic field, allowing a change in current in one
device to induce a change in the current flowing through the other device.
Impedance matching: Designing a circuit’s load such that its impedance is equal to
the complex conjugate of its source’s impedance in order to achieve
maximum power transfer by minimizing the total impedance.
Natural frequency: The oscillation frequency to which a system’s motion defaults
when the system has been displaced and released, dependent on the total
mass and spring force acting in the direction of oscillation.
Pitch (of a magnet): Width of an individual magnet in an assembly of multiple
magnets aligned axially.
Pitch (ship motion): Rotation of a floating body about its transverse axis.
192
Power factor: A coefficient between 0 and 1 that describes the phase difference
between voltage and current in a complex (AC) system; it is the ratio of
the average power to the
Radiation (vs Excitation): Forces acting on a floating body as a result of its
oscillation in the water column; including added mass and radiation
resisteance effects.
Reactance: The opposition presented by a pure coil or capacitor to the flow of
alternating current through it; diminishes current from an alternating EMF
by setting up an opposing EMF, without wasting energy.
Reactive power: Component of power that is alternately stored by complex
impedance elements and then released back into the AC circuit.
Reluctance: Resistance to magnetization
Resonance frequency: The excitation frequency that produces the largest output
signal for a given input signal magnitude. Closely tied to the natural
frequency of the system, but slightly lower depending on the damping
levels.
Shunt: A device that allows electrical current to pass around another point in the
circuit (opposite of a fuse). In the case of a shunt resistor, it allows for
indirect measurement of currents too high for an ammeter or in places
where an ammeter is inconvenient by inserting a minimal resistance
across which the voltage can be measured instead.
Stator: The stationary component of a motor or generator, which may contain
either the field windings or the armature, depending on the geometry of
the machine.
Sway: Linear lateral movement of a floating body.
Translator: The moving component of a linear generator, analogous to the rotor on
a conventional generator.
Wave spectrum: Description of the wave energy distribution across a range of
wave frequencies, used to describe the wave climate in a given location.