Arduino asosidagi Bluetooth voltmetri. Arduino-dagi raqamli voltmetr, kompyuterga ma'lumotlar chiqishi bilan ketma-ket port orqali kompyuterga ulangan Arduino voltmetri

Ko'p funktsiyali Arduino yig'ilishlari uy qurilishi elektron dasturlashtiriladigan qurilmalar muxlislari uchun katta qiziqish uyg'otadi, bu ularga qiziqarli g'oyalarni hayotga tatbiq etish imkonini beradi.

Tayyor Arduino sxemalarining asosiy afzalligi noyob blok-modulli printsipdir: har bir plataga turli xil loyihalarni yaratish imkoniyatlarini cheksiz ravishda kengaytirib, qo'shimcha interfeyslar bilan qo'shilishi mumkin.

Arduino modullari o'zining yuklash moslamasiga ega universal mikrokontrollerda qurilgan bo'lib, uni qo'shimcha qurilmalardan foydalanmasdan kerakli dastur kodi bilan o'chirishni osonlashtiradi. Dasturlash standart C++ tilida amalga oshiriladi.

Arduino-dan foydalanishning eng oddiy misollaridan biri bu yig'ilish asosida 0 dan 30 V gacha bo'lgan o'lchov diapazoniga ega bo'lgan yuqori aniqlikdagi DC voltmetrni amalga oshirish bo'lishi mumkin.

Arduino analog kirishlari besh voltdan oshmaydigan doimiy kuchlanish uchun mo'ljallangan, shuning uchun ularni ushbu qiymatdan oshib ketadigan kuchlanishlarda ishlatish kuchlanish bo'luvchi bilan mumkin.


Areduino-ning kuchlanish bo'luvchi orqali ulanish diagrammasi

Voltaj bo'luvchi ketma-ket ulangan ikkita qarshilikdan iborat. U quyidagi formula bo'yicha hisoblanadi:

Avtomobil radiosidagi tashqi USB ulagichi

Arduino bilan tajriba qilishni yaxshi ko'radiganlar uchun foydali diagramma taqdim etiladi. Bu 0 - 30V oralig'ida doimiy kuchlanishni ishonchli o'lchashi mumkin bo'lgan oddiy raqamli voltmetr. Arduino platasi odatdagidek 9V batareyadan quvvatlanishi mumkin.

Siz bilganingizdek, Arduino-ning analog kirishlari 0 - 5V oralig'ida doimiy kuchlanishni o'lchash uchun ishlatilishi mumkin va bu diapazonni oshirish mumkin,
kuchlanish bo'luvchi sifatida ikkita rezistordan foydalanish. Ajratuvchi o'lchangan kuchlanishni Arduino analog kirishlari darajasiga kamaytiradi. Va keyin dastur haqiqiy kuchlanish qiymatini hisoblab chiqadi.

Arduino platasidagi analog sensor analog kirishda kuchlanish mavjudligini aniqlaydi va mikrokontroller tomonidan keyingi ishlov berish uchun uni raqamli shaklga aylantiradi. Rasmda kuchlanish R1 (100 kOm) va R2 (10 kOm) rezistorlardan tashkil topgan oddiy kuchlanish bo'luvchi orqali analog kirishga (A0) beriladi.

Ushbu ajratuvchi qiymatlar bilan Arduino platasi 0 dan kuchlanish bilan ta'minlanishi mumkin
55V. A0 kirishida biz o'lchagan kuchlanishni 11 ga bo'lamiz, ya'ni 55V / 11=5V. Boshqacha qilib aytganda, Arduino kirishida 55V ni o'lchashda biz maksimal ruxsat etilgan qiymatga egamiz 5V. Amalda, ushbu voltmetrga "0 - 30V" oralig'ini yozish yaxshidir, shunda u qoladi.
Xavfsizlik chegarasi!

Eslatmalar

Agar displey ko'rsatkichlari sanoat (laboratoriya) voltmetrining ko'rsatkichlari bilan mos kelmasa, u holda R1 va R2 qarshilik qiymatini aniq asbob bilan o'lchash va R1 = 100000.0 va R2 = 10000.0 o'rniga ushbu qiymatlarni kiritish kerak. dastur kodida. Keyin Arduino platasining 5V va "Ground" pinlari orasidagi haqiqiy kuchlanishni laboratoriya voltmetri bilan o'lchashingiz kerak. Natijada 5V dan kam qiymat bo'ladi, masalan, u 4,95V bo'ladi. Ushbu haqiqiy qiymat kod qatoriga kiritilishi kerak
vout = (qiymat * 5,0) / 5,0 o'rniga 1024,0.
Bundan tashqari, 1% bardoshlik bilan aniq rezistorlardan foydalanishga harakat qiling.

R1 va R2 rezistorlari kirish kuchlanishining kuchayishidan himoya qiladi, ammo esda tutingki, 55V dan yuqori har qanday kuchlanish Arduino platasiga zarar etkazishi mumkin. Bunga qo'shimcha ravishda, ushbu dizayn boshqa himoya turlarini ta'minlamaydi (kuchlanishning keskin o'zgarishi, polaritning o'zgarishi yoki ortiqcha kuchlanishdan).

Raqamli voltmetr dasturi

/*
DC voltmetr
Voltaj bo'luvchi kontseptsiyaga asoslangan Arduino DVM
T.K.Hareendran
*/
#o'z ichiga oladi
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int analogInput = 0;
float vout = 0,0;
float vin = 0,0;
float R1 = 100000,0; // R1 qarshiligi (100K) -matnga qarang!
float R2 = 10000,0; // R2 qarshiligi (10K) – matnga qarang!
int qiymati = 0;
o'rnatishni bekor qilish())(
pinMode(analogInput, INPUT);
lcd.begin(16, 2);
lcd.print (“DC VOLTMETER”);
}
void loop()
// analog kiritishda qiymatni o'qish
qiymat = analogRead(analogInput);
vout = (qiymat * 5,0) / 1024,0; // matnga qarang
vin = vout / (R2/(R1+R2));
agar (vin<0.09) {
vin=0.0;//keraksiz o'qishni to'xtatish uchun bayonot!
}
lcd.setCursor(0, 1);
lcd.print(“INPUT V= “);
lcd.print(vin);
kechikish (500);
}

Arduino-voltmetrning sxematik diagrammasi

Komponentlar ro'yxati

Arduino Uno platasi
100 kOhm qarshilik
10 kOhm qarshilik
100 ohm qarshilik
10 kOhm Trimmer qarshiligi
LCD displey 16?2 (Hitachi HD44780)

Arduino Uno-da va 1602A displeyli uy qurilishi bipolyar voltmetrning sxematik diagrammasi. "ARDUINO UNOda ikki tomonlama voltmetr" (L.1) maqolasida muallif voltmetrning tavsifini va ikkita doimiy kuchlanishni bir vaqtning o'zida o'lchash va ko'rsatish dasturini taklif qildi. Agar siz bir vaqtning o'zida ikkita doimiy kuchlanishni o'lchashingiz va ularni taqqoslashingiz kerak bo'lsa, bu juda qulay.

Bu, masalan, kirish va chiqishdagi kuchlanishni o'lchash uchun doimiy kuchlanish stabilizatorini ta'mirlash yoki sozlashda yoki boshqa hollarda talab qilinishi mumkin.

Biroq, umumiy "nol" ga nisbatan kontaktlarning zanglashiga olib keladigan bir nuqtasida kuchlanish ijobiy yoki salbiy bo'lishi mumkin bo'lgan bipolyar quvvat manbai bo'lgan davrlar mavjud.

Sxematik diagramma

Bu erda biz sxema va dasturning modifikatsiyasini tasvirlaymiz, shunda qurilma ham ijobiy, ham salbiy kuchlanishni o'lchashi va ko'rsatishi mumkin.

Boshlash uchun o'lchangan kuchlanishlar ikkita analog A1 va A2 kirishlariga beriladi. Jami oltita analog kirish mavjud, A0-A5, ulardan ikkitasini tanlashingiz mumkin. Bu holda A1 va A2 tanlanadi. Analog portlardagi kuchlanish faqat ijobiy bo'lishi mumkin va faqat noldan mikrokontrollerning besleme zo'riqishida, ya'ni nominal ravishda 5V gacha bo'lishi mumkin.

Analog portning chiqishi mikrokontrollerning ADC tomonidan raqamli shaklga aylantiriladi. Natijani volt birliklarida olish uchun uni 5 ga (mos yozuvlar kuchlanishiga, ya'ni mikrokontrollerning besleme zo'riqishiga) ko'paytirish va 1024 ga bo'lish kerak.

Guruch. 1. Arduino Uno va 1602A da bipolyar voltmetrning sxematik diagrammasi.

5V dan yuqori, aniqrog'i mikrokontrollerning kuchlanishidan kattaroq kuchlanishni o'lchash uchun, chunki ARDUINO UNO platasidagi 5 voltli stabilizatorning chiqishidagi haqiqiy kuchlanish 5V dan farq qilishi mumkin va odatda bir oz pastroq, siz kirishda an'anaviy rezistiv ajratgichlardan foydalanishingiz kerak.

Bu erda R1, R3 va R2, R4 rezistorlari bo'ylab kuchlanish bo'luvchilari. Ammo kuchlanishni noldan kamroq o'lchash kerak bo'lsa-chi? Bunday holda, vaziyatdan chiqishning yagona yo'li bor - kirish nol darajasini oshirish. Ideal holda, sizga ta'minot kuchlanishining yarmi kerak, ya'ni 2,5 V gacha. Bunday holda, kirish voltajiga 2,5V ma'lumotlar qo'shiladi.

Keyin, dasturiy jihatdan, bu kuchlanishni o'lchanganidan chiqarib tashlang. Biroq, bu kuchlanishning qo'shimcha manbasini talab qiladi. Aslida, buni qilish qiyin emas, lekin oddiyroq echim bor.

5V kuchlanish stabilizatoriga qo'shimcha ravishda ARDUINO UNO platasi 3,3V kuchlanish manbaiga ega. Shunday qilib, u kirish uchun "virtual nol" sifatida ishlatilishi mumkin.

Sxemadagi o'zgarishlar 1-rasmda ko'rinadi. Birinchi variant bilan solishtirganda, "nol" kirish oddiy noldan + Z.ZV manbasiga o'zgartiriladi. Shuning uchun, kirish kuchlanishi ijobiy bo'lsa, kirishda u 3,3V dan ortiq (lekin 5V dan ortiq emas - bu o'lchovning yuqori chegarasi), salbiy bo'lsa - 3,3V dan kam (lekin OV dan kam emas - bu) o'lchovning pastki chegarasi).

O'lchov chegaralarini (modul) oshirishga qarshilik bo'luvchi tomonidan erishiladi va X2 va X3 ga berilgan haqiqiy kirish kuchlanishining ko'rsatkichi mikrokontrollerning kirishlaridagi kuchlanishdan 3,3V qiymatini dasturiy ta'minotni olib tashlash orqali erishiladi.

Dastur 1-jadvalda ko'rsatilgan. Buni quyidagi qatorlarda ko'rish mumkin:

volt=(vout*5,0/1024,0-3,3)/0,048 ;

voltl=(voutl*5,0/1024,0-3,3)/0,048;

3.3 raqami "virtual nol" kirishining aynan shu kuchlanishidir.

Ushbu satrlarda 5.0 raqami ARDUINO UNO platasining stabilizatorining chiqishidagi kuchlanishdir. Ideal holda, u 5V bo'lishi kerak, lekin voltmetrning to'g'ri ishlashi uchun birinchi navbatda bu kuchlanishni o'lchash kerak. Quvvat manbaini ulang va plataning POWER ulagichidagi +5V kuchlanishni juda aniq voltmetr bilan o'lchang.

Nima sodir bo'ladi, keyin 5.0 o'rniga ushbu satrlarni kiriting Xuddi shu narsa +3.3V kuchlanishiga ham tegishli - uni taxta konnektorida o'lchash kerak, chunki aslida u 3.3V dan bir oz farq qilishi mumkin. Misol uchun, agar "5V" aslida 4.85V va "3.3V" aslida 3.32V bo'lsa, chiziqlar quyidagicha ko'rinadi:

volt=(vout*4,85/1024,0-3,32)/0,048;

voltl=(voutl*4,85/1024,0-3,32)/0,048;

Keyingi bosqichda siz R1-R4 rezistorlarining haqiqiy qarshiligini o'lchashingiz va formulalar yordamida ushbu chiziqlar uchun K koeffitsientlarini (0,048 sifatida ko'rsatilgan) aniqlashingiz kerak bo'ladi:

K1 = R3 / (R1+R3) va K2 = R4 / (R2+R4)

Aytaylik, K1 = 0,046 va K2 = 0,051, shuning uchun biz yozamiz:

volt=(vout*4,85/1024,0-3,32)/0,046;

voltl=(voutl*4,85/1024,0-3,32)/0,051;

Shunday qilib, dastur matniga ARDUINO UNO platasining 5 voltli va 3,3 voltli stabilizatorlarining chiqishidagi haqiqiy kuchlanish va qarshilik bo'linmalarining haqiqiy bo'linish koeffitsientlari bo'yicha o'zgarishlar kiritilishi kerak.

Shundan so'ng, qurilma to'g'ri ishlaydi va hech qanday sozlash yoki kalibrlashni talab qilmaydi. LCD indikatorida salbiy kuchlanishni o'lchashda mos keladigan chiziqdagi kuchlanish qiymati oldida minus belgisi bo'ladi. Ijobiy kuchlanishni o'lchashda hech qanday belgi yo'q.

Rezistiv bo'linmalarning bo'linish koeffitsientlarini (va shunga mos ravishda "K" koeffitsientlarini) o'zgartirib, siz boshqa o'lchov chegaralarini belgilashingiz mumkin va ikkala kirish uchun ham bir xil bo'lishi shart emas.

Sizga eslatib o'tmoqchimanki, H1 tipidagi 1602A suyuq kristalli displey moduli ARDUINO UNO platasining D2-D7 raqamli portlariga ulangan. LCD indikatori 5V kuchlanish stabilizatori platasida joylashgan 5V kuchlanish stabilizatori tomonidan quvvatlanadi.

Ko'rsatkich ARDUINO UNO bilan o'zaro ta'sir qilishi uchun uni boshqarish uchun dasturga pastki dasturni yuklashingiz kerak. Bunday tartiblar "kutubxonalar" deb ataladi va ARDUINO UNO dasturiy to'plamida juda ko'p turli xil "kutubxonalar" mavjud. HD44780 asosidagi LCD indikator bilan ishlash uchun sizga LiquidCrystal kutubxonasi kerak bo'ladi. Shunday qilib, dastur (1-jadval) ushbu kutubxonani yuklash bilan boshlanadi:

Ushbu qator ushbu kutubxonani ARDUINO UNO ga yuklash buyrug'ini beradi. Keyin, LCD indikator bilan ishlaydigan ARDUINO UNO portlarini belgilashingiz kerak. Men D2 dan D7 portlarini tanladim. Siz boshqalarni tanlashingiz mumkin. Ushbu portlar qator tomonidan tayinlangan:

LiquidCrystal led (2, 3, 4, 5, 6, 7);

Shundan so'ng, dastur voltmetrning haqiqiy ishlashiga o'tadi.

Karavkin V. RK-06-17.

Adabiyot: 1. Karavkin V. - ARDUINO UNO da ikki tomonlama voltmetr. RK-01-17.

Fikr

Fikr kuchlanish, oqim, quvvat, zaryadsizlanish va ehtimol zaryadni o'lchash uchun asboblar uzoq vaqt oldin paydo bo'lgan va nafaqat men uchun. Turli USB qurilmalarini sinab ko'rish uchun USB Tester (Doctor) deb nomlangan ko'plab o'yinchoqlarni topishingiz mumkin. Men interfeysdan mustaqil, ammo ma'lum kuchlanish va oqimlar uchun mo'ljallangan, biroz universalroq qurilmaga qiziqaman. Masalan, 0 - 20,00v, 0 - 5,00a, 0 - 99,99Ah. Funktsiyalarga kelsak, men buni shunday ko'raman

  • Joriy kuchlanish va oqimni, ya'ni volt-amper metrni ko'rsatadi. Printsipial jihatdan siz darhol kuchni aks ettirishingiz mumkin.
  • To'plangan quvvatni hisoblash va ko'rsatish. Amper soatlarda va katta ehtimollik bilan vatt soatlarda.
  • Jarayon vaqtini ko'rsatish
  • Va, ehtimol, sozlanishi pastki va yuqori kuchlanish chegaralari (zaryad va zaryad chegaralari)

Rivojlanish

Hisoblash va o'lchovlarni amalga oshirish uchun bizga nazoratchi kerak. Men bu fikrni Arduino bilan tanishishimning bir qismi sifatida esladim, shuning uchun boshqaruvchi oddiy mashhur Atmega328 bo'ladi va u muhitda dasturlashtiriladi. Arduino. Muhandislik nuqtai nazaridan, tanlov, ehtimol, eng yaxshisi emas - boshqaruvchi vazifa uchun biroz yog'li va uning ADC ni o'lchash deb atash mumkin emas, lekin ... biz harakat qilamiz.

  • Biz bu loyihada ko'p lehim qilmaymiz. Asos sifatida biz tayyor Arduino Pro Mini modulini olamiz, chunki xitoyliklar ularni $1,5 chakana savdoga yetkazib berishga tayyor.
  • Displey qurilmasi 1602 displey bo'ladi - yana 1,5 dollar. Menda I2C interfeys moduli bilan variant bor, lekin bu loyihada bu haqiqatan ham kerak emas ($0,7).
  • Rivojlanish uchun bizga non taxtasi kerak. Mening holatimda, bu $ 1 uchun kichik BreadBoard.
  • Albatta, sizga simlar va turli qiymatdagi bir qator rezistorlar kerak bo'ladi. I2C bo'lmagan 1602 displey uchun siz ham kontrastni tanlashingiz kerak - bu 2 - 20 kOhm o'zgaruvchan qarshilik bilan amalga oshiriladi.
  • Ampermetrni amalga oshirish uchun sizga shunt kerak bo'ladi. Birinchi taxminga ko'ra, u 0,1 Ohm, 5 Vt qarshilik bo'lishi mumkin.
  • Avtomatik o'chirishni amalga oshirish uchun sizga qurilmaning maksimal oqimi va ta'minot kuchlanishiga teng kuchlanish uchun mo'ljallangan kontaktlari bo'lgan o'rni kerak bo'ladi. O'rnimizni boshqarish uchun sizga NPN tranzistori va himoya diyot kerak bo'ladi.
  • Qurilma tashqi quvvat manbaidan quvvatlanadi, shubhasiz, kamida 5 V. Elektr ta'minoti juda katta farq qiladigan bo'lsa, unda 7805 tipidagi o'rnatilgan stabilizator ham talab qilinadi - u o'rni kuchlanishini aniqlaydi.
  • Qachon Arduino Pro Mini proshivkani yuklash uchun USB-TTL konvertorini talab qiladi.
  • O'rnatish uchun sizga multimetr kerak bo'ladi.

Voltmetr

Taxminan 0 dan 20 V gacha bo'lgan oddiy voltmetrni qo'llayman. Ushbu eslatma muhim, chunki bizning kontrollerimizning ADC 10 bitli sig'imga ega (1024 diskret qiymat), shuning uchun xato kamida 0,02 V (20/1024) bo'ladi. Uskunani amalga oshirish uchun bizga boshqaruvchining analog kirishi, bir juft rezistordan iborat bo'linuvchi va qandaydir chiqish (tugallangan versiyadagi displey, disk raskadrovka uchun ketma-ket portdan foydalanish mumkin) kerak.

ADC o'lchash printsipi analog kirishdagi kuchlanishni mos yozuvlar VRef bilan solishtirishdir. ADC chiqishi har doim butun son bo'ladi - 0 0V ga, 1023 VRef kuchlanishiga to'g'ri keladi. O'lchov bir qator ketma-ket kuchlanish ko'rsatkichlari va ekrandagi qiymatni yangilash oralig'ida o'rtacha hisoblash orqali amalga oshiriladi. Yo'naltiruvchi kuchlanishni tanlash muhim, chunki u barqaror bo'lmasligi mumkin bo'lgan ta'minot kuchlanishiga mos keladi. Bu bizga umuman mos kelmaydi - biz asos sifatida 1,1V kuchlanishli barqaror ichki mos yozuvlar manbasini olamiz va uni analogReference(INTERNAL) chaqirish orqali ishga tushiramiz. Keyin multimetr ko'rsatkichlari yordamida uning qiymatini kalibrlaymiz.

Chapdagi diagrammada displeyni bevosita boshqaradigan variant ko'rsatilgan (u oddiygina boshqariladi - standart LiquidCrystal\HelloWorld eskiziga qarang). O'ng tomonda I2C opsiyasi mavjud, men bundan keyin ham foydalanaman. I2C simlarni tejash imkonini beradi (ulardan 10 tasi odatiy versiyada, orqa yorug'likni hisobga olmaganda). Ammo bu qo'shimcha modul va murakkab ishga tushirishni talab qiladi. Har qanday holatda, moduldagi belgilarning ko'rinishi birinchi navbatda tekshirilishi va kontrastni sozlashi kerak - buning uchun ishga tushirilgandan so'ng istalgan matnni ko'rsatish kifoya. Kontrast R1 rezistori yoki I2C modulining shunga o'xshash qarshiligi bilan o'rnatiladi.

Kirish 1:19 bo'luvchi bo'lib, u Vref = 1.1 da maksimal 20V kuchlanishni olish imkonini beradi (odatda himoya qilish uchun kirishga parallel ravishda kondansatör + zener diodi joylashtiriladi, ammo bu biz uchun hozircha muhim emas. ). Rezistorlar tarqalishiga ega va tekshirgichning Vref mos yozuvi ham shunday, shuning uchun montajdan so'ng biz qurilmamiz va mos yozuvlar multimetri bilan parallel ravishda kuchlanishni (hech bo'lmaganda ta'minotni) o'lchashimiz va o'qishlar mos kelguncha kodda Vref ni tanlashimiz kerak. Shuni ham ta'kidlash kerakki, har qanday ADC nol ofset kuchlanishiga ega (bu diapazonning boshida ko'rsatkichlarni buzadi), ammo biz hozircha bunga kirmaymiz.

Ta'minot va o'lchash zaminini ajratish ham muhim bo'ladi. Bizning ADC o'lchamlari 1 mV dan biroz yomonroq, agar simlar noto'g'ri o'rnatilgan bo'lsa, ayniqsa non taxtasida muammolarni keltirib chiqarishi mumkin. Modul taxtasining tartibi allaqachon amalga oshirilganligi sababli biz faqat pinlarni tanlashimiz kerak. Modulda bir nechta "tuproq" pinlari mavjud, shuning uchun biz quvvat modulga bir "tuproq" orqali, ikkinchisi orqali o'lchovlar kirishiga ishonch hosil qilishimiz kerak. Haqiqatan ham, o'zgartirishlar kiritish uchun men har doim analog kirishlarga eng yaqin tuproq pinini ishlataman.

I2C ni boshqarish uchun LiquidCrystal_I2C kutubxonasining versiyasidan foydalaniladi - mening holatimda I2C modulining o'ziga xos pinouti ko'rsatilgan (xitoyliklar turli xil boshqaruv elementlari bo'lgan modullarni ishlab chiqaradilar). Shuni ham ta'kidlaymanki, Arduino-da I2C A4 va A5 pinlaridan foydalanishni talab qiladi - Pro Mini platasida ular chekkada joylashgan emas, bu BreadBoard-da prototiplash uchun noqulay.

Manba kodi

#o'z ichiga oladi #o'z ichiga oladi // i2c displeyli oddiy voltmetr 1602. V 16.11 // nostandart pinoutli i2c displey 1602 sozlamalari #define LCD_I2C_ADDR 0x27 #define BACKLIGHT 3 #define LCD_EN 2 #define LCD_RW #define LCD_EN 2 #define LCD_RW #Dfine LCD_RW #Dfine LCD_RW #Dfine LCD_def LCD_def LCD_RW 1 #Dfine 5 #define LCD_D6 6 #define LCD_D7 7 LiquidCrystal_I2C lcd(LCD_I2C_ADDR,LCD_EN,LCD_RW,LCD_RS,LCD_D4,LCD_D5,LCD_D6,LCD_D7); // Yangilanish vaqti, milodiy (200-2000) #define REFRESH_TIME 330 // Analog kirish #define PIN_VOLT A0 // Ichki mos yozuvlar kuchlanishi (tanlash) const float VRef = 1.10; // Kirish rezistiv ajratuvchi koeffitsienti (Rh + Rl) / Rl. IN<-[ Rh ]--(analogInPin)--[ Rl ]--|GND const float VoltMult = (180.0 + 10.0) / 10.0; float InVolt, Volt; void setup() { analogReference(INTERNAL); // Инициализация дисплея lcd.begin (16, 2); lcd.setBacklightPin(BACKLIGHT, POSITIVE); lcd.setBacklight(HIGH); // включить подсветку lcd.clear(); // очистить дисплей lcd.print("Voltage"); } void loop() { unsigned long CalcStart = millis(); int ReadCnt = 0; InVolt = 0; // Чтение из порта с усреднением while ((millis() - CalcStart) < REFRESH_TIME) { InVolt += analogRead(PIN_VOLT); ReadCnt++; } InVolt = InVolt / ReadCnt; // Смещение 0 для конкретного ADC (подобрать или отключить) if (InVolt >0,2) InVolt += 3; // Voltga aylantirish (Qiymat: 0..1023 -> (0..VRef) Mult tomonidan o'lchov) Volt = InVolt * VoltMult * VRef / 1023; // Chiqish ma'lumotlari lcd.setCursor (0, 1); lcd.print (Volt); lcd.print("V"); )

Ushbu maqola tajriba qilishni yaxshi ko'radiganlar uchun qiziqarli diagrammani taqdim etadi va Arduino. U 0 dan 30 V gacha bo'lgan doimiy kuchlanishni xavfsiz o'lchay oladigan oddiy raqamli voltmetrga ega. Arduino platasining o'zi standart 9 V quvvat manbaidan quvvatlanishi mumkin.



Ma'lumki, Arduino analog kirishidan foydalanib, siz 0 dan 5 V gacha kuchlanishni o'lchashingiz mumkin (standart mos yozuvlar kuchlanishi 5 V). Ammo bu diapazonni kuchlanish bo'luvchisi yordamida kengaytirish mumkin.


Ajratuvchi o'lchangan kuchlanishni analog kirish uchun maqbul darajaga tushiradi. Keyin maxsus yozilgan kod haqiqiy kuchlanishni hisoblab chiqadi.



Arduino-dagi analog sensor analog kirishdagi kuchlanishni aniqlaydi va uni mikrokontroller tomonidan o'qilishi mumkin bo'lgan raqamli formatga aylantiradi. R1 (100K) va R2 (10K) qarshiliklari bilan hosil qilingan kuchlanish bo'luvchini A0 analog kirishiga ulaymiz. Ushbu qarshilik qiymatlari bilan Arduino-ga 55 V gacha bo'lgan kuchlanish berilishi mumkin, chunki bu holda bo'linish koeffitsienti 11 ga teng, shuning uchun 55V/11 = 5V. O'lchovlar taxta uchun xavfsiz ekanligiga ishonch hosil qilish uchun kuchlanishni 0 dan 30 V gacha o'lchash yaxshiroqdir.



Agar displey ko'rsatkichlari tasdiqlangan voltmetr ko'rsatkichlariga mos kelmasa, R1 va R2 ning aniq qiymatlarini topish uchun aniq raqamli multimetrdan foydalaning. Bunday holda, kodda siz R1=100000.0 va R2=10000.0 ni o'zingizning qiymatlaringiz bilan almashtirishingiz kerak bo'ladi. Keyin taxtadagi kuchlanishni 5V va GND oralig'ida o'lchash orqali quvvat manbaini tekshirishingiz kerak. Voltaj 4,95 V bo'lishi mumkin. Keyin kodda vout = (qiymat * 5,0) / 1024,0 5,0 ni 4,95 bilan almashtirishingiz kerak. 1% dan ko'p bo'lmagan xato bilan aniq rezistorlardan foydalanish tavsiya etiladi. Esda tutingki, 55V dan yuqori kuchlanish Arduino platasiga zarar etkazishi mumkin!



#o'z ichiga oladi LiquidCrystal lcd(7, 8, 9, 10, 11, 12); int analogInput = 0; float vout = 0,0; float vin = 0,0; float R1 = 100000,0; // qarshilik R1 (100K) float R2 = 10000,0; // qarshilik R2 (10K) int qiymati = 0; void setup())( pinMode(analogInput, INPUT); lcd.begin(16, 2); lcd.print("DC VOLTMETER"); ) void loop())( // analog qiymatni o'qish = analogRead(analogInput) ); vout = (qiymat * 5,0) / 1024,0; vin = vout / (R2/(R1+R2)); agar (vin)<0.09) { vin=0.0;// обнуляем нежелательное значение } lcd.setCursor(0, 1); lcd.print("INPUT V= "); lcd.print(vin); delay(500); }


Amaldagi elementlar:


Arduino Uno platasi
Qarshilik 100 KOhm
Qarshilik 10 KOhm
100 ohm qarshilik
Potansiyometr 10KOhm
LCD displey 16×2