- Erforderliche Materialien
- Arduino DC Electronic Load Schaltplan
- PCB Design und Gerber File
- Bestellung Ihrer Leiterplatte bei AllPCB
- Arduino-Code für einstellbare Gleichstromlast
- Testen unserer einstellbaren Gleichstromlast
Wenn Sie jemals mit Batterien, SMPS-Schaltkreisen oder anderen Stromversorgungskreisen gearbeitet haben, ist es häufig vorgekommen, dass Sie Ihre Stromquelle durch Laden testen müssen, um zu überprüfen, wie sie unter verschiedenen Ladebedingungen funktioniert. Ein Gerät, das üblicherweise zur Durchführung dieser Art von Tests verwendet wird, wird als Gleichstrom-Gleichstromlast bezeichnet. Mit dieser Option können wir den Ausgangsstrom Ihrer Stromquelle anpassen und ihn dann konstant halten, bis er sich erneut ändert. In diesem Tutorial lernen wir, wie wir mit Arduino unsere eigene einstellbare elektronische Last bauen, die eine maximale Eingangsspannung von 24 V und einen Drainstrom von bis zu 5 A aufnehmen kann. Für dieses Projekt haben wir Leiterplatten verwendet, die von AllPCB, einem in China ansässigen professionellen Dienstleister für die Herstellung und Montage von Leiterplatten, hergestellt werden.
In unserem vorherigen Tutorial zur spannungsgesteuerten Stromquelle haben wir erklärt, wie ein Operationsverstärker mit einem MOSFET verwendet und eine spannungsgesteuerte Stromquellenschaltung verwendet wird. In diesem Tutorial werden wir diese Schaltung anwenden und eine digital gesteuerte Stromquelle erstellen. Offensichtlich erfordert eine digital gesteuerte Stromquelle eine digitale Schaltung, und um diesen Zweck zu erfüllen, wird ein Arduino NANO verwendet. Das Arduino NANO bietet die erforderlichen Steuerungen für die Gleichstromlast.
Die Schaltung besteht aus drei Teilen. Der erste Teil ist der Arduino Nano-Abschnitt, der zweite Teil ist der Digital-Analog-Wandler und der dritte Teil ist eine reine Analogschaltung, bei der ein doppelter Operationsverstärker in einem einzigen Gehäuse verwendet wird, der den Lastabschnitt steuert. Dieses Projekt ist von einem Beitrag auf Arduino inspiriert. Die Schaltung wurde jedoch aufgrund ihrer geringeren Komplexität geändert und bietet grundlegende Funktionen, die jeder erstellen kann.
Unsere elektronische Last ist für die folgenden Ein- und Ausgangsabschnitte ausgelegt.
- Zwei Eingangsschalter zum Erhöhen und Verringern der Last.
- Ein LCD, das die eingestellte Last, die tatsächliche Last und die Lastspannung anzeigt.
- Der maximale Laststrom ist auf 5A begrenzt.
- Die maximale Eingangsspannung für die Last beträgt 24V.
Erforderliche Materialien
Die zum Aufbau einer elektronischen Gleichstromlast erforderlichen Komponenten sind nachstehend aufgeführt.
- Arduino Nano
- 16x2 Zeichen LCD
- Zwei-Zylinder-Steckdose
- Mosfet irf540n
- Mcp4921
- Lm358
- 5 Watt Shunt-Widerstand.1 Ohm
- 1k
- 10k - 6pcs
- Kühlkörper
- .1uF 50v
- 2k - 2St
Arduino DC Electronic Load Schaltplan
Im folgenden Schema besteht der Operationsverstärker aus zwei Abschnitten. Eine dient zur Steuerung des MOSFET und die andere zur Verstärkung des erfassten Stroms. Sie können auch das Video unten auf dieser Seite überprüfen, in dem die vollständige Funktionsweise der Schaltung erläutert wird. Der erste Abschnitt hat R12, R13 und MOSFET. R12 wird verwendet, um den Belastungseffekt auf den Rückkopplungsabschnitt zu verringern, und R13 wird als Mosfet-Gate-Widerstand verwendet.
Zusätzliche zwei Widerstände R8 und R9 werden verwendet, um die Versorgungsspannung der Stromversorgung zu erfassen, die durch diese Blindlast belastet wird. Gemäß der Spannungsteilerregel unterstützen diese beiden Widerstände maximal 24V. Mehr als 24 V erzeugen eine Spannung, die für die Arduino-Pins nicht geeignet ist. Achten Sie daher darauf, kein Netzteil mit einer Ausgangsspannung von mehr als 24 V anzuschließen.
Der Widerstand R7 ist hier der eigentliche Lastwiderstand. Es ist ein 5 Watt, 0,1 Ohm Widerstand. Gemäß dem Leistungsgesetz unterstützt es maximal 7A (P = I 2 R), aber auf der sicheren Seite ist es klüger, den Laststrom maximal auf 5A zu begrenzen. Daher kann derzeit eine maximale Last von 24 V, 5 A durch diese Blindlast eingestellt werden.
Ein weiterer Abschnitt des Verstärkers ist als konfiguriert Verstärkungsverstärker. Es wird 6x Gewinn liefern. Während des Stromflusses tritt ein Spannungsabfall auf. Wenn beispielsweise 5 A Strom durch den Widerstand fließen, beträgt der Spannungsabfall 0,5 V über dem 0,1-Ohm-Nebenschlusswiderstand (V = I x R) gemäß dem Ohmschen Gesetz. Der nichtinvertierende Verstärker verstärkt ihn auf x6, daher werden 3 V vom zweiten Teil des Verstärkers ausgegeben. Dieser Ausgang wird vom analogen Arduino Nano-Eingangspin erfasst und der Strom berechnet.
Der erste Teil des Verstärkers ist als Spannungsfolgerschaltung konfiguriert, die den MOSFET gemäß der Eingangsspannung steuert und aufgrund des durch den Nebenschlusswiderstand fließenden Laststroms die gewünschte Rückkopplungsspannung erhält.
MCP4921 ist der Digital-Analog-Wandler. Der DAC verwendet das SPI-Kommunikationsprotokoll, um die digitalen Daten von einer beliebigen Mikrocontrollereinheit abzurufen und abhängig davon einen analogen Spannungsausgang bereitzustellen. Diese Spannung ist der Eingang des Operationsverstärkers. Wir haben zuvor auch gelernt, wie man diesen MCP4921 DAC mit PIC verwendet.
Auf der anderen Seite gibt es einen Arduino Nano, der die digitalen Daten über das SPI-Protokoll an den DAC liefert und die Last steuert. Außerdem werden die Daten in der 16x2-Zeichenanzeige angezeigt. Es werden zwei zusätzliche Dinge verwendet, nämlich die Schaltfläche zum Verringern und Erhöhen. Anstatt an einen digitalen Pin anzuschließen, wird dieser an die analogen Pins angeschlossen. Daher kann man es auf einen anderen Schaltertyp wie einen Schieberegler oder einen analogen Encoder umstellen. Durch Ändern des Codes können auch analoge Rohdaten zur Steuerung der Last bereitgestellt werden. Dies vermeidet auch das Problem des Entprellen des Schalters.
Schließlich liefert der Arduino nano durch Erhöhen der Last die Lastdaten in digitalem Format an den DAC, der DAC liefert analoge Daten an den Operationsverstärker und der Operationsverstärker steuert den MOSFET gemäß der Eingangsspannung des Operationsverstärkers. Schließlich tritt abhängig vom Laststromfluss durch den Nebenschlusswiderstand ein Spannungsabfall auf, der durch den zweiten Kanal des LM358 weiter verstärkt und durch den Arduino nano erhalten wird. Dies wird auf der Zeichenanzeige angezeigt. Das gleiche passiert, wenn der Benutzer die Abnahme-Taste drückt.
PCB Design und Gerber File
Da diese Schaltung einen hohen Strompfad hat, ist es eine klügere Wahl, die richtige Taktik für das PCB-Design zu verwenden, um unerwünschte Fehlerfälle zu beseitigen. Somit ist eine Leiterplatte für diese Gleichstromlast ausgelegt. Ich habe Eagle PCB Design Software verwendet, um meine Leiterplatte zu entwerfen. Sie können eine beliebige PCB Cad Software auswählen. Die endgültig entworfene Leiterplatte in der CAD-Software ist in der folgenden Abbildung dargestellt.
Ein wichtiger Faktor, der bei der Konstruktion dieser Leiterplatte beachtet werden muss, ist die Verwendung einer dicken Leistungsebene für einen ordnungsgemäßen Stromfluss im gesamten Stromkreis. Es wird auch Vernähen gemahlener VIAS (random Vias in der Grundplatte), die für die Verwendung des korrekten Bodenströmung sowohl in den Schichten auf der Ober- und Unterseite.
Sie können die Gerber-Datei dieser Leiterplatte auch über den folgenden Link herunterladen und für die Herstellung verwenden.
- Laden Sie die einstellbare elektronische DC-Last-Gerber-Datei herunter
Bestellung Ihrer Leiterplatte bei AllPCB
Sobald Sie mit Ihrer Gerber-Datei fertig sind, können Sie damit Ihre Leiterplatte herstellen. Apropos, der Sponsor dieses Artikels, ALLPCB, spricht für seine hochwertigen Leiterplatten und den ultraschnellen Versand. Neben der Leiterplattenherstellung bietet AllPCB auchLeiterplattenbestückung und Beschaffung von Bauteilen.
Besuchen Sie, um Ihre PCB-Bestellung von ihnen zu erhalten allpcb.com und Anmeldung. Geben Sie dann auf der Startseite die Abmessungen Ihrer Leiterplatte und die erforderliche Menge wie unten gezeigt ein. Klicken Sie dann auf Jetzt zitieren.
Jetzt können Sie die anderen Parameter Ihrer Leiterplatte wie Anzahl der Schichten, Maskenfarbe, Dicke usw. ändern. Auf der rechten Seite können Sie Ihr Land und die bevorzugte Versandoption auswählen. Dies zeigt Ihnen die Vorlaufzeit und den zu zahlenden Gesamtbetrag. Ich habe DHL gewählt und mein Gesamtbetrag beträgt 26 US-Dollar. Wenn Sie jedoch zum ersten Mal Kunde sind, sinken die Preise an der Kasse. Klicken Sie dann auf In den Warenkorb und dann auf Jetzt auschecken.
Jetzt können Sie auf Ihre Gerber-Datei hochladen klicken, indem Sie auf "Gerber hochladen" und dann auf "Kaufen" klicken.
Auf der nächsten Seite können Sie Ihre Lieferadresse eingeben und den endgültigen Preis überprüfen, den Sie für Ihre Leiterplatte zahlen müssen. Sie können dann Ihre Bestellung überprüfen und dann auf Senden klicken, um die Zahlung vorzunehmen.
Sobald Ihre Bestellung bestätigt wurde, können Sie sich zurücklehnen und weiterleiten, damit Ihre Leiterplatte vor Ihrer Haustür ankommt. Ich habe meine Bestellung nach ein paar Tagen erhalten und dann war die Verpackung wie unten gezeigt ordentlich.
Die Qualität der Leiterplatte war wie immer gut, wie Sie auf den folgenden Bildern selbst sehen können. Die Oberseite und die Unterseite der Platine sind unten dargestellt.
Sobald Sie Ihr Board erhalten haben, können Sie mit dem Zusammenbau aller Komponenten fortfahren. Mein fertiges Board sieht ungefähr so aus wie unten gezeigt.
Als nächstes können Sie den Code hochladen und das Modul einschalten, um zu überprüfen, wie es funktioniert. Der vollständige Code für dieses Projekt finden Sie unten auf dieser Seite. Die Erklärung des Codes lautet wie folgt.
Arduino-Code für einstellbare Gleichstromlast
Der Code ist ziemlich einfach. Zuerst haben wir SPI- und LCD-Header-Dateien aufgenommen sowie die maximale Logikspannung, die Chipauswahlstifte usw. eingestellt.
#einschließen
Dieser Abschnitt enthält die erforderlichen programmflussbezogenen Deklarationen von Ganzzahlen und Variablen. Außerdem setzen wir die zugehörigen Peripherie-Pins mit Arduino Nano.
const int SlaveSelectPin = 10; // Chipauswahlstift int number = 0; int erhöhen = A2; // Pin erhöhen int verringern = A3; // Pin verringern int current_sense = A0; // Stromerfassungsstift inttage_sense = A1; // Spannungserfassungsstift int state1 = 0; int state2 = 0; int Set = 0; Float Volt = 0; float load_current = 0.0; float load_voltage = 0.0; Erhaltungsstrom = 0,0; Erhaltungsspannung = 0,0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // LCD-Pins
Dies wird für die Einrichtung von LCD und SPI verwendet. Auch die Pin-Richtungen werden hier eingestellt.
void setup () { pinMode (SlaveSelectPin, OUTPUT); pinMode (erhöhen, INPUT); pinMode (Abnahme, INPUT); pinMode (current_sense, INPUT); PinMode (Voltage_Sense, INPUT); // SPI initialisieren: SPI.begin (); // Richte die Anzahl der Spalten und Zeilen des LCD ein: lcd.begin (16, 2); // Eine Nachricht auf dem LCD drucken. lcd.print ("Digital Load"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); Verzögerung (2000); }}
Es wird zum Konvertieren des DAC-Werts verwendet.
void convert_DAC (vorzeichenloser int-Wert) { / * Schrittgröße = 2 ^ n, daher 12 Bit 2 ^ 12 = 4096 Für 5-V-Referenz ist der Schritt 5/4095 = 0,0012210012210012V oder 1 mV (ungefähr) * / vorzeichenloser int-Container; unsigned int MSB; unsigned int LSB; / * Schritt: 1, die 12-Bit-Daten im Container gespeichert Angenommen, die Daten sind 4095, binär 1111 1111 1111 * / container = value; / * Schritt: 2 Erstellen von Dummy 8 Bit. Durch Teilen von 256 werden also die oberen 4 Bits in LSB LSB = 0000 1111 * / LSB = Container / 256 erfasst . / * Schritt: 3 Senden der Konfiguration durch Stanzen der 4-Bit-Daten. LSB = 0011 0000 ODER 0000 1111. Ergebnis ist 0011 1111 * / LSB = (0x30) - LSB; / * Schritt: 4 Der Container hat noch den 21-Bit-Wert. Extrahieren der unteren 8 Bits. 1111 1111 UND 1111 1111 1111. Ergebnis ist 1111 1111, was MSB * / MSB = 0xFF & container; / * Schritt: 4 Senden der 16-Bit-Daten durch Teilen in zwei Bytes. * / digitalWrite (SlaveSelectPin, LOW); Verzögerung (100); SPI.transfer (LSB); SPI.transfer (MSB); Verzögerung (100); // Nimm den SS-Pin hoch, um den Chip abzuwählen : digitalWrite (SlaveSelectPin, HIGH); }}
Dieser Abschnitt wird für Stromerfassungsvorgänge verwendet.
float read_current (void) { load_current = 0; für (int a = 0; a <Durchschnitt; a ++) { load_current = load_current + analogRead (current_sense); } load_current = load_current / durchschnitt; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; return load_current; }}
Dies wird zum Ablesen der Lastspannung verwendet.
float read_voltage (void) { load_voltage = 0; für (int a = 0; a <Durchschnitt; a ++) { load_voltage = load_voltage + analogRead (Voltage_sense); } load_voltage = load_voltage / durchschnittlich; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; return load_voltage; }}
Dies ist die eigentliche Schleife. Hier werden Schaltschritte gemessen und die Daten an den DAC gesendet. Nach der Übertragung der Daten werden der tatsächliche Stromfluss und die Lastspannung gemessen. Beide Werte werden schließlich auch auf dem LCD gedruckt.
void loop () { state1 = analogRead (erhöhen); if (state1> 500) { delay (50); state1 = analogRead (Zunahme); if (state1> 500) { Volt = Volt + 0,02; } } state2 = analogRead (Abnahme); if (state2> 500) { delay (50); state2 = analogRead (Abnahme); if (state2> 500) { if (Volt == 0) { Volt = 0; } else { Volt = Volt-0,02; } } } number = volt / 0.0012210012210012; convert_DAC (Nummer); Spannung = read_voltage (); current = read_current (); lcd.setCursor (0, 0); lcd.print ("Set Value"); lcd.print ("="); Set = (Volt / 2) * 10000; lcd.print (Set); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (aktuell); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (Spannung); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // delay (1000); //lcd.clear (); }}
Testen unserer einstellbaren Gleichstromlast
Der digitale Lastkreis wird mit einer 12-V-Stromquelle verlötet und mit Strom versorgt. Ich habe meine 7,4-V-Lithiumbatterie auf der Seite der Stromquelle verwendet und ein Zangenmessgerät angeschlossen, um zu überprüfen, wie es funktioniert. Wie Sie sehen können, wenn der eingestellte Strom 300 mA beträgt, zieht der Stromkreis 300 mA aus der Batterie, die ebenfalls mit einem Zangenmesser als 310 mA gemessen wird.
Die vollständige Funktionsweise der Schaltung finden Sie im unten verlinkten Video. Ich hoffe, Sie haben das Projekt verstanden und es genossen, etwas Nützliches zu bauen. Wenn Sie Fragen haben, lassen Sie diese im Kommentarbereich oder nutzen Sie die Foren.