Sisukord:
Video: Arduino täpne ja täpne voltmeeter (0-90V DC): 3 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Selles juhendis olen ehitanud voltmeetri, et mõõta Arduino Nano abil suhteliselt täpselt ja täpselt kõrgepingeid (0-90v).
Minu tehtud testmõõtmised olid piisavalt täpsed, enamasti 0,3 V piires tavalise voltmeetriga mõõdetud tegelikust pingest (kasutasin Astro AI DM6000AR). See on minu kavandatud seadme kasutamiseks piisavalt lähedal.
Selle arhiveerimiseks kasutasin pingeandurit (4,096v) ja pingejaoturit.
Koodipoolel kasutasin muidugi Arduino Nano valikut "väline viide" ja Arduino õpetuste näidet "Silumine".
Tarvikud
1 x Arduino Nano - link
1 x Oled ekraan (SSD 1306) - link
1 x 1/4W 1% takistid - 1 k ohm - link
1 x 1/4W 1% takistid - 220 kΩ - Link
1 x 1/4W 1% takistid - 10 k ohm - Link
1 x 4.096v LM4040DIZ -4.1 pinge võrdlus - link
Leivalaud ja juhtmed - link
Astro AI DM6000AR - link
USB toitepank - link
9V patareid - link
CanadianWinters osaleb sidusreklaamiprogrammis Amazon Services LLC Associates Program, mis on loodud selleks, et pakkuda saitidele vahendeid tasu teenimiseks, linkides saidile Amazon.com ja sellega seotud saitidele. Neid linke kasutades teenin Amazoni sidusettevõttena kvalifitseeruvatest ostudest, isegi kui ostate midagi muud-ja see ei maksa teile midagi.
Samm: skeemid
Ühendasin kõik osad vastavalt ülaltoodud skeemile. Eelkõige valisin 4,096 pinge võrdluspunkti, et jääda 5v märgile võimalikult lähedale, et vältida eraldusvõime kaotamist.
Pärast andmelehte valisin pinge võrdluseks 1K oomi takisti, kuigi võiks kasutada teistsugust väärtust. Võrdluspinge tarnitakse Nano 5v tihvtilt.
Vooluahela mõte on see, et mõõdetav alalispinge läbib pingetakisti. Skaleeritud pinge ja seejärel satub Arduino analoogpistikusse, kust proovid võetakse, silutakse, skaleeritakse uuesti ja kuvatakse OLed-ekraanil.
Üritasin asju lihtsana hoida:)
2. samm: koodi ja takisti arvutused
Takistite väärtused valiti nii, nagu on soovitav (kui ma ei eksi, on see Arduino/Atmega andmelehel) hoida takistus alla 10 k oomi.
Asjade lihtsustamiseks koostasin arvutustabeli, mis automatiseerib arvutused juhuks, kui soovite kasutada erinevaid takisti väärtusi: Link to Google Sheet
Siin on kood, mida ma selle projekti jaoks kasutasin:
#kaasake
#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (pöörlemine, [lähtestamine]) ujukipinge = 0; // kasutatakse pinge väärtuse ujuki salvestamiseks Radjust = 0,043459459; // Pinge jagaja tegur (R2 /R1+R2) ujuk vbat = 0; // lõpppinge pärast kaltsium- aku ujuki pinge Vref = 4,133; // Pinge võrdlus - mõõdetud tegelik väärtus. Nimiväärtus 4,096v const int numReadings = 50; // lugemisproovide arv - suuremaks silumiseks suurendage. Vähendage kiiremaks lugemiseks. int näidud [numReadings]; // analoogsisendi näidud int readIndex = 0; // praeguse näidu indeks allkirjata pikk kogusumma = 0; // jooksev kogu int keskmine = 0; // muutujad ekraani värskendamiseks ilma viivitust kasutamata unsigned long previousMillis = 0; // salvestab viimati ekraani värskendamise ajal // konstandid ei muutu: const pikk intervall = 50; // intervall ekraani värskendamiseks (millisekundid) void setup (void) {analogReference (EXTERNAL); // kasutage võrdluspinge jaoks AREF 4.096. Minu võrdlus reaalne pinge on 4.113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {//… keerake algusesse: readIndex = 0; } // arvuta keskmine: keskmine = (kokku / numReadings); pinge = keskmine * (Vref / 1023.0); //4.113 on Vref vbat = pinge/Radjust; // Ekraani värskendamise viivituse määramine Millise abil, kui (currentMillis - previousMillis> = intervall) {// salvesta viimane kord, kui ekraani uuendati, eelmineMillis = currentMillis; u8g2.clearBuffer (); // sisemise menüü tühjendamine // Paki pingekuva u8g2.setFont (u8g2_font_fub20_tr); // 20px font u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px font u8g2.setCursor (76, 20); u8g2.print ("Voldid"); u8g2.setCursor (1, 40); u8g2.print ("Kanada talved"); u8g2.setCursor (1, 60); u8g2.print ("Täpne pinge"); } u8g2.sendBuffer (); // sisemälu ülekandmine kuvarile (1); }
Pange tähele, et olen Arduino kodeerimisel natuke roostes, nii et kui leiate vea või koodi täiustamise viisi, olen soovitustele avatud:)
Samm: proovime seda
Selle voltmeetri testimiseks kasutasin 8x 9v patareisid, mille sain kohalikust poest. Kavatsen seda voltmeetrit kasutada oma elektrijalgrataste akude pinge mõõtmiseks (nende pinge on vahemikus 24–60 V ja aeg-ajalt 72 V).
Kui elektroonika on trükkplaadile ja väikesesse karpi pakitud, saab sellest kena ja kaasaskantava akumõõdiku. OLED -i graafikat ja fonte saab kohandada vastavalt teie vajadustele (nt suurem font lihtsaks lugemiseks).
Minu eesmärk oli pinge näit Oled/Arduino arvestile mitte liiga kaugel minu digitaalsest multimõõturist. Sihtisin +/- 0, 3v max delta. Nagu videost näete, suutsin selle arhiveerida, välja arvatud mõõtmiste ülaosas.
Loodan, et teile meeldis see Instructable ja andke mulle oma mõtetest teada!
Soovitan:
Waveshare'i e-tindi ekraan Täpne voltmeeter (0-90v DC) Arduino Nanoga: 3 sammu
Waveshare'i e-tindi ekraan Täpne voltmeeter (0-90v DC) Arduino Nanoga: selles juhendis kasutan 2,9-tollist Waveshare'i e-paberi ekraani koos Arduino Nano, pingejaguri ja ADS1115-ga, et kuvada täpseid pingeid kuni 90 volti alalisvoolu E-paberi ekraanil. See juhendab ühendab need kaks eelmist projekti:- Ardui
Vahelduvvoolu voltmeeter Arduino abil: 3 sammu (piltidega)
Vahelduvvoolumõõtur Arduino abil: see on lihtne vooluahel, et teha kindlaks vahelduvpinge, kasutades Arduino UNO ilma vahelduvvoolu voltmeetrita !! NAUTI
Digitaalne Arduino voltmeeter: 3 sammu
Digitaalne Arduino voltmeeter: Voltmeeter või pingemõõtur on mõõtevahend, mida kasutatakse pinge mõõtmiseks
Isetegemise voltmeeter Arduino ja töötlemise abil: 4 sammu
Isetegemise voltmeeter Arduino ja töötlemise abil: Tere ja tere tulemast tänasesse projekti. Olen Sarvesh ja täna teeme arduino -põhise voltmeetri. Kuid selles on erinev see, et see näitab oma väljundit töötlustarkvaras. Nüüd tegime ühes oma eelmises õpetuses protsessi
Voltmeeter Arduino abil: 4 sammu
Voltmeeter Arduino abil