Përmbajtje:

Metër Arduino Volt (0-100V DC) - Versioni 2 (më mirë): 3 hapa
Metër Arduino Volt (0-100V DC) - Versioni 2 (më mirë): 3 hapa

Video: Metër Arduino Volt (0-100V DC) - Versioni 2 (më mirë): 3 hapa

Video: Metër Arduino Volt (0-100V DC) - Versioni 2 (më mirë): 3 hapa
Video: Как измерить любое напряжение постоянного тока с Arduino ARDVC-01 2024, Qershor
Anonim
Image
Image
Hapi 1: Skemat
Hapi 1: Skemat

Në këtë udhëzues, unë kam ndërtuar një voltmetër për të matur tensione të larta DC (0-100v) me saktësi dhe saktësi relative duke përdorur një Arduino Nano dhe një ADS 1115 ADC.

Ky është një version i dytë i voltmetrit i përdorur për udhëzimet e mia të mëparshme këtu:

Matjet e provës që mora ishin të sakta, kryesisht brenda 0.1v të tensionit aktual të matur me një voltmetër standard (kam përdorur një Astro AI DM6000AR).

Kjo është shumë më mirë, dhe më e lehtë për mendimin tim sesa të përdorni një referencë të tensionit të jashtëm në Arduino.

Furnizimet

1 x Arduino Nano - Lidhje

1 x Ekran me Oled (SSD 1306) - Lidhje

1 x ADS 1115 - 16 bit ADC - Lidhje

1 x 1/4W (unë sugjeroj të përdorni rezistorë 1W edhe pse) 1% Rezistorë - 220k ohm - Lidhje

1 x 1/4W (unë sugjeroj të përdorni rezistorë 1W edhe pse) 1% Rezistorë - 10k ohm - Lidhje

Breadboard dhe telat - Lidhje

Astro AI DM6000AR - Lidhje

USB Power Bank - Lidhje

Bateri 9V - Lidhje

CanadianWinters është pjesëmarrës në Programin e Shërbimeve Amazon LLC Associates, një program reklamimi filial i krijuar për të siguruar një mjet për faqet që të fitojnë tarifa duke u lidhur me Amazon.com dhe faqet e lidhura. Duke përdorur këto lidhje, si një Amazon Associate fitoj nga blerjet kualifikuese, edhe nëse blini diçka tjetër-dhe nuk do t'ju kushtojë asgjë.

Hapi 1: Hapi 1: Skemat

Hapi 1: Skemat
Hapi 1: Skemat

I lidha të gjitha pjesët sipas skemave të mësipërme.

Unë e lidha kunjin ADDR të ADC1115 në tokë. Kjo vendos adresën e ADC në 0x48.

Hapi 2: Hapi 2: Llogaritjet e Kodit dhe Rezistencës

Hapi 2: Llogaritjet e Kodit dhe Rezistencës
Hapi 2: Llogaritjet e Kodit dhe Rezistencës

Ashtu si në udhëzimet e mëparshme, ideja e qarkut është që tensioni DC që do të matet kalon përmes një rezistori të tensionit. Tensioni i shkallëzuar dhe pastaj futet në pinin analog të konvertuesit ADC për t'u lexuar, pastaj kalohet në Arduino përmes I2C dhe pastaj ri-shkallëzohet dhe shfaqet në ekranin OLed.

Unë nuk kam përdorur asnjë mesatare ose zbutje në kod në këtë rast, pasi leximet duken mjaft të sakta. Për të zvogëluar zhurmën, mund të dëshironi të shtoni një kondensator të vogël midis A0 (në ADC) dhe tokëzimit. Sidoqoftë, nuk ishte e nevojshme për provën time.

Një gjë që vura re, ishte pak zhurmë kur nuk kishte bateri të bashkangjitur (0 volt). Kam përdorur monitorin serik të Arduino për të shfaqur vlerën ADC dhe për ta korrigjuar/rregulluar atë përmes kodit.

Ashtu si në udhëzimet e mëparshme, unë bëra një tabelë që automatizon llogaritjet në rast se dëshironi të përdorni vlera të ndryshme të rezistencës në ndarësin e tensionit: Lidhja me Google Sheet

Këtu është kodi që kam përdorur për këtë projekt:

#përfshi

#include #include #include Adafruit_ADS1115 reklama (0x48); // Adresa e ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rrotullimi, [rivendosja]) int calib = 7; // Vlera e kalibrimit të ADS1115 për të zvogëluar gabimin e tensionit notues = 0; // përdoret për të ruajtur vlerën e tensionit noton Radjust = 0.043421905; // Faktori i ndarjes së tensionit (R2 / R1+R2) noton vbat = 0; // tensioni përfundimtar pas llogaritjeve- tensioni i baterisë // variablat për rifreskimin e ekranit pa përdorur vonesa të panënshkruara gjatë të mëparshmeMillis = 0; // do të ruhet herën e fundit kur ekrani u rifreskua // konstantet nuk do të ndryshojnë: interval i gjatë const = 250; // intervali në të cilin do të rifreskoni ekranin (milisekonda) void setup (void) {Serial.begin (9600); u8g2.filloj (); ads.filloj (); } lak void (i pavlefshëm) {int16_t adc0; // 16 bit ADC leximi i hyrjes A0 adc0 = ads.readADC_SingleEnded (0); tension = ((adc0 + kalib) * 0.1875)/1000; rrymë e gjatë e panënshkruarMillis = millis (); vbat = tension/Rregulloni; // Parandaloni shfaqjen e tensionit negativ kur bateria është shkëputur nëse (vbat = interval) {previousMillis = currentMillis; u8g2.clearBuffer (); // pastroni menoren e brendshme // Ekrani i tensionit të paketës - Fontet në këtë faqe: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // font 20px u8g2.setFont (u8g2_font_fub35_tr); // font 35px u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px font u8g2.setCursor (1, 60); u8g2.print ("Volt"); } u8g2.sendBuffer (); // transferimi i kujtesës së brendshme në vonesën e shfaqjes (1); }

Hapi 3: Hapi 3: Le ta Provojmë

Hapi 3: Le ta Provojmë!
Hapi 3: Le ta Provojmë!

Për të testuar këtë voltmetër kam përdorur bateri 10x 9v që i kam marrë në një dyqan lokal. Këtë herë mund të matja deri në 97 volt! Unë po planifikoj të përdor këtë voltmetër për të matur tensionin në bateritë e biçikletave të mia elektrike (ato kanë tensione që variojnë nga 24-60v me ato të rastit 72v).

Pasi elektronika të jetë e paketuar në një PCB dhe një kuti të vogël, kjo do të bëjë një matës të bukur dhe të lëvizshëm të paketave të baterive. Grafika dhe fontet në OLED mund të personalizohen për t'iu përshtatur nevojave tuaja (p.sh. font më i madh për lexim të lehtë). Qëllimi im ishte të kisha një lexim të tensionit në njehsorin Oled/Arduino jo shumë larg nga Digital Multi Meter -i im. Po synoja +/- 0, deltën maksimale 3v.

Siç mund ta shihni nga videoja në fillim të Instructable, unë kam qenë në gjendje ta arkivoj këtë! Shumica e leximeve ishin në vend!

Shpresoj se ju ka pëlqyer ky udhëzues dhe më tregoni mendimet tuaja!

Recommended: