Talaan ng mga Nilalaman:

Tiyak na Arduino at Tumpak na Volt Meter (0-90V DC): 3 Mga Hakbang
Tiyak na Arduino at Tumpak na Volt Meter (0-90V DC): 3 Mga Hakbang

Video: Tiyak na Arduino at Tumpak na Volt Meter (0-90V DC): 3 Mga Hakbang

Video: Tiyak na Arduino at Tumpak na Volt Meter (0-90V DC): 3 Mga Hakbang
Video: Контрольная лампа переменного тока с диммером Arduino AC 2024, Nobyembre
Anonim

Sa itinuturo na ito, nagtayo ako ng isang voltmeter upang masukat ang mga mataas na boltahe DC (0-90v) na may ganap na katumpakan at kawastuhan gamit ang isang Arduino Nano.

Ang mga sukat sa pagsubok na kinuha ko ay sapat na tumpak, karamihan sa loob ng 0.3v ng aktwal na boltahe na sinusukat sa isang karaniwang voltmeter (Gumamit ako ng isang Astro AI DM6000AR). Ito ay sapat na malapit sa aking nilalayon na paggamit ng aparato.

Upang i-archive ito gumamit ako ng isang sanggunian ng boltahe (4.096v) at divider ng boltahe.

Sa panig ng code, ginamit ko, syempre, ang pagpipiliang "panlabas na sanggunian" para sa Arduino Nano at halimbawa ng "Smoothing" sa mga Arduino tutorial.

Mga gamit

1 x Arduino Nano - Link

1 x Oled Display (SSD 1306) - Link

1 x 1 / 4W 1% Resistors - 1k ohm - Link

1 x 1 / 4W 1% Resistors - 220k ohm - Link

1 x 1 / 4W 1% Resistors - 10k ohm - Link

1 x 4.096v LM4040DIZ-4.1 Sanggunian ng Boltahe - Link

Breadboard at wires - Link

Astro AI DM6000AR - Link

USB Power Bank - Link

9V Baterya - Link

Ang CanadianWinters ay isang kalahok sa Amazon Services LLC Associates Program, isang kaakibat na programa sa advertising na idinisenyo upang magbigay ng isang paraan para sa mga site upang kumita ng mga bayarin sa pamamagitan ng pag-link sa Amazon.com at mga kaakibat na site. Sa pamamagitan ng paggamit ng mga link na ito, bilang isang Associate sa Amazon kumikita ako mula sa mga kwalipikadong pagbili, kahit na bumili ka ng iba pa - at hindi ka gastos sa anumang bagay.

Hakbang 1: Ang Mga Skema

Ang Mga Iskolar
Ang Mga Iskolar
Ang Mga Iskolar
Ang Mga Iskolar

Ikinonekta ko ang lahat ng mga bahagi ayon sa mga eskematiko sa itaas. Sa partikular pinili ko ang 4.096 boltahe na sanggunian upang manatili nang malapit hangga't maaari sa markang 5v upang maiwasan ang pag-loose ng resolusyon.

Kasunod sa datasheet, pumili ako ng isang 1K ohm risistor para sa sanggunian ng boltahe kahit na maaaring gumamit ng ibang halaga. Ang boltahe para sa sanggunian ay ibinibigay mula sa Nano 5v pin.

Ang ideya ng circuit ay ang boltahe ng DC na susukat ay dumadaan sa isang boltahe risistor. Ang na-scale na boltahe at pagkatapos ay papunta sa analog pin ng Arduino upang mai-sample, hinusay, muling na-scale at ipinakita sa display na OLed.

Sinubukan kong gawing simple ang mga bagay:)

Hakbang 2: Ang Mga Pagkalkula sa Code at Resistor

Ang mga halaga ng resistors ay pinili dahil ipinapayong (kung hindi ako nagkakamali na ito ay nasa Arduino / Atmega datasheet) upang mapanatili ang impedance sa ibaba 10k ohm.

Upang gawing simple ang mga bagay, gumawa ako ng isang spreadsheet na awtomatiko ang mga kalkulasyon kung sakaling nais mong gumamit ng iba't ibang mga halaga ng risistor: Mag-link sa Google Sheet

Narito ang code na ginamit ko para sa proyektong ito:

# isama

# isama ang U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (pag-ikot, [reset]) float voltage = 0; // ginamit upang mag-imbak ng halaga ng boltahe float Radjust = 0.043459459; // Voltage divider factor (R2 / R1 + R2) float vbat = 0; // final voltage pagkatapos ng calcs- boltahe ng float ng baterya Vref = 4.113; // Boltahe sanggunian - sinusukat ang tunay na halaga. Nominal na halaga 4.096v const int numReadings = 50; // bilang ng mga sample ng pagbabasa - dagdagan para sa higit pang paglinis. Bumaba para sa mas mabilis na pagbabasa. int readings [numReadings]; // ang mga pagbasa mula sa analog input int readIndex = 0; // ang index ng kasalukuyang pagbabasa na hindi naka-sign matagal na kabuuang = 0; // the running total int average = 0; // variable para sa pag-refresh ng screen nang hindi gumagamit ng pagkaantala na hindi naka-sign matagal na nakaraangMillis = 0; // mag-iimbak ng huling oras na na-update ang screen // hindi magbabago ang mga Constant: const long interval = 50; // interval kung saan i-refresh ang screen (milliseconds) walang bisa ang pag-set up (walang bisa) {analogReference (EXternal); // use AREF para sa sanggunian boltahe 4.096. Ang aking sangguniang tunay na boltahe ay 4.113v u8g2.begin (); para sa (int thisReading = 0; thisReading = numReadings) {//… balot sa umpisa: readIndex = 0; } // kalkulahin ang average: average = (total / numReadings); boltahe = average * (Vref / 1023.0); //4.113 ay ang Vref vbat = boltahe / Radjust; // Ang pagtatakda ng pagkaantala para sa pag-refresh ng screen gamit ang Millis kung (kasalukuyangMillis - nakaraangMillis> = agwat) {// i-save ang huling oras na na-update ang screen sa nakaraangMillis = currentMillis; u8g2.clearBuffer (); // clear the internal menory // Pack Voltage display 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 ("Volts"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (1, 60); u8g2.print ("Tiyak na Boltahe"); } u8g2.sendBuffer (); // transfer internal memory sa pagkaantala sa pagpapakita (1); }

Mangyaring tandaan na medyo kalawangin ako sa Arduino coding, kaya kung nakakita ka ng anumang pagkakamali o isang paraan upang mapabuti ang code, bukas ako sa mga mungkahi:)

Hakbang 3: Subukan Natin Ito

Subukan Natin Ito!
Subukan Natin Ito!
Subukan Natin Ito!
Subukan Natin Ito!
Subukan Natin Ito!
Subukan Natin Ito!

Upang subukan ang voltmeter na ito gumamit ako ng 8x 9v na baterya na nakuha ko sa isang lokal na tindahan. Plano kong gamitin ang voltmeter na ito upang masukat ang boltahe sa aking mga de-koryenteng baterya na mga pack ng baterya (mayroon silang mga voltages na mula 24-60v na may mga paminsan-minsang 72v na mga bago).

Kapag ang electronics ay nakabalot sa isang pcb at isang maliit na kahon, gagawa ito ng isang maganda at portable na pack pack ng baterya. Ang mga graphics at font sa OLED ay maaaring ipasadya upang magkasya sa iyong mga pangangailangan (hal. Mas malaking font para sa madaling pagbabasa).

Ang aking layunin ay magkaroon ng isang pagbasa ng boltahe sa Oled / Arduino meter na hindi masyadong malayo mula sa aking Digital Multi Meter. Nilalayon ko ang +/- 0, 3v max delta. Tulad ng nakikita mo mula sa video na na-archive ko ito maliban sa tuktok na dulo ng mga sukat.

Inaasahan kong nasiyahan ka sa Ituturo na ito at ipaalam sa akin ang iyong mga saloobin!

Inirerekumendang: