Inhoudsopgave:

Arduino Voltmeter (0-100V DC) - Versie 2 (beter): 3 stappen
Arduino Voltmeter (0-100V DC) - Versie 2 (beter): 3 stappen

Video: Arduino Voltmeter (0-100V DC) - Versie 2 (beter): 3 stappen

Video: Arduino Voltmeter (0-100V DC) - Versie 2 (beter): 3 stappen
Video: How to use Digit Voltmeter 0V-100V DC 3wire? 2024, November
Anonim
Image
Image
Stap 1: de schema's
Stap 1: de schema's

In deze instructable heb ik een voltmeter gebouwd om hoge spanningen DC (0-100v) te meten met relatieve precisie en nauwkeurigheid met behulp van een Arduino Nano en een ADS 1115 ADC.

Dit is een tweede versie van de voltmeter die mijn vorige instructable hier gebruikte:

De testmetingen die ik nam waren nauwkeurig, meestal binnen 0,1 V van de werkelijke spanning gemeten met een standaard voltmeter (ik gebruikte een Astro AI DM6000AR).

Dit is veel beter en gemakkelijker naar mijn mening dan het gebruik van een externe spanningsreferentie op de Arduino.

Benodigdheden

1 x Arduino Nano - Link

1 x Oled-scherm (SSD 1306) - Link

1 x ADS 1115 - 16 bit ADC - Link

1 x 1 / 4W (ik raad echter aan om weerstanden van 1 W te gebruiken) 1% Weerstanden - 220k ohm - Link

1 x 1/4W (ik raad echter aan om weerstanden van 1 W te gebruiken) 1% Weerstanden - 10k ohm - Link

Breadboard en kabels - Link

Astro AI DM6000AR - Link

USB Powerbank - Link

9V-batterijen - Link

CanadianWinters neemt deel aan het Amazon Services LLC Associates-programma, een gelieerd advertentieprogramma dat is ontworpen om sites een manier te bieden om vergoedingen te verdienen door te linken naar Amazon.com en gelieerde sites. Door deze links te gebruiken, verdien ik als Amazon Associate met in aanmerking komende aankopen, zelfs als je iets anders koopt - en het kost je niets.

Stap 1: Stap 1: de schema's

Stap 1: de schema's
Stap 1: de schema's

Ik heb alle onderdelen aangesloten volgens de bovenstaande schema's.

Ik bond de ADDR-pin van de ADC1115 aan de grond. Dit stelt het adres van de ADC in op 0x48.

Stap 2: Stap 2: de code- en weerstandsberekeningen

Stap 2: de code- en weerstandsberekeningen
Stap 2: de code- en weerstandsberekeningen

Net als in de vorige instructable, is het idee van het circuit dat de te meten gelijkspanning door een spanningsweerstand gaat. De geschaalde spanning komt dan in de analoge pin van de ADC-converter om te worden gelezen, vervolgens via I2C aan de Arduino doorgegeven en vervolgens opnieuw geschaald en weergegeven op het OLed-display.

Ik heb in dit geval geen middeling of afvlakking in de code gebruikt, omdat de metingen vrij nauwkeurig en precies lijken. Om de ruis te verminderen, wilt u misschien een kleine condensator toevoegen tussen A0 (op de ADC) en aarde. Het was echter niet nodig voor mijn test.

Een ding dat me opviel, was een beetje geluid als er geen batterij was aangesloten (0 volt). Ik heb de seriële monitor van de Arduino gebruikt om de ADC-waarde weer te geven en via code te corrigeren/aan te passen.

Net als in de vorige instructable, heb ik een spreadsheet gemaakt die de berekeningen automatiseert voor het geval je verschillende weerstandswaarden in de spanningsdeler wilt gebruiken: Link naar Google Sheet

Hier is de code die ik voor dit project heb gebruikt:

#erbij betrekken

#include #include #include Adafruit_ADS1115 ads(0x48); //Adres van de ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);// (rotatie, [reset]) int calib = 7; // Waarde van kalibratie van ADS1115 om foutvlotterspanning = 0 te verminderen; // gebruikt om spanningswaarde float Radjust = 0.043421905 op te slaan; // Spanningsdelerfactor (R2 / R1+R2) float vbat = 0; //eindspanning na calcs- spanning van de batterij //variabelen voor het verversen van het scherm zonder gebruik te maken van vertraging unsigned long previousMillis = 0; // slaat de laatste keer op dat het scherm werd vernieuwd // constanten veranderen niet: const long interval = 250; // interval waarmee het scherm moet worden vernieuwd (milliseconden) void setup (void) { Serial.begin (9600); u8g2.begin(); advertenties.begin(); } void loop (void) { int16_t adc0; // 16 bits ADC lezen van ingang A0 adc0 = ads.readADC_SingleEnded (0); spanning = ((adc0 + calib) * 0.1875)/1000; unsigned long currentMillis = millis(); vbat = spanning/Raanpassen; // Voorkom dat negatieve spanning wordt weergegeven wanneer de batterij wordt losgekoppeld als (vbat = interval) { previousMillis = currentMillis; u8g2.clearBuffer(); // wis het interne geheugen //Pack Voltage display - Lettertypen op deze pagina: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px lettertype u8g2.setFont(u8g2_font_fub35_tr); // 35px lettertype u8g2.setCursor (1, 42); u8g2.print(vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // 10 px lettertype u8g2.setCursor (1, 60); u8g2.print("Volt"); } u8g2.sendBuffer(); // breng intern geheugen over naar de weergavevertraging (1); }

Stap 3: Stap 3: Laten we het uittesten

Stap 3: Laten we het uittesten!
Stap 3: Laten we het uittesten!

Om deze voltmeter te testen heb ik 10x 9v batterijen gebruikt die ik in een plaatselijke winkel kocht. Deze keer kon ik tot 97 volt meten! Ik ben van plan deze voltmeter te gebruiken om de spanning op de accu's van mijn elektrische fietsen te meten (ze hebben spanningen variërend van 24-60v met af en toe 72v).

Zodra de elektronica is verpakt in een pcb en een klein doosje, wordt dit een mooie en draagbare batterijmeter. De afbeeldingen en lettertypen op de OLED kunnen worden aangepast aan uw behoeften (bijv. groter lettertype voor gemakkelijk lezen). Mijn doel was om een spanningsmeting op de Oled/Arduino-meter te hebben, niet te ver van mijn digitale multimeter. Ik mikte op +/-0, 3v max delta.

Zoals je kunt zien aan de video aan het begin van de Instructable, heb ik dit kunnen archiveren! De meeste lezingen waren perfect!

Ik hoop dat je genoten hebt van deze Instructable en laat me je gedachten weten!

Aanbevolen: