Turinys:

„Arduino“voltų matuoklis (0–100 V DC) - 2 versija (geresnė): 3 žingsniai
„Arduino“voltų matuoklis (0–100 V DC) - 2 versija (geresnė): 3 žingsniai

Video: „Arduino“voltų matuoklis (0–100 V DC) - 2 versija (geresnė): 3 žingsniai

Video: „Arduino“voltų matuoklis (0–100 V DC) - 2 versija (geresnė): 3 žingsniai
Video: Измерьте ток до 500A с помощью шунтирующего резистора с помощью Arduino 2024, Birželis
Anonim
Image
Image
1 žingsnis: schemos
1 žingsnis: schemos

Šioje instrukcijoje aš sukūriau voltmetrą, skirtą santykinai tiksliai ir tiksliai išmatuoti aukštą įtampą (0–100 V), naudojant „Arduino Nano“ir ADS 1115 ADC.

Tai yra antroji voltmetro versija, naudojama mano ankstesniame nurodyme čia:

Mano atlikti bandymo matavimai buvo tikslūs, daugiausia 0,1 V riboje nuo faktinės įtampos, išmatuotos standartiniu voltmetru (aš naudoju „Astro AI DM6000AR“).

Mano nuomone, tai yra daug geriau ir lengviau nei naudojant išorinę įtampos nuorodą „Arduino“.

Prekės

1 x „Arduino Nano“- nuoroda

1 x apšviestas ekranas (SSD 1306) - nuoroda

1 x ADS 1115 - 16 bitų ADC - nuoroda

1 x 1/4 W (siūlau naudoti 1W rezistorius) 1% Rezistoriai - 220k om - Nuoroda

1 x 1/4 W (siūlau naudoti 1W rezistorius) 1% Rezistoriai - 10k omų - Nuoroda

Duonos lenta ir laidai - nuoroda

„Astro AI DM6000AR“- nuoroda

USB maitinimo bankas - nuoroda

9 V baterijos - nuoroda

„CanadianWinters“yra „Amazon Services LLC Associates“programos - filialų reklamos programos, skirtos svetainėms užsidirbti mokesčių susiejant su „Amazon.com“ir susijusiomis svetainėmis, dalyvis. Naudodamas šias nuorodas aš, kaip „Amazon“asocijuotas partneris, uždirbu iš tinkamų pirkimų, net jei perkate ką nors kita-ir tai jums nieko nekainuos.

1 žingsnis: 1 žingsnis: schemos

1 žingsnis: schemos
1 žingsnis: schemos

Aš sujungiau visas dalis pagal aukščiau pateiktą schemą.

Aš pririšau ADC1115 ADDR kaištį prie žemės. Tai nustato ADC adresą 0x48.

2 žingsnis: 2 žingsnis: kodo ir rezistoriaus skaičiavimai

2 žingsnis: kodo ir rezistoriaus skaičiavimai
2 žingsnis: kodo ir rezistoriaus skaičiavimai

Kaip ir ankstesnėje instrukcijoje, grandinės idėja yra ta, kad matuojama nuolatinė įtampa eina per įtampos rezistorių. Sumažinta įtampa ir tada patenka į analoginį ADC keitiklio kaištį, kurį reikia nuskaityti, tada perduodamas „Arduino“per I2C, tada pakeičiamas mastelis ir rodomas OLed ekrane.

Šiuo atveju kode nenaudojau vidurkio ar išlyginimo, nes rodmenys atrodo gana tikslūs ir tikslūs. Norėdami sumažinti triukšmą, galbūt norėsite pridėti nedidelį kondensatorių tarp A0 (ADC) ir žemės. Tačiau mano bandymui to neprireikė.

Vienas dalykas, kurį pastebėjau, buvo šiek tiek triukšmo, kai nebuvo pridėta baterija (0 voltų). Aš naudoju „Arduino“nuoseklųjį monitorių, kad parodyčiau ADC vertę ir ją ištaisyčiau/sureguliuodavau kodu.

Kaip ir ankstesniame nurodyme, aš padariau skaičiuoklę, kuri automatizuoja skaičiavimus, jei įtampos skirstytuve norite naudoti skirtingas rezistorių reikšmes: Nuoroda į „Google“lapą

Štai kodas, kurį naudoju šiam projektui:

#įtraukti

#include #include #include Adafruit_ADS1115 skelbimai (0x48); // ADC adresas U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (sukimas, [atstatymas]) int calib = 7; // ADS1115 kalibravimo vertė, siekiant sumažinti klaidos plūdės įtampą = 0; // naudojamas įtampos vertės plūdės saugojimui Radjust = 0.043421905; // Įtampos daliklio koeficientas (R2 / R1+R2) plūdė vbat = 0; // galutinė įtampa po kalkių- akumuliatoriaus įtampa // kintamieji, skirti atnaujinti ekraną nenaudojant delsos unsigned ilgai previousMillis = 0; // išsaugos paskutinį kartą atnaujintą ekraną // konstantos nesikeis: const ilgas intervalas = 250; // intervalas, per kurį reikia atnaujinti ekraną (milisekundės) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 bitų ADC skaitymas įvesties A0 adc0 = ads.readADC_SingleEnded (0); įtampa = ((adc0 + kalibras) * 0,1875)/1000; nepasirašyta ilga srovėMillis = milis (); vbat = įtampa/Radjust; // Neleisti rodyti neigiamos įtampos atjungus akumuliatorių, jei (vbat = intervalas) {previousMillis = currentMillis; u8g2.clearBuffer (); // išvalykite vidinį meniu // „Pack Voltage“ekranas - šriftai šiame puslapyje: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20 taškų šriftas u8g2.setFont (u8g2_font_fub35_tr); // 35 taškų šriftas u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px šriftas u8g2.setCursor (1, 60); u8g2.print („Voltai“); } u8g2.sendBuffer (); // perkelti vidinę atmintį į ekrano uždelsimą (1); }

3 žingsnis: 3 žingsnis: išbandykime

3 žingsnis: išbandykime!
3 žingsnis: išbandykime!

Norėdami išbandyti šį voltmetrą, aš naudoju 10x 9V baterijas, kurias gavau vietinėje parduotuvėje. Šį kartą galėčiau išmatuoti iki 97 voltų! Aš planuoju naudoti šį voltmetrą, norėdamas išmatuoti mano elektrinių dviračių akumuliatorių įtampą (jų įtampa svyruoja nuo 24 iki 60 V, o kartais-72 V).

Kai elektronika bus supakuota į PCB ir mažą dėžutę, tai bus gražus ir nešiojamas akumuliatoriaus matuoklis. OLED grafika ir šriftai gali būti pritaikyti pagal jūsų poreikius (pvz., Didesnis šriftas, kad būtų lengviau skaityti). Mano tikslas buvo, kad Oled/Arduino matuoklio įtampa būtų rodoma ne per toli nuo mano skaitmeninio daugiafunkcio matuoklio. Aš siekiau +/- 0, 3v max delta.

Kaip matote iš vaizdo įrašo „Instructable“pradžioje, man pavyko tai archyvuoti! Dauguma skaitymų buvo vietoje!

Tikiuosi, kad jums patiko šis „Instructable“ir praneškite man savo mintis!

Rekomenduojamas: