Programmed Adjustable Power
I just explored an easy scheme for design a high precision programmed adjustable power.
In this scheme, there are no needs to make a complex PWM circult,
Just a liner or switcher adjustable voltage regulator and a resister network, a DAC, and a MCU.
Resister network change DAC output voltage to feedback voltage
and let adjustable voltage regulator regulate output voltage itself.
outputting a fixed voltage by using resister to control regulator
But there was a little challenge to output adjustable voltage.
My mates used to use digital potentiometer to adjust output voltage, but digital potentiometer is too instable.
Lucky, DAC with a resister network works better, and they can provide high precision output witch depends the resolution O F DAC.
In this figure, voltage of the node feedback are fixed by the Vref (OR Vsense) of regulator.
LM2576 is 1.23V, TPS5432 is 0.808V.
When there is voltage difference between Vout of DACS and Vref of regulator, the difference sets up a current in R2.
Then the current through R1 to the ground.
This adjustable current could change the resistance because voltage between Vref and GND is fixed
And no current would go into Vref pin duo to the virtual short and virtual open of the error amplifier inside of the Regula Tor Chip.
Now it's time to value R3, R2, R1.
Make sure is the output range of this regulator (Vout) and DAC (VDAC), and Vref by checking the datasheet of part.
Then, list of the equation.
(vdac.max-vref)/r2+ (vout.min-vref)/r3=vref/r1
(vdac.min-vref)/r2+ (vout.max-vref)/r3=vref/r1
Three unknown resistance, but both equation, we must assume the value of R3. 10K is very common.
Then check the Idac.max to make sure this DAC would not overloaded.
[Update 2014/TUE/22] Ps:
Three terminal regulator, such as LM317 is isn't available to this equation because the 1.25V are between REF pin and out pin .
We use TI's TLC5615, 10-bit Digital-to-analog converters as our DAC.
This chip had 3-wire Serial Interface, so we can use Arduino to control it.
Arduino is a open-source physical computing platform based on the AVR MCU.
Now give the Arduino program.
//Arduino Projecthttp://arduino.cc//by Mini Dragon athttp://minidr.com/archives/687//This program is licensed under a Creative Commons attribution-sharealike 3.0 License.#defineCS 2//chip Enable#defineCLOCK 3#defineDATA 4#defineHalf_clock_period 2//2 US-clock periodfloatj=0;voidSetup () {Pinmode (DATA, OUTPUT); Pinmode (Clock,output); Pinmode (Cs,output); Digitalwrite (Cs,high); Digitalwrite (Data,low); Digitalwrite (Clock,low); } voidWriteValue (uint16_t value) {digitalwrite (cs,low);//start of the bit data sequenceDigitalwrite (Clock,low); Data= Data <<2;//ADD 2 0 at the end of the data. A 10-bit Data word should add 2 0 at the LSB bit (SUB-LSB) since the DAC, input latch is A bits wide. (see TLC5615C datasheet) for(intI= One; i>=0; i--)//Send the bit sample data{digitalwrite (DATA, (Value& (1<< i)) >> i);//DATA Readydelaymicroseconds (half_clock_period); Digitalwrite (Clock,high);//DAC get DATA at positive Edgedelaymicroseconds (half_clock_period); Digitalwrite (Clock,low); } digitalwrite (Cs,high);//end-bit data sequence} voidLoop () {J=567;//Here , 567 is a example. DAC out=j*vref/1024WriteValue (Floor (j));}
Each DAC output voltage maps a main Vout.
Long day for me to update my blog. I even don ' t know my blog was blocked by our great Fire Wall.
Yesterday I passed my first time of GRE test.
That ' s a f**k test.
But during the day of preparing the GRE, I got a chance to attend our University ' s Electronic design contest.
In the contest, I-fixed some problems of my power and add some now function into it.
This is the top layer of the power.
You can see a black PCB which plug into the main board.
That's a current detection module.
I using TI ' s ina200a to detecting, the current of power ' s output.
Then using the Arduino ' s ADC, the current if the current exceeds the threshold value.
This threshold value could change during the runtime.
If the power is overloaded, the relay (yellow thing) would cut off the output to protect the buck chip until manual reset T The He system.
The 1602 LCD could display the output voltage, output current and cut off Thrshold current value.
Using the Arduino to control, the LCD is very simple like using printf () function in C language.
This is the bottom layer of the power. I using the Surface Mount package part to keep the system small.
This was the out put waveforms.
About 15mV ripple voltage in 1 a load, 10V output.
Fantastic result by using Nichicon HD aluminium electrolytic capacitor.
That's all of the
This project is open-sourced, under the licence of By-nc-sa.
If you want the SCH, PCB file and Arduino file, leave the comment and I'll mail you ASAP.
Thanks to Texas Instruments for offering me so many kind of chips free.
Dfd
Programmed Adjustable Power