Բովանդակություն:

Arduino ճշգրիտ և ճշգրիտ վոլտաչափ (0-90V DC) ՝ 3 քայլ
Arduino ճշգրիտ և ճշգրիտ վոլտաչափ (0-90V DC) ՝ 3 քայլ

Video: Arduino ճշգրիտ և ճշգրիտ վոլտաչափ (0-90V DC) ՝ 3 քայլ

Video: Arduino ճշգրիտ և ճշգրիտ վոլտաչափ (0-90V DC) ՝ 3 քայլ
Video: Ինչպես չափել ցանկացած DC լարման Arduino ARDVC-01- ի հետ 2024, Նոյեմբեր
Anonim

Այս հրահանգի մեջ ես կառուցել եմ վոլտմետր ՝ չափելու բարձր լարման DC (0-90v) հարաբերական ճշգրտությամբ և ճշգրտությամբ ՝ օգտագործելով Arduino Nano- ն:

Իմ կողմից կատարված փորձարկման չափումները բավական ճշգրիտ էին, հիմնականում ստանդարտ վոլտմետրով չափված իրական լարման 0.3 վ -ի սահմաններում (ես օգտագործել եմ Astro AI DM6000AR): Սա բավական մոտ է սարքի իմ նպատակային օգտագործման համար:

Սա արխիվացնելու համար ես օգտագործել եմ լարման տեղեկանք (4.096v) և լարման բաժանարար:

Կոդի կողմից ես, իհարկե, օգտագործեցի «արտաքին հղում» տարբերակը Arduino Nano- ի համար և «Հարթեցում» օրինակը Arduino- ի ձեռնարկներում:

Պարագաներ

1 x Arduino Nano - Հղում

1 x Oled Display (SSD 1306) - Հղում

1 x 1/4W 1% դիմադրողներ - 1k ohm - Հղում

1 x 1/4W 1% դիմադրողներ - 220k ohm - Հղում

1 x 1/4W 1% դիմադրողներ - 10k ohm - Հղում

1 x 4.096v LM4040DIZ -4.1 Լարման տեղեկանք - հղում

Հացաթուղթ և լարեր - Հղում

Astro AI DM6000AR - Հղում

USB Power Bank - Հղում

9 Վ մարտկոցներ - Հղում

CanadianWinters- ը Amazon Services LLC Associates ծրագրի մասնակից է, փոխկապակցված գովազդային ծրագիր, որը նախատեսված է միջոցներ տրամադրելու կայքերին ՝ վճարելով Amazon.com և փոխկապակցված կայքեր: Օգտագործելով այս հղումները, որպես Amazon Associate ես վաստակում եմ որակյալ գնումներից, նույնիսկ եթե ուրիշ բան եք գնում, և դա ձեզ ոչինչ չի կարժենա:

Քայլ 1: Սխեմաներ

Սխեմաները
Սխեմաները
Սխեմաները
Սխեմաները

Ես միացրեցի բոլոր մասերը ՝ ըստ վերը նշված սխեմաների: Մասնավորապես, ես ընտրեցի 4.096 լարման տեղեկանքը, որպեսզի հնարավորինս մոտ մնամ 5 վ նշագծին ՝ լուծաչափը չկորցնելու համար:

Հետևելով տվյալների թերթիկին, ես ընտրեցի 1K ohm ռեզիստոր լարման համար, չնայած որ կարող էր օգտագործվել այլ արժեք: Հղման համար լարումը մատակարարվում է Nano 5v պինից:

Շրջանի գաղափարն այն է, որ DC լարումը, որը պետք է չափվի, անցնում է լարման դիմադրության միջոցով: Լարված լարումը և այնուհետև մտնում է Arduino- ի անալոգային քորոց, որը պետք է նմուշառվի, հարթվի, նորից չափվի և ցուցադրվի OLed էկրանին:

Փորձեցի ամեն ինչ պարզ պահել:)

Քայլ 2: Կոդի և դիմադրության հաշվարկներ

Ռեզիստորների արժեքներն ընտրվել են այնպես, ինչպես նպատակահարմար է (եթե չեմ սխալվում, սա Arduino/Atmega տվյալների թերթիկում է) ՝ դիմադրողականությունը 10k ohm- ից ցածր պահելու համար:

Ամեն ինչ պարզեցնելու համար ես պատրաստեցի աղյուսակ, որն ավտոմատացնում է հաշվարկները, եթե ցանկանում եք օգտագործել տարբեր դիմադրության արժեքներ. Հղում դեպի Google Աղյուսակ

Ահա այն կոդը, որն օգտագործել եմ այս նախագծի համար.

#ներառում

