Innholdsfortegnelse:

DIY kraftmålemodul for Arduino: 9 trinn (med bilder)
DIY kraftmålemodul for Arduino: 9 trinn (med bilder)

Video: DIY kraftmålemodul for Arduino: 9 trinn (med bilder)

Video: DIY kraftmålemodul for Arduino: 9 trinn (med bilder)
Video: ВЫСОКОТОЧНОЕ БЕЗУМИЕ - DIY 2024, Juli
Anonim
DIY kraftmålemodul for Arduino
DIY kraftmålemodul for Arduino
DIY kraftmålemodul for Arduino
DIY kraftmålemodul for Arduino
DIY kraftmålemodul for Arduino
DIY kraftmålemodul for Arduino

Hei alle sammen, jeg håper dere har det bra! I denne instruksen skal jeg vise deg hvordan jeg lagde denne Power meter/ Wattmeter -modulen for bruk med et Arduino -kort. Denne effektmåleren kan beregne strømforbruket og DC -belastning. Sammen med strøm kan denne modulen også gi oss nøyaktige avlesninger av spenning og strøm. Den kan enkelt måle lave spenninger (rundt 2V) og lave strømmer, så lave som 50 mA med en feil på ikke mer enn 20mA. Nøyaktigheten avhenger av valg av komponenter basert på dine krav.

Rekvisita

  • IC LM358 dobbel OP-AMP
  • 8 -pinners IC -base
  • Shuntmotstand (8,6 milliOhm i mitt tilfelle)
  • Motstander: 100K, 10K, 2.2K, 1K (1/2watt)
  • Kondensatorer: 3 * 0.1uF keramiske kondensatorer
  • Veroboard eller zero board
  • Skru terminaler
  • Loddejern og loddetinn
  • Arduino Uno eller et annet kompatibelt brett
  • OLED -skjerm
  • Koble til brødtråder

Trinn 1: Samle de nødvendige komponentene

Samle de nødvendige komponentene
Samle de nødvendige komponentene

Dette prosjektet bruker veldig enkle og enkle komponenter: de inkluderer motstander, keramiske kondensatorer, operasjonsforsterker og en veroboard for prototyping.

Valg og verdi av komponenter avhenger av applikasjonstypen og effektområdet du vil måle.

Trinn 2: Arbeidsprinsippet

Arbeidsprinsippet
Arbeidsprinsippet
Arbeidsprinsippet
Arbeidsprinsippet
Arbeidsprinsippet
Arbeidsprinsippet
Arbeidsprinsippet
Arbeidsprinsippet

Strømmodulens arbeid er basert på to konsepter for kretsteori og grunnleggende elektrisitet: Spenningsdelerkonseptet for måling av inngangsspenningen og Ohms lov for å beregne strømmen som strømmer gjennom kretsen. Vi bruker en shuntmotstand for å skape et veldig lite spenningsfall over den. Dette spenningsfallet er proporsjonalt med mengden strøm som strømmer gjennom shunten. Denne lille spenningen når den forsterkes av en operasjonsforsterker, kan brukes som inngang til en mikrokontroller som kan programmeres til å gi oss gjeldende verdi. Operasjonsforsterkeren brukes som en ikke -inverterende forsterker hvor forsterkningen bestemmes av verdiene til tilbakemeldingen motstand R2 og R1. Ved å bruke den ikke -inverterende konfigurasjonen kan vi ha et felles grunnlag som målereferanse. For dette måles strømmen på den lave siden av kretsen. For søknaden min har jeg valgt en gevinst på 46 ved å bruke 100K og 2.2K motstand som tilbakemeldingsnettverk. Spenningsmåling utføres ved å bruke en spenningsdelerkrets som deler inngangsspenningen i forhold til motstandsnettverket som brukes.

Både gjeldende verdi fra OP-Amp og spenningsverdien fra divider-nettverket kan mates inn i to analoge innganger på arduinoen slik at vi kan beregne effekten som forbrukes av en last.

Trinn 3: Samle delene

Å bringe delene sammen
Å bringe delene sammen
Å bringe delene sammen
Å bringe delene sammen
Å bringe delene sammen
Å bringe delene sammen

La oss starte konstruksjonen av vår kraftmodul ved å bestemme posisjonen til skrueterminalene for inngangs- og utgangstilkobling. Etter å ha merket de riktige posisjonene, lodder vi skrueterminalene og shuntmotstanden på plass.

Trinn 4: Legge til delene for Voltage Sense Network

Legge til delene for Voltage Sense Network
Legge til delene for Voltage Sense Network
Legge til delene for Voltage Sense Network
Legge til delene for Voltage Sense Network
Legge til delene for Voltage Sense Network
Legge til delene for Voltage Sense Network

