Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Trinn 1: Skjemaene
- Trinn 2: Trinn 2: Kode- og motstandsberegningene
- Trinn 3: Trinn 3: La oss teste det ut
Video: Arduino Volt Meter (0-100V DC) - Versjon 2 (bedre): 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
I denne instruksen har jeg bygget et voltmeter for å måle høyspenninger DC (0-100v) med relativ presisjon og nøyaktighet ved hjelp av en Arduino Nano og en ADS 1115 ADC.
Dette er en andre versjon av voltmeteret som ble brukt på min tidligere instruks her:
Testmålingene jeg tok var nøyaktige, for det meste innenfor 0,1 v av den faktiske spenningen målt med et standard voltmeter (jeg brukte en Astro AI DM6000AR).
Dette er mye bedre og lettere etter min mening enn å bruke en ekstern spenningsreferanse på Arduino.
Rekvisita
1 x Arduino Nano - lenke
1 x Oled -skjerm (SSD 1306) - lenke
1 x ADS 1115 - 16 bit ADC - Link
1 x 1/4W (jeg foreslår at du bruker 1W motstander) 1% motstand - 220k ohm - Link
1 x 1/4W (jeg foreslår at du bruker 1W motstander) 1% motstand - 10k ohm - Link
Brødbrett og ledninger - Link
Astro AI DM6000AR - Link
USB Power Bank - Link
9V batterier - lenke
CanadianWinters er deltaker i Amazon Services LLC Associates Program, et tilknyttet reklameprogram som er utformet for å gi nettsteder mulighet til å tjene avgifter ved å koble til Amazon.com og tilknyttede nettsteder. Ved å bruke disse koblingene tjener jeg som Amazon-medarbeider på kvalifiserte kjøp, selv om du kjøper noe annet-og det vil ikke koste deg noe.
Trinn 1: Trinn 1: Skjemaene
Jeg koblet alle delene i henhold til skjemaet ovenfor.
Jeg knyttet ADDR -pinnen til ADC1115 til bakken. Dette setter adressen til ADC til 0x48.
Trinn 2: Trinn 2: Kode- og motstandsberegningene
Som i den forrige instruksen, er ideen med kretsen at DC -spenningen som skal måles går gjennom en spenningsmotstand. Den skalerte spenningen og kommer deretter inn i den analoge pinnen på ADC-omformeren som skal leses, sendes deretter til Arduino via I2C og deretter skaleres på nytt og vises på OLed-skjermen.
Jeg brukte ikke gjennomsnitt eller utjevning i koden i dette tilfellet, da avlesningene virker ganske nøyaktige og presise. For å redusere støyen, vil du kanskje legge til en liten kondensator mellom A0 (på ADC) og bakken. Det var ikke nødvendig for min test skjønt.
En ting jeg la merke til, var litt støy når det ikke var batteri tilkoblet (0 volt). Jeg brukte den serielle skjermen til Arduino for å vise ADC -verdien og korrigere/justere den via kode.
Som i den forrige instruksen, laget jeg et regneark som automatiserer beregningene hvis du vil bruke forskjellige motstandsverdier i spenningsdeleren: Lenke til Google Sheet
Her er koden jeg brukte for dette prosjektet:
#inkludere
#include #include #include Adafruit_ADS1115 annonser (0x48); // Adresse til ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotation, [reset]) int calib = 7; // Verdi for kalibrering av ADS1115 for å redusere feilflatespenning = 0; // brukes til å lagre spenningsverdi float Radjust = 0.043421905; // Spenningsdelingsfaktor (R2 / R1+R2) float vbat = 0; // sluttspenning etter kalkulasjon- spenning på batteriet // variabler for oppdatering av skjermen uten forsinkelse usignert lang previousMillis = 0; // vil lagre forrige gang skjermen ble oppdatert // konstanter vil ikke endres: const langt intervall = 250; // intervall for oppdatering av skjermen (millisekunder) hulromsoppsett (tomrom) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 bits ADC lese av inngang A0 adc0 = ads.readADC_SingleEnded (0); spenning = ((adc0 + kalib) * 0,1875)/1000; usignert langstrømMillis = millis (); vbat = spenning/Radjust; // Forhindre visning av negativ spenning når batteriet kobles fra hvis (vbat = intervall) {previousMillis = currentMillis; u8g2.clearBuffer (); // tøm den interne menyen // Pack Voltage display - Fonts on this page: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px skrift u8g2.setFont (u8g2_font_fub35_tr); // 35px skrift u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px skrift u8g2.setCursor (1, 60); u8g2.print ("volt"); } u8g2.sendBuffer (); // overføre internminnet til skjermforsinkelsen (1); }
Trinn 3: Trinn 3: La oss teste det ut
For å teste dette voltmeteret brukte jeg 10x 9v batterier som jeg fikk i en lokal butikk. Denne gangen kunne jeg måle opptil 97 volt! Jeg planlegger å bruke dette voltmeteret til å måle spenningen på mine elektriske sykler batteripakker (de har spenninger fra 24-60v med sporadiske 72v).
Når elektronikken er pakket inn i en kretskort og en liten eske, vil dette lage en fin og bærbar batteripakemåler. Grafikken og skriftene på OLED kan tilpasses dine behov (f.eks. Større skrift for enkel lesing). Målet mitt var å ha en spenningsavlesning på Oled/Arduino -måleren ikke så langt fra min digitale multimåler. Jeg siktet til +/- 0, 3v max delta.
Som du kan se fra videoen i begynnelsen av Instructable, klarte jeg å arkivere dette! De fleste avlesningene var i orden!
Jeg håper du likte denne instruksen og gi meg beskjed om tankene dine!
Anbefalt:
Hvordan lage og teste en bedre DAC med ESP32: 5 trinn
Hvordan lage og teste en bedre DAC med ESP32: ESP32 har 2 8-biters digitale til analoge omformere (DACer). Disse DACene lar oss produsere vilkårlige spenninger innenfor et bestemt område (0-3.3V) med 8 bits oppløsning. I denne instruksen vil jeg vise deg hvordan du bygger en DAC og karakteriserer dens side
Bedre prosjekter ved bruk av PCB: 6 trinn
Bedre prosjekter ved bruk av PCB -er: Hvis du har brukt tid på å jobbe med elektronikkprosjekter, vet du hvor morsomt og spennende det kan være. Ingenting er mer spennende enn å se kretsen din komme til liv rett foran øynene dine. Det blir enda mer spennende når prosjektet ditt blir til en
Narrow Band IoT: Smart Lighting & Metering baner vei for et bedre og sunnere økosystem: 3 trinn
Narrow Band IoT: Smart Lighting & Metering baner vei for et bedre og sunnere økosystem: Automatisering har funnet sin vei innen nesten alle sektorer. Fra produksjon til helse, transport og forsyningskjede har automatisering sett dagens lys. Alle disse er utvilsomt tiltalende, men det er en som virker
Bedre måte å vise/dokumentere filer på instruksjoner: 4 trinn
Better Way to View/Document Files on Instructables: Folk inkluderer ofte det filer for prosjektet via Instructables -opplastinger. Ofte er dette programvarekildefiler som til og med kan være det bankende hjertet til den instruerbare. Men Instructables gir ikke leseren en enkel måte å lese og gjennomgå koden. (
Bygg en bedre Raspberry Pi -strømknapp: 4 trinn
Bygg en bedre Raspberry Pi-strømknapp: Det er veldig enkelt å lage en Raspberry-av / på-knapp. Det er mange slike prosjekter på nettet og noen få her på Instructables, men ingen av dem (som jeg kan se) forteller deg når Pi faktisk har avsluttet å stenge og derfor er det