Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Trin 1: skemaerne
- Trin 2: Trin 2: Kode- og modstandsberegningerne
- Trin 3: Trin 3: Lad os teste det
Video: Arduino Volt Meter (0-100V DC) - Version 2 (bedre): 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-100v) med relativ præcision og nøjagtighed ved hjælp af en Arduino Nano og en ADS 1115 ADC.
Dette er en anden version af voltmeteret brugt min tidligere instruerbare her:
De testmålinger, jeg tog, var nøjagtige, for det meste inden for 0,1 v af den faktiske spænding målt med et standard voltmeter (jeg brugte en Astro AI DM6000AR).
Dette er meget bedre og lettere efter min mening end at bruge en ekstern spændingsreference på Arduino.
Forbrugsvarer
1 x Arduino Nano - Link
1 x Oled Display (SSD 1306) - Link
1 x ADS 1115 - 16 bit ADC - Link
1 x 1/4W (jeg foreslår dog at bruge 1W modstande) 1% modstande - 220k ohm - Link
1 x 1/4W (jeg foreslår dog at bruge 1W modstande) 1% modstande - 10k ohm - 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: Trin 1: skemaerne
Jeg forbandt alle delene i henhold til skemaerne ovenfor.
Jeg bandt ADDR -stiften på ADC1115 til jorden. Dette indstiller adressen på ADC til 0x48.
Trin 2: Trin 2: Kode- og modstandsberegningerne
Som i den tidligere instruerbare, er ideen med kredsløbet, 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å ADC-konverteren, der skal læses, derefter overført til Arduino via I2C og derefter skaleret igen og vist på OLed-displayet.
Jeg brugte ikke nogen gennemsnit eller udjævning i koden i dette tilfælde, da aflæsningerne virker ret præcise og præcise. For at reducere støj kan du tilføje en lille kondensator mellem A0 (på ADC) og jorden. Det var dog ikke påkrævet til min test.
En ting jeg bemærkede, var en smule støj, når der ikke var tilsluttet et batteri (0 volt). Jeg brugte den serielle skærm på Arduino til at vise ADC -værdien og rette/justere den via kode.
Som i den foregående instruerbare, lavede jeg et regneark, der automatiserer beregningerne, hvis du vil bruge forskellige modstandsværdier i spændingsdeleren: Link til Google Sheet
Her er koden, jeg brugte til dette projekt:
#omfatte
#include #include #include Adafruit_ADS1115 annoncer (0x48); // Adresse til ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotation, [reset]) int calib = 7; // Værdi for kalibrering af ADS1115 for at reducere fejl float spænding = 0; // bruges til at gemme spændingsværdi float Radjust = 0,043421905; // Spændingsdelingsfaktor (R2 / R1+R2) float vbat = 0; // slutspænding efter beregninger- spænding af batteriet // variabler til opdatering af skærmen uden forsinkelse uden fortegn lang foregåendeMillis = 0; // vil gemme sidste gang skærmen blev opdateret // konstanter ændres ikke: const langt interval = 250; // interval for opdatering af skærmen (millisekunder) hulrumsopsætning (tomrum) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 bit ADC læsning af input A0 adc0 = ads.readADC_SingleEnded (0); spænding = ((adc0 + kalib) * 0,1875)/1000; usigneret lang strømMillis = millis (); vbat = spænding/Radjust; // Forhindre visning af negativ spænding, når batteriet afbrydes, hvis (vbat = interval) {previousMillis = currentMillis; u8g2.clearBuffer (); // ryd den interne menory // Pack Voltage display - skrifttyper på denne side: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px skrifttype u8g2.setFont (u8g2_font_fub35_tr); // 35px skrifttype u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px skrifttype u8g2.setCursor (1, 60); u8g2.print ("volt"); } u8g2.sendBuffer (); // overfør intern hukommelse til displayforsinkelsen (1); }
Trin 3: Trin 3: Lad os teste det
For at teste dette voltmeter brugte jeg 10x 9v batterier, som jeg fik i en lokal butik. Denne gang kunne jeg måle op til 97 volt! 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 i begyndelsen af Instructable, var jeg i stand til at arkivere dette! De fleste aflæsninger var helt i orden!
Jeg håber, at du nød denne instruks og lad mig vide dine tanker!
Anbefalede:
Sådan laver og tester du en bedre DAC med ESP32: 5 trin
Sådan laves og testes en bedre DAC med ESP32: ESP32 har 2 8-bit digitale til analoge omformere (DAC'er). Disse DAC'er giver os mulighed for at producere vilkårlige spændinger inden for et bestemt område (0-3.3V) med 8 bits opløsning. I denne Instructable vil jeg vise dig, hvordan du bygger en DAC og karakteriserer dens p
Bedre projekter ved hjælp af printkort: 6 trin
Bedre projekter ved hjælp af printkort: Hvis du har brugt tid på at arbejde med elektronikprojekter, ved du, hvor sjovt og spændende det kan være. Intet er mere spændende end at se dit kredsløb komme til live lige foran dine øjne. Det bliver endnu mere spændende, når dit projekt bliver til en
Narrow Band IoT: Smart Lighting & Metering baner vej for et bedre og sundere økosystem: 3 trin
Narrow Band IoT: Smart Lighting & Metering baner vej for et bedre og sundere økosystem: Automatisering har fundet vej inden for næsten alle sektorer. Fra produktion til sundhed, transport og forsyningskæde har automatisering set dagens lys. Alle disse er utvivlsomt tiltalende, men der er en, der synes
Bedre måde at se/dokumentere filer på instruktioner: 4 trin
Bedre måde at se/dokumentere filer på instruktioner: Folk inkluderer ofte der filer til projekt via Instructables -uploads. Ofte er dette softwarekildefiler, der endda kan være det vejledende hjerte for den instruerbare. Men Instructables giver ikke læseren en let måde at læse og gennemgå koden. (
Byg en bedre Raspberry Pi -afbryderknap: 4 trin
Byg en bedre Raspberry Pi-afbryderknap: Det er meget let at lave en Raspberry-sluk- eller nedlukningsknap. Der er masser af sådanne projekter på nettet og et par stykker her på Instructables, men ingen af dem (som jeg kan se) fortæller dig, hvornår din Pi faktisk er færdig med at lukke ned, og derfor er det