- Nødvendig materiale
- Kretsdiagram
- Måleenhet
- Beregnings- og skjermenhet
- Programmering av Arduino
- Hvordan måle med mer nøyaktighet?
- Arbeid og testing
Som elektronikkingeniører er vi alltid avhengige av målere / instrumenter for å måle og analysere virkningen av en krets. Fra og med et enkelt multimeter til en kompleks strømkvalitetsanalysator eller DSO har alt sine egne unike applikasjoner. De fleste av disse målerne er lett tilgjengelige og kan kjøpes basert på parametrene som skal måles og nøyaktigheten. Men noen ganger kan vi havne i en situasjon der vi trenger å bygge våre egne målere. Si for eksempel at du jobber med et solcelleprosjekt, og at du vil beregne strømforbruket til lasten din. I slike scenarier kan vi bygge vårt eget Wattmeter ved hjelp av en enkel mikrokontrollerplattform som Arduino.
Å bygge dine egne målere reduserer ikke bare kostnadene ved testing, men gir oss også rom for å lette prosessen med testing. Som et wattmeter bygget med Arduino kan det enkelt justeres for å overvåke resultatene på seriell skjerm og plotte en graf på seriell plotter eller legge til et SD-kort for automatisk å logge verdiene for spenning, strøm og kraft med forhåndsdefinerte intervaller. Høres interessant ut !? Så la oss komme i gang…
Nødvendig materiale
- Arduino Nano
- LM358 Op-Amp
- 7805 Spenningsregulator
- 16 * 2 LCD-skjerm
- 0,22 ohm 2Watt shuntmotstand
- 10k trimmerpotte
- 10k, 20k, 2.2k, 1k motstand
- 0.1uF kondensatorer
- Testbelastning
- Perf bord eller brødbrett
- Loddesett (valgfritt)
Kretsdiagram
Det komplette kretsskjemaet for arduino wattmeterprosjektet er gitt nedenfor.
For å gjøre det lettere å forstå er arduino wattmeterkretsen delt i to enheter. Den øvre delen av kretsen er måleenheten, og den nedre delen av kretsen er beregnings- og displayenheten. For folk som ikke er kjent med denne typen kretsløp, fulgte etikettene. Eksempel + 5V er etikett som betyr at alle pinnene som etiketten er koblet til skal betraktes som de er koblet sammen. Etiketter brukes normalt for å gjøre kretsskjemaet pent.
Kretsen er designet for å passe inn i systemer som opererer mellom 0-24V med et strømområde på 0-1A, med tanke på spesifikasjonen til en solcellepanel. Men du kan enkelt utvide rekkevidden når du forstår hvordan kretsen fungerer. Det underliggende prinsippet bak kretsen er å måle spenningen over belastningen og strømmen gjennom den for å beregne strømforbruket av den. Alle målte verdier vises i en 16 * 2 alfanumerisk LCD-skjerm.
La oss videre dele kretsen i små segmenter slik at vi kan få et klart bilde av hvordan kretsen er innrykket for å fungere.
Måleenhet
Måleenheten består av en potensiell skillelinje som hjelper oss med å måle spenningen, og en lukket motstand med en ikke-inverterende Op-amp brukes til å hjelpe oss med å måle strømmen gjennom kretsen. Den potensielle skilledelen fra kretsen ovenfor er vist nedenfor
Her er inngangsspenningen representert av Vcc, som tidligere fortalt, designer vi kretsen for et spenningsområde fra 0V til 24V. Men en mikrokontroller som Arduino kan ikke måle så høye verdier av spenning; den kan bare måle spenning fra 0-5V. Så vi må kartlegge (konvertere) spenningsområdet fra 0-24V til 0-5V. Dette kan enkelt gjøres ved å bruke en potensiell skillekrets som vist nedenfor. Motstanden 10k og 2.2k danner sammen potensialdelerkretsen. Utgangsspenningen til en potensiell skillelinje kan beregnes ved hjelp av formlene nedenfor. Det samme brukes til å bestemme verdien på motstandene dine. Du kan bruke vår online kalkulator for å beregne verdien på motstanden hvis du redesigner kretsen.
Vout = (Vin × R2) / (R1 + R2)
Kartlagt 0-5V kan fås fra den midtre delen som er merket som Voltage. Denne tilordnede spenningen kan deretter mates til Arduino Analog pin senere.
Deretter må vi måle strømmen gjennom LOAD. Som vi vet kan mikrokontrollere bare lese analog spenning, så vi må på en eller annen måte konvertere verdien av strøm til spenning. Det kan gjøres ved ganske enkelt å legge til en motstand (shuntmotstand) i banen som ifølge Ohms lov vil slippe en spenningsverdi over den som er proporsjonal med strømmen som strømmer gjennom den. Verdien av dette spenningsfallet vil være veldig mindre, så vi bruker en op-amp for å forsterke den. Kretsen for det samme er vist nedenfor
Her er verdien av shuntmotstand (SR1) 0,22 ohm. Som sagt tidligere designer vi kretsen for 0-1A, så basert på Ohms lov kan vi beregne spenningsfallet over denne motstanden som vil være rundt 0,2V når maksimalt 1A strøm passerer gjennom belastningen. Denne spenningen er veldig liten for en mikrokontroller å lese, vi bruker en Op-Amp i ikke-inverterende forsterkermodus for å øke spenningen fra 0.2V til høyere nivå for Arduino å lese.
Op-Amp i ikke-inverterende modus er vist ovenfor. Forsterkeren er designet for å ha en forsterkning på 21, slik at 0,2 * 21 = 4,2V. Formlene for å beregne forsterkningen til Op-amp er gitt nedenfor, du kan også bruke denne online forsterkningskalkulatoren for å få verdien av motstanden din hvis du redesigner kretsen.
Gain = Vout / Vin = 1 + (Rf / Rin)
Her i vårt tilfelle er verdien av Rf 20k og verdien av Rin er 1k, som gir oss en gianverdi på 21. Den forsterkede spenningen fra Op-amp blir deretter gitt til et RC-filter med motstand 1k og en kondensator 0.1uF til filtrer eventuell støy som er koblet. Til slutt mates spenningen til Arduino analoge pin.
Den siste delen som er igjen i måleenheten er spenningsregulatordelen. Siden vi vil gi en variabel inngangsspenning, trenger vi en regulert + 5V volt for at Arduino og Op-amp skal fungere. Denne regulerte spenningen vil bli levert av 7805 spenningsregulatoren. En kondensator legges til ved utgangen for å filtrere støyen.
Beregnings- og skjermenhet
I måleenheten har vi designet kretsen for å konvertere spennings- og strømparametrene til 0-5V som kan mates til Arduino analoge pinner. Nå i denne delen av kretsen vil vi koble disse spenningssignalene til Arduino og også grensesnitt en 16 × 2 alfanumerisk skjerm til Arduino slik at vi kan se resultatene. Kretsen for det samme er vist nedenfor
Som du kan se, er spenningsstiften koblet til Analog pin A3, og den aktuelle pin er koblet til Analog pin A4. LCD-skjermen får strøm fra + 5V fra 7805 og er koblet til de digitale pinnene til Arduino for å fungere i 4-biters modus. Vi har også brukt et potensiometer (10k) koblet til Con-pin for å variere kontrasten på LCD-skjermen.
Programmering av Arduino
Nå som vi har god forståelse av maskinvaren, la oss åpne Arduino og begynne å programmere. Hensikten med koden er å lese den analoge spenningen på pinne A3 og A4 og beregne spennings-, strøm- og strømverdien og til slutt vise den på LCD-skjermen. Det komplette programmet for å gjøre det samme er gitt på slutten av siden, som kan brukes som sådan for maskinvaren som er diskutert ovenfor. Videre er koden delt inn i små utdrag og forklart.
Som alle programmer begynner vi med å definere pinnene vi har brukt. I ut-prosjektet brukes A3- og A4-pinnen til å måle henholdsvis spenning og strøm, og de digitale pinnene 3,4,8,9,10 og 11 brukes til å koble LCD-skjermen til Arduino
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Nevn PIN-koden for LCD-tilkobling LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Vi har også tatt med en overskriftsfil kalt flytende krystall for å koble LCD-skjermen til Arduino. Deretter initialiserer vi LCD-skjermen i installasjonsfunksjonen og viser en introtekst som “Arduino Wattmeter” og venter i to sekunder før du tømmer den. Koden for det samme er vist nedenfor.
ugyldig oppsett () { lcd.begin (16, 2); // Initialiser 16 * 2 LCD lcd.print ("Arduino Wattmeter"); // Intro Meldingslinje 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Intro Message line 2 delay (2000); lcd.clear (); }
Inne i hovedsløyfefunksjonen bruker vi den analoge lesefunksjonen til å lese spenningsverdien fra pinnen A3 og A4. Som vi vet, har Arduino ADC-utgangsverdien fra 0-1203 siden den har en 10-bit ADC. Denne verdien må deretter konverteres til 0-5V, som kan gjøres ved å multiplisere med (5/1023). Så igjen tidligere i maskinvaren har vi kartlagt den faktiske verdien av spenning fra 0-24V til 0-5V og den faktiske verdien av strømformen 0-1A til 0-5V. Så nå må vi bruke en multiplikator for å tilbakestille disse verdiene til den faktiske verdien. Dette kan gjøres ved å multiplisere den med en multiplikatorverdi. Verdien på multiplikatoren kan enten beregnes teoretisk ved hjelp av formlene gitt i maskinvareseksjonen, eller hvis du har et kjent sett med spennings- og strømverdier, kan du beregne det praktisk.Jeg har fulgt det siste alternativet fordi det har en tendens til å være mer nøyaktig i sanntid. Så her er verdien av multiplikatorer 6,46 og 0,239. Derfor ser koden ut som nedenfor
flyte Voltage_Value = analogRead (Read_Voltage); flyte Current_Value = analogRead (Read_Current); Voltage_Value = Voltage_Value * (5.0 / 1023.0) * 6.46; Current_Value = Current_Value * (5.0 / 1023.0) * 0.239;
Hvordan måle med mer nøyaktighet?
Ovennevnte måte å beregne verdien av faktisk spenning og strøm vil fungere fint. Men lider av en ulempe, det vil si forholdet mellom den målte ADC-spenningen og den faktiske spenningen vil ikke være lineær, og derfor vil en enkelt multiplikator ikke gi veldig nøyaktige resultater, det samme gjelder også for strøm.
For å forbedre nøyaktigheten kan vi tegne sett med målte ADC-verdier med faktiske verdier ved hjelp av et kjent verdisett, og deretter bruke dataene til å plotte en graf og utlede multiplikatorligningen ved hjelp av den lineære regresjonsmetoden. Du kan henvise til Arduino dB-måleren der jeg har brukt en lignende metode.
Til slutt, når vi først har beregnet verdien av faktisk spenning og faktisk strøm gjennom belastningen, kan vi beregne kraften ved hjelp av formlene (P = V * I). Deretter viser vi alle de tre verdiene på LCD-skjermen ved hjelp av koden nedenfor.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Voltage_Value); lcd.print (""); lcd.print ("I ="); lcd.print (Current_Value); flyte Power_Value = Voltage_Value * Current_Value; lcd.setCursor (0, 1); lcd.print ("Power ="); lcd.print (Power_Value);
Arbeid og testing
For veiledningens skyld har jeg brukt et perf-kort for å lodde alle komponentene som vist i kretsen. Jeg har brukt en Phoenix-skrueterminal for å koble til lasten og vanlig DC-fatningskontakt for å koble til strømkilden min. Arduino Nano-kortet og LCD-skjermen er montert på en kvinnelig Bergstik slik at de kan brukes på nytt om nødvendig senere.
Etter å ha gjort maskinvaren klar, last opp Arduino-koden til Nano-kortet. Juster trimmerpotten for å kontrollere kontrastnivået på LCD-skjermen til du ser en klar introtekst. For å teste brettet, kobler du lasten til skrueterminalkontakten og kilden til fatjekk. Kildespenningen skal være mer enn 6V for at dette prosjektet skal fungere, siden Arduino krevde + 5V for å fungere. HVIS alt fungerer bra, bør du se verdien av spenningen over belastningen og strømmen gjennom den vises på første linje på LCD-skjermen og den beregnede effekten som vises på den andre linjen på LCD-skjermen som vist nedenfor.
Den morsomme delen av å bygge noe ligger i å teste det for å sjekke hvor langt det vil fungere skikkelig. For å gjøre det har jeg brukt 12V bilindikator bubs som last og RPS som kilde. Siden RPS selv kan måle og vise verdien av strøm og spenning, vil det være enkelt for oss å kryssjekke nøyaktigheten og ytelsen til kretsen vår. Og ja, jeg brukte også RPS-en min til å kalibrere multiplikatorverdien min slik at jeg kommer nær nøyaktig verdi.
Komplett arbeid finner du i videoen som er gitt på slutten av denne siden. Håper du forsto kretsen og programmet og lærte noe nyttig. Hvis du har problemer med å få dette til å fungere, legg det inn i kommentarseksjonen nedenfor eller skriv på forumene våre for mer teknisk hjelp.
Dette Arduino-baserte Wattmeter-prosjektet har mange flere oppgraderinger som kan legges til for å øke ytelsen til automatisk datalogging, plotte graf, varsle over spenning eller over nåværende situasjoner osv. Så vær nysgjerrig og gi meg beskjed om hva du vil bruke dette til.