Innehållsförteckning:
- Tillbehör
- Steg 1: Steg 1: schemat
- Steg 2: Steg 2: Kod- och motståndsberäkningarna
- Steg 3: Steg 3: Låt oss testa det
Video: Arduino Volt Meter (0-100V DC) - Version 2 (bättre): 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
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
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
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
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:
Hur man gör och testar en bättre DAC med ESP32: 5 steg
Hur man gör och testar en bättre DAC med ESP32: ESP32 har 2 8-bitars digitala till analoga omvandlare (DAC). Dessa DAC gör att vi kan producera godtyckliga spänningar inom ett visst område (0-3.3V) med 8 bitars upplösning. I den här instruktionsboken kommer jag att visa dig hur du bygger en DAC och karakteriserar dess
Bättre projekt med PCB: 6 steg
Bättre projekt med hjälp av kretskort: Om du har ägnat tid åt att arbeta med elektronikprojekt vet du hur roligt och spännande det kan vara. Ingenting är mer spännande än att se din krets vakna till liv precis framför dina ögon. Det blir ännu mer spännande när ditt projekt blir till en
Narrow Band IoT: Smart Lighting & Metering banar väg för ett bättre och hälsosammare ekosystem: 3 steg
Narrow Band IoT: Smart Lighting & Metering banar väg för ett bättre och hälsosammare ekosystem: Automation har hittat sin väg inom nästan alla sektorer. Från tillverkning till vård, transport och leveranskedja har automatiseringen sett dagens ljus. Tja, alla dessa är utan tvekan tilltalande, men det finns en som verkar
Bättre sätt att visa/dokumentera filer på instruktioner: 4 steg
Bättre sätt att visa/dokumentera filer på instruktioner: Människor inkluderar ofta filer där för projekt via Instructables -uppladdningar. Ofta är det programvarukällfiler som till och med kan vara det lärande hjärtans hjärta. Men Instructables ger inte läsaren ett enkelt sätt att läsa och granska koden. (
Bygg en bättre Raspberry Pi -strömknapp: 4 steg
Bygg en bättre Raspberry Pi-strömknapp: Det är väldigt enkelt att göra en Raspberry-avstängning eller avstängningsknapp. Det finns massor av sådana projekt på webben och några här på Instructables, men ingen av dem (som jag kan se) berättar när din Pi faktiskt har stängt av och därför är det