Inhoudsopgave:

DIY-vermogensmeetmodule voor Arduino - Ajarnpa
DIY-vermogensmeetmodule voor Arduino - Ajarnpa

Video: DIY-vermogensmeetmodule voor Arduino - Ajarnpa

Video: DIY-vermogensmeetmodule voor Arduino - Ajarnpa
Video: Голубая стрела (1958) фильм 2024, Juli-
Anonim
DIY-vermogensmeetmodule voor Arduino
DIY-vermogensmeetmodule voor Arduino
DIY-vermogensmeetmodule voor Arduino
DIY-vermogensmeetmodule voor Arduino
DIY-vermogensmeetmodule voor Arduino
DIY-vermogensmeetmodule voor Arduino

Hallo allemaal, ik hoop dat het goed met jullie gaat! In deze instructable laat ik je zien hoe ik deze Power meter/Wattmeter-module heb gemaakt voor gebruik met een Arduino-bord. Deze vermogensmeter kan het verbruikte vermogen en de DC-belasting berekenen. Naast vermogen kan deze module ons ook nauwkeurige metingen van spanning en stroom geven. Het kan gemakkelijk lage spanningen (ongeveer 2V) en lage stromen meten, zo laag als 50 mA met een fout van niet meer dan 20mA. De nauwkeurigheid hangt af van de keuze van de componenten op basis van uw vereisten.

Benodigdheden

  • IC LM358 dubbele OP-AMP
  • 8-pins IC-basis
  • Shuntweerstand (8,6 milliOhm in mijn geval)
  • Weerstanden: 100K, 10K, 2,2K, 1K (1/2watt)
  • Condensatoren: 3 * 0.1uF keramische condensatoren;
  • Veroboard of nulbord
  • Schroefklemmen
  • Soldeerbout en soldeer
  • Arduino Uno of een ander compatibel bord
  • OLED-scherm
  • Breadbard-draden aansluiten

Stap 1: Verzamelen van de benodigde componenten

De benodigde componenten verzamelen
De benodigde componenten verzamelen

Dit project maakt gebruik van zeer eenvoudige en gemakkelijk te verkrijgen componenten: ze omvatten weerstanden, keramische condensatoren, operationele versterker en een veroboard voor prototyping.

De keuze en waarde van componenten hangt af van het type toepassing en het bereik van het vermogen dat u wilt meten.

Stap 2: Het werkingsprincipe

Het werkprincipe
Het werkprincipe
Het werkprincipe
Het werkprincipe
Het werkprincipe
Het werkprincipe
Het werkprincipe
Het werkprincipe

De werking van de vermogensmodule is gebaseerd op twee concepten van circuittheorie en basiselektriciteit: het spanningsdelerconcept voor het meten van de ingangsspanning en de wet van Ohm om de stroom die door het circuit vloeit te berekenen. We gebruiken een shuntweerstand om er een zeer kleine spanningsval over te creëren. Deze spanningsval is evenredig met de hoeveelheid stroom die door de shunt vloeit. Deze kleine spanning, wanneer versterkt door een operationele versterker, kan worden gebruikt als invoer voor een microcontroller die kan worden geprogrammeerd om ons de huidige waarde te geven. De operationele versterker wordt gebruikt als een niet-inverterende versterker waarbij de versterking wordt bepaald door de waarden van de feedback weerstand R2 en R1. Door de niet-inverterende configuratie te gebruiken, hebben we een gemeenschappelijke basis als meetreferentie. Hiervoor wordt de stroom gemeten aan de lage kant van de schakeling. Voor mijn toepassing heb ik een versterking van 46 gekozen door 100K en 2.2K weerstand als feedbacknetwerk te gebruiken. De spanningsmeting wordt gedaan met behulp van een spanningsdelerschakeling die de ingangsspanning verdeelt in verhouding tot het gebruikte weerstandsnetwerk.

Zowel de huidige waarde van de OP-Amp als de spanningswaarde van het scheidingsnetwerk kunnen in twee analoge ingangen van de arduino worden ingevoerd, zodat we het door een belasting verbruikte vermogen kunnen berekenen.

Stap 3: De onderdelen bij elkaar brengen

De onderdelen bij elkaar brengen
De onderdelen bij elkaar brengen
De onderdelen bij elkaar brengen
De onderdelen bij elkaar brengen
De onderdelen bij elkaar brengen
De onderdelen bij elkaar brengen

Laten we beginnen met de constructie van onze voedingsmodule door de positie van de schroefklemmen voor de ingangs- en uitgangsaansluiting te bepalen. Na het markeren van de juiste posities solderen we de schroefklemmen en de shuntweerstand op hun plaats.

Stap 4: De onderdelen voor het Voltage Sense-netwerk toevoegen

De onderdelen voor het Voltage Sense-netwerk toevoegen
De onderdelen voor het Voltage Sense-netwerk toevoegen
De onderdelen voor het Voltage Sense-netwerk toevoegen
De onderdelen voor het Voltage Sense-netwerk toevoegen
De onderdelen voor het Voltage Sense-netwerk toevoegen
De onderdelen voor het Voltage Sense-netwerk toevoegen

