Sisukord:

Arduino voltmõõtur (0–100 V alalisvool) - versioon 2 (parem): 3 sammu
Arduino voltmõõtur (0–100 V alalisvool) - versioon 2 (parem): 3 sammu

Video: Arduino voltmõõtur (0–100 V alalisvool) - versioon 2 (parem): 3 sammu

Video: Arduino voltmõõtur (0–100 V alalisvool) - versioon 2 (parem): 3 sammu
Video: SKR 1.4 - Adding a 3d Extruder Stepper for a Diamond PrintHead 2024, Juuni
Anonim
Image
Image
Samm: skeemid
Samm: skeemid

Selles juhendis olen ehitanud voltmeetri, et mõõta Arduino Nano ja ADS 1115 ADC abil suhteliselt täpselt ja täpselt kõrgepingeid (0-100v).

See on voltmeetri teine versioon, mida kasutasin minu eelmisel juhendil siin:

Minu tehtud testmõõtmised olid täpsed, enamasti 0,1 V piires standardvoltmeetriga mõõdetud tegelikust pingest (kasutasin Astro AI DM6000AR).

See on minu arvates palju parem ja lihtsam kui välise pinge viite kasutamine Arduino peal.

Tarvikud

1 x Arduino Nano - link

1 x Oled ekraan (SSD 1306) - link

1 x ADS 1115 - 16 -bitine ADC - link

1 x 1/4 W (soovitan siiski kasutada 1W takistit) 1% takistid - 220 kΩ - Link

1 x 1/4 W (soovitan siiski kasutada 1W takistit) 1% takistid - 10 kΩ - Link

Leivalaud ja juhtmed - link

Astro AI DM6000AR - link

USB toitepank - link

9V patareid - link

CanadianWinters osaleb sidusreklaamiprogrammis Amazon Services LLC Associates Program, mis on loodud selleks, et pakkuda saitidele vahendeid tasu teenimiseks, linkides saidile Amazon.com ja sellega seotud saitidele. Neid linke kasutades teenin Amazoni sidusettevõttena kvalifitseeruvatest ostudest, isegi kui ostate midagi muud-ja see ei maksa teile midagi.

1. samm: 1. samm: skeemid

Samm: skeemid
Samm: skeemid

Ühendasin kõik osad vastavalt ülaltoodud skeemile.

Ma sidusin ADC1115 ADDR -i tihvti maa külge. See määrab ADC aadressiks 0x48.

2. samm: 2. samm: koodi ja takisti arvutused

2. samm: koodi ja takisti arvutused
2. samm: koodi ja takisti arvutused

Nagu eelmises juhendis, on ahela mõte selles, et mõõdetav alalispinge läbib pingetakisti. Skaleeritud pinge ja seejärel satub lugemiseks ADC-muunduri analoogpistikusse, seejärel edastatakse I2C kaudu Arduinole ja seejärel skaleeritakse uuesti ning kuvatakse OLed-ekraanil.

Ma ei kasutanud sel juhul koodis keskmistamist ega silumist, kuna näidud tunduvad üsna täpsed ja täpsed. Müra vähendamiseks võiksite lisada väikese kondensaatori A0 (ADC) ja maa vahele. Minu testi jaoks seda siiski ei nõutud.

Üks asi, mida ma märkasin, oli natuke müra, kui akut polnud kinnitatud (0 volti). Kasutasin Arduino jadamonitori, et kuvada ADC väärtus ja seda koodi abil parandada/reguleerida.

Nagu eelmises juhendis, koostasin arvutustabeli, mis automatiseerib arvutused juhuks, kui soovite pingejaguris kasutada erinevaid takisti väärtusi: Link Google'i lehele

Siin on kood, mida ma selle projekti jaoks kasutasin:

#kaasake

#include #include #include Adafruit_ADS1115 reklaamid (0x48); // ADC aadress U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (pöörlemine, [lähtestamine]) int calib = 7; // ADS1115 kalibreerimise väärtus vea ujukipinge vähendamiseks = 0; // kasutatakse pinge väärtuse ujuki salvestamiseks Radjust = 0,043421905; // Pinge jagaja tegur (R2 / R1+R2) ujuk vbat = 0; // lõplik pinge pärast kaltsium- aku pinge // muutujad ekraani värskendamiseks ilma viivitust kasutamata unsigned long previousMillis = 0; // salvestab ekraani viimati värskendatud // konstandid ei muutu: const pikk intervall = 250; // intervall ekraani värskendamiseks (millisekundid) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 bitti ADC lugemist sisendist A0 adc0 = ads.readADC_SingleEnded (0); pinge = ((adc0 + kalib) * 0,1875)/1000; allkirjata pikk voolMillis = millis (); vbat = pinge/Radjust; // Vältige negatiivse pinge kuvamist aku lahtiühendamisel, kui (vbat = intervall) {previousMillis = currentMillis; u8g2.clearBuffer (); // sisemise menüü tühjendamine // Pack Voltage display - fondid sellel lehel: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px font u8g2.setFont (u8g2_font_fub35_tr); // 35px font u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px font u8g2.setCursor (1, 60); u8g2.print ("Voldid"); } u8g2.sendBuffer (); // sisemälu ülekandmine kuvarile (1); }

3. samm: 3. samm: proovime seda

Samm: proovime seda!
Samm: proovime seda!

Selle voltmeetri testimiseks kasutasin 10x 9v patareisid, mille sain kohalikust poest. Seekord sain mõõta kuni 97 volti! Kavatsen seda voltmeetrit kasutada oma elektrijalgrataste akude pinge mõõtmiseks (nende pinge on vahemikus 24–60 V ja aeg-ajalt 72 V).

Kui elektroonika on trükkplaadile ja väikesesse karpi pakitud, saab sellest kena ja kaasaskantava akumõõdiku. OLED -i graafikat ja fonte saab kohandada vastavalt teie vajadustele (nt suurem font lihtsaks lugemiseks). Minu eesmärk oli pinge näit Oled/Arduino arvestile mitte liiga kaugel minu digitaalsest multimõõturist. Sihtisin +/- 0, 3v max delta.

Nagu näete Instructable'i alguses olevast videost, suutsin selle arhiveerida! Enamik lugemisi oli kohapeal!

Loodan, et teile meeldis see Instructable ja andke mulle oma mõtetest teada!

Soovitan: