- Material som krävs
- Kretsschema
- Mätenhet
- Beräknings- och displayenhet
- Programmering av Arduino
- Hur mäter jag med mer noggrannhet?
- Arbeta och testa
Som elektronikingenjörer är vi alltid beroende av mätare / instrument för att mäta och analysera kretsens funktion. Börjar med en enkel multimeter till en komplex effektkvalitetsanalysator eller DSO har allt sina egna unika applikationer. De flesta av dessa mätare är tillgängliga och kan köpas baserat på parametrarna som ska mätas och deras noggrannhet. Men ibland kan vi hamna i en situation där vi behöver bygga våra egna mätare. Säg till exempel att du arbetar med ett sol-solcellsprojekt och du vill beräkna din energiförbrukning, i sådana scenarier kan vi bygga vår egen Wattmeter med en enkel mikrokontrollerplattform som Arduino.
Att bygga dina egna mätare sänker inte bara testkostnaderna utan ger oss också utrymme för att underlätta testprocessen. Liksom, en wattmeter byggd med Arduino kan enkelt justeras för att övervaka resultaten på seriell bildskärm och plotta en graf på seriell plotter eller lägga till ett SD-kort för att automatiskt logga värdena för spänning, ström och effekt med fördefinierade intervall. Låter intressant rätt !? Så låt oss komma igång…
Material som krävs
- Arduino Nano
- LM358 Op-Amp
- 7805 Spänningsregulator
- 16 * 2 LCD-skärm
- 0,22 ohm 2Watt shuntmotstånd
- 10k trimmerkruka
- 10k, 20k, 2.2k, 1k motstånd
- 0.1uF kondensatorer
- Testbelastning
- Perfbräda eller brädbräda
- Lödkit (tillval)
Kretsschema
Det fullständiga kretsschemat för arduino wattmeterprojektet ges nedan.
För att underlätta förståelsen är arduino-wattmeterkretsen uppdelad i två enheter. Den övre delen av kretsen är mätenheten och den nedre delen av kretsen är beräknings- och displayenheten. För personer som är nya i denna typ av kretsar följde etiketterna. Exempel + 5V är etikett vilket innebär att alla stift till vilka etiketten är ansluten ska betraktas som de är kopplade ihop. Etiketter används normalt för att kretsschemat ska se snyggt ut.
Kretsen är utformad för att passa in i system som arbetar mellan 0-24V med ett strömområde 0-1A med tanke på specifikationen för en solceller. Men du kan enkelt utöka intervallet när du förstår kretsens funktion. Den underliggande principen bakom kretsen är att mäta spänningen över belastningen och strömmen genom den för att beräkna strömförbrukningen av den. Alla uppmätta värden visas i en 16 * 2 alfanumerisk LCD.
Längre nedan låt oss dela kretsen i små segment så att vi kan få en tydlig bild av hur kretsen är indragen för att fungera.
Mätenhet
Mätenheten består av en potentialdelare som hjälper oss att mäta spänningen och ett slutmotstånd med en icke-inverterande Op-amp används för att hjälpa oss att mäta strömmen genom kretsen. Den potentiella delningsdelen från ovanstående krets visas nedan
Här representeras ingångsspänningen av Vcc, som sagt tidigare designar vi kretsen för ett spänningsområde från 0V till 24V. Men en mikrokontroller som Arduino kan inte mäta så höga spänningsvärden; det kan bara mäta spänning från 0-5V. Så vi måste kartlägga (konvertera) spänningsområdet 0-24V till 0-5V. Detta kan enkelt göras genom att använda en potentiell delarkrets som visas nedan. Motståndet 10k och 2.2k bildar tillsammans den potentiella delarkretsen. Utgångsspänningen för en potentialdelare kan beräknas med formlerna nedan. Samma används för att bestämma värdet på dina motstånd, du kan använda vår online-kalkylator för att beräkna värdet på motståndet om du omformar kretsen.
Vout = (Vin × R2) / (R1 + R2)
Den mappade 0-5V kan erhållas från den mellersta delen som är märkt som Voltage. Denna mappade spänning kan sedan matas till Arduino Analog-stift senare.
Därefter måste vi mäta strömmen genom LOAD. Som vi vet kan mikrokontroller bara läsa analog spänning, så vi måste på något sätt konvertera strömvärdet till spänning. Det kan göras genom att helt enkelt lägga till ett motstånd (shuntmotstånd) i banan som enligt Ohms lag kommer att släppa ett spänningsvärde över det som är proportionellt mot strömmen som strömmar genom det. Värdet på detta spänningsfall kommer att bli mycket mindre så vi använder en op-amp för att förstärka det. Kretsen för densamma visas nedan
Här är värdet på shuntmotstånd (SR1) 0,22 ohm. Som sagt tidigare designar vi kretsen för 0-1A så baserat på Ohms lag kan vi beräkna spänningsfallet över detta motstånd som kommer att vara runt 0,2V när maximalt 1A ström passerar genom lasten. Denna spänning är mycket liten för en mikrokontroller att läsa, vi använder en Op-Amp i Icke-inverterande förstärkarläge för att öka spänningen från 0,2 V till högre nivå för Arduino att läsa.
Op-Amp i icke-inverterande läge visas ovan. Förstärkaren är konstruerad för att ha en förstärkning på 21, så att 0,2 * 21 = 4,2V. Formlerna för att beräkna förstärkningen av Op-amp ges nedan, du kan också använda denna online gain-kalkylator för att få värdet på ditt motstånd om du omformar kretsen.
Förstärkning = Vout / Vin = 1 + (Rf / Rin)
Här i vårt fall är värdet på Rf 20k och värdet på Rin är 1k vilket ger oss ett gianvärde på 21. Den förstärkta spänningen från Op-amp ges sedan till ett RC-filter med motstånd 1k och en kondensator 0.1uF till filtrera eventuellt kopplat ljud. Slutligen matas spänningen till Arduino analoga stift.
Den sista delen som finns kvar i mätenheten är spänningsregulatorns del. Eftersom vi kommer att ge en variabel ingångsspänning behöver vi en reglerad + 5V volt för att Arduino och Op-amp ska fungera. Denna reglerade spänning kommer att tillhandahållas av 7805 spänningsregulator. En kondensator läggs till vid utgången för att filtrera bruset.
Beräknings- och displayenhet
I mätenheten har vi konstruerat kretsen för att konvertera spännings- och strömparametrarna till 0-5V som kan matas till Arduino Analog-stift. Nu i denna del av kretsen kommer vi att ansluta dessa spänningssignaler till Arduino och även koppla en 16 × 2 alfanumerisk skärm till Arduino så att vi kan se resultaten. Kretsen för densamma visas nedan
Som du kan se är spänningsstiftet anslutet till analogt stift A3 och det aktuella stiftet är anslutet till det analoga stiftet A4. LCD-skärmen drivs från + 5V från 7805 och är ansluten till Arduinos digitala stift för att fungera i 4-bitars läge. Vi har också använt en potentiometer (10k) ansluten till Con-pin för att variera LCD-skärmens kontrast.
Programmering av Arduino
Nu när vi har god förståelse för hårdvaran, låt oss öppna Arduino och börja programmera. Syftet med koden är att läsa den analoga spänningen på stift A3 och A4 och beräkna spännings-, ström- och effektvärdet och slutligen visa det på LCD-skärmen. Det kompletta programmet för att göra detsamma ges i slutet av sidan som kan användas som sådan för hårdvaran som diskuterats ovan. Vidare delas koden upp i små utdrag och förklaras.
Som alla program börjar vi med att definiera stiften som vi har använt. I utprojekt används A3- och A4-stift för att mäta spänning respektive ström och de digitala stiften 3,4,8,9,10 och 11 används för gränssnitt mellan LCD och Arduino
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Nämn PIN-numret för LCD-anslutning LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Vi har också inkluderat en rubrikfil som kallas flytande kristall för att gränssnitt LCD med Arduino. Därefter initialiserar vi LCD-displayen i installationsfunktionen och visar en introduktionstext som ”Arduino Wattmeter” och väntar i två sekunder innan du rensar den. Koden för detsamma visas nedan.
ogiltig installation () { lcd.begin (16, 2); // Initiera 16 * 2 LCD lcd.print ("Arduino Wattmeter"); // Intro Meddelandelinje 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Intro Message Line 2 delay (2000); lcd.clear (); }
Inuti huvudslingfunktionen använder vi den analoga läsfunktionen för att läsa av spänningsvärdet från stiftet A3 och A4. Som vi vet är Arduino ADC-utgångsvärdet 0-1203 eftersom det har en 10-bitars ADC. Detta värde måste sedan konverteras till 0-5V vilket kan göras genom att multiplicera med (5/1023). Sedan igen tidigare i hårdvaran har vi kartlagt det verkliga spänningsvärdet från 0-24V till 0-5V och det verkliga värdet av strömformen 0-1A till 0-5V. Så nu måste vi använda en multiplikator för att återställa dessa värden till det verkliga värdet. Detta kan göras genom att multiplicera det med ett multiplikatorvärde. Multiplikatorns värde kan antingen beräknas teoretiskt med hjälp av formlerna i maskinvarusektionen eller om du har en känd uppsättning spännings- och strömvärden kan du beräkna det praktiskt.Jag har följt det senare alternativet eftersom det tenderar att vara mer exakt i realtid. Så här är multiplikatorernas värde 6,46 och 0,239. Därför ser koden ut nedan
float Voltage_Value = analogRead (Read_Voltage); float 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;
Hur mäter jag med mer noggrannhet?
Ovanstående sätt att beräkna värdet på faktisk spänning och ström kommer att fungera bra. Men lider av en nackdel, det vill säga förhållandet mellan den uppmätta ADC-spänningen och den faktiska spänningen kommer inte att vara linjär, därför kommer en enda multiplikator inte att ge mycket exakta resultat, samma gäller också för ström.
För att förbättra noggrannheten kan vi plotta uppsättningen av uppmätta ADC-värden med faktiska värden med hjälp av en känd uppsättning värden och sedan använda dessa data för att plotta en graf och härleda multiplikatorekvationen med den linjära regressionsmetoden. Du kan hänvisa Arduino dB-mätaren där jag har använt en liknande metod.
Slutligen, när vi väl har beräknat värdet på den faktiska spänningen och den aktuella strömmen genom belastningen, kan vi beräkna effekten med formlerna (P = V * I). Sedan visar vi alla de tre värdena på LCD-skärmen med hjälp av koden nedan.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Voltage_Value); lcd.print (""); lcd.print ("I ="); lcd.print (Current_Value); float Power_Value = Voltage_Value * Current_Value; lcd.setCursor (0, 1); lcd.print ("Power ="); lcd.print (Power_Value);
Arbeta och testa
För handledningens skull har jag använt ett perf-kort för att lödda alla komponenter som visas i kretsen. Jag har använt en Phoenix-skruvterminal för att ansluta lasten och en vanlig likströmsuttag för att ansluta min strömkälla. Arduino Nano-kortet och LCD-skärmen är monterade på en kvinnlig Bergstik så att de kan återanvändas vid behov senare.
Efter att ha gjort hårdvaran klar laddar du upp Arduino-koden till ditt Nano-kort. Justera trimmerpotten för att kontrollera LCD-skärmens kontrastnivå tills du ser en tydlig introtext. För att testa kortet ansluter du lasten till skruvkontaktanslutningen och källan till fatuttaget. Källspänningen bör vara mer än 6V för att detta projekt ska fungera, eftersom Arduino krävde + 5V för att fungera. OM allt fungerar bra bör du se värdet på spänningen över belastningen och strömmen genom den visas på LCD-skärmens första rad och den beräknade effekten som visas på LCD-skärmens andra rad enligt nedan.
Det roliga med att bygga något ligger i att testa det för att kontrollera hur långt det fungerar korrekt. För att göra det har jag använt 12V-bilindikatorbubblor som belastning och RPS som källa. Eftersom RPS i sig kan mäta och visa värdet på ström och spänning blir det lätt för oss att korskontrollera noggrannheten och prestandan hos vår krets. Och ja, jag använde också min RPS för att kalibrera mitt multiplikatorvärde så att jag kommer nära exakt värde.
Hela arbetet hittar du i videon i slutet av denna sida. Hoppas att du förstod kretsen och programmet och lärde dig något användbart. Om du har några problem med att få detta att fungera, skicka det i kommentarsektionen nedan eller skriv på våra forum för mer teknisk hjälp.
Detta Arduino-baserade Wattmeter-projekt har många fler uppgraderingar som kan läggas till för att öka prestandan för automatisk dataloggning, plottningsdiagram, meddelande över spänning eller över nuvarande situationer etc. Så var nyfiken och låt mig veta vad du skulle använda detta för.