Indholdsfortegnelse:
Video: Arduino præcis og nøjagtig voltmåler (0-90V DC): 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
I denne instruktive har jeg bygget et voltmeter til at måle højspændinger DC (0-90v) med relativ præcision og nøjagtighed ved hjælp af en Arduino Nano.
De testmålinger, jeg tog, var præcise nok, mest inden for 0,3 v af den faktiske spænding målt med et standard voltmeter (jeg brugte en Astro AI DM6000AR). Dette er tæt nok til min påtænkte brug af enheden.
For at arkivere dette brugte jeg en spændingsreference (4.096v) og spændingsdeler.
På kodesiden brugte jeg naturligvis indstillingen "ekstern reference" til Arduino Nano og "Smoothing" -eksemplet i Arduino -øvelserne.
Forbrugsvarer
1 x Arduino Nano - Link
1 x Oled Display (SSD 1306) - Link
1 x 1/4W 1% modstande - 1k ohm - Link
1 x 1/4W 1% modstande - 220k ohm - Link
1 x 1/4W 1% modstande - 10k ohm - Link
1 x 4.096v LM4040DIZ -4.1 Spændingsreference - Link
Brødbræt og ledninger - Link
Astro AI DM6000AR - Link
USB Power Bank - Link
9V batterier - Link
CanadianWinters er deltager i Amazon Services LLC Associates Program, et affilieret annonceringsprogram designet til at give websteder mulighed for at tjene gebyrer ved at linke til Amazon.com og tilknyttede websteder. Ved at bruge disse links tjener jeg som Amazon Associate på kvalificerede køb, selvom du køber noget andet-og det vil ikke koste dig noget.
Trin 1: Skemaerne
Jeg forbandt alle delene i henhold til skemaerne ovenfor. Især valgte jeg 4.096 spændingsreferencen for at blive så tæt som muligt på 5v -mærket for at undgå at miste opløsning.
Efter databladet valgte jeg en 1K ohm modstand til spændingsreferencen, selvom en anden værdi kunne bruges. Spændingen til referencen leveres fra Nano 5v pin.
Tanken med kredsløbet er, at DC -spændingen, der skal måles, går gennem en spændingsmodstand. Den skalerede spænding og kommer derefter ind i den analoge pin på Arduino for at samples, udjævnes, skaleres igen og vises på OLed-displayet.
Jeg prøvede at holde tingene enkle:)
Trin 2: Kode- og modstandsberegningerne
Modstandens værdier blev valgt, da det er tilrådeligt (hvis jeg ikke tager fejl, er dette på Arduino/Atmega -databladet) for at holde impedansen under 10k ohm.
For at forenkle tingene lavede jeg et regneark, der automatiserer beregningerne, hvis du vil bruge forskellige modstandsværdier: Link til Google Sheet
Her er koden, jeg brugte til dette projekt:
#omfatte
#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotation, [reset]) flydespænding = 0; // bruges til at gemme spændingsværdi float Radjust = 0,043459459; // Spændingsdelingsfaktor (R2 /R1+R2) float vbat = 0; // slutspænding efter beregninger- spænding af batteriflåden Vref = 4.113; // Spændingsreference - målt reel værdi. Nominel værdi 4,096v const int numReadings = 50; // antal læseprøver - øg for mere udjævning. Fald for hurtigere læsning. int aflæsninger [numReadings]; // aflæsningerne fra den analoge indgang int readIndex = 0; // indekset for den aktuelle læsning usigneret lang total = 0; // det løbende samlede int -gennemsnit = 0; // variabler til opdatering af skærmen uden brug af forsinkelse unsigned long previousMillis = 0; // vil gemme sidste gang skærmen blev opdateret // konstanter ændres ikke: const langt interval = 50; // interval for opdatering af skærmen (millisekunder) hulrumsopsætning (tomrum) {analogReference (EXTERNAL); // brug AREF til referencespænding 4.096. Min reference reelle spænding er 4.113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {//… vikle rundt til begyndelsen: readIndex = 0; } // beregne gennemsnittet: gennemsnit = (total / numReadings); spænding = gennemsnit * (Vref / 1023.0); //4.113 er Vref vbat = spænding/Radjust; // Indstilling af forsinkelsen for skærmopdatering ved hjælp af Millis if (currentMillis - previousMillis> = interval) {// gem sidste gang skærmen blev opdateret previousMillis = currentMillis; u8g2.clearBuffer (); // ryd den interne menory // Pack Voltage display u8g2.setFont (u8g2_font_fub20_tr); // 20px skrifttype u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px skrifttype u8g2.setCursor (76, 20); u8g2.print ("volt"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (1, 60); u8g2.print ("Præcis spænding"); } u8g2.sendBuffer (); // overfør intern hukommelse til displayforsinkelsen (1); }
Bemærk, at jeg er lidt rusten med Arduino -kodning, så hvis du finder en fejl eller en måde at forbedre koden, er jeg åben for forslag:)
Trin 3: Lad os teste det
For at teste dette voltmeter brugte jeg 8x 9v batterier, som jeg fik i en lokal butik. Jeg planlægger at bruge dette voltmeter til at måle spændingen på mine elektriske cykler batteripakker (de har spændinger fra 24-60v med lejlighedsvis 72v).
Når elektronikken er pakket ind i et printkort og en lille æske, vil dette være en flot og bærbar batteripakemåler. Grafikken og skrifttyperne på OLED kan tilpasses dine behov (f.eks. Større skrifttype til let læsning).
Mit mål var at have en spændingsaflæsning på Oled/Arduino -måleren ikke for langt fra mit Digital Multi Meter. Jeg sigtede mod +/- 0, 3v max delta. Som du kan se fra videoen, kunne jeg arkivere dette undtagen i den øverste ende af målingerne.
Jeg håber, at du nød denne instruks og lad mig vide dine tanker!
Anbefalede:
Waveshare E-ink Display præcis voltmeter (0-90v DC) med Arduino Nano: 3 trin
Waveshare E-ink Display Precise Voltmeter (0-90v DC) Med Arduino Nano: I denne instruktør bruger jeg et 2,9 '' Waveshare E-Paper display med en Arduino Nano, en spændingsdeler og en ADS1115 til at vise præcise spændinger op til 90 volt DC på E-Paper Display.Denne instruktive kombinerer disse to tidligere projekter:- Ardui
3d Trykt Endgame Arc Reactor (film nøjagtig og bærbar): 7 trin (med billeder)
3d Printed Endgame Arc Reactor (Movie Accurate and Wearable): Fuld Youtube -vejledning: Jeg kunne ikke finde nogen særlig filmnøjagtige 3d -filer til Mark 50 -buereaktoren/huset til nanopartikler, så min kammerat og jeg lavede nogle søde. Det tog masser af finjusteringer for at få tingene til at se præcise og fantastiske ud
GPSDO YT, Disciplineret Oscillator 10Mhz referencefrekvens. Lavpris. Nøjagtig .: 3 trin
GPSDO YT, Disciplineret Oscillator 10Mhz referencefrekvens. Lavpris. Præcis .: *********************************************** ****************************** STOP STOP STOP STOP STOP STOP STOP STOP STOP Dette er et forældet projekt. Tjek i stedet min ny 2x16 lcd -skærmversion tilgængelig her: https: //www.instructables.com/id
Skærm til Arduino fra gamle russiske VFD -rør: Ur, termometer, voltmåler : 21 trin (med billeder)
Skærm til Arduino Fra gamle russiske VFD -rør: Ur, termometer, voltmåler …: Dette projekt tog næsten et halvt år at gennemføre. Jeg kan ikke beskrive, hvor meget arbejde der er lagt i dette projekt. At gøre dette projekt alene ville tage mig for evigt, så jeg havde lidt hjælp fra mine venner. Her kan du se vores arbejde samlet i en meget lang instruktion
Sådan laver du en nøjagtig luftmængdesensor med Arduino til under 20 £ COVID-19-ventilator: 7 trin
Sådan laver du en nøjagtig luftstrømningssensor med Arduino til under £ 20 COVID-19-ventilator: Se denne rapport for det nyeste design af denne åbningssensor: https://drive.google.com/file/d/1TB7rhnxQ6q6C1cNb. ..Denne instruktion viser, hvordan man opbygger en luftmængdesensor ved hjælp af en differensialtryksføler til lave omkostninger og let en