Inhaltsverzeichnis:

Digitales batteriebetriebenes Netzteil - Gunook
Digitales batteriebetriebenes Netzteil - Gunook

Video: Digitales batteriebetriebenes Netzteil - Gunook

Video: Digitales batteriebetriebenes Netzteil - Gunook
Video: Wie funktioniert ein modernes Netzteil?! (230V AC zu 5/12V DC) DIY Flyback Schaltung! 2024, November
Anonim
Digitales batteriebetriebenes Netzteil
Digitales batteriebetriebenes Netzteil
Digitales batteriebetriebenes Netzteil
Digitales batteriebetriebenes Netzteil
Digitales batteriebetriebenes Netzteil
Digitales batteriebetriebenes Netzteil
Digitales batteriebetriebenes Netzteil
Digitales batteriebetriebenes Netzteil

Wollten Sie schon immer ein Netzteil, das Sie unterwegs verwenden können, auch ohne eine Steckdose in der Nähe? Und wäre es nicht cool, wenn es auch noch sehr präzise, digital und per PC steuerbar wäre?

In dieser Anleitung zeige ich Ihnen, wie Sie genau das bauen: ein digitales batteriebetriebenes Netzteil, das arduino-kompatibel ist und über den PC über USB gesteuert werden kann.

Vor einiger Zeit habe ich ein Netzteil aus einem alten ATX-Netzteil gebaut, und obwohl es großartig funktioniert, wollte ich mein Spiel mit einem digitalen Netzteil verbessern. Wie bereits erwähnt, wird es mit Batterien betrieben (genauer gesagt 2 Lithium-Zellen) und kann maximal 20 V bei 1 A liefern; was für die meisten meiner Projekte, die eine präzise Stromversorgung erfordern, ausreichend ist.

Ich werde den gesamten Designprozess zeigen und alle Projektdateien finden Sie auf meiner GitHub-Seite:

Lass uns anfangen!

Schritt 1: Funktionen & Kosten

Funktionen & Kosten
Funktionen & Kosten

Merkmale

  • Konstantspannungs- und Konstantstrommodi
  • Verwendet einen rauscharmen Linearregler, dem ein Tracking-Vorregler vorausgeht, um die Verlustleistung zu minimieren
  • Verwendung von handlötbaren Komponenten, um das Projekt zugänglich zu halten
  • Angetrieben von ATMEGA328P, programmiert mit Arduino IDE
  • PC-Kommunikation über Java-Anwendung über Micro-USB
  • Angetrieben von 2 geschützten 18650 Lithium-Ionen-Zellen
  • Bananenstecker mit 18 mm Abstand für Kompatibilität mit BNC-Adaptern

Spezifikationen

  • 0 - 1A, Schritte von 1 mA (10 Bit DAC)
  • 0 - 20V, Schritte von 20 mV (10 Bit DAC) (echter 0V-Betrieb)
  • Spannungsmessung: 20 mV Auflösung (10 Bit ADC)
  • Strommessung:

    • < 40mA: 10uA Auflösung (ina219)
    • < 80mA: 20uA Auflösung (ina219)
    • < 160mA: 40uA Auflösung (ina219)
    • < 320mA: 80uA Auflösung (ina219)
    • > 320mA: 1mA Auflösung (10 Bit ADC)

Kosten

Das komplette Netzteil hat mich mit allen Einzelkomponenten rund 135 US-Dollar gekostet. Die Batterien sind der teuerste Teil (30 $ für 2 Zellen), da es sich um geschützte 18650 Lithium-Zellen handelt. Es ist möglich, die Kosten erheblich zu senken, wenn kein Batteriebetrieb erforderlich ist. Durch Weglassen der Batterien und der Ladeschaltung sinkt der Preis auf etwa 100 US-Dollar. Dies mag zwar teuer erscheinen, aber Netzteile mit weit weniger Leistung und Funktionen kosten oft mehr.

Wenn es Ihnen nichts ausmacht, Ihre Komponenten bei ebay oder aliexpress zu bestellen, würde der Preis mit Batterien auf 100 US-Dollar und ohne 70 US-Dollar sinken. Es dauert länger, bis die Teile ankommen, aber es ist eine praktikable Option.

Schritt 2: Schema & Theorie des Betriebs

Schaltplan und Betriebstheorie
Schaltplan und Betriebstheorie

Um die Funktionsweise der Schaltung zu verstehen, müssen wir uns den Schaltplan ansehen. Ich habe es in Funktionsblöcke unterteilt, damit es leichter zu verstehen ist; Ich werde daher auch die Bedienung Schritt für Schritt erklären. Dieser Teil ist recht tiefgehend und erfordert gute Elektronikkenntnisse. Wenn Sie nur wissen möchten, wie die Schaltung aufgebaut wird, können Sie mit dem nächsten Schritt fortfahren.

Hauptblock

Der Betrieb basiert auf dem LT3080-Chip: Es handelt sich um einen linearen Spannungsregler, der Spannungen basierend auf einem Steuersignal absenken kann. Dieses Steuersignal wird von einem Mikrocontroller erzeugt; wie dies geschieht, wird später im Detail erklärt.

Spannungseinstellung

Die Schaltung rund um den LT3080 erzeugt die entsprechenden Steuersignale. Zuerst schauen wir uns an, wie die Spannung eingestellt wird. Die Spannungseinstellung vom Mikrocontroller ist ein PWM-Signal (PWM_Vset), das von einem Tiefpassfilter (C9 & R26) gefiltert wird. Dadurch entsteht eine analoge Spannung - zwischen 0 und 5 V - proportional zur gewünschten Ausgangsspannung. Da unser Ausgangsbereich 0 - 20 V beträgt, müssen wir dieses Signal um den Faktor 4 verstärken. Dies wird durch die nicht invertierende Opamp-Konfiguration von U3C erreicht. Die Verstärkung zum Set-Pin wird durch R23//R24//R25 und R34 bestimmt. Diese Widerstände sind 0,1% tolerant, um Fehler zu minimieren. R39 und R36 spielen hier keine Rolle, da sie Teil der Rückkopplungsschleife sind.

Aktuelle Einstellung

Dieser Set-Pin kann auch für die zweite Einstellung verwendet werden: Strommodus. Wir möchten die Stromaufnahme messen und den Ausgang ausschalten, wenn dieser den gewünschten Strom überschreitet. Daher beginnen wir wieder mit einem PWM-Signal (PWM_Iset), das vom Mikrocontroller generiert wird, das nun tiefpassgefiltert und gedämpft wird, um von einem 0 - 5 V-Bereich auf einen 0 - 2 V-Bereich zu gehen. Diese Spannung wird nun von der Komparatorkonfiguration des Operationsverstärkers U3D mit dem Spannungsabfall am Strommesswiderstand (ADC_Iout, siehe unten) verglichen. Wenn der Strom zu hoch ist, schaltet dies eine LED ein und zieht auch die Set-Leitung des LT3080 auf Masse (über Q2), wodurch der Ausgang ausgeschaltet wird. Die Messung des Stroms und die Erzeugung des Signals ADC_Iout erfolgt wie folgt. Der Ausgangsstrom fließt durch die Widerstände R7 - R16. Diese betragen insgesamt 1 Ohm; Der Grund dafür, 1R nicht zu verwenden, ist zweierlei: 1 Widerstand müsste eine höhere Nennleistung haben (er muss mindestens 1 W abführen), und durch die parallele Verwendung von 10 1% Widerständen erhalten wir eine höhere Genauigkeit als mit einem einzelnen 1 % Widerstand. Ein gutes Video darüber, warum das funktioniert, finden Sie hier: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Wenn Strom durch diese Widerstände fließt, entsteht ein Spannungsabfall, den wir messen können, und das ist vor dem LT3080 platziert, da der Spannungsabfall über ihm die Ausgangsspannung nicht beeinflussen sollte. Der Spannungsabfall wird mit einem Differenzverstärker (U3B) mit einer Verstärkung von 2 gemessen. Daraus ergibt sich ein Spannungsbereich von 0 - 2 V (dazu später mehr), daher der Spannungsteiler am PWM-Signal des Stroms. Der Puffer (U3A) soll sicherstellen, dass der Strom, der in die Widerstände R21, R32 und R33 fließt, nicht durch den Strommesswiderstand fließt, was den Messwert beeinflussen würde. Beachten Sie auch, dass dies ein Rail-to-Rail-Operationsverstärker sein sollte, da die Eingangsspannung am positiven Eingang gleich der Versorgungsspannung ist. Der nicht invertierende Verstärker dient nur der Kursmessung, für sehr genaue Messungen haben wir jedoch den INA219-Chip an Bord. Dieser Chip ermöglicht die Messung sehr kleiner Ströme und wird über I2C angesprochen.

Zusätzliche Dinge

Am Ausgang des LT3080 haben wir noch einiges mehr. Da ist zunächst eine Stromsenke (LM334). Dieser zieht einen konstanten Strom von 677 uA (eingestellt durch Widerstand R41), um den LT3080 zu stabilisieren. Es liegt jedoch nicht an Masse, sondern an VEE, einer negativen Spannung. Dies ist erforderlich, damit der LT3080 bis zu 0 V arbeiten kann. Bei Masseanschluss beträgt die niedrigste Spannung etwa 0,7 V. Dies scheint niedrig genug zu sein, aber denken Sie daran, dass wir dadurch das Netzteil nicht vollständig ausschalten können. Die Zenerdiode D3 wird verwendet, um die Ausgangsspannung zu klemmen, wenn sie über 22 V steigt, und der Widerstandsteiler senkt den Ausgangsspannungsbereich von 0 - 20 V auf 0 - 2 V (ADC_Vout). Leider befinden sich diese Schaltungen am Ausgang des LT3080, was bedeutet, dass ihr Strom zu dem Ausgangsstrom beiträgt, den wir messen möchten. Glücklicherweise sind diese Ströme konstant, wenn die Spannung konstant bleibt; So können wir den Strom kalibrieren, wenn die Last zuerst getrennt wird.

Ladungspumpe

Die bereits erwähnte negative Spannung wird von einer merkwürdigen kleinen Schaltung erzeugt: der Ladungspumpe. Für die Bedienung würde ich hier verweisen: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Es wird von einer 50% PWM des Mikrocontrollers (PWM) gespeist

Schnellumrechner

Werfen wir nun einen Blick auf die Eingangsspannung unseres Hauptblocks: Vboost. Wir sehen, dass es 8 - 24 V sind, aber warten Sie, 2 Lithiumzellen in Reihe ergeben maximal 8,4 V? In der Tat, und deshalb müssen wir die Spannung mit einem sogenannten Aufwärtswandler erhöhen. Wir könnten die Spannung immer auf 24 V erhöhen, egal welchen Ausgang wir wollen; Dies würde jedoch im LT3080 viel Strom verschwenden und die Dinge würden heiß werden! Anstatt dies zu tun, erhöhen wir die Spannung auf etwas mehr als die Ausgangsspannung. Etwa 2,5 V höher sind angemessen, um den Spannungsabfall im Strommesswiderstand und die Dropout-Spannung des LT3080 zu berücksichtigen. Die Spannung wird über Widerstände am Ausgangssignal des Aufwärtswandlers eingestellt. Um diese Spannung im laufenden Betrieb zu ändern, verwenden wir ein digitales Potentiometer, das MCP41010, das über SPI gesteuert wird.

Aufladen des Akkus

Dies führt uns zur eigentlichen Eingangsspannung: den Batterien! Da wir geschützte Zellen verwenden, müssen wir sie nur in Reihe schalten und fertig! Hier ist es wichtig, geschützte Zellen zu verwenden, um Überströme oder Tiefentladungen und damit Beschädigungen der Zellen zu vermeiden. Auch hier verwenden wir einen Spannungsteiler, um die Batteriespannung zu messen und auf einen nutzbaren Bereich abzusenken. Nun zum interessanten Teil: die Ladeschaltung. Dazu verwenden wir den BQ2057WSN-Chip: In Kombination mit dem TIP32CG bildet er quasi selbst ein lineares Netzteil. Dieser Chip lädt die Zellen über eine entsprechende CV-CC-Trajektorie. Da meine Batterien keinen Temperaturfühler haben, sollte dieser Eingang an die halbe Batteriespannung gebunden werden. Damit ist der Spannungsregelungsteil des Netzteils abgeschlossen.

5V-Regler

Die 5-V-Versorgungsspannung des Arduino wird mit diesem einfachen Spannungsregler hergestellt. Es ist jedoch nicht der genaueste 5-V-Ausgang, aber dies wird im Folgenden gelöst.

2.048 V Spannungsreferenz

Dieser kleine Chip liefert eine sehr genaue Spannungsreferenz von 2,048 V. Dieser dient als Referenz für die Analogsignale ADC_Vout, ADC_Iout, ADC_Vbatt. Deshalb brauchten wir Spannungsteiler, um diese Signale auf 2 V zu bringen. Mikrocontroller Das Gehirn dieses Projekts ist der ATMEGA328P, dies ist derselbe Chip, der im Arduino Uno verwendet wird. Wir haben die meisten Steuersignale bereits durchgesehen, aber es gibt trotzdem einige interessante Ergänzungen. Die Drehgeber sind mit den 2 einzigen externen Interrupt-Pins des Arduino verbunden: PD2 und PD3. Dies ist für eine zuverlässige Softwareimplementierung erforderlich. Die Schalter darunter verwenden einen internen Pullup-Widerstand. Dann gibt es diesen seltsamen Spannungsteiler auf der Chip-Select-Leitung des Potentiometers (Pot). Ein Spannungsteiler an einem Ausgang, wofür ist das gut? man könnte sagen. Wie bereits erwähnt, ist die 5-V-Versorgung nicht sehr genau. Es wäre daher gut, dies genau zu messen und das Tastverhältnis des PWM-Signals entsprechend anzupassen. Da ich aber keine freien Eingänge mehr hatte, musste ich einen Pin Pull doppelt machen. Beim Hochfahren des Netzteils wird dieser Pin zuerst als Eingang gesetzt: Er misst die Versorgungsschiene und kalibriert sich selbst. Als nächstes wird es als Ausgang gesetzt und kann die Chipauswahlleitung ansteuern.

Bildschirmtreiber

Für die Anzeige wollte ich einen handelsüblichen - und billigen - Hitachi-LCD-Bildschirm. Sie werden von 6 Pins angetrieben, aber da ich keine Pins mehr hatte, brauchte ich eine andere Lösung. Ein Schieberegister zur Rettung! Der 74HC595 ermöglicht es mir, die SPI-Leitung zur Steuerung des Displays zu verwenden, sodass nur 1 zusätzliche Chip-Select-Leitung benötigt wird.

FTDI

Der letzte Teil dieses Netzteils ist die Verbindung mit der grausamen Außenwelt. Dazu müssen wir die seriellen Signale in USB-Signale umwandeln. Dies übernimmt ein FTDI-Chip, der zum einfachen Anschluss an einen Micro-USB-Port angeschlossen wird.

Und das ist alles!

Schritt 3: PCB & Elektronik

PCB & Elektronik
PCB & Elektronik
PCB & Elektronik
PCB & Elektronik
PCB & Elektronik
PCB & Elektronik
PCB & Elektronik
PCB & Elektronik

Nachdem wir nun verstanden haben, wie die Schaltung funktioniert, können wir mit dem Bau beginnen! Sie können die Platine einfach online bei Ihrem Lieblingshersteller bestellen (meine kostet ca. 10 US-Dollar), die Gerber-Dateien finden Sie zusammen mit der Stückliste auf meinem GitHub. Bei der Bestückung der Leiterplatte geht es dann im Wesentlichen darum, die Bauteile gemäß Siebdruck und Stückliste festzulöten.

Der erste Schritt ist das Löten der SMD-Bauteile. Die meisten von ihnen sind leicht von Hand zu erledigen, außer vom FTDI-Chip und dem Micro-USB-Anschluss. Daher können Sie vermeiden, diese beiden Komponenten selbst zu löten, und stattdessen eine FTDI-Breakout-Platine verwenden. Ich habe Header-Pins bereitgestellt, an denen dies angelötet werden kann.

Wenn die SMD-Arbeiten abgeschlossen sind, können Sie mit allen Durchgangslochkomponenten fortfahren. Diese sind sehr einfach. Für die Chips möchten Sie möglicherweise Sockel verwenden, anstatt sie direkt an die Platine zu löten. Verwenden Sie vorzugsweise einen ATMEGA328P mit Arduino-Bootloader, andernfalls müssen Sie ihn mithilfe des ICSP-Headers (hier gezeigt) hochladen.

Der einzige Teil, der etwas mehr Aufmerksamkeit erfordert, ist der LCD-Bildschirm, da er schräg montiert werden muss. Löten Sie einige abgewinkelte Stiftleisten darauf, wobei das Plastikstück zur Unterseite des Bildschirms zeigt. Dies ermöglicht eine gute Platzierung des Bildschirms auf der Leiterplatte. Danach kann es wie jedes andere Throughhole-Bauteil angelötet werden.

Es müssen nur noch 2 Drähte hinzugefügt werden, die an die Bananenklemmen auf der Frontplatte angeschlossen werden.

Schritt 4: Gehäuse & Montage

Gehäuse & Montage
Gehäuse & Montage
Gehäuse & Montage
Gehäuse & Montage
Gehäuse & Montage
Gehäuse & Montage

Wenn die Leiterplatte fertig ist, können wir zum Gehäuse übergehen. Ich habe die Platine speziell um dieses Hammond-Gehäuse herum entworfen, daher wird die Verwendung eines anderen Gehäuses nicht empfohlen. Sie können jedoch immer ein Gehäuse mit den gleichen Abmessungen in 3D drucken.

Der erste Schritt besteht darin, die Endplatte vorzubereiten. Wir müssen einige Löcher für Schrauben, Schalter usw. bohren. Ich habe dies von Hand gemacht, aber wenn Sie Zugang zu einer CNC haben, wäre dies eine genauere Option. Ich machte die Löcher nach dem Schema und klopfte die Schraubenlöcher.

Es ist eine gute Idee, jetzt einige Seidenpads hinzuzufügen und sie mit einem kleinen Tropfen Sekundenkleber an Ort und Stelle zu halten. Diese isolieren den LT3080 und TIP32 von der Rückplatte und ermöglichen dennoch die Wärmeübertragung. Nicht vergessen!Beim Verschrauben der Chips mit der Rückwand eine Glimmerunterlegscheibe verwenden, um die Isolation zu gewährleisten!

Wir können uns jetzt auf die Frontplatte konzentrieren, die einfach aufgeschoben wird. Wir können jetzt die Bananenbuchsen und die Drehregler für die Drehregler hinzufügen.

Nachdem wir beide Paneele angebracht haben, können wir nun die Baugruppe in das Gehäuse einsetzen, die Batterien hinzufügen und alles schließen. Stellen Sie sicher, dass Sie geschützte Batterien verwenden, damit die Zellen nicht explodieren!

An diesem Punkt ist die Hardware fertig, jetzt müssen Sie nur noch mit der Software etwas Leben hineinhauchen!

Schritt 5: Arduino-Code

Arduino-Code
Arduino-Code

Das Gehirn dieses Projekts ist der ATMEGA328P, den wir mit der Arduino IDE programmieren werden. In diesem Abschnitt gehe ich durch die grundlegende Funktionsweise des Codes, die Details sind als Kommentare im Code zu finden.

Der Code durchläuft im Grunde diese Schritte:

  1. Lesen Sie serielle Daten aus Java
  2. Umfrage-Schaltflächen
  3. Spannung messen
  4. Strom messen
  5. Strom messen mit INA219
  6. Senden Sie serielle Daten an Java
  7. Boostconverter konfigurieren
  8. Holen Sie sich die Akkuladung
  9. Bildschirm aktualisieren

Die Drehgeber werden von einer Interrupt-Service-Routine behandelt, damit sie so reaktionsschnell wie möglich sind.

Der Code kann nun über den Micro-USB-Port auf das Board hochgeladen werden (wenn der Chip über einen Bootloader verfügt). Board: Arduino pro oder pro mini Programmierer: AVR ISP / AVRISP MKII

Nun können wir uns die Interaktion zwischen dem Arduino und dem PC ansehen.

Schritt 6: Java-Code

Java-Code
Java-Code

Um Daten zu protokollieren und die Stromversorgung über den PC zu steuern, habe ich eine Java-Anwendung erstellt. Dies ermöglicht es uns, das Board einfach über eine GUI zu steuern. Wie beim Arduino-Code gehe ich hier nicht auf alle Details ein, sondern gebe einen Überblick.

Wir beginnen damit, ein Fenster mit Schaltflächen, Textfeldern usw. zu erstellen; grundlegende GUI-Zeug.

Jetzt kommt der lustige Teil: das Hinzufügen der USB-Ports, für die ich die jSerialComm-Bibliothek verwendet habe. Sobald ein Port ausgewählt ist, lauscht Java auf alle eingehenden Daten. Wir können auch Daten an das Gerät senden.

Darüber hinaus werden alle eingehenden Daten zur späteren Datenbearbeitung in einer csv-Datei gespeichert.

Beim Ausführen der.jar-Datei sollten wir zuerst den richtigen Port aus dem Dropdown-Menü auswählen. Nach der Verbindung werden Daten empfangen und wir können unsere Einstellungen an das Netzteil senden.

Obwohl das Programm ziemlich einfach ist, kann es sehr nützlich sein, es über einen PC zu steuern und seine Daten zu protokollieren.

Schritt 7: Erfolg

Erfolg!
Erfolg!
Erfolg!
Erfolg!
Erfolg!
Erfolg!

Nach all dieser Arbeit haben wir jetzt ein voll funktionsfähiges Netzteil!

Ich muss auch einigen Leuten für ihre Unterstützung danken:

  • Das Projekt basierte auf dem uSupply-Projekt von EEVBLOG und seinem Rev C-Schema. Daher ein besonderer Dank an David L. Jones, der seine Schaltpläne unter einer Open-Source-Lizenz veröffentlicht und sein ganzes Wissen geteilt hat.
  • Ein großes Dankeschön an Johan Pattyn für die Herstellung der Prototypen dieses Projekts.
  • Auch Cedric Busschots und Hans Ingelberts verdienen Anerkennung für die Hilfe bei der Fehlersuche.

Wir können jetzt unser eigenes hausgemachtes Netzteil genießen, das uns bei der Arbeit an anderen großartigen Projekten als nützlich erweisen wird! Und das Wichtigste: Wir haben dabei viel gelernt.

Wenn Ihnen dieses Projekt gefallen hat, stimmen Sie bitte im Powersupply-Wettbewerb für mich ab, ich würde mich sehr darüber freuen!

Netzteil-Wettbewerb
Netzteil-Wettbewerb
Netzteil-Wettbewerb
Netzteil-Wettbewerb

Zweiter Preis beim Stromversorgungswettbewerb

Empfohlen: