Escolar Documentos
Profissional Documentos
Cultura Documentos
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
1.2.1
1.2.2
1.2.3
2 Design
2.1
2.2
2.1.1
Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2
Stack Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1
Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2
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
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
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
Digital Input
Input Power
Hub Board
Stack Board
Stack Board
Stack Board
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
I2C Bus
Regulator
Board
Count Sense
Stack Board
Setpoint
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.
LCD Screen
Power
DC/DC
Converter
I2C Bus
Potentiometer
Output Short
Protection
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.
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
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.
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.
2.1.2
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:
Voltage Difference
1.5
0.5
0.1
0.2
0.3
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.
10
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.
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 (V)
8
6
4
2
0
2.2.2
10
20
30
Resistance (k)
40
50
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.
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
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
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
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.
Costs
4.1
Cost Analysis
4.1.1
Labor
Table 1: Cost for Each Engineer
Name
Hourly Rate
[$]
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
Quantity
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:
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
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
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
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
23
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.
Linear Regulator
Output voltage accurate to 5%
Short Circuit Protection
Ability to handle shorts
Code Samples
{0 , 0 ,
0, 1, 1, 0,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0};
// 0 x1302
24
{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
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
27
28
29
30