Voor ingangsspanningsdetectie gebruik ik een spanningsdelernetwerk van 10K en 1K. Ik heb ook een condensator van 0,1 uF over de 1K-weerstand toegevoegd om de spanningen af te vlakken. Het spanningsdetectienetwerk is gesoldeerd in de buurt van de ingangsklem

Stap 5: De onderdelen voor het Current Sense Network toevoegen

De onderdelen voor het Current Sense Network toevoegen
De onderdelen voor het Current Sense Network toevoegen
De onderdelen voor het Current Sense Network toevoegen
De onderdelen voor het Current Sense Network toevoegen
De onderdelen voor het Current Sense Network toevoegen
De onderdelen voor het Current Sense Network toevoegen
De onderdelen voor het Current Sense Network toevoegen
De onderdelen voor het Current Sense Network toevoegen

De stroom wordt gemeten door de spanningsval over de shuntweerstand te berekenen en te versterken met een vooraf gedefinieerde versterking die is ingesteld door het weerstandsnetwerk. Er wordt een niet-inverterende versterkingsmodus gebruikt. Het is wenselijk om de soldeersporen klein te houden om een ongewenste spanningsval te voorkomen.

Stap 6: Voltooiing van de resterende verbindingen en voltooiing van de build

De resterende verbindingen voltooien en de bouw voltooien
De resterende verbindingen voltooien en de bouw voltooien
De resterende verbindingen voltooien en de bouw voltooien
De resterende verbindingen voltooien en de bouw voltooien
De resterende verbindingen voltooien en de bouw voltooien
De resterende verbindingen voltooien en de bouw voltooien

Met de spannings- en stroomdetectienetwerken aangesloten en gesoldeerd, is het tijd om de mannelijke header-pinnen te solderen en de nodige aansluitingen van stroom- en signaaluitgangen te maken. De module wordt gevoed door de standaard bedrijfsspanning van 5 volt die we gemakkelijk van een arduino-bord kunnen krijgen. De twee spanningsdetectie-uitgangen worden verbonden met de analoge ingangen van de arduino.

Stap 7: De module aansluiten met Arduino

De module verbinden met Arduino
De module verbinden met Arduino
De module verbinden met Arduino
De module verbinden met Arduino
De module verbinden met Arduino
De module verbinden met Arduino
De module verbinden met Arduino
De module verbinden met Arduino

Nu de module compleet is, is het nu eindelijk tijd om hem te verbinden met een Arduino en hem aan de gang te krijgen. Om de waarden te zien, heb ik een OLED-display gebruikt dat het I2C-protocol gebruikte om met de Arduino te communiceren. De parameters die op het scherm worden weergegeven zijn Spanning, Stroom en Vermogen.

Stap 8: Projectcode en schakelschema

Projectcode en schakelschema
Projectcode en schakelschema

Ik heb het schakelschema en de code van de voedingsmodule in deze stap bijgevoegd (voorheen had ik het.ino- en.txt-bestand met de code bijgevoegd, maar door een serverfout was de code ontoegankelijk of onleesbaar voor gebruikers, dus ik schreef de hele code in deze stap. Ik weet dat dit geen goede manier is om de code te delen:(). Voel je vrij om deze code aan te passen aan je vereisten. Ik hoop dat dit project nuttig voor je was. Deel uw feedback in de opmerkingen. Proost!

#erbij betrekken

#erbij betrekken

#erbij betrekken

#erbij betrekken

#define OLED_RESET 4 Adafruit_SSD1306 display (OLED_RESET);

vlotterwaarde=0;

vlotterstroom = 0;

vlotterspanning = 0;

drijfvermogen = 0;

ongeldige setup() {

pinMode (A0, INGANG);

pinMode (A1, INGANG);

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialiseer met de I2C-adr 0x3C (voor de 128x32) display.display();

vertraging (2000);

// Wis de buffer.

display.clearDisplay();

display.setTextSize(1);

display.setCursor(0, 0);

display.setTextColor(WIT);

Serieel.begin(9600); // Om de waarden op de seriële monitor te zien

}

lege lus() {

// het gemiddelde nemen voor stabiele metingen

for(int i=0;i<20;i++) {

huidige = huidige + analoog lezen (A0);

spanning = spanning + analoog lezen (A1); }

huidige=(huidige/20); stroom=stroom * 0,0123 * 5,0; // kalibratiewaarde, te wijzigen volgens gebruikte componenten

spanning=(spanning/20); spanning=spanning* 0,0508 * 5,0; // kalibratiewaarde, te wijzigen volgens gebruikte componenten

vermogen = spanning * stroom;

// afdrukken van de waarden op de seriële monitor

Seriële.afdruk (spanning);

Serieel.print(" ");

Serial.print (huidig);

Serieel.print(" ");

Seriële.println(stroom);

// afdrukken van de waarden op het OLED-display

display.setCursor(0, 0);

display.print("Spanning: ");

display.print(spanning);

display.println ("V");

display.setCursor(0, 10);

display.print("Huidige: ");

display.print(huidig);

display.println ("A");

display.setCursor(0, 20);

display.print("Power: ");

display.print(kracht);

display.println(" W");

weergave.weergave();

vertraging (500); // verversingssnelheid ingesteld door de vertraging

display.clearDisplay();

}

Aanbevolen: