Sisällysluettelo:

Arduino -volttimittari (0-100 V DC) - Versio 2 (parempi): 3 vaihetta
Arduino -volttimittari (0-100 V DC) - Versio 2 (parempi): 3 vaihetta

Video: Arduino -volttimittari (0-100 V DC) - Versio 2 (parempi): 3 vaihetta

Video: Arduino -volttimittari (0-100 V DC) - Versio 2 (parempi): 3 vaihetta
Video: Как использовать оптопару Mosfet HW-532 для управления скоростью двигателя постоянного тока до 30 В или нагрузкой с помощью Arduino 2024, Marraskuu
Anonim
Image
Image
Vaihe 1: Kaaviot
Vaihe 1: Kaaviot

Tässä ohjeessa olen rakentanut voltimittarin mittaamaan suurjännitteitä DC (0-100v) suhteellisen tarkasti ja tarkasti käyttäen Arduino Nano ja ADS 1115 ADC.

Tämä on toinen versio voltimittarista, jota käytin edellisellä ohjeellani täällä:

Otamani testimittaukset olivat tarkkoja, enimmäkseen 0,1 V: n sisällä vakio voltimetrillä mitatusta todellisesta jännitteestä (käytin Astro AI DM6000AR).

Tämä on mielestäni paljon parempi ja helpompi kuin ulkoisen jänniteohjeen käyttäminen Arduinossa.

Tarvikkeet

1 x Arduino Nano - linkki

1 x Oled -näyttö (SSD 1306) - linkki

1 x ADS 1115 - 16 -bittinen ADC - linkki

1 x 1/4 W (ehdotan kuitenkin 1 W: n vastuksen käyttöä) 1% vastukset - 220 k ohmia - linkki

1 x 1/4 W (ehdotan kuitenkin 1 W: n vastuksen käyttöä) 1% vastukset - 10 k ohmia - Linkki

Leipälauta ja johdot - Linkki

Astro AI DM6000AR - Linkki

USB -virtapankki - linkki

9V Akut - Linkki

CanadianWinters osallistuu Amazon Services LLC Associates -ohjelmaan, joka on kumppanimainosohjelma, jonka tarkoituksena on tarjota sivustoille mahdollisuus ansaita maksuja linkittämällä Amazon.com -sivustoon ja siihen liittyville sivustoille. Käyttämällä näitä linkkejä ansaitsen Amazonin yhteistyökumppanina kelpoisuusostoista, vaikka ostat jotain muuta-eikä se maksa sinulle mitään.

Vaihe 1: Vaihe 1: kaaviot

Vaihe 1: Kaaviot
Vaihe 1: Kaaviot

Yhdistin kaikki osat yllä olevan kaavion mukaisesti.

Sidoin ADC1115: n ADDR -nastan maahan. Tämä asettaa ADC: n osoitteeksi 0x48.

Vaihe 2: Vaihe 2: Koodi- ja vastuslaskelmat

Vaihe 2: Koodi- ja vastuslaskut
Vaihe 2: Koodi- ja vastuslaskut

Kuten edellisessä ohjeessa, piirin idea on, että mitattava tasavirtajännite kulkee jännitevastuksen läpi. Skaalattu jännite ja sitten tulee ADC-muuntimen analogiseen nastaan luettavaksi, siirretään sitten Arduinolle I2C: n kautta ja skaalataan uudelleen ja näytetään OLed-näytössä.

Tässä tapauksessa en käyttänyt koodissa keskiarvoistusta tai tasoitusta, koska lukemat näyttävät varsin tarkilta. Kohinan vähentämiseksi saatat haluta lisätä pienen kondensaattorin A0: n (ADC: n) ja maan väliin. Sitä ei kuitenkaan vaadittu kokeeseen.

Yksi asia, jonka huomasin, oli melua, kun akkua ei ollut kiinnitetty (0 volttia). Käytin Arduinon sarjamonitoria näyttämään ADC -arvon ja korjaamaan/säätämään sitä koodin avulla.

Kuten edellisessä ohjeessa, tein laskentataulukon, joka automatisoi laskelmat siltä varalta, että haluat käyttää eri vastuksen arvoja jännitteenjakajassa: Linkki Google -taulukkoon

Tässä on koodi, jota käytin tässä projektissa:

#sisältää

#Sisällytä #Sisällytä #Sisällytä Adafruit_ADS1115 -mainokset (0x48); // ADC: n osoite U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (kierto, [nollaus]) int calib = 7; // ADS1115: n kalibroinnin arvo virran pienentämiseksi = 0; // käytetään jännitearvon tallentamiseen Radjust = 0,043421905; // Jännitteenjakajatekijä (R2 / R1+R2) kelluva vbat = 0; // lopullinen jännite calcs- akun jännite // muuttujat näytön päivittämiseksi ilman viivettä unsigned long previousMillis = 0; // tallentaa viimeksi kun näyttö päivitettiin // vakioita ei muuteta: const long interval = 250; // aikaväli, jolloin näyttö päivitetään (millisekuntia) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 bitin ADC -tulo syötteestä A0 adc0 = ads.readADC_SingleEnded (0); jännite = ((adc0 + calib) * 0,1875)/1000; allekirjoittamaton pitkävirtaMillis = millis (); vbat = jännite/Radjust; // Estä negatiivisen jännitteen näyttäminen, kun akku irrotetaan, jos (vbat = intervalli) {previousMillis = currentMillis; u8g2.clearBuffer (); // tyhjennä sisäinen valikko // Pack Voltage -näyttö - Fontit tällä sivulla: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px fontti u8g2.setFont (u8g2_font_fub35_tr); // 35 pikselin fontti u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px fontti u8g2.setCursor (1, 60); u8g2.print ("volttia"); } u8g2.sendBuffer (); // siirtää sisäinen muisti näytön viiveeseen (1); }

Vaihe 3: Vaihe 3: Testataan

Vaihe 3: Testataan!
Vaihe 3: Testataan!

Tämän volttimittarin testaamiseen käytin 10x 9v paristoja, jotka sain paikallisesta kaupasta. Tällä kertaa voisin mitata jopa 97 volttia! Suunnittelen tämän volttimittarin käyttämistä sähköpolkupyörän akkujen jännitteen mittaamiseen (niiden jännitteet vaihtelevat 24-60v ja satunnaiset 72v).

Kun elektroniikka on pakattu piirilevyyn ja pieneen laatikkoon, tästä tulee mukava ja kannettava akkumittari. OLED -näytön grafiikka ja fontit voidaan räätälöidä tarpeidesi mukaan (esim. Isompi fontti helpon lukemisen vuoksi). Tavoitteeni oli saada jännitteen lukema Oled/Arduino -mittariin, joka ei ole liian kaukana digitaalisesta monimittaristani. Tavoittelin +/- 0, 3v max deltaa.

Kuten näet Instructable -ohjelman alussa olevasta videosta, pystyin arkistoimaan tämän! Suurin osa lukemista oli paikalla!

Toivottavasti pidit tästä Instructable -ohjelmasta ja kerro minulle mielipiteesi!

Suositeltava: