Lernprojekt: StepDown via µC via PWM und n bissl Extras

TommyB

Team Bitschubse
17. Mai 2010
2.151
80
48
40
127.0.0.1 ;)
Sprachen
  1. C#
  2. VB.Net
  3. LunaAVR
  4. Assembler
  5. Python
Vorab noch mal:
Dies ist ein Lernprojekt! Ja mit dafür erstellten Chips bekommt man womöglich bessere Ergebnisse, das interessiert mich aber jetzt herzlich wenig, da ich dies selber mal (zumindest brauchbar) umsetzen will.

Also das Projekt kann man sich wie folgt vorstellen:
Man nehme einen Kumpel der gerne Handys schrottet. So lange bequatschen bis man die Akkus bekommt :D
Bissl hier und da bis man die fertige Schaltung hat die man haben will. s. U..

Problem war:
Ich bin öfters unterwegs. Bummelbahn weil alles andere kann man sich als Nicht-Manager und Nicht-Politiker eh nicht erlauben. Ergo kein Strom. Aber irgendwann sind diese dämlichen Akkus im Handy, MP3 Player etcpp einfach leer. Das ist Mist. Akkus hab ich ja aber, also muss Abhilfe geschafft werden. Ja sowas gibt es auch fertig zu kaufen, aber fertig gekauft ist uncool. Wie Apple.

Lösung:
Ein [st]Tiny[/st] Mega der alles koordiniert, 2 LiIO Akkus (schaltbar in Reihe für Batteriebetrieb, seperat zum Laden), ein bissl StepDown und ein bisschen Optik. Akku Anzeige und Betrieb und so. Steht aber noch nicht soo fest, mal schaun.

Erstmal aufgebaut, und läuft. Aber nur mit ADC den Ausgang ein- und auszuschalten ist ein bissl zu lahm (max 4KHz), einfach weil der ADC zu lahm ist. Daher nutze ich jetzt Timer 0 via PWM dafür (gute 8KHz) und der ADC regelt diesen, je nach Ausgangsspannung.

Fein, läuft auch. Aber dennoch würde ich gerne mal ein paar Kommentare einholen bevor ich das ganze wirklich aufbaue. Noch ist das Ganze als Prototyp auf meinem BreadBoard.

UI und so ist noch garnicht implementiert, kommt die Tage. Ist aber ja eh nur Software.

Angehängt ist die Schematik (2x. Einmal für Bildschirm (96 DPI) und einmal für Druck (600DPI), technisch aber identisch).
Wäre nett wenn da mal der ein oder Andere was zu sagen würde, vielleicht lässt sich noch was optimieren, vielleicht ist es auch teilweise kompletter Humbug :)
Was noch fehlt ist der Widerstand vom µC zum Gate und vom Gate zu Masse.

Bei Fragen einfach fragen :)
Bei Kommentaren einfach .. ja .. kommentieren ;)



 
Hallo Tommy,

also ich finde das Projekt ganz interessant bzw. nützlich, allerdings würde ich
für die Regelung einen fertigen Schaltregler benutzen und nur
Ladevorgang etc. über den µC!
...müsste ich mal raussuchen aber ich hab hier welche wo man den Ausgangstreiber
unabhängig von der Reglung schalten kann, also PWM geeignet...

Sehr reizvoll fände ich das ganze wenns funktioniert auch in SMD evt. als
kleiner Bausatz (nich für mich;-)...

mfg
 
Vollständig SMD ist wohl möglich, denn aber teurer :) (vor allem die Spule, Kondensatoren etc). Aber möglich bestimmt.

Für die Regelung einen fertigen IC... Genau deswegen hab ich bei geschrieben dass es ein Lernprojekt ist ;)
Ich wollte es selber machen, auch wenn die Ergebnisse nicht so 100%ig sind wie mit einem fertigen Wandler. Wobei mit meinen begrenzten Mitteln kann ich über die Ausgangsspannung echt nicht meckern. Alles läuft, nur ne externe Platte die ich als Verbraucher mal angeklemmt hab will nicht anlaufen. Die zieht aber auch n bissl arg viel (fast 900mA) und liegt somit schon stark an der Grenze der Schaltung mit ca. 1A. Aber es ist auch noch sehr am Anfang, 0 Optimierungen bei schnellen Stromwechsel etc :)
Außerdem sehe ich so den ungefähren Strombedarf und kann bei grober Überlast abschalten.

Bauteilpreis musste aber locker 15€ einplanen, ohne Akku und Gehäuse. Akkus hab ich das Glück dass Kumpel gerne Handys schrottet und ich die Akkus bekomme ^^ Aber dafür werde ich mir wohl 2x 4Ah Akkus bestellen. Sollte dann genug sein um ca 5x das Handy voll zu laden :)
Ok, Ladezeit dann auch 8 - 10 Stunden, aber man muss ja auch mal schlafen :)


Bei genügend Interesse (und Fortschritt) kann ich aber gern den Source (Assembler) und Schaltplan hier rein stellen.
Unter der Voraussetzung jemand nit nem Skop bauts auch nach und testet das mal :D
 
Hallo,

Vollständig SMD ist wohl möglich, denn aber teurer (vor allem die Spule, Kondensatoren etc). Aber möglich bestimmt.
Na ja man muss es ja nicht bestücken lassen, und die Bauteile sind oft sogar günstiger!

Für die Regelung einen fertigen IC... Genau deswegen hab ich bei geschrieben dass es ein Lernprojekt ist
Sorry, ich hab dich dann wohl falsch verstanden - dachte du meintest nur keinen fertigen Laderegler-ic...

Ich wollte es selber machen,
Das versteh ich gut;)

Alles läuft, nur ne externe Platte die ich als Verbraucher mal angeklemmt hab will nicht anlaufen. Die zieht aber auch n bissl arg viel (fast 900mA) und liegt somit schon stark an der Grenze der Schaltung mit ca. 1A.
...könnte unter umständen an starker Restwelligkeit liegen...

Bauteilpreis musste aber locker 15€ einplanen, ohne Akku und Gehäuse.
Na ja ich find jetzt nicht sonderlich teuer, jedenfalls nicht für ne Anwendung die man
auch nachher gebrauchen kann:D
(mein aktuelles Projekt kostet etwa 30x soviel...;))

Unter der Voraussetzung jemand nit nem Skop bauts auch nach und testet das mal
also Skope(s) hab ich nur keine Zeit, aber aus Erfahrung kann ich sagen dass ein durchschnittlicher
Schaltregler mit dem LC-Glied aus dem Datenblatt durchaus 200mV Restwelligkeit erzeugt!
Für so emfindliche Verbraucher regel ich die Ausgangsspannung daher nach Möglichkeit
noch mit nem LOwdrop o.ä linear nach...

Gruß
AVRuser
 
Ne das ist nicht das Problem. Ja Restwelligkeit hat meiner auch. Geschätzte 100 - 200mV unter Last.
Das Problem bei der Platte ist nur dass der µC nicht schnell genug den Strom hoch regelt.

Ist nur ein PWM, und der ADC misst die Spannung. Wenn zu niedrig +1, wenn zu hoch -1. Bei schnellen Stromänderungen dauerts dann natürlich bis der ADC den Ausgang denn endlich mal genug hoch geregelt hat, verständlicherweise. Aber das Problem wird noch angegangen :)

*) Alle Angaben sind geschätzt da ich mit nem Soundkarten-Skop "messe" ;)
 
Das Problem bei der Platte ist nur dass der µC nicht schnell genug den Strom hoch regelt.
Deswegen wäre ich an diesem Punkt deiner Schaltung für nen IC:p

Ist nur ein PWM, und der ADC misst die Spannung. Wenn zu niedrig +1, wenn zu hoch -1.
Sorry aber das ist IMHO :bad: ,da man selbst mit besserer digitaler Reglung kaum an dier Analoge kommt!
Besser du errechnest ungefähr den benötigten Wert aus und setzt den PWM dann - evt. noch nachregeln

Alle Angaben sind geschätzt da ich mit nem Soundkarten-Skop "messe"
Na ja, ist nich das Gelbe vom Ei aber wenn der Spannungsteiler stimmt und man im Frequenzbereich liegt
sind die Ergebnisse halbwegs brauchbar, hab das früher auch so gemacht;)

mfg
 
Haste Dich wegen der Lastanpassung mal mit PDI beschäftigt? Allerdings sollte 'ne Autokalibration der Faktoren (nach Nichols oder so) auch nicht das beste für die HDD sein...
 
Es reichte aber für den ersten Zweck (Akku laden) :)
Natürlich ist das nicht optimal, aber solche Probleme gehe ich denn lieber an wenn ich das zu Platine gebracht hab. Denn hab ich hier auch wieder n bissl mehr Platz :)
Primär wars mir erst nur wichtig dass der StepDown Kram überhaupt geht.

PDI, Nichols, das sagt mir grad nix :hmmmm:


P.S.: Hat da wer am EMail Template rum gespielt? :D
Zumindest ist der Link zum Thread kein Link mehr.
 
PID-Regler.
Letztendlich hast Du ja einen Sollwert, und einen Istwert - und daraus folgend einen Abweichungsfehler, den es zu minimieren gilt. Des weiteren eine Stellgröße (Deine PWM), die das bewirken soll. Problematisch wird das ganze, wenn die Last schwankt, insbesondere auch, wenn sie das mal schneller und mal langsamer tut.
PID steht für Prozentual, Integral und Differential. Du zerlegst das also in 3 Teile.

'Ne ordentliche Erklärung dazu findest Du zB hier (auch mit'nem brauchbaren Algorithmus).
Auch Hinweise zur nötigen Wahl der Faktoren sind angegeben - mich betrifft allerdings eher die Methode von Chien/Hrones/Reswick.
 
Danke für den Link :)

Ist doch etwas komplizierter als ich dachte... Naja wird schon werden :)
 
Hallo Tommy!

Eine sehr gute und nicht zuuuu technische Erklärung eines PI-Reglers kannst du hier auch im Forum finden!

Schau mal HIER rein und lies es dir mal durch. :)
Ich finde die Erklärung recht gut gelungen.... und greifbar. :wink:

Grüße,
Cassio
 
Stimmt, die ist echt gut :D

Also wenn ich das jetzt richtig verstanden habe (ich hoffe doch?)

Ich messe den Wert. Ich vergleiche Ist mit Soll und gebe denn entweder Strom dazu oder eben nicht.
Pseudocode:
Code:
If Ist < Soll Then
    PWM += 1
Else
    PWM -= 1
End If
So in etwa hab ich das jetzt (wenn auch in asm, aber basic ist leichter zu lesen).
Das müsste denn so eine Art P sein?

Code:
PWM += (Ist - Soll) / x
X wäre hier auszuprobieren.
Das wäre denn etwas PI ähnliches?
Also so würde er zumindest schneller eingreifen als oben. Was so wie ich es bis hierhin verstanden hab der Sinn von dem I ist.

Muss mir das glaub ich noch 2 oder 3x durchlesen.

Anyway ich glaub mit dem Code könnte ich das Regelverhalten schon mal deutlich verbessern. Mal austesten sobald die Akkus wieder voll sind :)
Dieses scheiß Hongkong Ding, von wegen 1200mAh <_<
 
Nein, Dein 2tes Beispiel ist sowas wie ein I-Regler.
Du addierst quasi den Fehler (mit einem Faktor versehen) im OCR auf.
Was ist ein Integral?
Aufsummierte Werte in äquidistanten Stützstellen.
Mit
Code:
PWM = ( Ist - Soll ) / Y
Wäre es sowas wie ein P-Regler. PWM ist direkt proportional zu (ist-soll). Wie Du bereits erkannt hast, ist das finden der Faktoren (substituiere X bzw Y mit deren multiplikativen Inversen) der Knackpunkt.
Wenn Du jetzt das Aufsummieren des Fehlers für den I-Anteil separat durchführst, kannst Du P-Regler und I-Regler zum PI-Regler zusammenbauen. Dann fehlt nur noch der D-Anteil...
 
Hab jetzt mal was anderes probiert.

Statt echtes PWM zu nutzen (via Timer) schalte ich bei jedem ADC Interrupt die Spannung an oder aus (je nach Spannung). "Audio-Optisch" sieht das Ergebnis deutlich besser aus als das mit PWM. Die Schaltfreqenz ist höher und passt sich der Last an statt wie bei PWM was natürlich immer die 8, 9 oder 10 Bit durchlatschen muss.
Auch das PID müsste ich mir so (zumindest größtenteils) einsparen können, weil mehr als Strom an oder aus kann ich ja eh nicht machen.

Gibt es da Vor- oder Nachteile die ich übersehen habe?
 
Statt echtes PWM zu nutzen (via Timer) schalte ich bei jedem ADC Interrupt die Spannung an oder aus (je nach Spannung). "Audio-Optisch" sieht das Ergebnis deutlich besser aus als das mit PWM. Die Schaltfreqenz ist höher und passt sich der Last an statt wie bei PWM was natürlich immer die 8, 9 oder 10 Bit durchlatschen muss.
Auch das PID müsste ich mir so (zumindest größtenteils) einsparen können, weil mehr als Strom an oder aus kann ich ja eh nicht machen.
Bei vielen Anwendungen wird dafür auch einfach der Comparator verwendet. Mit einer externen oder internen Referenzspannung wird dann verglichen und an oder ausgeschaltet.
 
Das kann ich ja leider nicht :)
Der Mosfet will ja auf - liegen, also ist meine Ausgangsspannung V+ (ca 7.4V) und das generierte V- (Differenz zu V+ 5V). Das kann ich ja nicht in den Comperator jagen, der ist dann ja komplett bezugslos :)
Oder die Ausgangsspannung variiert je nach Batteriespannung. Auch blöd :)
 
Das kann ich ja leider nicht :)
Der Mosfet will ja auf - liegen, also ist meine Ausgangsspannung V+ (ca 7.4V) und das generierte V- (Differenz zu V+ 5V). Das kann ich ja nicht in den Comperator jagen, der ist dann ja komplett bezugslos :)
Oder die Ausgangsspannung variiert je nach Batteriespannung. Auch blöd :)
Wenn ich mich recht entsinne kann man einen Pol (Comp+ oder Comp-) an die interne Referenzspannung legen. Dann mußt du an den anderen Eingang nur noch über einen Spannungsteiler die zu +überwachende Spannung legen. Interrupts kann er glaube ich nach steigender, fallender Flanke, ... auslösen. Aber schau mal im Datenblatt nach. Eventuell ist das ne recht einfache Lösung.

Gruß
Dino
 
Aber die Referenzspannung (also die benötigte) würde sich doch mit fallender Batteriespannung ständig ändern. Oder denken wir jetzt so aneinander vorbei?
 
Aber die Referenzspannung (also die benötigte) würde sich doch mit fallender Batteriespannung ständig ändern. Oder denken wir jetzt so aneinander vorbei?
Ich hab jetzt mal schnell ins Datenblatt gesehen ... 22. Analog Comparator
Du kannst den +Eingang des Komparators statt auf den AIN0 auch auf die interne BandGap-Referenz legen. Damit hast du eine interne Referenzspannungsquelle von 1,1V die du mit der Spannung am Eingang AIN1 (-Eingang des Komparators) vergleichen kannst. Vor dem AIN1 muß dann natürlich ein Spannungsteiler deine höhere Spannung runterteilen auf um die 1,1V (Die Schaltschwelle).

Der Komparator-Ausgang kann dann beim Timer/Counter1 ein Capture-Signal (zB für AD-Wandlung über den Komparator) durchführen oder direkt einen Interrupt ausführen (Fallende, Steigende oder Beliebige Flanke).

Damit könntest du also prüfen ob die Spannung zu klein oder zu groß gegenüber der Referenzspannung ist.

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)