For registrering av inngangsspenning bruker jeg et spenningsdeler -nettverk på 10K og 1K. Jeg la også til en 0,1 uF kondensator på tvers av 1K -motstanden for å jevne ut spenningene. Spenningsfølingsnettverket er loddet nær inngangsterminalen

Trinn 5: Legge til delene for Current Sense Network

Legge til delene for Current Sense Network
Legge til delene for Current Sense Network
Legge til delene for Current Sense Network
Legge til delene for Current Sense Network
Legge til delene for Current Sense Network
Legge til delene for Current Sense Network
Legge til delene for Current Sense Network
Legge til delene for Current Sense Network

Strømmen måles ved å beregne og forsterke spenningsfallet over shuntmotstanden med en forhåndsdefinert forsterkning satt av motstandsnettverket. Ikke inverterende forsterkningsmodus brukes. Det er ønskelig å holde loddesporene små for å unngå uønsket spenningsfall.

Trinn 6: Fullfør de gjenværende tilkoblingene og fullfør bygget

Fullføre de gjenværende tilkoblingene og fullføre bygget
Fullføre de gjenværende tilkoblingene og fullføre bygget
Fullføre de gjenværende tilkoblingene og fullføre bygget
Fullføre de gjenværende tilkoblingene og fullføre bygget
Fullføre de gjenværende tilkoblingene og fullføre bygget
Fullføre de gjenværende tilkoblingene og fullføre bygget

Med spennings- og strømfølelsesnettverk tilkoblet og loddet, er det på tide å lodde de mannlige toppnålene og gjøre de nødvendige tilkoblingene av strøm og signalutganger. Modulen blir drevet av standard driftsspenning på 5 volt som vi enkelt kan få fra et arduino -kort. De to spenningsfeilutgangene blir koblet til de analoge inngangene til arduinoen.

Trinn 7: Koble modulen til Arduino

Koble modulen til Arduino
Koble modulen til Arduino
Koble modulen til Arduino
Koble modulen til Arduino
Koble modulen til Arduino
Koble modulen til Arduino
Koble modulen til Arduino
Koble modulen til Arduino

Når modulen er fullført, er det nå endelig tid for å koble den til en Arduino og få den til å kjøre. For å se verdiene har jeg brukt en OLED -skjerm som brukte I2C -protokollen for å kommunisere med arduinoen. Parametrene som vises på skjermen er Spenning, Strøm og Strøm.

Trinn 8: Prosjektkode og kretsdiagram

Prosjektkode og kretsdiagram
Prosjektkode og kretsdiagram

Jeg har lagt ved kretsdiagrammet og koden til strømmodulen i dette trinnet (tidligere hadde jeg lagt ved.ino- og.txt -filen som inneholdt koden, men noen serverfeil forårsaket at koden var utilgjengelig eller uleselig for brukere, så jeg skrev hele kode i dette trinnet. Jeg vet at det ikke er en god måte å dele koden:(). Du kan gjerne endre denne koden i henhold til dine krav. Jeg håper dette prosjektet var nyttig for deg. Del gjerne tilbakemeldingen i kommentarene. Skål!

#inkludere

#inkludere

#inkludere

#inkludere

#define OLED_RESET 4 Adafruit_SSD1306 display (OLED_RESET);

float val = 0;

flytestrøm = 0;

flytespenning = 0;

flyteeffekt = 0;

ugyldig oppsett () {

pinMode (A0, INNGANG);

pinMode (A1, INNGANG);

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // initialiser med I2C addr 0x3C (for 128x32) display.display ();

forsinkelse (2000);

// Fjern bufferen.

display.clearDisplay ();

display.setTextSize (1);

display.setCursor (0, 0);

display.setTextColor (HVIT);

Serial.begin (9600); // For å se verdiene på den serielle skjermen

}

void loop () {

// tar gjennomsnittet for stabile avlesninger

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

current = current + analogRead (A0);

spenning = spenning + analogLes (A1); }

nåværende = (nåværende/20); nåværende = nåværende * 0,0123 * 5,0; // kalibreringsverdi, skal endres i henhold til brukte komponenter

spenning = (spenning/20); spenning = spenning * 0,0508 * 5,0; // kalibreringsverdi, endres i henhold til brukte komponenter

strøm = spenning*strøm;

// skrive ut verdiene på den serielle skjermen

Serial.print (spenning);

Serial.print ("");

Serial.print (nåværende);

Serial.print ("");

Serial.println (strøm);

// skrive ut verdiene på OLED -skjermen

display.setCursor (0, 0);

display.print ("Spenning:");

display.print (spenning);

display.println ("V");

display.setCursor (0, 10);

display.print ("Current:");

display.print (nåværende);

display.println ("A");

display.setCursor (0, 20);

display.print ("Power:");

display.print (strøm);

display.println ("W");

display.display ();

forsinkelse (500); // oppdateringsfrekvens angitt av forsinkelsen

display.clearDisplay ();

}

Anbefalt: