Vous êtes sur la page 1sur 34

ECE 445: Senior Design

Stacking Precision Power Supplies


Final Report

Laura Haller and Braedon Salz


December 10, 2014
TA: Tim Wang
Project No. 2

Abstract
In this final report, a method for creating high precision, low-wattage, modular
power supplies is proposed through a review of relevant applications, an analysis
of product requirements, a preliminary design, an investigation of prototyped
results, and ideas for future work. The design is formulated based on the concept
of having a hub module which controls the connected stackable modules based
on input from the user. A more formal description of our design is outlined in
the following sections, as well as the details of our implementation. Verifications
performed on each of the different modules revealed that although most of the
project was successful, a major flaw in our ability to properly limit output voltage
ripple was inherent in our choice for the stacking module components. Potential
solutions to this issue are addressed in the section regarding future work.

ii

Contents
1 Introduction

1.1

Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Block Diagrams and Subsystem Overviews . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1

Entire System Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.2

Hub Board Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.3

Stack Board Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Design
2.1

2.2

Hub Board Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.1

Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.2

Board Count Sense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stack Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.1

Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.2

Circuit Protection Mechanisms . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Verification

14

3.1

Linear Regulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2

LCD Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.3

Analog Potentiometers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.4

Digital Potentiometers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.5

Short Circuit Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.6

DC-DC Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4 Costs
4.1

18

Cost Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.1

Labor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.1.2

Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.1.3

Grand Total . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5 Conclusions

20

iii

6 Works Cited

21

Appendices

22

A Tables

22

B Code Samples

24

C Pictures

27

iv

Introduction

1.1

Purpose

We chose our project based on the fact that power supplies are one of the most expensive yet most
necessary components of any electrical project. From the industrial standpoint, many product
test setups require numerous precision voltage references, yet the supplies that are bought are
needlessly high in wattage and price. For hobbyists and students, the cost of a singular power
supply is prohibitively expensive, and it increases linearly with the need for more outputs. Our
focus lies with the modularity and price of the project - two factors that are essential for both
markets.
In keeping with the purposes outlined above, the main goals that we hoped to achieve for the
project are listed here:
Develop a tunable 3-14V DC power supply with 20mV precision and 2A per stack board
Have short protection for each stack board to allow for hot-swappability
Allow the power supply boards to stack vertically while not interfering with each other
Have two methods of input - analog potentiometer and digital programmable line
Keep the product inexpensive while still using safe, quality parts
Use an LCD screen indicator to show current settings

1.2

Block Diagrams and Subsystem Overviews

Achieving our goals began with us extrapolating upon our concepts for the hub and stack boards
as they fit into the overall system. This led us to create a block-diagram-based overview of major
components of both the hub board and the stack boards.

1.2.1

Entire System Diagram

Digital Input

Input Power

Hub Board

Stack Board

Stack Board

Stack Board

Figure 1: Full System Diagram

System Overview
From a technical standpoint, the system was designed around the idea of a mother card with
stackable daughter cards. To maintain a clear syntax, we refer to the mother card as the Hub
Board and the daughter cards as the Stack Boards throughout. The hub board receives inputs
from a variety of sources and sends it to the stack boards, each of which have their own board
DC/DC converter to program an output.

Input Power
The entire system receives external power from a banana jack or DC barrel providing 12V DC.
This needs to be fairly high wattage as it has to provide power for all the subsequent modules
being stacked, so we estimated up to 15A is necessary at peak. Due to later design choices in how
modules are connected when stacked, we decided that we would limit the number of modules to 6.

Digital Input
One of the two methods of setting the stack board set points is via a digital input stream. This

is done from a computer running a script to open a serial port, which will receive the number of
boards from the microcontroller, and then proceed to ask for set points for each board. It will cease
to ask for input after that and print out the confirmed set points along with their actual output
values.

1.2.2

Hub Board Overview

I2C Bus

Regulator

Board
Count Sense

Stack Board
Setpoint

Figure 2: Hub Board Diagram

Regulator
While the entire board is powered by 12V DC, our microcontroller and other logic peripherals run
from 5V DC, so we used a linear regulator to buck it down.

Microcontroller
We used an AVR ATmega microcontroller for our project. The power is supplied from the regulator.
It counts the number of boards, and then proceeds to read in the potentiometer set points from
each stack board. Using that, it calculates what output value is needed for each converter chip.
This data is then sent along a I2C bus to each stack board. It also sends the necessary data to the
LCD screen.

Stack Board Setpoint


While the potentiometers are actually located on the stack boards, they send voltages to the hub
board which are read into the microcontroller via an ADC. We needed to ensure that our ADC
was high enough precision to be capable of telling the difference between small voltage levels (on

the order of 10mV).


I2C Bus
All the data that is calculated by the microcontroller including set points, calibration, and LCD
screen bits is sent to a I2C bus to communicate between boards. We use an 8-pin slave select bus
that is set to active high. We use the slave select bit for all of the data streams, as we only want
to talk to one board at a time.
Board Count Sense
In order to count the number of boards, we will be using a microcontroller to read in an voltage
set by a resistive voltage divider. The upper end will be a constant fixed resistor attached to the
hub board, while the lower end will be a parallel combination of resistors from the stack boards.
Adding a stack board will lower the resistance by a factor of the number of stack boards, which will
be fed into the ADC line. The mathematics of designing this portion of the project are discussed
in further depth in Section 2.1.
1.2.3

Stack Board Overview

LCD Screen

Power

DC/DC
Converter

I2C Bus

Potentiometer

Output Short
Protection

Figure 3: Stack Board Diagram


Power
The stack boards get their input power from the 12V and 5V DC lines passed from the hub board.
DC/DC Converter
The main component of the stack board is the converter chip. We chose a buck-boost converter
4

such that our range could vary between common bias voltage values of 3V to 14V while being
supplied by 12V.

I2C Bus
Refer to the description of I2C Bus in Section 1.2.2.

Potentiometer
The potentiometer needed to be both very precise and linear in order to serve its purpose accurately.
It is a multiple turn potentiometer as well which provides finer adjustments for the user.

LCD Screen
The LCD Screen displays the current set points for the board, as well as the actual output values in
terms of both voltage and current. We had also hoped to implement an indicator to show whether
or not the board has a shorted output. In future work, this will be implemented.

Circuit Protection Mechanisms


We wanted to ensure that our circuit will hold safely with a short or reverse polarity output. An
implementation of these features is discussed in the Design section.

Design

The next step in bringing our concept to fruition was going through a design phase. The major
design choices concerning both hub board and stack board as well as some key peripherals are
discussed here.

2.1

Hub Board Design

Although we will discuss the design of the hub board first, the stack and hub boards were designed
concurrently in order to accommodate their interconnections.

2.1.1

Microcontroller

In Figure 4, we show the schematic for the hub board circuit. The 5V regulator which supplies
power to the microcontroller is fed by the input 12V source. The microcontroller processes data
that comes in from the header pins as well as sends data through the pins to the LCD screen and
digital potentiometer. A decoder is used to implement the slave select ability for when multiple
stack boards are connected.

Figure 4: Schematic of microcontroller circuit on hub board

The layout of the hub board is shown in Figure 5. As one can see, the traces on the top left are
quite wide to accommodate for the potentially high supply current.

Figure 5: Layout of microcontroller circuit on hub board

2.1.2

Board Count Sense

An important part of the hub board was the sensing circuitry as shown in Figure 6 which determined
how many stack boards were connected. Originally, we planned on using a an input power supply
voltage of 5V for our entire system, but we determined that it would not provide enough range
for the ADC of the microcontroller to distinguish between board numbers accurately. To put it in
math terms:

VLSB = VDD /210 = 5/1024 5mV


With an LSB of 5mV, the ADC of our microcontroller is fairly precise at all ranges. This defines
what our set up can have in terms of resistances:


0.005

Rstack /7
Rstack /8

Rtop + Rstack /8 Rtop + Rstack /7 10


Based on this, we can choose the ratio of resistors that will allow us to read this minute
difference. We also chose the resistors to be in the range of 10k in order to minimize power loss
through this branch. Setting Rtop to 10k, we swept through the ratio of the resistors to find the
maximum voltage difference.
7

Voltage Difference between 8 Stack Boards and 1 Stack Board


2.5

Voltage Difference

1.5

0.5

0.1

0.2

0.3

0.4 0.5 0.6 0.7


Rtop/Rstack Ratio

0.8

0.9

This sets the optimal ratio at 0.3518. Using that ratio, we can plot the output voltage for each
additional board.
ADC Input Level vs Board Count
4

Vcenter

3
4
5
6
Number of Stack Boards in Parallel

Clearly the smallest difference occurs between the 7th and 8th board, which here is 133mV, or
26 LSBs. This is well within our accuracy range.

Figure 6: Schematic of board sense circuit between modules, with 3 stack boards

2.2

Stack Board

In Figures 7, 8 and 9, we show the schematic for the stack board converter circuitry. Figures 7 and
8 were split for readability. Figure 7 pertains more to the converter and its immediate peripherals
such as the inductor and bypass capacitors. A salient point is that the board sense resistor can be
seen on the left. Figure 8 shows more of the connections specifically for the digital potentiometer.
Headers and other small peripherals are shown in Figure 9.
The majority of changes made to this circuit after the design review involved many of the
components included in Figure 9. For a better understanding of the entire system communication
and stack board operation, each section will be explained. The stacking header is most crucial as
it handles the signals going to and from each stack board. The top 12 pins allow the user to select
which channel they would like to use for that particular board by shorting slave select on the right
to a channel on the left. The rest of the pins handle things such as LCD data, board sense, power,
and digital potentiometer data.
The analog potentiometer portion of the circuit allowed the microcontroller to take in the
voltage at the potentiometer wiper based on whether or not slave select was high for that stack

board.
The inverter to the right ended up not being correct since we assumed we would always need
to hold the SYNC pin of the digital potentiometer low, when in fact we write that directly from a
specific pin on the microcontroller. SYNC should stay low while a command is being read into the
digital potentiometers shift register and be written high upon completion.
The LCD header would ideally have right angle pins to hook directly up to the display from
the board.
Ready select was supposed to allow us to check for the completion of a data write to the digital
potentiometer. Shown is an encoder decoder which allows us to read a pin from a specific board
based on slave select. However, not only did the ready pin not work properly on the integrated
circuits, but we realized after the fact that this could have been simplified down to an AND gate
with inputs of slave select and ready.

Figure 7: Left half of stack board circuit schematic

10

Figure 8: Right half of stack board circuit schematic

Figure 9: Headers and other stack board peripherals

The stack board layout is shown in Figure 10. One can see the issue of the encoder/decoder
ready select portion on the top left as the ICs are quite large and require a great deal of traces.
The main stacking header is in the middle of the board so that the system would be balanced.
11

An LCD can hang off the pins on the bottom right. The converter, digital potentiometer, and
necessary peripherals are just above there. It is important to note that the inductor was placed
close to the converter such that there would be minimal ringing.

Figure 10: Layout of microcontroller circuit on hub board

2.2.1

Converter

Our design called for the use of a DC/DC buck-boost converter, Linear Technology part 3112,
which can output voltages from 3-15V DC [2]. The output voltage is set by a resistor ratio using
a common non-inverting amplifier scheme. We change this ratio by using a I2C-programmable
resistor that can be precisely set to allow for exact outputs. The formula for setting the output
voltage is:
Vout



R1
= 0.8V 1 +
R2

From the datasheet, both resistors are recommended to be on the order of ks or greater to
minimize wasted power. In order to achieve desired voltage range for a stack board, we had to find
a high precision digital resistor that could cover a large range. Using a 1024-bit digital resistor [3],
and R2 to be 4k, R1 was set to sweep from 0 to 50k. This allows us to compute a final precision

12

in terms of LSBs:
15 3
Vout
=
= 0.24mV <<< 1 LSB
Rdig
50k
While this is a nice piece to have, another important precision measurement would be the
difference between steps - setting 782 vs 783, for example, would translate into what voltage output
difference? Since we chose a linear output, we can calculate the difference linearly:

Vout = Vout (X + 1) Vout (X) = 9.8 mV 1 LSB


This is a much more difficult spec to meet, as a 10-bit digital potentiometer seems to be the
ceiling in terms of precision. It still is under one LSB, if just barely, so the chosen part should work
for our design. However, issues with the implementation arose and are discussed in the verification
section.
Vout vs Digital Resistor Setting
12
10

Vout (V)

8
6
4
2
0

2.2.2

10

20
30
Resistance (k)

40

50

Circuit Protection Mechanisms

A short or reverse polarity situation on our stack board circuit could be disastrous. We protect
against this with two different methods, one for each case. We had initially designed the short
circuit protection to consist of a sense resistor on the output to ensure we do not draw too much

13

current. In this case, if the output is shorted, the current rapidly increases, and therefore the
voltage across the sense resistor increases as well. By measuring this voltage, we can set a VOV P
threshold that will shutdown the chip. This level is measured by the microcontroller on an ADC
pin, and, if it exceeded the corresponding level, shuts down the specific converter chip. We later
decided to use the current sense pin on our converter chip as it had microamp precision. To protect
against reverse voltage protection, we were also going to use a zener diode in parallel with the
output.
In Figure 11, we show the schematic of our simple over voltage protection circuit.

Figure 11: Short and reverse polarity protection circuitry

Verification

A detailed table of all requirements and verifications can be found in Appendix A Table 4. Here,
the main quantitative results are broken down alongside the results.

3.1

Linear Regulator

The linear regulator needed to provided a 5V reference for several logic chips and the microcontroller
in our design. Based on the various components datasheets, we estimated that a 5% tolerance would
be acceptable for our parts. We breadboarded the circuit and fed in a 12V supply as the input, and
tracked the output over various loads. At worst-case performance, we have only 22mV of ripple, or
approximately 4%. This is well within the specification and performs well.

14

Figure 12: 5V Regulator Output Ripple

3.2

LCD Screen

The LCD screen was needed to provide a visual way of measuring the current and voltage levels
of the power converter output. We had two primary requirements: first, that it power on the
backlight with a choosable contrast, and second, that is displays characters sent to it over serial
lines. We used the LiquidCrystal library provided to us from the Arduino IDE to demo and test
this functionality. This was successfully met, as shown in the picture below.

15

Figure 13: LCD Example Text

3.3

Analog Potentiometers

The analog potentiometers were used to provide a user input to set the output voltage. While they
did not lie directly in the feedback path (instead being routed through the microcontroller), it was
still important they changed at an expected linear rate. The potentiometers we purchased had
notches every 36 degrees, so we attempted to do by hand measurements for linearity. Our findings
are tabulated below, with the R2 value shown for the linear region of the potentiometer (ignoring
first and last point).
104

Resistance W-B[]

1
0.8
0.6
0.4
0.2
0
0

0.2
0.4
0.6
Fraction of a turn

0.8

Figure 14: Analog pot resistance from wiper to base (R2 = 0.975)

16

3.4

Digital Potentiometers

The digital potentiometers had very similar verifcations to the analog potentiometers in that we
tested for linearity. Rather than sweep out and plot each of the ten bits in the chip, however, we
chose 20 codes at random, and calculated the best fit line. To our surprise, the part was so precise
that the program we used to calculate the best fit line (Microsoft Excel) simply called it perfectly
linear with zero standard deviation.
104
5

Resistance W-B[]

4
3
2
1
0
0

200

400

600

800

1,000

Code Sent
Figure 15: Digital potentiometer resistance from wiper to base (R2 = 1)

3.5

Short Circuit Protection

The short circuit protection was built into the power converter module. While unfortunately we
did not capture any waveforms to demonstrate its successfulness, we shorted two wires over our
output load resistor and the module successfully turned off then back on upon removing them.
There was very little we could do externally to verify and test this however, as the short circuit
protection module was built into the converter chip.

3.6

DC-DC Converter

Testing the main core of project resulted in two core measurements: DC consistency and voltage
ripple. The DC consistency refers to how accurately and repeatedly we could lock into a DC
17

operating point, and how far it was from the calculated one. The voltage ripple concerns high
frequency noise and distortion that, while not visible at DC, is still present in the output. The DC
measurement could be simply done using a digital multimeter, but the ripple required us to hook
up a load and measure the output on a oscilloscope. Shown below is the best case performance we
could achieve. While the DC tracked quite accurately, the ripple was far over spec. Solutions to
this are mentioned in the conclusion below.

Figure 16: Showing Converter Output Ripple

Costs

4.1

Cost Analysis

4.1.1

Labor
Table 1: Cost for Each Engineer
Name

Hourly Rate
[$]

Total Invested Hours


[hr]

Cost per Engineer


[2.5 Hourly Rate Total Hours]

Laura Haller
Braedon Salz

35
35

150
150

$13,125
$13,125

300

$26,250

Total

18

4.1.2

Parts
Table 2: Cost of Parts

Item

Part Number

Unit Cost [$]

Quantity

Total Item Cost [$]

LCD
12V DC Wall Converter
Inductor
Microcontroller
Linear Potentiometer
4.02K Resistor
3.48K Resistor
Demux
10UF Cap, 25V
Linear Regulator
10uF Cap, 10V
162K Resistor
3M Resistor
49.9K Resistor
40.2K Resistor
Zener Diode
100PF Cap
42.2K Resistor
0.1UF Cap
820PF Cap
33K Resistor
22PF Cap
1UF Cap
22UF Cap
47UF Cap
Buck-Boost Converter
Dig Potentiometer
Encoder
Relay

LCD-0935
JBM AC-6A 7XD
XAL7030-103MLB
AVR ATmega32
CT2254-ND
P4.02KFCT-ND
P3.48KBCCT-ND
568-1417-1-ND
1276-1075-1-ND
497-1203-1-ND
399-9310-1-ND
P162KFCT-ND
1276-5978-1-ND
P49.9KFCT-ND
P40.2KFCT-ND
BZX84C16LT1GOSCT-ND
1276-2799-1-ND
P42.2KFCT-ND
399-1250-1-ND
1276-3293-1-ND
P33KECT-ND
1276-1203-1-ND
1276-1783-1-ND
445-3928-1-ND
490-3907-1-ND
LTC 3112
AD5293
296-31535-1-ND
HE647-ND

$7
10
0.40
2.25
1.55
0.1
0.94
0.56
0.157
0.44
1.75
0.1
0.024
0.1
0.1
0.15
0.089
0.1
0.194
0.22
0.1
0.16
0.16
1.35
0.53
8.54
6.63
0.56
1.8

8
8
8
1
5
5
3
5
10
5
7
3
10
5
5
5
10
3
10
5
3
5
3
3
5
5
5
5
5

$56
80
3.20
2.25
7.75
0.5
2.82
2.80
1.57
2.20
12.25
0.3
0.24
0.5
0.5
0.75
0.89
0.3
1.94
1.10
0.3
0.8
0.48
4.05
2.65
42.7
33.15
2.80
9

Total

4.1.3

$263.79

Grand Total
Section

Total

Labor

$26,250

Parts

$263.79

Total

$26,513.79
19

Conclusions

While our project was not completely up to specification, we were pleased with what progress we
made. Our project conforms to the IEEE Code of Ethics [1] as shown in Table 3. The final result
was a less accurate version of our original goal, but we believe there is a large amount of room for
improvement. The most important result was the DC tracking, which was spot on. We debugged
the high ripple levels in the project by investigating the pole-zero placement of the DC-DC converter
feedback network. We made an invalid approximation concerning the zero placement, which led to
a very, very high undershoot on each clock cycle. While it did settle to the desired ripple (20mV)
within one clock, that initial overshoot was not acceptable. From the datasheet:

Figure 17: DC-DC Converter Feedback

fz =

1
1

2(RT OP + RF F )CF F
2RT OP CF F

Due to our selection of RT OP and RBOT being implemented via a resistor and the digital potentiometer, they were not of high enough magnitude to make that approximation. We designed
several solutions to that problem, but unfortunately ran out of time to implement them. The
cheapest solution would be to purchase a larger digital potentiometer, but those are currently not
available on the market with high enough precision. With an appropriate sized digital potentiome-

20

ter, our steps between voltage levels would be approximately 120mV, which does not solve the
problem. We also believe a valid solution would be to combine the digital potentiometer with some
offset, static resistors. This would drastically limit the output voltage swing, as we would no longer
be able to sweep the full ratio. Another possible solution would be to simply stack multiple digital
potentiometers in series, and give them all the same input code. This would emulate nRdig , where
n is the number of series connections. While it is the most effective solution, it is also the most
expensive by far.
Another solution proposed would be to instead filter out the high frequency distortion with
a simple active low pass filter. Since the internal clocking frequency is 750kHz, the filter would
ideally cross over at around 1kHz. With just a single first order filter, that would allow us 40dB
of attenuation ideally, which would bring the ripple down to far more manageable levels. Moving
forward, this is the option that seems most valuable to pursue. This also would help confirm the
accuracy of our DC levels consistently, while removing the transient ripple.

Works Cited

References
[1] IEEE

Code

of

Ethics.

IEEE.

IEEE,

n.d.

Web.

27

Sept.

2014.

<http://www.ieee.org/about/corporate/governance/p7-8.html >.
[2] Linear Technology, 15V, 2.5A Synchronous Buck-Boost DC/DC Converter, LTC3112
datasheet, Revision C.
[3] Analog Devices, Single-Channel, 1024-Position, 1% R-Tolerance Digital Potential, AD5293
datasheet, 2011, Revision D.

21

Appendices
A

Tables
Table 3: Our Policies as They Relate to the IEEE Code of Ethics

Standard

Concept

Our Policy

Safety

2
3

Conflicts of Interest
Honesty

Bribery

Technological Understanding

Technical Competence

Criticism & Credit

Discrimination

Injurious Actions

10

Professional Development

Tests of all of our hardware were covered and the product will not be distributed until it is further polished
and made safer.
No conflicts of interests arose.
Each claim made about our product has been either
disproved or proven using both simulations and handson testing.
No attempts at bribery happened while we were working.
This project more so serves as an extension of an already existing application of power electronics, but the
difference in purpose is explained in the in our introduction.
In order to design this project and bring it to
fruition, we have taken many relevant courses which
have provided the majority of relevant knowledge.
Other shortcomings in knowledge have been remedied
through individual research and speaking with applications engineers to create a quality, safe product.
This project went through both a design review phase
as well as a peer review phase. This allowed for adequate time to respond to design criticisms before we
finalized our designs.
Neither of the designers have participated in discriminatory behavior as it pertains to marketing, creating,
or designing to product.
All claims about safety and product performance will
be verified before our product is ever released to ensure
that others will not be harmed.
Through peer reviews and providing helpful advice
during time in the senior design lab, we hoped to foster a learning-based environment of high ethical standards.

22

Table 4: Requirements and Verifications


Requirements

Verifications

LCD
The display powers on

LCD
Connect display to input voltage and make
sure output shows up
Use the LiquidCrystal library for the Arduino
in order to write Hello World to display
Input Power
Verify that under stresses of 5A, 10A, and 15A
provided by an electronic load, the input source
can provide 12V with a 0.5V margin
Converters
Output will be checked against the specified
equation for an input of 11.5V, 12V, and 12.5V
Chip will be tested with a breakout board on
a breadboard using a standard linear analog potentiometer

The display shows characters sent via serial


connection
Input Power
Input voltage source should be capable of outputting 12V +/- 0.5V and at least 15A
Converters
Converters must output within 10mV of the
output expected by


R1
Vout = 0.8V 1 +
R2

Analog Potentiometers
The 10k potentiometer resistance must change
linearly

Maximum 5% tolerance

Digital Potentiometers
Must respond properly to I2C communication
Linearity of resistance from near 0 to 50k

Accuracy of resistance between modules

23

Output voltage should vary linearly with that


resistance, with the output best fit line having a
5% deviation from the mathematical model
Analog Potentiometers
Sweep the resistance from minimum to maximum, measuring resistance after each turn; the
change in resistance should be under 5% error
from a best linear fit line
Compare the maximum resistance of the potentiometer with the expected value; ensure that
they are within 5% of each other
Digital Potentiometers
Sweep input bits and observe change in resistance using a DMM
Measure resistance at each code, or command
word, and plot output; the DNL and INL should
be under 1 LSB
Send max resistance code to module, check
output resistance. Difference between modules
should be under 1%

Requirements and Verifications, cont.


Requirements

Verifications

Resistor in Converter FB
Resistor should be same value within 1% between boards
Microcontroller
Must be able to transmit I2C data

Resistor in Converter FB
Measure each resistor using DMM and verifying
Microcontroller
By using the Arduino program, we will use a
test script to send a data counter script (from
0x00 to 0xFF). We can verify the output using a waveform decoder on the oscilloscope. We
can also have another microcontroller read in the
datastream. There should be no difference
Using a precise voltage reference, sweep the
input reference by 1mV steps. Send the recorded
code to the serial output and verify that it changes
correctly
Linear Regulator
Since the output voltage is fixed, test regulator
on breadboard and measure accuracy with DMM
Short Circuit Protection
While two stackable modules, one with a circuit load and one without, are connected to the
hub module, short the stackable module that is
not connected to the load. Confirm that the
voltage and current ripples are within 50mV and
10mA, respectively.

ADC should be accurate to 5mV with up to 1


LSB of error

Linear Regulator
Output voltage accurate to 5%
Short Circuit Protection
Ability to handle shorts

Code Samples

# include < Serial .h >


# include < LiquidCrystal .h >
int clockPin = A3 ;
int dataPin = A4 ;
int syncPin = A2 ;
int potPin = A5 ;
LiquidCrystal lcd (9 , 10 , 11 , 12 , 13 , 14);
// 0 x1806
int enableWiper [16] =

{0 , 0 ,
0, 1, 1, 0,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0};

// 0 x1302

24

int setWiper [16] =

int NOOP [16] =

{0 , 0 ,
0, 1, 0, 0,
1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0};
{0 , 0 ,
0, 0, 0, 0,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0};

void strobeClock ()
{
//
Serial . println (" Strobed Clock ");
digitalWrite ( clockPin , LOW );
digitalWrite ( clockPin , HIGH );
// delay (300);
digitalWrite ( clockPin , LOW );
// delay (300);
}
void sdoRead ()
{
digitalWrite ( syncPin , LOW );
int i = 0;
for ( i = 0; i < 16; i ++)
{
strobeClock ();
}
digitalWrite ( syncPin , HIGH );
}
void dataWrite ( int * data )
{
digitalWrite ( syncPin , HIGH );
delay (100);
digitalWrite ( syncPin , LOW );
int count ;
for ( count =0; count < 16; count ++)
{
// Serial . print (" Data Val : ");
// Serial . println ( data [ count ]);
digitalWrite ( dataPin , data [ count ]);
strobeClock ();
}
digitalWrite ( syncPin , HIGH );
}
void printVol tageLe vel ( LiquidCrystal myLCD , int vdd , int level )
{
25

myLCD . setCursor (0 ,0);


myLCD . print ( " Voltage : " );
myLCD . setCursor (9 ,0);
float outputLevel = level / 1024.0 * float ( vdd );
myLCD . print ( outputLevel );
myLCD . setCursor (15 ,0);
myLCD . print ( " V " );
myLCD . setCursor (0 ,1);
myLCD . print ( " Current : ? " );
}

void setup ()
{
Serial . begin (9600);
Serial . println ( " Setup has finished " );
pinMode ( clockPin , OUTPUT );
pinMode ( dataPin , OUTPUT );
pinMode ( syncPin , OUTPUT );
digitalWrite ( syncPin , LOW );
pinMode ( potPin , INPUT );
// set up the LCD s number of columns and rows :
lcd . begin (16 , 2);
// Print a message to the LCD .
lcd . print ( " hello , world ! " );
delay (1000);
delay (1000);
Serial . println ( " enableWiper " );
dataWrite ( enableWiper );
delay (1000);
}
int timedelay = 3000;
int * leveltoByteArray ( int * inputArr , int level )
{
int i ;
for ( i = 15; i > 5; i - -)
{
inputArr [ i ] = level % 2;
Serial . print ( inputArr [ i ]);
level > >= 1;
26

}
Serial . println ();
return inputArr ;
}

void loop ()
{
int inputVoltage = analogRead ( potPin );
Serial . println ( inputVoltage );
int * dataArray = leveltoByteArray ( testrandom , inputVoltage );
int i ;
for ( i = 0; i < 16; i ++)
{
Serial . print ( dataArray [ i ]);
}
Serial . println ();
Serial . println ( " Sent data from analog pot " );
dataWrite ( dataArray );
printVolta geLeve l ( lcd , 12 , inputVoltage );
delay (200);
}

Pictures

Figure 18: Digital Potentiometer Digital Word Input

27

Figure 19: Our final setup

28

Figure 20: Ripple with maximum allowed load capacitance (10F)

Figure 21: Ripple with 6muF load

29

Figure 22: Ripple with 4muF load

Figure 23: Ripple with no capacitor load

30