INHOUDSOPGAWE:
Video: Arduino presiese en akkurate voltmeter (0-90V DC): 3 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
In hierdie instruksies het ek 'n voltmeter gebou om hoë spanning DC (0-90v) relatief akkuraat en akkuraat te meet met behulp van 'n Arduino Nano.
Die toetsmetings wat ek geneem het, was akkuraat genoeg, meestal binne 0.3v van die werklike spanning wat met 'n standaard voltmeter gemeet is (ek het 'n Astro AI DM6000AR gebruik). Dit is naby genoeg vir my beoogde gebruik van die toestel.
Om dit te argiveer, gebruik ek 'n spanningsverwysing (4.096v) en 'n spanningsverdeler.
Aan die kodekant gebruik ek natuurlik die opsie 'eksterne verwysing' vir die Arduino Nano en die 'Smoothing' voorbeeld in die Arduino -tutoriale.
Voorrade
1 x Arduino Nano - skakel
1 x Oled -skerm (SSD 1306) - skakel
1 x 1/4W 1% weerstande - 1k ohm - skakel
1 x 1/4W 1% weerstande - 220k ohm - skakel
1 x 1/4W 1% weerstande - 10k ohm - skakel
1 x 4.096v LM4040DIZ -4.1 Spanningsverwysing - skakel
Broodbord en drade - Skakel
Astro AI DM6000AR - Skakel
USB Power Bank - skakel
9V -batterye - skakel
CanadianWinters is 'n deelnemer aan die Amazon Services LLC Associates Program, 'n geaffilieerde advertensieprogram wat ontwerp is om webwerwe 'n manier te bied om fooie te verdien deur te skakel na Amazon.com en aangeslote webwerwe. Deur hierdie skakels te gebruik, verdien ek as Amazon-medewerker uit kwalifiserende aankope, selfs al koop u iets anders-en dit kos u niks.
Stap 1: Die skemas
Ek het al die dele verbind volgens die skemas hierbo. In die besonder het ek die 4.096 spanningsverwysing gekies om so na as moontlik aan die 5v -merk te bly om die verlies van resolusie te vermy.
Na aanleiding van die datablad het ek 'n 1K ohm -weerstand gekies vir die spanningsverwysing, alhoewel 'n ander waarde gebruik kan word. Die spanning vir die verwysing word verskaf deur die Nano 5v -pen.
Die idee van die stroombaan is dat die GS -spanning wat gemeet moet word, deur 'n spanningsweerstand gaan. Die afgeskaalde spanning kom dan in die analoog pen van die Arduino om te bemonster, glad te word, weer te skaal en op die OLed-skerm te vertoon.
Ek het probeer om dinge eenvoudig te hou:)
Stap 2: Die kode en weerstandberekeninge
Die weerstandswaardes is gekies, aangesien dit raadsaam is (as ek my nie vergis nie, is dit op die Arduino/Atmega -datablad) om die impedansie onder 10k ohm te hou.
Om dinge te vereenvoudig, het ek 'n sigblad gemaak wat die berekeninge outomatiseer indien u verskillende weerstandswaardes wil gebruik: Skakel na Google Sheet
Hier is die kode wat ek vir hierdie projek gebruik het:
#insluit
#sluit U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0) in; // (rotasie, [reset]) dryfspanning = 0; // gebruik om die spanningswaarde vlot op te slaan Radjust = 0.043459459; // Spanningsverdelingsfaktor (R2 /R1+R2) dryf vbat = 0; // eindspanning na berekeninge- spanning van die batteryvlotter Vref = 4.113; // Spanningsverwysing - werklike waarde gemeet. Nominale waarde 4.096v const int numReadings = 50; // aantal leesmonsters - verhoog vir meer gladheid. Verminder vir vinniger lees. int lesings [numReadings]; // die lesings van die analoog invoer int readIndex = 0; // die indeks van die huidige lesing ongetekende lang totaal = 0; // die lopende totale int gemiddelde = 0; // veranderlikes om die skerm te verfris sonder om vertraging te gebruik, ongetekende lang vorigeMillis = 0; // sal die laaste keer stoor dat die skerm opgedateer is // konstantes sal nie verander nie: const lang interval = 50; // interval om die skerm te verfris (millisekondes) leemte -opstelling (leegte) {analogReference (EXTERNAL); // gebruik AREF vir verwysingspanning 4.096. My werklike spanning is 4.113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {// … draai om na die begin: readIndex = 0; } // bereken die gemiddelde: gemiddelde = (totaal / getallesings); spanning = gemiddeld * (Vref / 1023.0); //4.113 is die Vref vbat = spanning/Radjust; // Stel die vertraging vir die skermverfris in met Millis if (currentMillis - previousMillis> = interval) {// stoor die laaste keer dat die skerm opgedateer is previousMillis = currentMillis; u8g2.clearBuffer (); // maak die interne opvatting skoon // Pak spanning skerm u8g2.setFont (u8g2_font_fub20_tr); // 20px lettertipe u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px lettertipe u8g2.setCursor (76, 20); u8g2.print ("Volt"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (1, 60); u8g2.print ("Presiese spanning"); } u8g2.sendBuffer (); // dra interne geheue oor na die vertraging van die vertoning (1); }
Let wel, ek is 'n bietjie verroes met Arduino -kodering, so as u 'n fout vind of 'n manier om die kode te verbeter, is ek oop vir voorstelle:)
Stap 3: Kom ons toets dit
Om hierdie voltmeter te toets, gebruik ek 8x 9v batterye wat ek by 'n plaaslike winkel gekry het. Ek is van plan om hierdie voltmeter te gebruik om die spanning op my elektriese fietse se batterypakke te meet (hulle het spannings wat wissel van 24-60v met soms 72v).
Sodra die elektronika in 'n PCB en 'n klein boks verpak is, sal dit 'n mooi en draagbare batterymeter wees. Die grafika en lettertipes op die OLED kan aangepas word om aan u behoeftes te voldoen (bv. Groter lettertipe om maklik te lees).
My doel was om 'n spanningslesing op die Oled/Arduino -meter te hê, nie te ver van my Digital Multi Meter nie. Ek het gemik op +/- 0, 3v max delta. Soos u uit die video kan sien, kon ek dit argief behalwe aan die bokant van die metings.
Ek hoop dat u hierdie instruksies geniet het en laat my u gedagtes weet!
Aanbeveel:
Waveshare presiese voltmeter (0-90v DC) met e-ink-vertoning met Arduino Nano: 3 stappe
Waveshare presiese voltmeter (0-90v DC) met E-ink-skerm volt DC op die E-Paper Display. Hierdie instruksies kombineer hierdie twee vorige projekte:- Ardui
Presiese temperatuurbeheer op die Raspberry Pi 4: 3 -stappe
Presiese temperatuurbeheer op die Raspberry Pi 4: Die Pimoroni Fan Shim is 'n uitstekende oplossing om die temperatuur van u Pi te verlaag as dit warm word. Die vervaardigers bied selfs sagteware wat die waaier aanskakel wanneer die CPU -temperatuur bo 'n sekere drempel styg (bv. 65 grade). Die temperatuur q
Hoe om 'n akkurate lugvloeisensor met Arduino te maak vir minder as £ 20 COVID-19 ventilator: 7 stappe
Hoe om 'n akkurate lugvloeisensor met Arduino te maak vir minder as £ 20 COVID-19 ventilator: sien hierdie verslag vir die mees onlangse ontwerp van hierdie openingvloeisensor: https://drive.google.com/file/d/1TB7rhnxQ6q6C1cNb. Hierdie instruksies wys hoe u 'n lugvloeisensor kan bou met 'n goedkoop differensiële druksensor en maklik 'n
DIY analoog veranderlike bankvoeding met presiese stroombegrenzer: 8 stappe (met foto's)
DIY analoog veranderlike bankvoeding met presiese stroombegrenzer: in hierdie projek sal ek u wys hoe u die bekende LM317T kan gebruik met 'n stroomversterker, en hoe u die lineêre tegnologie LT6106 stroomversterkingsversterker kan gebruik vir presisiestroombeperkers. gebruik u tot meer as 5A
Presiese peristaltiese pomp: 13 stappe
Presiese peristaltiese pomp: ons is 'n studentespan uit verskillende dissiplines van die RWTH Aachen -universiteit en het hierdie projek geskep in die konteks van die 2017 iGEM -kompetisie. ! Ons bou