Innholdsfortegnelse:
Video: Arduino presis og nøyaktig voltmeter (0-90V DC): 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:20
I denne instruksen har jeg bygget et voltmeter for å måle høyspenninger DC (0-90v) med relativ presisjon og nøyaktighet ved hjelp av en Arduino Nano.
Testmålingene jeg tok var nøyaktige nok, stort sett innenfor 0,3v av den faktiske spenningen målt med et standard voltmeter (jeg brukte en Astro AI DM6000AR). Dette er nær nok til min tiltenkte bruk av enheten.
For å arkivere dette brukte jeg en spenningsreferanse (4.096v) og spenningsdeler.
På kodesiden brukte jeg selvfølgelig alternativet "ekstern referanse" for Arduino Nano og "Smoothing" -eksemplet i Arduino -opplæringsprogrammene.
Rekvisita
1 x Arduino Nano - lenke
1 x Oled -skjerm (SSD 1306) - lenke
1 x 1/4W 1% motstander - 1k ohm - Link
1 x 1/4W 1% motstander - 220k ohm - Link
1 x 1/4W 1% motstander - 10k ohm - Link
1 x 4.096v LM4040DIZ -4.1 Spenningsreferanse - lenke
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: Skjemaene
Jeg koblet alle delene i henhold til skjemaet ovenfor. Spesielt valgte jeg 4.096 spenningsreferansen for å holde meg så nær 5v -merket som mulig for å unngå å miste oppløsning.
Etter databladet valgte jeg en 1K ohm motstand for spenningsreferansen, selv om en annen verdi kunne brukes. Spenningen for referansen leveres fra Nano 5v -pinnen.
Tanken med kretsen er at DC -spenningen som skal måles går gjennom en spenningsmotstand. Den skalerte spenningen og kommer deretter inn i den analoge pinnen på Arduino for å samples, glattes ut, skaleres på nytt og vises på OLed-skjermen.
Jeg prøvde å holde ting enkelt:)
Trinn 2: Kode- og motstandsberegningene
Motstandsverdiene ble valgt som det er tilrådelig (hvis jeg ikke tar feil, er dette på Arduino/Atmega -databladet) for å holde impedansen under 10k ohm.
For å forenkle ting laget jeg et regneark som automatiserer beregningene hvis du vil bruke forskjellige motstandsverdier: Lenke til Google Sheet
Her er koden jeg brukte for dette prosjektet:
#inkludere
#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotation, [reset]) flytespenning = 0; // brukes til å lagre spenningsverdi float Radjust = 0.043459459; // Spenningsdelingsfaktor (R2 /R1+R2) float vbat = 0; // sluttspenning etter beregning- spenning av batteriflåten Vref = 4.113; // Spenningsreferanse - målt virkelig verdi. Nominell verdi 4,096v const int numReadings = 50; // antall leseprøver - øk for mer utjevning. Reduser for raskere lesing. int avlesninger [numReadings]; // avlesningene fra den analoge inngangen int readIndex = 0; // indeksen for gjeldende lesning usignert lang total = 0; // løpende total int gjennomsnitt = 0; // variabler for å oppdatere skjermen uten å bruke forsinkelse unsigned long previousMillis = 0; // vil lagre forrige gang skjermen ble oppdatert // konstanter vil ikke endres: const langt intervall = 50; // intervall for oppdatering av skjermen (millisekunder) hulromsoppsett (tomrom) {analogReference (EXTERNAL); // bruk AREF for referansespenning 4.096. Min reelle spenning er 4.113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {// … vikle rundt til begynnelsen: readIndex = 0; } // beregne gjennomsnittet: gjennomsnitt = (total / numReadings); spenning = gjennomsnittlig * (Vref / 1023.0); //4.113 er Vref vbat = spenning/Radjust; // Angi forsinkelse for skjermoppdatering ved hjelp av Millis if (currentMillis - previousMillis> = intervall) {// lagre siste gangen skjermen ble oppdatert previousMillis = currentMillis; u8g2.clearBuffer (); // tøm den interne menyen // Pack Voltage display u8g2.setFont (u8g2_font_fub20_tr); // 20px skrift u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px skrift u8g2.setCursor (76, 20); u8g2.print ("volt"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (1, 60); u8g2.print ("Presis spenning"); } u8g2.sendBuffer (); // overføre internminnet til skjermforsinkelsen (1); }
Vær oppmerksom på at jeg er litt rusten med Arduino -koding, så hvis du finner feil eller en måte å forbedre koden, er jeg åpen for forslag:)
Trinn 3: La oss teste det
For å teste dette voltmeteret brukte jeg 8x 9v batterier som jeg fikk i en lokal butikk. 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, klarte jeg å arkivere dette bortsett fra øverste ende av målingene.
Jeg håper du likte denne instruksen og gi meg beskjed om tankene dine!
Anbefalt:
Waveshare E-blekkvisning Presis voltmeter (0-90v DC) med Arduino Nano: 3 trinn
Waveshare E-ink Display presis voltmeter (0-90v DC) Med Arduino Nano: I denne instruksjonsboken bruker jeg en 2,9 '' Waveshare E-Paper-skjerm med en Arduino Nano, en spenningsdeler og en ADS1115 for å vise presise spenninger opp til 90 volt DC på E-Paper Display. Denne instruksjonen kombinerer disse to tidligere prosjektene:- Ardui
3d Printed Endgame Arc Reactor (Film nøyaktig og bærbar): 7 trinn (med bilder)
3d Printed Endgame Arc Reactor (Movie Accurate and Wearable): Full Youtube -opplæring: Jeg kunne ikke finne noen spesielt filmnøyaktige 3d -filer for Mark 50 bueaktor/hus for nanopartikler, så kompisen min og jeg lagde opp noen søte. Det tok massevis av tilpasninger for å få saken til å se nøyaktig og fantastisk ut
Presis temperaturkontroll på Raspberry Pi 4: 3 -trinn
Presis temperaturkontroll på Raspberry Pi 4: Pimoroni Fan Shim er en flott løsning for å redusere temperaturen på Pi når den går varm. Produsentene tilbyr til og med programvare som utløser viften når CPU -temperaturen stiger over en viss terskel (f.eks. 65 grader). Temperaturen q
Hvordan lage en nøyaktig luftmengdesensor med Arduino for under £ 20 COVID-19-ventilator: 7 trinn
Hvordan lage en nøyaktig luftstrømningssensor med Arduino for under £ 20 COVID-19-ventilator: Se denne rapporten for den nyeste utformingen av denne åpningsflytsensoren: https://drive.google.com/file/d/1TB7rhnxQ6q6C1cNb. ..Denne instruksjonene viser hvordan du bygger en luftstrømningssensor ved hjelp av en differensialtrykksensor til lav pris og lett
Presis peristaltisk pumpe: 13 trinn
Presis peristaltisk pumpe: Vi er et studentteam fra forskjellige disipliner ved RWTH Aachen University og har opprettet dette prosjektet i sammenheng med iGEM -konkurransen 2017. Etter alt arbeidet som gikk med pumpen vår, vil vi dele resultatene våre med deg ! Vi bygger