#ներառել U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (պտույտ, [վերականգնում]) բոց լարման = 0; // օգտագործվում է լարման արժեքը float Radjust = 0.043459459 պահելու համար; // Լարման բաժանարար գործակից (R2 /R1+R2) բոց vbat = 0; // վերջնական լարումը հաշվարկից հետո- մարտկոցի լողացող լարումը Vref = 4.113; // Լարման մասին տեղեկանք - չափված իրական արժեքը: Անվանական արժեքը 4.096v const int numReadings = 50; // ընթերցման նմուշների քանակ - ավելացրեք ավելի հարթեցման համար: Նվազեցրեք ավելի արագ ընթերցելու համար: int ընթերցումներ [numReadings]; // անալոգային մուտքից ընթերցումներ int readIndex = 0; // ընթացիկ ընթերցման ինդեքս անստորագիր երկար ընդհանուր = 0; // վազող ընդհանուր int միջին = 0; // փոփոխականներ էկրանը թարմացնելու համար, առանց հետաձգման չստորագրելու երկար նախորդ Millis = 0; // կպահի վերջին անգամ, երբ էկրանը թարմացվել է // հաստատունները չեն փոխվի. const երկար միջակայք = 50; // էկրանի թարմացման ընդմիջում (միլիվայրկյաններ) void setup (void) {analogReference (EXTERNAL); // օգտագործեք AREF հղման լարման համար 4.096: Իմ տեղեկատու իրական լարումը 4.113v u8g2.begin () է; for (int thisReading = 0; thisReading = numReadings) {//… փաթեթավորեք մինչև սկիզբ ՝ readIndex = 0; } // հաշվարկել միջինը. միջին = (ընդհանուր / թվային ընթերցումներ); լարման = միջին * (Vref / 1023.0); //4.113 է Vref vbat = լարման/Radjust; // Էկրանի թարմացման հետաձգման կարգավորում `օգտագործելով Millis if (currentMillis - previousMillis> = ընդմիջում) {// պահպանել վերջին անգամ, երբ էկրանը թարմացվել է previousMillis = currentMillis; u8g2.clearBuffer (); // մաքրել ներքին հիշողությունը // Pack Լարման ցուցադրում u8g2.setFont (u8g2_font_fub20_tr); // 20px տառատեսակ u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px տառատեսակ u8g2.setCursor (76, 20); u8g2.print («Վոլտ»); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters"); u8g2.setCursor (1, 60); u8g2.print («Volշգրիտ լարում»); } u8g2.sendBuffer (); // փոխանցել ներքին հիշողությունը ցուցադրման ուշացմանը (1); }

Խնդրում ենք նկատի ունենալ, որ ես մի փոքր ժանգոտ եմ Arduino- ի կոդավորմամբ, այնպես որ, եթե որևէ սխալ կամ ծածկագիրը բարելավելու միջոց գտնեք, ես բաց եմ առաջարկությունների համար:)

Քայլ 3: Եկեք փորձարկենք այն:

Եկեք փորձարկենք այն
Եկեք փորձարկենք այն
Եկեք փորձարկենք այն
Եկեք փորձարկենք այն
Եկեք փորձարկենք այն
Եկեք փորձարկենք այն

Այս վոլտմետրը փորձարկելու համար ես օգտագործեցի 8x 9v մարտկոցներ, որոնք ձեռք էի բերել տեղական խանութում: Ես մտադիր եմ օգտագործել այս վոլտմետրը ՝ էլեկտրական հեծանիվների մարտկոցների լարման չափման համար (դրանք ունեն 24-60 վ լարման տատանումներ, երբեմն ՝ 72 վ):

Երբ էլեկտրոնիկան փաթեթավորվում է pcb- ի և մի փոքրիկ տուփի մեջ, դա կդարձնի գեղեցիկ և շարժական մարտկոցի փաթեթաչափ: OLED- ի գրաֆիկան և տառատեսակները կարող են հարմարեցվել ձեր կարիքներին համապատասխան (օրինակ ՝ ավելի մեծ տառատեսակ ՝ հեշտ ընթերցման համար):

Իմ նպատակն էր ունենալ Oled/Arduino հաշվիչի վրա լարման ցուցիչ `իմ թվային բազմաչափ հաշվիչից ոչ շատ հեռու: Ես նպատակ ունեի +/- 0, 3v max delta: Ինչպես տեսնում եք տեսանյութից, ես կարողացա դա արխիվացնել, բացառությամբ չափումների վերևի մասի:

Հուսով եմ, որ ձեզ դուր եկավ այս Instructable- ը և տեղեկացրեք ինձ ձեր մտքերի մասին:

Խորհուրդ ենք տալիս: