Innehållsförteckning:

Arduino Volt Meter (0-100V DC) - Version 2 (bättre): 3 steg
Arduino Volt Meter (0-100V DC) - Version 2 (bättre): 3 steg

Video: Arduino Volt Meter (0-100V DC) - Version 2 (bättre): 3 steg

Video: Arduino Volt Meter (0-100V DC) - Version 2 (bättre): 3 steg
Video: Simple Arduino Energy Meter | Volt -Amp meter 20 Amp 2024, November
Anonim
Image
Image
Steg 1: schemat
Steg 1: schemat

I denna instruerbara har jag byggt en voltmeter för att mäta högspänningar DC (0-100v) med relativ precision och noggrannhet med hjälp av en Arduino Nano och en ADS 1115 ADC.

Detta är en andra version av voltmätaren som använde min tidigare instruerbara här:

De testmätningar jag tog var korrekta, mestadels inom 0,1v från den faktiska spänningen som mättes med en vanlig voltmeter (jag använde en Astro AI DM6000AR).

Detta är mycket bättre och lättare enligt mig än att använda en extern spänningsreferens på Arduino.

Tillbehör

1 x Arduino Nano - länk

1 x Oled Display (SSD 1306) - Länk

1 x ADS 1115 - 16 bitars ADC - länk

1 x 1/4W (jag föreslår att du använder 1W motstånd dock) 1% motstånd - 220k ohm - Länk

1 x 1/4W (jag föreslår att du använder 1W motstånd dock) 1% motstånd - 10k ohm - Länk

Brödbräda och trådar - Länk

Astro AI DM6000AR - Länk

USB Power Bank - länk

9V batterier - länk

CanadianWinters är en deltagare i Amazon Services LLC Associates Program, ett affiliate -annonsprogram som är utformat för att ge webbplatser möjlighet att tjäna avgifter genom att länka till Amazon.com och anslutna webbplatser. Genom att använda dessa länkar tjänar jag som Amazon Associate på kvalificerade köp, även om du köper något annat-och det kommer inte att kosta dig någonting.

Steg 1: Steg 1: schemat

Steg 1: schemat
Steg 1: schemat

Jag kopplade alla delar enligt schemat ovan.

Jag knöt ADDR -stiftet på ADC1115 till marken. Detta ställer in adressen för ADC till 0x48.

Steg 2: Steg 2: Kod- och motståndsberäkningarna

Steg 2: Kod- och motståndsberäkningarna
Steg 2: Kod- och motståndsberäkningarna

Som i den tidigare instruerbara är tanken med kretsen att likspänningen som ska mätas går genom ett spänningsmotstånd. Den skalade spänningen och kommer sedan in i den analoga stiftet på ADC-omvandlaren som ska läsas, skickas sedan till Arduino via I2C och sedan skalas om och visas på OLed-displayen.

Jag använde inte någon medelvärde eller utjämning i koden i det här fallet, eftersom avläsningarna verkar ganska exakta och exakta. För att minska bullret kanske du vill lägga till en liten kondensator mellan A0 (på ADC) och jord. Det krävdes dock inte för mitt test.

En sak som jag märkte var lite brus när det inte fanns något batteri (0 volt). Jag använde den seriella bildskärmen på Arduino för att visa ADC -värdet och korrigera/justera det via kod.

Som i föregående instruerbara, gjorde jag ett kalkylblad som automatiserar beräkningarna om du vill använda olika motståndsvärden i spänningsdelaren: Länk till Google Sheet

Här är koden jag använde för detta projekt:

#omfatta

#include #include #include Adafruit_ADS1115 annonser (0x48); // Adress till ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotation, [reset]) int calib = 7; // Värde för kalibrering av ADS1115 för att minska felflödesspänningen = 0; // används för att lagra spänningsvärdesflöde Radjust = 0,043421905; // Spänningsdelningsfaktor (R2 / R1+R2) float vbat = 0; // slutspänning efter kalkyl- spänning av batteriet // variabler för att uppdatera skärmen utan att använda fördröjning osignerad lång tidigareMillis = 0; // kommer att lagra förra gången skärmen uppdaterades // konstanter ändras inte: const långt intervall = 250; // intervall för att uppdatera skärmen (millisekunder) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 bitars ADC läsning av ingång A0 adc0 = ads.readADC_SingleEnded (0); spänning = ((adc0 + kalib) * 0,1875)/1000; osignerad lång strömMillis = millis (); vbat = spänning/Radjust; // Förhindra att negativ spänning visas när batteriet är frånkopplat om (vbat = intervall) {previousMillis = currentMillis; u8g2.clearBuffer (); // rensa den interna menyn // Packspänningsdisplay - typsnitt på den här sidan: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px teckensnitt u8g2.setFont (u8g2_font_fub35_tr); // 35px teckensnitt u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px teckensnitt u8g2.setCursor (1, 60); u8g2.print ("volt"); } u8g2.sendBuffer (); // överför internt minne till displayfördröjningen (1); }

Steg 3: Steg 3: Låt oss testa det

Steg 3: Låt oss testa det!
Steg 3: Låt oss testa det!

För att testa denna voltmeter använde jag 10x 9v batterier som jag fick i en lokal butik. Den här gången kunde jag mäta upp till 97 volt! Jag planerar att använda denna voltmeter för att mäta spänningen på mina elcyklar batteripaket (de har spänningar från 24-60v med enstaka 72v).

När elektroniken väl har förpackats i ett kretskort och en liten låda blir detta en trevlig och bärbar batterimätare. Grafiken och teckensnitt på OLED kan anpassas efter dina behov (t.ex. större teckensnitt för enkel läsning). Mitt mål var att ha en spänningsavläsning på Oled/Arduino -mätaren inte så långt från min Digital Multi Meter. Jag siktade på +/- 0, 3v max delta.

Som du kan se från videon i början av Instructable kunde jag arkivera detta! De flesta avläsningarna var perfekta!

Jag hoppas att du tyckte om denna instruktionsbara och låt mig veta dina tankar!

Rekommenderad: