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

Arduino վոլտաչափ (0-100V DC) - տարբերակ 2 (ավելի լավ) ՝ 3 քայլ
Arduino վոլտաչափ (0-100V DC) - տարբերակ 2 (ավելի լավ) ՝ 3 քայլ

Video: Arduino վոլտաչափ (0-100V DC) - տարբերակ 2 (ավելի լավ) ՝ 3 քայլ

Video: Arduino վոլտաչափ (0-100V DC) - տարբերակ 2 (ավելի լավ) ՝ 3 քայլ
Video: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Սեպտեմբեր
Anonim
Image
Image
Քայլ 1: Սխեմաներ
Քայլ 1: Սխեմաներ

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

Սա վոլտմետրի երկրորդ տարբերակն է, որն օգտագործել է իմ նախորդ հրահանգը այստեղ ՝

Իմ կողմից կատարված փորձարկման չափումները ճշգրիտ էին ՝ հիմնականում ստանդարտ վոլտմետրով չափված փաստացի լարման 0.1 վ -ի սահմաններում (ես օգտագործել եմ Astro AI DM6000AR):

Սա, իմ կարծիքով, շատ ավելի լավ է և ավելի հեշտ, քան Arduino- ում արտաքին լարման մասին տեղեկանք օգտագործելը:

Պարագաներ

1 x Arduino Nano - Հղում

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

1 x ADS 1115 - 16 բիթ ADC - հղում

1 x 1/4W (ես առաջարկում եմ օգտագործել 1W ռեզիստորներ, չնայած դրան) 1% դիմադրողներ - 220k ohm - հղում

1 x 1/4W (ես առաջարկում եմ օգտագործել 1W ռեզիստորներ, չնայած) 1% դիմադրողներ - 10k ohm - հղում

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

Astro AI DM6000AR - Հղում

USB Power Bank - Հղում

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

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

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

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

Ես միացրեցի բոլոր մասերը ՝ ըստ վերը նշված սխեմաների:

Ես կապեցի ADC1115- ի ADDR կապը գետնին: Սա ADC- ի հասցեն սահմանում է 0x48:

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

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

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

Այս դեպքում ես ոչ մի միջինացում կամ հարթեցում չեմ օգտագործել ծածկագրում, քանի որ ընթերցումները բավականին ճշգրիտ և ճշգրիտ են թվում: Աղմուկը նվազեցնելու համար գուցե ցանկանաք մի փոքր կոնդենսատոր ավելացնել A0- ի (ADC- ի վրա) և գետնի միջև: Չնայած իմ թեստի համար դա պարտադիր չէր:

Մի բան, որ ես նկատեցի, մի փոքր աղմուկ էր, երբ մարտկոցը միացված չէր (0 վոլտ): Ես օգտագործել եմ Arduino- ի սերիական մոնիտորը ՝ ADC արժեքը ցուցադրելու և այն կոդի միջոցով ուղղելու/կարգավորելու համար:

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

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

#ներառում

#ներառել #ներառել #ներառել Adafruit_ADS1115 գովազդ (0x48); // ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (ռոտացիա, [վերականգնում]) int calib = 7; // ADS1115- ի ճշգրտման արժեքը `նվազեցնելու լողացող լարման = 0; // օգտագործվում է լարման արժեքը լողացող Radjust = 0.043421905 պահելու համար; // Լարման բաժանարար գործակից (R2 / R1+R2) բոց vbat = 0; // վերջնական լարումը հաշվարկից հետո- մարտկոցի լարումը // փոփոխականներ էկրանը թարմացնելու համար առանց հետաձգման չստորագրելու երկար նախորդ Millis = 0; // կպահվի վերջին անգամ, երբ էկրանը թարմացվել է // հաստատունները չեն փոխվի. const երկար ընդմիջում = 250; // էկրանի թարմացման միջակայք (միլիվայրկյաններ) void setup (void) {Serial.begin (9600); u8g2. սկսել (); ads.begin (); } void loop (void) {int16_t adc0; // 16 բիթ ADC կարդալ մուտքի A0 adc0 = ads.readADC_SingleEnded (0); լարման = ((adc0 + calib) * 0.1875)/1000; անստորագիր երկար հոսանք Millis = millis (); vbat = լարման/ճշգրտել; // Կանխել բացասական լարման ցուցադրումը, երբ մարտկոցն անջատված է, եթե (vbat = interval) {previousMillis = currentMillis; u8g2.clearBuffer (); // մաքրել ներքին հիշողությունը // Փաթեթային լարման ցուցադրում - Տառատեսակներ այս էջում ՝ https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px տառատեսակ u8g2.setFont (u8g2_font_fub35_tr); // 35px տառատեսակ u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px տառատեսակ u8g2.setCursor (1, 60); u8g2.print («Վոլտ»); } u8g2.sendBuffer (); // փոխանցել ներքին հիշողությունը ցուցադրման ուշացմանը (1); }

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

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

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

Երբ էլեկտրոնիկան փաթեթավորվում է pcb- ի և մի փոքրիկ տուփի մեջ, դա կդարձնի գեղեցիկ և շարժական մարտկոցի փաթեթաչափ: OLED- ի գրաֆիկան և տառատեսակները կարող են հարմարեցվել ձեր կարիքներին համապատասխան (օրինակ ՝ ավելի մեծ տառատեսակ ՝ հեշտ ընթերցման համար): Իմ նպատակն էր ունենալ Oled/Arduino հաշվիչի վրա լարման ցուցիչ `իմ թվային բազմաչափ հաշվիչից ոչ շատ հեռու: Ես նպատակ ունեի +/- 0, 3v max delta:

Ինչպես տեսնում եք Instructable- ի սկզբում տեղադրված տեսանյութից, ես կարողացա դա արխիվացնել: Ընթերցումների մեծ մասը տեղում էր:

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

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