Report on electronics.
Sinewave Generation
1. Problem Statement
The goal of this project is to generate a sinusoidal waveform with the Arduino. Software is
provided that outputs a binary sinewave signal on pins D8-D11 which is converted to an
analogue voltage using a special type of digital to analogue converter (DAC), called an R-2R
ladder. The sinewave's frequency is roughly 200 Hz. Your task is to design and construct
both the R-2R ladder and a reconstruction filter which converts the “staircase” output of the
R-2R DAC into a “smooth” sinusoidal signal of amplitude 3 Vpk-pk and mean value zero.
2. Background
Many modern devices utilise digital circuits for analysing and processing data but still require
an interface to the analogue world, for example, to drive a speaker or control a motor's speed.
The conversion of digital data to analogue voltages is performed with a circuit known as a
digital to analogue converter, or DAC. In this project you will be implementing a simple
DAC circuit built solely of resistors, called the R-2R ladder.
To generate an analogue signal DACs will update their output at a specified frequency known
as the sample rate. The DAC's output voltage will only change value once per sample,
resulting in a “staircase” looking waveform. In order to produce a smooth waveform a circuit
known as a reconstruction filter is used. There are many different ways of implementing this
filter but in this project you will use a combination of active (op-amp based) low-pass and
high-pass filters.
2.1. R-2R ladder
The R-2R ladder DAC uses a network of resistors to convert a binary number to an analogue
voltage. The digital number is given from the Arduino by the digital output pins. In fact
these pins act as a controlled voltage source. If a bit in the 4-bit binary represented number is
1, the corresponding output pin is set HIGH and acts as a voltage source. If the bit is 0 on the
other hand, the corresponding output pin is set LOW and acts as a ground connection.
Although simple this circuit has several limitations. Specifically, it has a high output
impedance (ie: the Thevenin equivalent resistance is high) and the precision of the output
voltage is limited by the low number of bits and the precision of the resistors chosen. The
1% tolerance resistors available in the lab become the limiting factor beyond 6 bits so this
DAC architecture is rarely used for high precision DACs (10+ bits).
In this project you can use op-amp circuits to act as buffers to compensate for the high output
impedance of the R-2R ladder. The precision of the output will be limited by the chosen 4-bit
bit depth and will result in “noise” on the output (ie: random voltage amplitude errors) which
are impractical to remove. Nonetheless a smooth-looking waveform should still be possible
to generate.
The basic circuit is shown in Figure 1.
Exercise 1. Find expressions for the output (Vout) in terms of the input (ax) of a 2-bit ladder
for all four possible input combinations. In what range will the output voltage lie?
As you found out while doing the exercise the voltage does not depend on the resistors
chosen so in an ideal sense you could choose any value for R. However, there are other
limitations that play into the design of this circuit such as the maximum current output of the
Arduino and desired output impedance. For the Arduino the absolute maximum current that
can be supplied by each pin is 40mA and the total current from all pins combined cannot be
larger than 200 mA. While these are the absolute maximum ratings you are able to draw, it is
highly recommended to stay below half of these ratings.
Exercise 2. Consider the 2-bit ladder. What is the current drawn from each input and in
total? Derive an equation for each pin's output current in terms of R assuming that nothing is
connected to Vout.
As mentioned before the R-2R ladder has a high output impedance. This is required because
lowering the output impedance means using small resistors which will damage the Arduino.
In your design you will need to compromise between the output impedance of the R-2R
ladder, the current consumption (which should be minimised) and the input impedance of
your filter circuit (which will be explained later).
Exercise 3. What does a high output impedance mean for your circuit? Qualitatively, What
happens if a load, RL is connected to the ladder between Vout and GND if R >> RL? What
could be used to separate the R-2R ladder from the filter circuit that is cascaded (connected in
series) later on? (Hint: Lab 2)
Figure 1: R-2R ladder
2.2. Filtering
Filtering is a core concept in Engineering. The fundamental idea is that any real signal
contains a spectrum of frequency content and a filter is a system which allows some
frequencies to pass while rejecting others. Signal smoothing is one filtering operation where
higher frequency content gets rejected, you can think of it as turning down the treble when
listening to music. In contrast the process of sharpening an image is done by amplifying high
frequency content.
The principle of superposition is the foundation of separating a signal into different
frequencies. Each frequency is a particular sine function with specific amplitude and phase
and the full signal is the superposition of these sine waves. In future study you will learn the
concept of linearity which is the generalised extension of the superposition principle.
In the R-2R ladder's output the sharp steps contain a significant amount of high frequency
content as the voltage changes rapidly at each step. Low pass filtering the staircase signal
can help to smooth out the sharp edges of these steps.
When analysing signals the frequency spectrum is frequently plotted on a graph of frequency
vs. amplitude. Figure 2 shows the time (left) and frequency (right) domain plots of a signal
consisting of three sinusoidal functions at 100 Hz, 250 Hz, and 500 Hz. Note that the
frequency plot is three discrete points.
By filtering the signal in Figure 2 it would be possible to reduce the amplitude of one or two
of the constituent sine waves. For example if the signal was high-pass filtered the 100 Hz
and 250 Hz components could be attenuated (i.e: reduced in amplitude) to insignificant
levels, leaving just a 500 Hz signal.
Filters are classified by the general shape they make on a bode plot (graph of frequency vs.
amplitude, aka the frequency response of a filter). Filter design is an incredibly complicated
topic so only a small subset of filter types will be covered here: the low-pass, high-pass and
band-pass.
Figure 2: Sinusoidal wave and frequency plot for three superimposed voltage signals.
Low-pass filter: This filter design is specified by a single frequency, f0, above which frequencies are attenuated (decreased in amplitude). If applied to the example in
Figure 2 the 100 Hz signal could be isolated from the others.
High-pass filter: This is the inverse of a low-pass filter, frequencies below the cut-off frequency, f0, are attenuated while high frequencies are unaffected. If applied to the
example above we could, say, remove the 100 Hz and 250 Hz wave forms leaving
only the 500 Hz one.
Band-pass filter: This filter is created by combining the low and high pass filters. It is specified by two frequencies, fc,low and fc,high. Frequencies between fc,low and fc,high are
passed while those above and below are attenuated. This filter could be used to isolate
the 250 Hz signal from Figure 2.
Figure 3: Ideal filter behaviour.
The filter frequency response plots in Figure 3 are ideal. The filter instantly changes from
passing to stopping at a discrete frequency. Such a filter is physically impossible to build, so
engineers have to make do with approximations such as that shown in Figure 4. Better
approximations are made from higher order filters. The order is an advanced mathematical
concept but for now just know that 1st order filters are the most basic and contain one reactive
component (i.e: capacitor or inductor). 2nd order filters contain two reactive components, 3rd
order three etc.
When designing a filter you need to choose a filter order which is required to meet a given
specification. Higher orders are more complicated (to design and build) but more closely
approximate the ideal filters in Figure 3, so as in all engineering applications there is a trade-
off between the complexity, price, robustness, and performance of the design.
Figure 4: Example of non-ideal low pass filters. The actual curve depends on the filter design.
In this project, it is your task to decide the filter types you want to use and their cut-off
frequencies. Remember that the desired output signal of the Arduino will be around 200 Hz.
You can choose whether you prefer to build a first order filter or a 2nd order Sallen-Key filter.
The Sallen-Key filter is a specific topology of a second order filter and hence more
complicated, but gives a better performance.
2.2.1. Active first order filter
The simplest filter is a passive filter consisting of a capacitor and a resistor. There are
certainly applications where a passive 1st order filter gets the job done but unfortunately this
project is not one of them. You are welcome to try building one but the output impedance of
the R-2R ladder is so high that the output waveform's amplitude cannot meet the 3 Vpk-pk, 0 V
average specification.
Instead it is recommended that an active filter be used. This is one which uses powered
components such as an op-amp in order to maintain a high output amplitude.
Basic active high pass and low pass filters are shown in Figures 5 and 6. In both cases the
cut-off frequency is determined by the resistor and capacitor and is given by
𝑓𝑐 = 1
2𝜋𝐶𝑅
The feedback resistor network (Rf and Rg) can be used to apply gain to the output signal (NB:
being a non-inverting topology this circuit cannot attenuate).
Figure 5: First order active high-pass filter
In order to build a band pass filter you can cascade (i.e. connect in series) a low pass and high
pass filter.
Figure 6: First order active low-pass filter
Exercise 4. Is the low frequency of a band-pass filter given by the frequency of the high-pass
or the low-pass filter when connecting the two together?
2.3. Bonus worth 10%
2.3.1. Sallen-Key Filter
A Sallen-Key filter is a common topology for a second-order active filter. It utilises an
operational amplifier, two resistors, and two capacitors. The general circuit is shown in
Figure 7.
As for the first order filter the placing of the resistors and capacitors defines the type of the
filter. To build a low-pass filter Z1 and Z2 are resistors, while Z3 and Z4 are capacitors. On
the other hand to build a high-pass filter Z1 and Z2 are capacitors, while Z3 and Z4 are
resistors. Often the two resistors are chosen equal and the two capacitors are chosen equal.
In that case, for both the high and low-pass filter, the cut-off frequency is given by
𝑓𝑐 = 1
2𝜋𝑅𝐶
Similar as for the first order filters, a band pass filter, can be built by cascading (connecting
in series) a low pass and a high pass filter. The cut-off frequencies of the band pass filter are
the individual cut-off frequencies of the two separate filters.
2.3.2. Other possible ideas to try out
You could change the frequency within a region.
You can superimpose multiple sinewaves, similar to the Example in Figure 2.
You could build an equalizer, which is used in home stereo systems, loudspeakers and other appliances. These devices can be used to amplify or attenuate different parts of
the frequency spectrum. Looking at the Example in Figure 2, it would be possible to
attenuate the 500 Hz component and amplify the 100 Hz component in such a way
that all three components have the same amplitude.
3. Additional Material
The data-sheet of the op amp you were given:
http://www.ti.com/lit/ds/sbos058a/sbos058a.pdf
Figure 7: Sallen-key topology with unity gain.
Arduino reference: https://www.arduino.cc/en/Reference/HomePage
Another reference for operational amplifiers is Hayt Chapter 6.
A reference to filtering is Hayt Chapter 16.7 (very detailed).
4. Project Specifications
In this project you will design a R-2R ladder and a filter (either 1st order or Sallen-key) to
produce a smooth sine wave at the output. The Arduino board is programmed to output a 4-
bit sine wave on pins D8 to D11, where D11 is the highest bit and D7 the lowest. It's
frequency is around 200 Hz. You can choose between two codes for the Arduino, which are
both provided to you. The first program is a very simple program that outputs the closest
discretised value of the sinewave to the 4 output pins. The second program implements a
more advanced method (far beyond this course) to obtain a sinewave at the output pins. The
idea behind this more advanced method is that the output switches fast between two discrete
values to achieve, on average, a value closer to the true sinewave. So while you will see a
stepped sinewave in the first case, with the second program you will see a much more noisy
sinewave. You can work with either of the two programs.
Your design should fulfil the following specifications:
The current drawn from each pin should be less than 15 mA.
The total positive current drawn from the Arduino should be less than 80 mA.
The maximum positive current flowing into any of the Arduino pins (often called sink current) should be less than 8 mA.
The total positive current flowing into the Arduino, should be less than 50 mA.
The output voltage should have an amplitude of 3V peak to peak.
The output voltage should have no DC offset.
Use only resistors in the E24 series.
5. Marking
You are expected to write a report about your project (you can use LTSpice simulations to
illustrate some ideas) submitted online at the end of week 12 and give a presentation in week
13 during the Lab time. The report has the following style restrictions:
No more than 3 pages including figures and references.
12pt font.
Margins should be larger than: left 32mm, right 20mm, top 18mm, bottom 20mm.
Header should contain: Project title, date, and course specification.
Footer should contain: authors (including student number) and page numbers.
For both the report and the presentation, you are awarded marks depending on whether the
specifications are fulfilled, your justification for your design choices, as well as your
understanding of the drawbacks and advantages of your design within the limits of this
course. A large part of the marks focuses on your understanding. Also, note that the marks
for the group members do not have to be identical.
6. Some useful tips Try to look at certain parts individually. So in a first step check your R-2R ladder.
Then, separately test your amplifier circuit, not connected to the ladder set-up. If you
are happy with both parts you can connect them together and check whether they still
work as you expect.
You can use LTSpice to simulate isolated parts of the circuits and get a “feel for them”. For example, you can make the R-2R ladder and change the resistor values or
input voltage to see in simulation what happens to the output voltage and the currents.
It does not have to be an exact representation of the complete circuit.
If something does not work as you expect, try to isolate the problem. Is it a broken component? Are all resistor values what you thought they are or is there a wrong
resistor value connected? Is there a wrong connection?
If you need any help or something is not clear. Do not hesitate to ask the tutors or the lecturer during the consultation hours. We will try our best to point you in the right
direction.