INHOUDSOPGAWE:

Arduino Volt Meter (0-100V DC) - Weergawe 2 (beter): 3 stappe
Arduino Volt Meter (0-100V DC) - Weergawe 2 (beter): 3 stappe

Video: Arduino Volt Meter (0-100V DC) - Weergawe 2 (beter): 3 stappe

Video: Arduino Volt Meter (0-100V DC) - Weergawe 2 (beter): 3 stappe
Video: How to use Digit Voltmeter 0V-100V DC 3wire? 2024, November
Anonim
Image
Image
Stap 1: die skemas
Stap 1: die skemas

In hierdie instruksies het ek 'n voltmeter gebou om hoë spanning DC (0-100v) relatief akkuraat en akkuraat te meet met behulp van 'n Arduino Nano en 'n ADS 1115 ADC.

Dit is 'n tweede weergawe van die voltmeter wat my vorige instruksies hier gebruik het:

Die toetsmetings wat ek geneem het, was akkuraat, meestal binne 0.1v van die werklike spanning wat met 'n standaard voltmeter gemeet is (ek het 'n Astro AI DM6000AR gebruik).

Dit is na my mening baie beter en makliker as om 'n eksterne spanningsverwysing op die Arduino te gebruik.

Voorrade

1 x Arduino Nano - skakel

1 x Oled -skerm (SSD 1306) - skakel

1 x ADS 1115 - 16 bit ADC - skakel

1 x 1/4W (ek stel voor dat u 1W -weerstande gebruik) 1% weerstande - 220k ohm - skakel

1 x 1/4W (ek stel voor dat u 1W -weerstande gebruik) 1% weerstande - 10k ohm - skakel

Broodbord en drade - Skakel

Astro AI DM6000AR - Skakel

USB Power Bank - skakel

9V -batterye - skakel

CanadianWinters is 'n deelnemer aan die Amazon Services LLC Associates Program, 'n geaffilieerde advertensieprogram wat ontwerp is om webwerwe 'n manier te bied om fooie te verdien deur te skakel na Amazon.com en aangeslote webwerwe. Deur hierdie skakels te gebruik, verdien ek as Amazon-medewerker uit kwalifiserende aankope, selfs al koop u iets anders-en dit kos u niks.

Stap 1: Stap 1: die skemas

Stap 1: die skemas
Stap 1: die skemas

Ek het al die dele verbind volgens die skemas hierbo.

Ek het die ADDR -pen van die ADC1115 aan die grond vasgemaak. Dit stel die adres van die ADC op 0x48.

Stap 2: Stap 2: die kode- en weerstandberekeninge

Stap 2: die kode- en weerstandberekeninge
Stap 2: die kode- en weerstandberekeninge

Soos in die vorige instruksies, is die idee van die stroombaan dat die DC -spanning wat gemeet moet word, deur 'n spanningsweerstand gaan. Die afgeskaalde spanning kom dan in die analoog pen van die ADC-omskakelaar om gelees te word, word dan via I2C aan die Arduino oorgedra en dan weer opskaal en op die OLed-skerm vertoon.

Ek het in hierdie geval geen gemiddelde of gladde gebruik van die kode gebruik nie, aangesien die lesings baie akkuraat en akkuraat lyk. Om die geraas te verminder, wil u 'n klein kapasitor tussen A0 (op die ADC) en die grond byvoeg. Dit was egter nie nodig vir my toets nie.

Een ding wat ek opgemerk het, was 'n bietjie geraas wanneer daar geen battery (0 volt) aangeheg was nie. Ek het die seriële monitor van die Arduino gebruik om die ADC -waarde te vertoon en dit reg te stel/aan te pas via kode.

Soos in die vorige instruksies, het ek 'n sigblad gemaak wat die berekeninge outomatiseer indien u verskillende weerstandswaardes in die spanningsverdeler wil gebruik: skakel na Google Sheet

Hier is die kode wat ek vir hierdie projek gebruik het:

#insluit

#include #include #include Adafruit_ADS1115 ads (0x48); // Adres van die ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotasie, [reset]) int calib = 7; // Waarde van kalibrasie van ADS1115 om foutvlotspanning te verminder = 0; // gebruik om die spanningswaarde vlot op te slaan Radjust = 0.043421905; // Spanningsverdelingsfaktor (R2 / R1+R2) dryf vbat = 0; // eindspanning na berekeninge- spanning van die battery // veranderlikes om die skerm te verfris sonder om vertraging te gebruik ongetekende lang vorigeMillis = 0; // sal die laaste keer stoor dat die skerm verfris is // konstantes sal nie verander nie: const lang interval = 250; // interval waarop die skerm (millisekondes) die opstel van die leemte (leegte) {Serial.begin (9600) moet verfris; u8g2.begin (); ads.begin (); } leemte lus (leeg) {int16_t adc0; // 16 bisse ADC lees van invoer A0 adc0 = ads.readADC_SingleEnded (0); spanning = ((adc0 + kalib) * 0,1875)/1000; ongetekende lang stroomMillis = millis (); vbat = spanning/Radjust; // Voorkom dat negatiewe spanning vertoon word wanneer die battery ontkoppel word as (vbat = interval) {previousMillis = currentMillis; u8g2.clearBuffer (); // maak die interne opvatting skoon // Pak spanning -skerm - lettertipes op hierdie bladsy: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px lettertipe u8g2.setFont (u8g2_font_fub35_tr); // 35px lettertipe u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px lettertipe u8g2.setCursor (1, 60); u8g2.print ("Volt"); } u8g2.sendBuffer (); // dra interne geheue oor na die vertraging van die vertoning (1); }

Stap 3: Stap 3: Kom ons toets dit

Stap 3: Kom ons toets dit!
Stap 3: Kom ons toets dit!

Om hierdie voltmeter te toets, gebruik ek 10x 9v -batterye wat ek by 'n plaaslike winkel gekry het. Hierdie keer kon ek tot 97 volt meet! Ek is van plan om hierdie voltmeter te gebruik om die spanning op my elektriese fietse se batterypakke te meet (hulle het spannings wat wissel van 24-60v met soms 72v).

Sodra die elektronika in 'n PCB en 'n klein boks verpak is, sal dit 'n mooi en draagbare batterymeter wees. Die grafika en lettertipes op die OLED kan aangepas word om aan u behoeftes te voldoen (bv. Groter lettertipe om maklik te lees). My doel was om 'n spanningslesing op die Oled/Arduino -meter te hê, nie te ver van my Digital Multi Meter nie. Ek het gemik op +/- 0, 3v max delta.

Soos u kan sien uit die video aan die begin van die Instructable, kon ek dit argiveer! Die meeste lesings was in die kol!

Ek hoop dat u hierdie instruksies geniet het en laat my u gedagtes weet!

Aanbeveel: