Innholdsfortegnelse:

Arduino Volt Meter (0-100V DC) - Versjon 2 (bedre): 3 trinn
Arduino Volt Meter (0-100V DC) - Versjon 2 (bedre): 3 trinn

Video: Arduino Volt Meter (0-100V DC) - Versjon 2 (bedre): 3 trinn

Video: Arduino Volt Meter (0-100V DC) - Versjon 2 (bedre): 3 trinn
Video: Как использовать оптопару Mosfet HW-532 для управления скоростью двигателя постоянного тока до 30 В или нагрузкой с помощью Arduino 2024, Juni
Anonim
Image
Image
Trinn 1: Skjemaene
Trinn 1: Skjemaene

I denne instruksen har jeg bygget et voltmeter for å måle høyspenninger DC (0-100v) med relativ presisjon og nøyaktighet ved hjelp av en Arduino Nano og en ADS 1115 ADC.

Dette er en andre versjon av voltmeteret som ble brukt på min tidligere instruks her:

Testmålingene jeg tok var nøyaktige, for det meste innenfor 0,1 v av den faktiske spenningen målt med et standard voltmeter (jeg brukte en Astro AI DM6000AR).

Dette er mye bedre og lettere etter min mening enn å bruke en ekstern spenningsreferanse på Arduino.

Rekvisita

1 x Arduino Nano - lenke

1 x Oled -skjerm (SSD 1306) - lenke

1 x ADS 1115 - 16 bit ADC - Link

1 x 1/4W (jeg foreslår at du bruker 1W motstander) 1% motstand - 220k ohm - Link

1 x 1/4W (jeg foreslår at du bruker 1W motstander) 1% motstand - 10k ohm - Link

Brødbrett og ledninger - Link

Astro AI DM6000AR - Link

USB Power Bank - Link

9V batterier - lenke

CanadianWinters er deltaker i Amazon Services LLC Associates Program, et tilknyttet reklameprogram som er utformet for å gi nettsteder mulighet til å tjene avgifter ved å koble til Amazon.com og tilknyttede nettsteder. Ved å bruke disse koblingene tjener jeg som Amazon-medarbeider på kvalifiserte kjøp, selv om du kjøper noe annet-og det vil ikke koste deg noe.

Trinn 1: Trinn 1: Skjemaene

Trinn 1: Skjemaene
Trinn 1: Skjemaene

Jeg koblet alle delene i henhold til skjemaet ovenfor.

Jeg knyttet ADDR -pinnen til ADC1115 til bakken. Dette setter adressen til ADC til 0x48.

Trinn 2: Trinn 2: Kode- og motstandsberegningene

Trinn 2: Kode- og motstandsberegningene
Trinn 2: Kode- og motstandsberegningene

Som i den forrige instruksen, er ideen med kretsen at DC -spenningen som skal måles går gjennom en spenningsmotstand. Den skalerte spenningen og kommer deretter inn i den analoge pinnen på ADC-omformeren som skal leses, sendes deretter til Arduino via I2C og deretter skaleres på nytt og vises på OLed-skjermen.

Jeg brukte ikke gjennomsnitt eller utjevning i koden i dette tilfellet, da avlesningene virker ganske nøyaktige og presise. For å redusere støyen, vil du kanskje legge til en liten kondensator mellom A0 (på ADC) og bakken. Det var ikke nødvendig for min test skjønt.

En ting jeg la merke til, var litt støy når det ikke var batteri tilkoblet (0 volt). Jeg brukte den serielle skjermen til Arduino for å vise ADC -verdien og korrigere/justere den via kode.

Som i den forrige instruksen, laget jeg et regneark som automatiserer beregningene hvis du vil bruke forskjellige motstandsverdier i spenningsdeleren: Lenke til Google Sheet

Her er koden jeg brukte for dette prosjektet:

#inkludere

#include #include #include Adafruit_ADS1115 annonser (0x48); // Adresse til ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotation, [reset]) int calib = 7; // Verdi for kalibrering av ADS1115 for å redusere feilflatespenning = 0; // brukes til å lagre spenningsverdi float Radjust = 0.043421905; // Spenningsdelingsfaktor (R2 / R1+R2) float vbat = 0; // sluttspenning etter kalkulasjon- spenning på batteriet // variabler for oppdatering av skjermen uten forsinkelse usignert lang previousMillis = 0; // vil lagre forrige gang skjermen ble oppdatert // konstanter vil ikke endres: const langt intervall = 250; // intervall for oppdatering av skjermen (millisekunder) hulromsoppsett (tomrom) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 bits ADC lese av inngang A0 adc0 = ads.readADC_SingleEnded (0); spenning = ((adc0 + kalib) * 0,1875)/1000; usignert langstrømMillis = millis (); vbat = spenning/Radjust; // Forhindre visning av negativ spenning når batteriet kobles fra hvis (vbat = intervall) {previousMillis = currentMillis; u8g2.clearBuffer (); // tøm den interne menyen // Pack Voltage display - Fonts on this page: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px skrift u8g2.setFont (u8g2_font_fub35_tr); // 35px skrift u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px skrift u8g2.setCursor (1, 60); u8g2.print ("volt"); } u8g2.sendBuffer (); // overføre internminnet til skjermforsinkelsen (1); }

Trinn 3: Trinn 3: La oss teste det ut

Trinn 3: La oss teste det!
Trinn 3: La oss teste det!

For å teste dette voltmeteret brukte jeg 10x 9v batterier som jeg fikk i en lokal butikk. Denne gangen kunne jeg måle opptil 97 volt! Jeg planlegger å bruke dette voltmeteret til å måle spenningen på mine elektriske sykler batteripakker (de har spenninger fra 24-60v med sporadiske 72v).

Når elektronikken er pakket inn i en kretskort og en liten eske, vil dette lage en fin og bærbar batteripakemåler. Grafikken og skriftene på OLED kan tilpasses dine behov (f.eks. Større skrift for enkel lesing). Målet mitt var å ha en spenningsavlesning på Oled/Arduino -måleren ikke så langt fra min digitale multimåler. Jeg siktet til +/- 0, 3v max delta.

Som du kan se fra videoen i begynnelsen av Instructable, klarte jeg å arkivere dette! De fleste avlesningene var i orden!

Jeg håper du likte denne instruksen og gi meg beskjed om tankene dine!

Anbefalt: