Variable Stromversorgung mit Arduino UNO – Schaltung und Code
Wie erstelle ich eine variable Stromversorgung mit Arduino UNO?
Eine Stromversorgung ist eine grundlegende und wesentliche Voraussetzung für elektronische und elektrische Geräte und Schaltungen. Es gibt verschiedene Arten von Schaltungen und Geräten, daher ist ihr Bedarf an Stromversorgung für verschiedene elektronische Schaltungen unterschiedlich. Beispielsweise benötigen Wi-Fi-Module, Relais, Motoren usw. unterschiedliche Spannungen. Auf dem Markt erhalten wir nicht für jede Elektronik unterschiedliche Netzteile, daher erzeugen wir unsere eigene spezifische Stromversorgung aus verschiedenen Methoden. Die einfache Lösung dafür ist die Verwendung von Batterien.
Batterien werden im Allgemeinen verwendet, um die elektronische Schaltung und die Projekte mit Strom zu versorgen, da sie leicht verfügbar sind und einfach angeschlossen werden können. Aber sie sind schnell leer und dann brauchen wir neue Batterien, auch diese Batterien können keinen hohen Strom liefern, um einen starken Motor anzutreiben. Die Batterien entladen sich also und machen die Schaltung sperrig. Auch Batterien werden heiß, wenn die Elektronik länger oder übermäßig beansprucht wird, und mit der Zeit nimmt die Lebensdauer von Batterien ab. Um dieses Problem zu überwinden, stellen wir eine bessere und effizientere Lösung vor, die in jeder Schaltung verwendet werden kann. In diesem Projekt zeigen wir Ihnen, wie wir Variable Power Supply from Arduino UNO generieren können .
Mit diesem Projekt können Sie eine variable Stromversorgung entsprechend Ihrer elektronischen Ausrüstung erhalten, ohne sich Gedanken über das Laden, Entladen, Erhitzen usw. machen zu müssen. Es stehen viele Methoden zur Verfügung, um die Variable zu generieren Stromversorgung, aber dies ist der einfachste Weg, da es billige und leicht verfügbare Komponenten erfordert. Schauen wir uns also die für dieses Projekt erforderlichen Komponenten an.
- Verwandter Beitrag: Automatische Türklingel mit Objekterkennung von Arduino
Erforderliche Komponenten
- Arduino UNO
- 16×2-LCD-Display
- 100-μF-Kondensatoren
- 1kΩ Widerstände
- Überbrückungsdrähte
- 5-Volt-Netzteil
- 2N2222 Transistor
Software: AURDINO Nightly oder Atmel Studio 6.2
- Verwandter Beitrag:Entfernungsmessung mit Arduino und Ultraschallsensor
Schaltplan der variablen Stromversorgung
Bevor Sie in dieses Projekt einsteigen, lassen Sie uns einige Dinge über das Projekt wissen.
Arduino UNO
Arduino UNO ist eine Open-Source-Plattform, die zur Entwicklung von Elektronikprojekten verwendet wird. Es kann jederzeit leicht programmiert, gelöscht und neu programmiert werden. Auf dem Markt sind viele Arduino-Boards wie Arduino UNO, Arduino Nano, Arduino Mega, Arduino Lily Pad usw. erhältlich, die je nach Verwendung unterschiedliche Spezifikationen haben. In diesem Projekt werden wir Arduino UNO verwenden, um Haushaltsgeräte automatisch zu steuern. Es verfügt über einen ATmega328-Mikrocontroller-IC, der mit einer Taktfrequenz von 16 MHz läuft. Es ist ein leistungsstarkes Gerät, das mit USART-, I2C- und SPI-Kommunikationsprotokollen arbeiten kann.
- Verwandter Beitrag: Automatische Nachtlampe mit Arduino
Dieses Board wird normalerweise mit der Software Arduino IDE über ein Micro-USB-Kabel programmiert. Der ATmega328 wird mit einem vorprogrammierten integrierten Bootloader geliefert, der das Hochladen des Codes ohne die Hilfe externer Hardware erleichtert. Es hat eine große Anwendung bei der Herstellung von Elektronikprojekten oder -produkten. Die Sprache C und C++ wird verwendet, um das Board zu programmieren, das sehr einfach zu erlernen und zu verwenden ist. Arduino IDE macht es viel einfacher zu programmieren. Es trennt den Code in zwei Teile, d. h. void setup () und void loop (). Die Funktion void setup () wird nur einmal ausgeführt und dient hauptsächlich dazu, einen Prozess zu initiieren, während void loop () aus dem Teil des Codes besteht, der kontinuierlich ausgeführt werden soll.
Dieses Modell besteht aus 6 analogen Eingangspins und 14 digitalen GPIO-Pins, die als Eingangs-Ausgang verwendet werden können, von denen 6 PWM-Ausgang und Analog mit pinMode(), digitalWrite() bieten, digitalRead()- und analogRead()-Funktionen. 6 analoge Eingangskanäle Kanäle sind von den Pins A0 bis A5 und bieten eine Auflösung von 10 Bit. Das Board kann entweder über ein USB-Kabel mit 5 Volt oder über eine DC-Buchse mit 7 bis 20 Volt mit Strom versorgt werden.
Es gibt einen Spannungsregler an Bord, um 3,3 Volt für den Betrieb von Geräten mit geringer Leistung zu erzeugen. Da der ATmega328 am USART-, SPI- und I2C-Kommunikationsprotokoll arbeitet, hat er 0 (Rx) und 1 (Tx) Pins für die USART-Kommunikation, SDA (A4) und SCL (A5) Pin für I2C und SS (10), MOSI (11) , MISO (12) und SCK (13) Pins für das SPI-Kommunikationsprotokoll.
- Verwandter Beitrag:Serielle Kommunikation von Arduino
ADC auf Arduino UNO
Arduino UNO hat an Bord 6 ADC-Kanäle, die verwendet werden können, um analoge Signale im Bereich von 0 Volt bis 5 Volt zu erfassen oder zu lesen. Wenn wir Sensoren mit Mikrocontrollern wie Arduino UNO verbinden, dann erzeugt der Sensor analoge Ausgangswerte, die Arduino UNO erfasst digitale Werte. Daher hilft ADC, Sensorwerte in analoge Werte umzuwandeln und in den Mikrocontroller einzuspeisen. Es gibt viele Anwendungen von ADC wie Temperaturerfassung, Abstandsmessung, Geschwindigkeitsmessung und viele Sensoren, die analoge Werte erzeugen.
Arduino UNO hat einen 10-Bit-ADC, was bedeutet, dass sich sein Wert in jedem Schritt von 0 auf 1023 ändert. Dies wird als Auflösung bezeichnet, die die Anzahl der diskreten Werte angibt, die über den Bereich der analogen Werte erzeugt werden können.
Da die ADC-Maximalspannung 5 Volt beträgt, hat jeder Schritt des ADC im Bereich von 0 bis 1023 einen Wert, der ungefähr 5 mV entspricht. Es gibt 6 ADC-Kanäle, die von A0 bis A5 auf dem Arduino UNO-Board bedeuten, dass es gleichzeitig 6 Geräte steuern oder mit ihnen kommunizieren kann, die analoge Werte erzeugen.
Arduino IDE bietet eine eingebaute Funktion zum Lesen analoger Werte:analogRead(pin).
Durch die einfache Angabe der Pin-Nummer von A0 bis A5, an denen Geräte angeschlossen sind, hilft uns diese Funktion, die analogen Werte zu lesen.
- Verwandter Beitrag: Was ist Crowbar Circuit? Design und Betrieb
PWM auf Arduino UNO
Pulsweitenmodulation (PWM) ist eine Technik, die verwendet wird, um die analogen Signale unter Verwendung einer digitalen Quelle zu erzeugen, indem die Breite des Impulses variiert wird, während die Frequenz konstant gehalten wird. Die beiden wichtigsten Dinge, die PWM definieren, sind:Arbeitszyklus und Frequenz.
Einschaltdauer eines Signals:
Der Bruchteil, während dessen ein Signal in einer vollständigen Periode eingeschaltet ist, wird als Arbeitszyklus bezeichnet.
Einschaltdauer =100*Tonne / (Tonne + Toff)
Dies wird im Allgemeinen verwendet, um die an die Last gelieferte Leistung zu steuern, indem das Signal ein- und ausgeschaltet wird. Zum Beispiel kann es verwendet werden, um die Lichtintensität oder die Geschwindigkeit eines Motors zu steuern. Nach einem Aufruf der analogWrite()-Funktion erzeugt der Pin bis zum nächsten Aufruf von analogWrite() oder einem Aufruf von digitalRead() oder digitalWrite() auf demselben Pin eine stetige Rechteckwelle mit dem angegebenen Tastverhältnis.
- Verwandter Beitrag: Simple Touch Sensitive Switch Circuit using 555 Timer &BC547 Transistor
Frequenz eines Signals:
Die Frequenz eines Signals gibt an, wie schnell ein Signal seinen Zyklus abschließt, dh in wie viel Zeit es von seinem EIN-Zustand in seinen AUS-Zustand oder umgekehrt wechselt. Dadurch verhält sich der Ausgang bei einem bestimmten Arbeitszyklus wie eine konstante analoge Spannung. Die Frequenz des PWM-Signals an den meisten Pins beträgt ungefähr 490 Hz. Auf dem Uno und ähnlichen Boards haben die Pins 5 und 6 eine Frequenz von ungefähr 980 Hz. Die Pins 3 und 11 des Leonardo laufen ebenfalls mit 980 Hz
Arduino UNO hat 6 8-Bit-PWM-Kanäle mit dem Symbol ~ darauf. Wir können eine analoge Spannung mit der Funktion analogWrite in der Arduino IDE erhalten:
analogWrite (Pin, Arbeitszyklus)
Pin:Es nimmt den Pin auf Arduino UNO, der verwendet wird, um eine analoge Ausgabe zu erzeugen.
Duty Cycle:Es braucht Wertebereiche von 0 (min) bis 255 (max) als Eingabe, um das Duty Cycle zu ändern.
- Verwandter Beitrag:Einfache Überspannungsschutzschaltung mit Zenerdiode
16×2-LCD-Display
Das Generieren benutzerdefinierter Zeichen auf dem LCD ist nicht sehr schwierig. Es erfordert das Wissen über den kundenspezifisch generierten Direktzugriffsspeicher (CG-RAM) von LCD und den LCD-Chip-Controller. Hier geht es um die Anbindung eines Arduino UNO an ein 16×2 JHD162A LCD-Modul. JHD162A ist ein 16×2-LCD-Modul, das auf dem HD44780-Treiber von Hitachi basiert. Der JHD162A hat 16 Pins und kann im 4-Bit-Modus (unter Verwendung von nur 4 Datenleitungen) oder im 8-Bit-Modus (unter Verwendung aller 8 Datenleitungen) betrieben werden. In diesem Projekt werden wir im 4-Bit-Modus verwenden, da es erforderlich ist, Drähte anzuschließen.
Pin-Beschreibung des 16×2-LCD-Moduls:
Pin on LCD | Beschreibung |
VSS | Erdungsstift |
VCC | +5V Stromversorgung |
VEE | Pin zum Ändern des LCD-Kontrasts |
RS | Registerauswahl:Datenmodus oder Befehlsmodus |
RW | Lese- oder Schreibmodus |
E | LCD aktivieren |
DB0-DB7 | Daten und Befehle werden über diese Pins eingespeist |
LED+ | Anode der Hintergrundbeleuchtungs-LED |
LED- | Kathode der Hintergrundbeleuchtungs-LED |
- Verwandter Beitrag:Schaltkreisdiagramm und Betrieb des automatischen Lichtschalters im Badezimmer
Dieses LCD hat kein eigenes Licht, daher befindet sich hinter dem Bildschirm eine LED, die als Hintergrundbeleuchtung für das Display dient. Die Schnittstelle dieses LCD mit Arduino UNO ist ziemlich einfach, da Arduino IDE eine LiquidCrystal-Bibliothek bietet, die viele eingebaute Funktionen hat, um alles auf dem Display einfacher zu initialisieren und zu drucken. Die LCD-Funktionen, die wir hauptsächlich in diesem Projekt verwenden werden, sind:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
- Verwandter Beitrag: 12-V-zu-5-V-Wandlerschaltung
Funktion der variablen Stromversorgung mit Arduino
Schließen Sie die Drähte wie im Schaltplan angegeben richtig an. In diesem Projekt gehen wir zu der an der Ausgangsklemme erhaltenen Spannung und geben sie als Eingabe an die des ADC-Kanals. Weiterhin liefert der ADC-Kanal den digitalen Wert, der später auf dem 16×2-LCD-Display angezeigt wird. Die im Projekt verwendeten Tasten dienen zum Erhöhen und Verringern der Spannung und sind mit Pin 4 und Pin 5 des Arduino UNO verbunden. Da der Arduino UNO eine 10-Bit-Auflösung hat, was bedeutet, dass er von 0 bis 1023 variiert und die maximale ADC-Spannung 5 Volt beträgt, entspricht ein Bit 5/1024 =4,9 Millivolt (ungefähr). Durch welche Inkrementierung und Dekrementierung wir den Digitalwert also bewegen, variiert von 0 bis 1023.
Jetzt lesen wir den ADC-Wert am Kanal A0. Die Arduino IDE bietet eine eingebaute Funktion analogRead (Pin) zum Lesen der ADC-Werte, hier ist Pin A0, da der Kanal A0 auf Arduino UNO ist. Weiterhin verwenden wir Pin 3 für Pwm von Arduino UNO. Arduino IDE bietet die Funktion analogWrite(pin,Duty Cycle), um die gewünschte Ausgangsspannung mit gegebenem Tastverhältnis an Pin 3 zu erzeugen.
Wenn Sie nun die beiden Tasten drücken, ändern wir das Tastverhältnis des PWM-Signals, wodurch sich die Ausgangsspannung ändert. Eine Taste dient zum Erhöhen des Tastverhältnisses und die andere zum Verringern des Tastverhältnisses. Der PWM-Wert des Arduino Uno ändert sich von 0 auf 255, wobei 0 das Minimum ist, um 0 Volt zu erreichen, und 255 das Maximum, um 5 Volt zu erreichen. Der Pin 3 wird ferner einem NPN-Transistor zugeführt, der an seinem Emitter eine variable Spannung bereitstellt und als Schaltelement fungiert.
Die Basis des Transistors hat ein variables Tastverhältnis pwm und daher können wir eine variable Ausgangsspannung am Terminal erhalten. Da die Spannung nicht linear ist, schließen wir Kondensatoren an, um das Rauschen in der variablen Ausgangsspannung herauszufiltern.
- Verwandter Beitrag:Elektronisches Projekt zur Ampelsteuerung mit IC 4017 und 555 Timer
Code-Erklärung
Einschließlich Bibliotheken:
#include <LiquidCrystal.h>
Dies ist die eingebaute Bibliothek zur Verwendung eines LCD-Displays. Es bietet Funktionen, die einfach verwendet werden können, um Zeichen auf dem LCD-Display anzuzeigen.
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int ref_volt =125;
float flag =0;
Flüssigkristall-LCD nimmt die Pin-Nummer an, mit der die Datenpins und die RS-, RW- und E-Pins des LCD-Displays verbunden sind. Da wir unsere Referenzspannung auf 2,5 Volt setzen, setzen wir den Arbeitszyklus auf 50 %, indem wir ref_volt auf 125 setzen.
pinMode (3, OUTPUT);
pinMode (4, INPUT);
pinMode (5, INPUT);
Pin3 von Arduino UNO ist als PWM-Ausgang eingestellt, Pin 4 und Pin 5 sind so eingestellt, dass sie den Eingang zum Erhöhen und Verringern der Spannung nehmen.
lcd.begin(16, 2);
delay(100);
lcd.setCursor(1, 0);
lcd.print("Variable Voltage");
lcd.clear();
delay(1000);
lcd.begin-Funktion legt die Anzahl der Zeichen des LCD-Displays fest. Am Anfang zeigen wir „Variable Spannung“ auf dem Bildschirm an.
float value = (analogRead(A0));
value = (value*5)/1024;
analogWrite(3,ref_volt);
Wertvariable liest den vom A0-ADC-Kanal erhaltenen digitalen Wert und wandelt diesen digitalen Wert in einen Spannungswert um. AnalogWrite stellt PWM an Pin 3 des Arduino UNO bereit.
if (digitalRead(4)==LOW)
{
if (ref_volt<250)
{
ref_volt=ref_volt+1;
delay(100);
}
}
Dies prüft, ob die Inkrement-Taste gedrückt ist oder nicht. Wenn jemand die Inkrement-Taste drückt, wird ref_volt erhöht.
if (digitalRead(5)==LOW)
{
if (ref_volt>0)
{
ref_volt=ref_volt-1;
delay(100);
}
}
Dies prüft, ob die Dekrement-Taste gedrückt ist oder nicht. Wenn jemand die Dekrement-Taste drückt, wird ref_volt verringert.
- Verwandter Beitrag:Klatschschalterschaltung mit IC 555-Timer & Ohne Timer
Auf diese Weise können Sie mit Arduino UNO die variable 5-Volt-Stromversorgung erzeugen ohne sich viel Gedanken über Batterien zu machen und die Schaltung sperrig zu machen.
Industrietechnik
- Einsatz von KI zur Aufdeckung von Wildtier- und Menschenhandel in der Lieferkette
- DTMF-Decoder, der nur Arduino verwendet
- DIY-Voltmeter mit Arduino und Smartphone
- WebServerBlink mit Arduino Uno WiFi
- Python3- und Arduino-Kommunikation
- FM-Radio mit Arduino und RDA8057M
- Roboterauto mit G-Sensor-Smartphone gesteuert
- Strom, Leistung und Drehmoment in drehzahlgeregelten Antrieben
- Schaltplan für duale Stromversorgung – 230 VAC bis ±12 VDC
- Transformatorlose Stromversorgung:Bewährte Methode zur Überwindung von Kosten und Platz