PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schaltregler-Dimensionierung



OnkelTobi
29.07.2007, 20:50
Servus,

vielleicht kann sich jemand mal meine Berechnungen zu dem Schaltregler anschauen, den ich bauen möchte.

Es handelt sich um einen einfachen Step-Down-Regler.

Es wird mein erster Versuch eines solchen Reglers.
Die Vorlage habe ich aus der Atmel Appnote AVR450 (http://atmel.com/dyn/resources/prod_documents/doc1659.pdf).

Angepasst habe ich das ganze auf einen AtTiny461 und einen anderen Spannungsbereich.


Hier die Werte für den Schaltregler:

fOSC 64MHz
Vsat 0,50 V
Input voltage: VI 20,00V
Output voltage: VO 15,00V
Max output current: IO,max 2,00A

Tastverhältnis DC (Duty cycle) 0,75

8-bit Fast PWM:
Prescaler 2
OCR1C 255
f(pwm) 125kHz
T 8µs
t(on) 50% 4µs

Spule
L 4,5µH =(v_in-v_sat-v_out)*t_on/(2*i_max)
t(on) 8µs

Diode
Ipeak = Iout /DC 8A

Kondensator
dUout 100mV max. Stärke der Schwankung
C_min 120µF
ESR 0,100Ohm ( Tantal Low ESR 100µF 10V 100mOhm bei 100khz)
dUout_esr 266,6mV Schwankung durch ESR




Und hier die Dimensionierung für die Strom- und Spannungsmessung:

Anzahl Zellen 4
Ladeschlussspannung pro Zelle 4,1V
Ladeschlussspannung 16,4V
Maximale Kapazität 172,800 Wh = 622080 Ws


Spannungsteiler
R1 96 kOhm 1%
R2 22 kOhm 1%
Rx 5,364

Strommessung
Ri 0,440 Ohm


Referenzspannung Uref 3,670V
Verstärkung GAIN 20
Messzylkus t 1s

Vmax (ergibt sich aus Spannungsteiler) 19,68V
Imax (max. Strom durch Ri) 2,237A
Imax (max. Strom bei max. Zellspannung) 7,465A
Pmax Ri (max. Verlust über Ri) 2,202W

Auflösungen
V 19,22 mV/step
I 2,18 mA/step
P 41,99 mW/step


Bsp.:
U 16,40 V
I 2,000 A

U(Ri) 0,9842 V
U(ADC_U) 3,058 V
U(ADC_I) 3,241 V

ADC_U 853
ADC_I 961


Diese Komponenten habe ich mir rausgesucht:
Spule: 4,7µF 4,8A http://www.csd-electronics.de/de/groups/g_150/items2411.htm

Kondensator: Elko 200µF parallel mit Kerko oder 1 oder 2 größere Tantals

Diode: irgendne dicke mit >10A z.B. http://www.csd-electronics.de/de/groups/g_107/items896.htm

Als MosFET habe ich noch ein paar große P-Kanal-Typen von IRF mit geringen Rdson.

Die Schaltpläne habe ich mit angehängt, allerdings sind dort noch die ürsprünglichen Werte aus der Appnote enthalten :)

Wenn jemand ein paar Kritiken zu meinen Ideen hat, bin ich echt dankbar :)

Viele Grüße Tobias

sigo
29.07.2007, 22:05
Hi, interessantes Projekt.
MIt ist nur aufgefallen, dass die Strommessung ja nur mit recht geringer auflösung erfolgen kann, da du ja nur die Differenz aus der Spannung vor dem Shunt - Spannung nach dem Shunt als Maß für den Strom hast. Wenn man das allerdings nicht genauer benötigt, dürfte die Schaltung kaum an Einfachheit zu überbieten sein. Kritisch ist ggf. noch, dass die Spannungsteiler ja sehr genau sein müssen, aus o.g. Gründen. Daher auch die 0,1% Toleranz. ggf. kann man aber hier auch ein kleines Poti nehmen oder eben die Widerstände vorher selektieren.

Gefällt mir ansonsten ausgesprochen gut. Werde mir mal den App-Note ansehen. P-Kanal-Fets und Schottky-Dioden liegen noch reichlich im Lager..


Sigo

avion23
30.07.2007, 00:16
Hallo OnkelTobi,
ich habe die Appnote zwar nicht gelesen, aber ist die Mosfetansteuerung für 125kHz nicht ein wenig schwach? Das Gate wird schließlich über einen 680R Widerstand geladen.
Du könntest dir den Quarz sparen indem du aus der PLL (64MHz) mit :4 Teilung eine Taktfrequenz von 16MHz erzeugst.

Wenn ich deine Werte bei http://schmidt-walter.fbe.fh-darmstadt.de/smps/abw_smps.html eingebe, bekomme ich eine Induktivität mit 37µH? Das unterscheidet sich doch stark von deinem Wert, überprüf's nochmal. Spulen gibt es günstig unter http://www.pollin.de/shop/detail.php?pg=OA==&a=NTU4OTQ3OTk=&w=Mzk3OTk4&ts=0, das war das einzige was ich im Moment gefunden habe :(

Du baust anscheinend einen lion-lader, deswegen die 4,1V. Wie wäre es wenn du einfach mit 4,2V rechnest, dann kannst du auch lipo laden?
Unter http://freenet-homepage.de/thhe01/modellbau/lader/lader.htm ist ein solcher Lader beschrieben, vielleicht kannst du dir etwas abschauen?

Noch ein kleiner Link ganz allgemein zur Dimensionierung von step-down wandlern: http://sprut.de/electronic/switch/index.htm

Den 200µF Kondensator könntest du durch 2*100µF ersetzen, dann sinkt der ESR. Wie kommst du denn auf 100mV erlaubten Ripple? Aus dem Gedächtnis machen lipo zellen bei 4,235V (Ladeschlusspannung 4,2V) die Biege. Lion weiß ich nicht auswendig, aber ähnlich imho. Vielleicht rettet dich die Induktivität der Anschlusschnüre?

So genug unqualifiziertes Gemecker :) Ich weiß selber nicht wie man's macht, das was ich gerade gesagt habe wird wahrscheinlich total falsch sein.
Deswegen finde ich es super, dass du tatsächlich so etwas auf die Beine stellst. Mit der Frequenz könntest du noch hoch bis auf 250kHz, aber nicht höher, oder? Kannst du mir vielleicht etwas source code von der PWM initialisierung schicken wenn es fertig ist?

Viel Glück!

OnkelTobi
30.07.2007, 00:54
Die 64Mhz erzeugt dieser Typ der AtTiny-Serie meines Wissens intern.
Gesehen habe ich das bisher bei den Tiny15, Tiny26 und bei deren Nachfolgern 261 und 461.
Den 461 gibts grade bei CSD-Electronics.de im PDIP-Package.
Der sollte noch ausreichend Ressourcen für ein kleines LCD haben...



Die Berechnungen für die Spule habe ich der Appnote von Atmel entnommen.

Wie die zustande kommen, weis ich aber auch nicht - dein Link zu dem Berechnungs-Tool ist klasse - allerdings kommen total andere Werte raus.
Mit meinen Berechneten Werte wäre mein Regler nicht lauffähig.

Nach dem Link oben habe ich nochmal gesucht, und diesen Berechner gefunden:
http://www.daycounter.com/Calculators/Switching-Converter-Calculator.phtml
Der sagt mir auch, dass meine Induktion zu gering ist.

Ich habe mir einige Spulen besorgt, ein Oszi habe ich ebenso da - also kann ich ein wenig rumprobieren.


Wegen der 4.1V:
In der Appnote stand ein Hinweis, dass es 2 Arten von Zellen gibt: Mit einer Ladeschlussspannung von 4.1V bzw 4.2V.
Ich werde bei meinen Akkus wohl 4.2V annehmen.

Alle meine Akkus sind zudem mit einer zusätzlichen Elektronik (Max1665) geschützt (Abschaltung bei 4,225V/Zelle).
Die Akkus sind also schonmal sicher...

/edit
Eine Excel-Tabelle von TexasInstruments zum Berechnen von einem Schaltregler gibts hier:
http://focus.ti.com/docs/toolsw/folders/print/buck-convcalc.html

shaun
30.07.2007, 10:34
Ich habe mich von der AVR450 auch inspirieren lassen und einen NiMH-Lader-Baublock entworfen. Ub ist 8-15V, Akkuspannung 3,6 oder 4,8V nominal, Ladestrom 750mA. Der MOSFET-Treiber ist um eine Gegentaktstufe mit BC807/817 erweitert, ausserdem hat das Ganze noch einen RC-Snubber bekommen und komplett Schottky-Dioden. Die Regelung ist inzwischen ein PI-Regler, weil die Trivialregelung aus der Appnote zumindest eins nicht geschafft hat: regeln. Die Abschalterkennung hat auch beim Schiefangucken ausgelöst, insofern ist nun d2U/dt2-Abschaltung drin, mit -dU/dt, Absolutspannung und Zeit als Backup. f ist 125kHz, L 15uH.

OnkelTobi
14.08.2007, 22:23
@avion23
Hier die Initlaisierung des PWM-Ausgangs des AtTiny461:


#warning Setup() Registereinstellungen prüfen!

// Timer1 Asynchronous Mode PLL Initialization - Page88
PLLCSR = (1 << PLLE); // Enable PLL
_delay_us(50); // Wait 100µs for PLL to stabilize
_delay_us(50); // Split due to limits of _delay_us at frequency at 8mhz
loop_until_bit_is_set(PLLCSR, PLOCK); // Poll PLock until set
PLLCSR |= (1 << PCKE); // Enable Asynchronous Mode

// PWM
/************************************************** ************************************
Tiny15 - Originalvalues from Appnote:
TCCR1A = 0x81; // define timer1 as 8-bit PWM
TIFR = 0x80; // clear counter1 overflow flag
TIMSK = 0x80; // enable counter1 overflow interrupt
TCNT1 = 0x00; // set counter1 to zero
TCCR1B = 0x00; // PWM disabLED

Tiny461:
OutPut OC1B, PB3 PWM1B = 1
Fast PWM WGM11..0= 00
Non-Inverting Compare Mode - Cleared on Compare Match COM1B1 = 1
Asynchrone Clocking Mode, Prescaler = 1 CLK = PCK CS10 = 1
8 bit from BOTTOM(0x00) to TOP(0xff) TOV1-Flag set on TOP OCR1C = 0xFF
************************************************** *************************************/
TCCR1A = (1 << PWM1B) | (1 << COM1B1);
TCCR1B = (0 << CS13) | (0 << CS12) | (0 << CS11) | (1 << CS10);
TCCR1D = (0 << WGM11) | (0 << WGM10);
OCR1C = 0xff;

//TIFR = (1 << TOV1); // clear counter1 overflow flag
//TIMSK = (1 << TOIE1); // enable counter1 overflow interrupt
TCNT1 = 0x00; // set counter1 to zero
OCR1B = 0x00; // PWM disabLED

DDRB = (1 << PB3); // PB3 as Output

TimerClockSource taktet intern mit 64Mhz.
Prescaler = 1
PWM mit 8 bit Auslösung.
Ausgabepin ist PB3
Ausgabefrequenz 250khz

avion23
15.08.2007, 00:04
Super! Ich danke dir! Ich werde in der nächsten Woche 10x attiny26 bestellen ;)

OnkelTobi
23.08.2007, 19:52
Ich habe jetzt den Li-Ion-Lader aufgebaut:
http://farm2.static.flickr.com/1244/1215113581_d6920275a9.jpg
http://farm2.static.flickr.com/1244/1215113581_e9d43ef87b_o.jpg


Die Software aus der Appnote war mir zu zu wurstig, da habe ich mir die Ablaufsteuerung selber geschrieben...

Die Schaltung erkennt 2- 3- und 4-Zellen-Akkus.

Ladestrom moderate 500mA bis 1000mA.

Der Schaltregler arbeitet echt sauber - sehr geringe Restwelligkeit, gute Stellgenauigkeit (bei Konstantspannungmodus +-50mV).

Kurz die Eckdaten:
L=220µH
C=100µF + 100nF (Kerko)
f=31khz
Transistor ist ein IRF5210 Rdson=60mOhm
µC ist ein Tiny461
Vin=19V
Tastverhältnis bei Vout=17V/1A: 50%

Versuche mit einer höheren Schaltfrequenz hatte ich aufgegeben, da ich dachte es klappt nicht. Das Problem lag aber in einer Falschen ADC-Auswertung. Nachdem der Fehler korrigiert war, wollte ich aber die Spule nicht mehr austauschen ;)

Schaltplan:
http://farm2.static.flickr.com/1244/1216173466_09adec9e4d.jpg
http://farm2.static.flickr.com/1244/1216173466_d90bde6c5d_o_d.jpg

Wenn Interesse an dem Code besteht, stell ich den hier mit rein...

Gruß Tobias