Inhaltsverzeichnis:

Digitales USB-C-betriebenes Bluetooth-Netzteil - Gunook
Digitales USB-C-betriebenes Bluetooth-Netzteil - Gunook

Video: Digitales USB-C-betriebenes Bluetooth-Netzteil - Gunook

Video: Digitales USB-C-betriebenes Bluetooth-Netzteil - Gunook
Video: Tracy Candela und Diana präsentieren die besten Geschenkideen @PEARL-TV 2024, Juli
Anonim
Digitales USB-C-betriebenes Bluetooth-Netzteil
Digitales USB-C-betriebenes Bluetooth-Netzteil
Digitales USB-C-betriebenes Bluetooth-Netzteil
Digitales USB-C-betriebenes Bluetooth-Netzteil
Digitales USB-C-betriebenes Bluetooth-Netzteil
Digitales USB-C-betriebenes Bluetooth-Netzteil
Digitales USB-C-betriebenes Bluetooth-Netzteil
Digitales USB-C-betriebenes Bluetooth-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 über PC und Handy steuerbar wäre?

In dieser Anleitung zeige ich Ihnen, wie Sie genau das bauen: ein digitales Netzteil, das über USB C mit Strom versorgt wird. Es ist arduino-kompatibel und kann über den PC über USB oder über Ihr Telefon über Bluetooth gesteuert werden.

Dieses Projekt ist eine Weiterentwicklung meines vorherigen Netzteils, das batteriebetrieben war und ein Display und Knöpfe hat. Schau es dir hier an! Ich wollte jedoch kleiner werden, deshalb habe ich das gemacht!

Das Netzteil kann über eine USB-C-Batteriebank oder ein Telefonladegerät mit Strom versorgt werden. Dies ermöglicht eine Leistung von bis zu 15 W, die ausreicht, um die meisten Elektronik mit geringer Leistung zu versorgen! Um auf einem so kleinen Gerät eine gute Benutzeroberfläche zu haben, habe ich Bluetooth und eine Android-App für die Steuerung integriert. Dies macht dieses Netzteil ultraportabel!

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

  • Stromversorgung über USB C
  • Steuerung über Android-App über Bluetooth
  • Gesteuert über Java über USB C
  • Konstantspannungs- und Konstantstrommodi
  • Verwendet einen rauscharmen Linearregler, dem ein Tracking-Vorregler vorausgeht, um die Verlustleistung zu minimieren
  • Angetrieben von ATMEGA32U4, programmiert mit Arduino IDE
  • Kann über eine USB-C-Batteriebank mit Strom versorgt werden, um es tragbar zu machen
  • USB C- und Apple-Ladegeräterkennung
  • Bananenstecker mit 18 mm Abstand für Kompatibilität mit BNC-Adaptern

Spezifikationen

  • 0 - 1A, Schritte von 1 mA (10 Bit DAC)
  • 0 - 25V, Schritte von 25 mV (10 Bit DAC) (echter 0V-Betrieb)
  • Spannungsmessung: 25 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 100 US-Dollar gekostet. 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 auf etwa 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 des Mikrocontrollers ist ein PWM-Signal (PWM_Vset), das von einem Tiefpassfilter (C23 & R32) gefiltert wird. Dadurch entsteht eine analoge Spannung - zwischen 0 und 5 V - proportional zur gewünschten Ausgangsspannung. Da unser Ausgangsbereich 0 - 25 V beträgt, müssen wir dieses Signal mit einem Faktor von 5 verstärken. Dies wird durch die nicht invertierende Opamp-Konfiguration von U7C erreicht. Die Verstärkung zum Set-Pin wird durch R31 und R36 bestimmt. Diese Widerstände sind 0,1% tolerant, um Fehler zu minimieren. R39 und R41 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 Bereich von 0 - 5 V auf einen Bereich von 0 - 2,5 V zu gehen. Diese Spannung wird nun von der Komparatorkonfiguration des Operationsverstärkers U1B 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 Q1), wodurch der Ausgang ausgeschaltet wird. Die Messung des Stroms und die Erzeugung des Signals ADC_Iout erfolgt wie folgt. Der Ausgangsstrom fließt durch den Widerstand R22. Wenn Strom durch diesen Widerstand fließt, erzeugt er einen Spannungsabfall, den wir messen können, und er wird vor dem LT3080 platziert, da der Spannungsabfall darüber die Ausgangsspannung nicht beeinflussen sollte. Der Spannungsabfall wird mit einem Differenzverstärker (U7B) mit einer Verstärkung von 5 gemessen. Daraus ergibt sich ein Spannungsbereich von 0 - 2,5 V (dazu später mehr), daher der Spannungsteiler am PWM-Signal des Stroms. Der Puffer (U7A) dient dazu, sicherzustellen, dass der Strom, der in die Widerstände R27, R34 und R35 fließt, nicht durch den Strommesswiderstand fließt, was seinen 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 R46), 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. Leider befindet sich diese Schaltung am Ausgang des LT3080, was bedeutet, dass ihr Strom zu dem Ausgangsstrom beiträgt, den wir messen möchten. Glücklicherweise ist sie konstant, sodass wir für diesen Strom kalibrieren können. Die Zenerdiode D7 wird verwendet, um die Ausgangsspannung zu klemmen, wenn sie über 25 V steigt, und der Widerstandsteiler senkt den Ausgangsspannungsbereich von 0 - 25 V auf 0 - 2,5 V (ADC_Vout). Der Puffer (U7D) stellt sicher, dass die Widerstände keinen Strom vom Ausgang ziehen.

Ladungspumpe

Die bereits erwähnte negative Spannung wird von einer merkwürdigen kleinen Schaltung erzeugt: der Ladungspumpe. Er wird von einer 50% PWM des Mikrocontrollers (PWM) gespeist.

Schnellumrechner

Werfen wir nun einen Blick auf die Eingangsspannung unseres Hauptblocks: VCC. Wir sehen, dass es 5 - 27 V sind, aber warten Sie, USB gibt maximal 5 V aus? In der Tat, und deshalb müssen wir die Spannung mit einem sogenannten Aufwärtswandler erhöhen. Wir könnten die Spannung immer auf 27 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.

USB-C

Dies führt uns zur eigentlichen Eingangsspannung: dem USB-Port! Der Grund für die Verwendung von USB C (USB Typ 3.1 um genau zu sein, USB C ist nur der Steckertyp) ist, dass es einen Strom von 3A bei 5V zulässt, das ist schon eine ganze Menge Leistung. Aber es gibt einen Haken, das Gerät muss konform sein, um diesen Strom zu ziehen und mit dem Host-Gerät zu „verhandeln“. In der Praxis geschieht dies durch Anschließen von zwei 5.1k-Pulldown-Widerständen (R12 und R13) an die Leitungen CC1 und CC2. Was die USB 2-Kompatibilität angeht, ist die Dokumentation weniger klar. Kurzum: Sie ziehen so viel Strom, wie Sie wollen, solange der Gastgeber ihn zur Verfügung stellen kann. Dies kann durch Überwachung der USB-Busspannung überprüft werden: Sinkt die Spannung unter 4,25 V, zieht das Gerät zu viel Strom. Dies wird vom Komparator U1A erkannt und deaktiviert den Ausgang. Es sendet auch ein Signal an den Mikrocontroller, um den maximalen Strom einzustellen. Als Bonus wurden Widerstände hinzugefügt, um die Erkennung der Ladegerät-ID von Apple- und Samsung-Ladegeräten zu unterstützen.

5V-Regler

Die 5-V-Versorgungsspannung des Arduino kommt normalerweise direkt vom USB. Da die USB-Spannung jedoch je nach USB-Spezifikation zwischen 4,5 und 5,5 V schwanken kann, ist dies nicht genau genug. Daher wird ein 5V-Regler verwendet, der aus niedrigeren und höheren Spannungen 5V erzeugen kann. Trotzdem ist diese Spannung nicht besonders präzise, aber dies wird durch einen Kalibrierungsschritt gelöst, bei dem das Tastverhältnis des PWM-Signals entsprechend angepasst wird. Diese e-Spannung wird von dem aus R42 und R43 gebildeten Spannungsteiler gemessen. 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 des Potentiometers ansteuern.

2,56 V Spannungsreferenz

Dieser kleine Chip liefert eine sehr genaue Spannungsreferenz von 2,56 V. Dieser dient als Referenz für die Analogsignale ADC_Vout, ADC_Iout, ADC_Vbatt. Deshalb brauchten wir Spannungsteiler, um diese Signale auf 2,5 V zu bringen.

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. Glücklicherweise übernimmt dies der ATMEGA32U4, dies ist derselbe Chip, der im Arduino Micro verwendet wird.

Bluetooth

Der Bluetooth-Teil ist ganz einfach: Ein Bluetooth-Modul von der Stange kommt hinzu und erledigt alles für uns. Da sein Logikpegel 3,3 V beträgt (VS 5 V für den Mikrocontroller), wird ein Spannungsteiler verwendet, um das Signal zu verschieben.

Und das ist alles!

Schritt 3: 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.

Während mein vorheriges Netzteil nur Durchgangslochkomponenten hatte, machte die Größenbeschränkung für mein neues dies unmöglich. Die meisten Bauteile sind noch relativ einfach zu löten, also keine Angst. Zur Veranschaulichung: Ein Freund von mir, der noch nie zuvor gelötet hatte, hat es geschafft, dieses Gerät zu bestücken!

Am einfachsten ist es, die Komponenten zuerst auf der Vorderseite, dann auf der Rückseite zu erstellen und mit den Durchgangslochkomponenten abzuschließen. Dabei wackelt die Platine beim Löten der schwierigsten Bauteile nicht. Als letztes Bauteil wird das Bluetooth-Modul gelötet.

Alle Komponenten können gelötet werden, bis auf die 2 Bananenbuchsen, die wir im nächsten Schritt montieren!

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 ein 20x50x80mm Aluminiumgehäuse (https://www.aliexpress.com/item/Aluminum-PCB-Instr…) 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 die Bananenbuchsen bohren. Ich habe dies von Hand gemacht, aber wenn Sie Zugang zu einer CNC haben, wäre dies eine genauere Option. Stecken Sie die Bananenbuchsen in diese Löcher und verlöten Sie sie auf der Platine.

Es ist eine gute Idee, jetzt einige Seidenpads hinzuzufügen und sie mit einem kleinen Tropfen Sekundenkleber an Ort und Stelle zu halten. Diese ermöglichen die Wärmeübertragung zwischen LT3080 und LT1370 und dem Gehäuse. Vergiss sie nicht!

Wir können uns jetzt auf die Frontplatte konzentrieren, die nur festgeschraubt wird. Wenn beide Platten angebracht sind, können wir jetzt die Baugruppe in das Gehäuse einsetzen und alles schließen. 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 ATMEGA32U4, 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. Daten an App senden
  2. Daten aus der App lesen
  3. Spannung messen
  4. Strom messen
  5. Umfrage-Schaltfläche

Der USB-Überstrom wird von einer Interrupt-Service-Routine behandelt, damit er so reaktionsschnell wie möglich ist.

Bevor der Chip über USB programmiert werden kann, sollte der Bootloader gebrannt werden. Dies erfolgt über den ISP/ICSP-Port (die 3x2-Steckerleisten) durch einen ISP-Programmierer. Optionen sind AVRISPMK2, USBTINY ISP oder ein Arduino als ISP. Stellen Sie sicher, dass das Board mit Strom versorgt wird, und drücken Sie die Taste 'Bootloader brennen'.

Der Code kann nun über den USB-C-Port auf das Board hochgeladen werden (da der Chip über einen Bootloader verfügt). Board: Arduino Micro Programmierer: AVR ISP / AVRISP MKII Nun können wir uns die Interaktion zwischen Arduino und PC ansehen.

Schritt 6: Android-App

Android App
Android App

Wir haben jetzt ein voll funktionsfähiges Netzteil, aber noch keine Möglichkeit, es zu kontrollieren. Sehr nervig. Also werden wir eine Android-App erstellen, um die Stromversorgung über Bluetooth zu steuern.

Die App wurde mit dem MIT-App-Erfinder-Programm erstellt. Alle Dateien können eingeschlossen werden, um das Projekt zu klonen und zu ändern. Laden Sie zunächst die Begleit-App MIT AI2 auf Ihr Telefon herunter. Importieren Sie als Nächstes die.aia-Datei auf der AI-Website. Auf diese Weise können Sie die App auch auf Ihr eigenes Telefon herunterladen, indem Sie "Build>App (QR-Code für.apk bereitstellen)" auswählen.

Um die App zu verwenden, wählen Sie ein Bluetooth-Gerät aus der Liste aus: es wird als HC-05-Modul angezeigt. Im angeschlossenen Zustand können alle Einstellungen geändert und die Leistung des Netzteils ausgelesen werden.

Schritt 7: 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 8:

Bild
Bild
Bild
Bild
Bild
Bild

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

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 für mich im Taschenformat- und Mikrocontroller-Wettbewerb ab, ich würde mich sehr darüber freuen!

Empfohlen: