Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Variabele voeding met Arduino UNO - Circuit en code

Hoe maak je een variabele voeding met Arduino UNO?

Een voeding is een basisvereiste voor elektronica en elektrische apparatuur en circuits. Er zijn verschillende soorten circuits en apparatuur, daarom is hun vraag naar stroomvoorziening verschillend voor verschillende elektronische circuits. Zo vereisen wifi-modules, relais, motoren, enz. verschillende spanningen. In de markt krijgen we niet voor elke elektronica verschillende voedingen, dus we genereren onze eigen specifieke voeding op verschillende manieren. De eenvoudige oplossing hiervoor is het gebruik van batterijen.

Batterijen worden over het algemeen gebruikt om het elektronische circuit en de projecten van stroom te voorzien, omdat ze gemakkelijk verkrijgbaar zijn en eenvoudig kunnen worden aangesloten. Maar ze liepen snel leeg en dan hebben we nieuwe batterijen nodig, ook deze batterijen kunnen geen hoge stroom leveren om een ​​krachtige motor aan te drijven. Dus de batterijen ontladen en ze maken het circuit ook omvangrijk. Ook worden batterijen heet wanneer de elektronica langer of overmatig wordt gebruikt en met de tijd neemt de levensduur van batterijen af. Om dit probleem op te lossen, introduceren we een betere en efficiëntere oplossing die in elk circuit kan worden gebruikt. In dit project laten we u zien hoe we Variabele voeding van Arduino UNO . kunnen genereren .

Met dit project kunt u een variabele stroomvoorziening krijgen op basis van uw elektronische apparatuur zonder dat u zich zorgen hoeft te maken over opladen, ontladen, verwarmingsproblemen enz. Er zijn veel methoden beschikbaar om de variabele te genereren voeding, maar dit is de gemakkelijkste manier omdat er goedkope en gemakkelijk verkrijgbare componenten voor nodig zijn. Laten we dus eens kijken naar de componenten die nodig zijn voor dit project.

  • Gerelateerde post:automatische deurbel met objectdetectie door Arduino

Vereiste componenten

  • Arduino UNO
  • 16×2 LCD-scherm
  • 100 μF condensatoren
  • 1k Ω weerstanden
  • Jumperdraden
  • 5 volt voeding
  • 2N2222 Transistor

Software: AURDINO Nightly of Atmel Studio 6.2

  • Gerelateerde post:afstandsmeting met Arduino en ultrasone sensor

Variabele stroomvoorziening schakelschema

Laat ons, voordat u aan dit project begint, enkele dingen over het project weten.

Arduino UNO

Arduino UNO is een open source platform dat wordt gebruikt om een ​​elektronicaproject te ontwikkelen. Het kan op elk moment van de tijd eenvoudig worden geprogrammeerd, gewist en opnieuw geprogrammeerd. Er zijn veel Arduino-kaarten op de markt verkrijgbaar, zoals Arduino UNO, Arduino Nano, Arduino Mega, Arduino-lelieblad enz. Met verschillende specificaties, afhankelijk van hun gebruik. In dit project gaan we Arduino UNO gebruiken om huishoudelijke apparaten automatisch te bedienen. Het heeft een ATmega328 microcontroller IC erop die draait op een kloksnelheid van 16 MHz. Het is een krachtig apparaat dat kan werken met USART-, I2C- en SPI-communicatieprotocollen.

  • Gerelateerde post:Automatische nachtlamp met Arduino

Dit bord wordt meestal geprogrammeerd met behulp van software Arduino IDE met behulp van een micro-USB-kabel. ATmega328 wordt geleverd met een voorgeprogrammeerde ingebouwde bootloader die het gemakkelijker maakt om de code te uploaden zonder de hulp van externe hardware. Het heeft een enorme toepassing bij het maken van elektronicaprojecten of -producten. De C- en C++-taal wordt gebruikt om het bord te programmeren, wat heel gemakkelijk te leren en te gebruiken is. Arduino IDE maakt het veel gemakkelijker om te programmeren. Het scheidt de code in twee delen, namelijk void setup () en void loop (). De functie void setup () wordt slechts één keer uitgevoerd en wordt voornamelijk gebruikt voor het initiëren van een proces, terwijl void loop () het deel van de code is dat continu moet worden uitgevoerd.

Dit model bestaat uit 6 analoge ingangspinnen en 14 digitale GPIO-pinnen die kunnen worden gebruikt als ingangsuitgang 6 waarvan PWM-uitgang en analoog met pinMode(), digitalWrite(), digitalRead() en analogeRead() functies. 6 analoge ingangskanalen zijn van pinnen A0 tot A5 en bieden een resolutie van 10 bits. Het bord kan worden gevoed via een USB-kabel die werkt op 5 volt of via een DC-aansluiting die werkt tussen 7 en 20 volt.

Er is een spanningsregelaar aan boord om 3,3 volt te genereren voor het gebruik van apparaten met een laag vermogen. Omdat de ATmega328 werkt op het USART-, SPI- en I2C-communicatieprotocol, heeft het 0 (Rx) en 1 (Tx) pinnen voor USART-communicatie, SDA (A4) en SCL (A5)-pin voor I2C en SS (10), MOSI (11) , MISO (12) en SCK (13) pinnen voor SPI-communicatieprotocol.

  • Gerelateerde post:seriële communicatie door Arduino

ADC op Arduino UNO

Arduino UNO heeft 6 ADC-kanalen aan boord die kunnen worden gebruikt om analoge signalen van 0 volt tot 5 volt te detecteren of te lezen. Wanneer we sensoren koppelen aan een microcontroller zoals Arduino UNO, genereert de sensor analoge uitgangswaarden, de Arduino UNO detecteert digitale waarden. Daarom helpt ADC om sensorwaarden om te zetten naar analoge waarden en voert deze in de microcontroller. Er zijn veel toepassingen van ADC zoals temperatuurmeting, afstandsmeting, snelheidsmeting en veel sensoren die analoge waarden genereren.

Arduino UNO heeft 10-bit ADC, wat betekent dat de waarde bij elke stap verandert van 0 naar 1023. Dit wordt resolutie genoemd, wat het aantal discrete waarden aangeeft dat het kan produceren over het bereik van analoge waarden.

Aangezien de maximale spanning van de ADC 5 volt is, heeft elke stap van de ADC van 0 tot 1023 een waarde die ongeveer gelijk is aan 5 mV. Er zijn 6 ADC-kanalen die van A0 tot A5 op het Arduino UNO-bord betekenen dat het tegelijkertijd 6 apparaten kan besturen of ermee kan communiceren die analoge waarden genereren.

Arduino IDE biedt ingebouwde functie om analoge waarden te lezen:analogRead(pin).

Door simpelweg het pinnummer van A0 tot A5 te geven waarop apparaten zijn aangesloten, helpt deze functie ons om de analoge waarden te lezen.

  • Gerelateerde post: Wat is Crowbar Circuit? Ontwerp en bediening

PWM op Arduino UNO

Pulsbreedtemodulatie (PWM) is een techniek die wordt gebruikt om analoge signalen te genereren met behulp van een digitale bron door de breedte van de puls te variëren en de frequentie constant te houden. De twee belangrijkste dingen die PWM definiëren zijn:duty cycle en frequentie.

Prijscyclus van een signaal:

De fractie waarin een signaal gedurende een volledige periode AAN is, wordt Duty Cycle genoemd.

Duty Cycle =100*Ton / (Ton + Toff)

Dit wordt over het algemeen gebruikt om het vermogen dat aan de belasting wordt geleverd te regelen door het signaal AAN en UIT te zetten. Het kan bijvoorbeeld worden gebruikt om de intensiteit van het licht of de snelheid van een motor te regelen. Na een aanroep van de analogWrite()-functie, genereert de pin een constante blokgolf van de gespecificeerde duty cycle tot de volgende aanroep naar analogWrite() of een aanroep naar digitalRead() of digitalWrite() op dezelfde pin.

  • Gerelateerde post: Eenvoudig aanraakgevoelig schakelcircuit met 555 Timer en BC547-transistor

Frequentie van een signaal:

Frequentie van een signaal geeft aan hoe snel een signaal zijn cyclus voltooit, in hoeveel tijd het overschakelt van de AAN-status naar de UIT-status of vice versa. Door dit te doen bij een bepaalde inschakelduur gedraagt ​​de uitgang zich als een constante analoge spanning. De frequentie van het PWM-signaal op de meeste pinnen is ongeveer 490 Hz. Op de Uno en soortgelijke borden hebben pinnen 5 en 6 een frequentie van ongeveer 980 Hz. Pins 3 en 11 op de Leonardo werken ook op 980 Hz

Arduino UNO heeft 6 8-bits PWM-kanalen met het symbool ~ erop. We kunnen analoge spanning verkrijgen met behulp van de functie analogWrite in Arduino IDE:

analogWrite (pin, Duty cycle)

Pin:het neemt de pin op Arduino UNO die wordt gebruikt om analoge output te genereren.

Duty Cycle:er zijn waardebereiken van 0 (min) tot 255 (max) nodig om de Duty Cycle te wijzigen.

  • Verwante post: Eenvoudig overspanningsbeveiligingscircuit met zenerdiode

16×2 LCD-scherm

Het genereren van aangepaste tekens op het LCD-scherm is niet erg moeilijk. Het vereist de kennis over op maat gegenereerd willekeurig toegankelijk geheugen (CG-RAM) van LCD en de LCD-chipcontroller. Dit gaat over het koppelen van een Arduino UNO naar 16 × 2 JHD162A LCD-module. JHD162A is een 16×2 LCD-module gebaseerd op de HD44780-driver van Hitachi. De JHD162A heeft 16 pinnen en kan worden gebruikt in 4-bits modus (met slechts 4 datalijnen) of 8-bits modus (met gebruik van alle 8 datalijnen). In dit project gaan we de 4-bit-modus gebruiken, omdat het nodig is om draden aan te sluiten.

Penbeschrijving van 16×2 LCD-module:

Vastzetten op LCD Beschrijving
VSS Grondpen
VCC +5V voeding
VEE Vastzetten om het contrast van het LCD-scherm te wijzigen
RS Registreer Selecteren:gegevensmodus of opdrachtmodus
RW Lees- of schrijfmodus
E LCD inschakelen
DB0-DB7 Gegevens en commando's worden ingevoerd met behulp van deze pinnen
LED+ Anode van de backlight-LED
LED- Kathode van de backlight-LED
  • Gerelateerde post: Automatisch schakelschema en bediening van de badkamerlichtschakelaar

Dit LCD-scherm heeft geen eigen licht, dus er is een LED achter het scherm die als achtergrondverlichting voor het scherm fungeert. Het koppelen van dit LCD-scherm met Arduino UNO is vrij eenvoudig, aangezien Arduino IDE een LiquidCrystal-bibliotheek biedt die veel ingebouwde functies heeft om het initialiseren en afdrukken van alles op het scherm gemakkelijker te maken. De LCD-functies die we in dit project voornamelijk gaan gebruiken zijn:

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
  • Verwante post: 12V naar 5V-convertercircuit

Werking van variabele voeding met Arduino

Sluit de draden goed aan zoals aangegeven in het schakelschema. In dit project gaan we naar de spanning die is verkregen aan de uitgangsklem en geven deze als invoer aan die van het ADC-kanaal. Verder geeft het ADC-kanaal de digitale waarde die later wordt weergegeven op het 16×2 LCD-scherm. De knoppen die in het project worden gebruikt, zijn om de spanning te verhogen en te verlagen en zijn verbonden met pin 4 en pin 5 van de Arduino UNO. Aangezien de Arduino UNO een resolutie van 10 bits heeft, wat betekent dat deze varieert van 0 tot 1023 en de maximale ADC-spanning 5 volt is, is één bit gelijk aan 5/1024 =4,9 mili volt (ongeveer). Dus welke ophoging en afname we de digitale waarde verplaatsen varieert van 0 tot 1023.

Nu lezen we de ADC-waarde op het A0-kanaal. Arduino IDE biedt ingebouwde functie analogRead (pin) om de ADC-waarden te lezen, hier is pin A0, aangezien het kanaal A0 is op Arduino UNO. Verder gebruiken we pin 3 voor Pwm van Arduino UNO. Arduino IDE biedt de functie analogWrite (pin, Duty Cycle) om de gewenste uitgangsspanning te genereren met de gegeven duty cycle op pin 3.

Als we nu op de twee knoppen drukken, veranderen we de duty-cycle van het pwm-signaal, waardoor de uitgangsspanning verandert. Een knop is om de duty cycle te verhogen en een andere om de duty cycle te verlagen. De PWM-waarde van de Arduino Uno verandert van 0 in 255, waarbij 0 als minimum om 0 volt te bereiken en 255 als maximum om 5 volt te bereiken. De pin 3 wordt verder toegevoerd aan een NPN-transistor die een variabele spanning aan de emitter levert en als schakelapparaat fungeert.

De basis van de transistor heeft een variabele duty-ratio pwm en daarom kunnen we een variabele uitgangsspanning op de terminal verkrijgen. Omdat de spanning niet lineair is, sluiten we condensatoren aan om de ruis in de variabele uitgangsspanning weg te filteren.

  • Gerelateerde post:Elektronisch project verkeerslichtregeling met IC 4017 &555 Timer

Code-uitleg

Inclusief bibliotheken:

#include <LiquidCrystal.h>

Dit is de ingebouwde bibliotheek voor het gebruik van een LCD-scherm. Het biedt functies die gemakkelijk kunnen worden gebruikt om tekens op het LCD-scherm weer te geven.

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int ref_volt =125;
float flag =0;

liquid crystal lcd neemt het pinnummer waarop de datapinnen en RS-, RW- en E-pinnen van het LCD-scherm zijn aangesloten. Omdat we onze referentiespanning instellen op 2,5 volt, stellen we de duty cycle in op 50% door ref_volt op 125 te zetten.

pinMode (3, OUTPUT);
pinMode (4, INPUT);
pinMode (5, INPUT);

Arduino UNO's pin3 is ingesteld als PWM-uitgang, pin 4 en pin 5 zijn ingesteld om de invoer te gebruiken voor het verhogen en verlagen van de spanning.

lcd.begin(16, 2);
delay(100);
lcd.setCursor(1, 0);
lcd.print("Variable Voltage");
lcd.clear();
delay(1000);

lcd.begin functie stelt het aantal tekens van het LCD-scherm in. In het begin tonen we "Variabele spanning" op het scherm.

float value = (analogRead(A0));
value = (value*5)/1024;
analogWrite(3,ref_volt);

Waardevariabele leest de digitale waarde die is verkregen van het A0 ADC-kanaal en zet deze digitale waarde om in spanningswaarde. AnalogWrite levert PWM op pin 3 van de Arduino UNO.

if (digitalRead(4)==LOW)
  {
    if (ref_volt<250)
    {
      ref_volt=ref_volt+1;
      delay(100);
    }
  }

Hiermee wordt gecontroleerd of de increment-knop is ingedrukt of niet. Als iemand op de increment-knop drukt, wordt de ref_volt verhoogd.

  if (digitalRead(5)==LOW)
   {
     if (ref_volt>0)
      {
        ref_volt=ref_volt-1;
        delay(100);
      }
    }

Dit controleert of de decrement-knop is ingedrukt of niet. Als iemand op de decrement-knop drukt, wordt de ref_volt verlaagd.

  • Gerelateerde post:Clap Switch Circuit met behulp van IC 555 Timer & Zonder timer

Op deze manier kunt u de 5 volt variabele voeding genereren met behulp van Arduino UNO zonder veel zorgen te maken over batterijen en het circuit omvangrijk te maken.


Industriële technologie

  1. AI gebruiken om wilde dieren en mensenhandel in de toeleveringsketen aan het licht te brengen
  2. DTMF-decoder met alleen Arduino
  3. DIY voltmeter met Arduino en smartphone
  4. WebServerBlink met Arduino Uno WiFi
  5. Python3- en Arduino-communicatie
  6. FM-radio met Arduino en RDA8057M
  7. Robotcar bestuurd met G-Sensor smartphone
  8. GPS-tracking met Helium, Azure IoT Hub en Power BI
  9. Stroom, vermogen en koppel in aandrijvingen met variabele snelheid
  10. Schakelschema voor dubbele voeding – 230VAC tot ±12VDC
  11. Transformatorloze voeding:goedgekeurde manier om kosten en ruimte te overwinnen