Мазмұны:

Arduino дәл және дәл вольт өлшегіші (0-90В тұрақты ток): 3 қадам
Arduino дәл және дәл вольт өлшегіші (0-90В тұрақты ток): 3 қадам

Бейне: Arduino дәл және дәл вольт өлшегіші (0-90В тұрақты ток): 3 қадам

Бейне: Arduino дәл және дәл вольт өлшегіші (0-90В тұрақты ток): 3 қадам
Бейне: Arduino көмегімен 5V релесі бар айнымалы шамды басқарыңыз 2024, Қараша
Anonim

Бұл нұсқаулықта мен Arduino Nano көмегімен салыстырмалы дәлдік пен дәлдікпен тұрақты токтың (0-90в) жоғары кернеуін өлшеуге арналған вольтметр құрдым.

Мен қабылдаған сынақ өлшемдері жеткілікті дәл болды, көбінесе стандартты вольтметрмен өлшенетін нақты кернеудің 0,3в шегінде (мен Astro AI DM6000AR қолдандым). Бұл құрылғыны мақсатты пайдалану үшін жеткілікті жақын.

Мұны мұрағаттау үшін мен кернеу сілтемесін (4.096v) және кернеу бөлгішті қолдандым.

Код жағында мен, әрине, Arduino Nano үшін «сыртқы сілтеме» опциясын және Arduino оқулықтарындағы «Тегістеу» мысалын қолдандым.

Жабдықтар

1 x Arduino Nano - сілтеме

1 x Oled дисплейі (SSD 1306) - сілтеме

1 x 1/4W 1% резисторлар - 1k Ом - Сілтеме

1 x 1/4W 1% резисторлар - 220к ом - Сілтеме

1 x 1/4W 1% резисторлар - 10k Ом - Сілтеме

1 x 4.096v LM4040DIZ -4.1 кернеу анықтамасы - сілтеме

Нан тақтасы мен сымдар - сілтеме

Astro AI DM6000AR - сілтеме

USB қуат банкі - сілтеме

9В батареялары - сілтеме

CanadianWinters - Amazon Services LLC Associates бағдарламасының қатысушысы, Amazon.com мен аффилиирленген сайттарға сілтеме жасау арқылы сайттарға ақы алу құралдарын ұсынуға арналған серіктестік жарнама бағдарламасы. Осы сілтемелерді қолдана отырып, Amazon Associate ретінде, егер сіз басқа нәрсе сатып алсаңыз да, білікті сатып алудан табамын-және бұл сізге ештеңе етпейді.

1 -қадам: Схемалар

Схемалар
Схемалар
Схемалар
Схемалар

Мен барлық бөлшектерді жоғарыдағы схемаға сәйкес қостым. Атап айтқанда, мен ажыратымдылықты жоғалтпау үшін 5v белгісіне мүмкіндігінше жақын болу үшін 4.096 кернеу сілтемесін таңдадым.

Мәліметтер кестесіне сүйене отырып, мен кернеу анықтамасы үшін 1K Ом резисторын таңдадым, бірақ басқа мәнді қолдануға болады. Анықтамалық кернеу Nano 5v түйреуішінен беріледі.

Схеманың идеясы өлшенетін тұрақты кернеу кернеу резисторы арқылы өтеді. Масштабталған кернеу Arduino-ның аналогтық түйреуішіне түседі, содан кейін ол сыналады, тегістеледі, қайта масштабталады және OLed дисплейінде көрсетіледі.

Мен қарапайым нәрселерді сақтауға тырыстым:)

2 -қадам: Код және резисторлық есептеулер

Резисторлардың мәндері импеданс 10к Ом -нан төмен болу үшін қажет болған жағдайда таңдалды (егер қателеспесем, бұл Arduino/Atmega деректер кестесінде).

Қарапайым резистор мәндерін қолданғыңыз келсе, есептеулерді автоматтандыратын электрондық кесте жасадым: Google парағына сілтеме.

Міне, мен бұл жоба үшін қолданған код:

#қосу

#қосу U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (айналдыру, [қалпына келтіру]) өзгермелі кернеу = 0; // float кернеу мәнін сақтау үшін қолданылады Radjust = 0.043459459; // Кернеуді бөлу коэффициенті (R2 /R1+R2) float vbat = 0; // калькуляциядан кейінгі соңғы кернеу- аккумулятор қалқымасының кернеуі Vref = 4.113; // Кернеу анықтамасы - өлшенген нақты мән. Номиналды мән 4.096v const int numReadings = 50; // оқу үлгілерінің саны - тегістеу үшін көбейту. Жылдам оқу үшін азайтыңыз. int оқулары [numReadings]; // int readIndex = 0 аналогты кірістен алынған көрсеткіштер; // ағымдағы көрсеткіш индексі белгісіз ұзақ жиынтық = 0; // жұмыс істейтін жалпы int орташа = 0; // кідіртусіз экранды жаңартуға арналған айнымалылар unsigned long previousMillis = 0; // экран соңғы жаңартылғанда сақталады // тұрақтылар өзгермейді: const long interval = 50; // экран жаңартылатын уақыт аралығы (миллисекундтар) void setup (void) {analogReference (EXTERNAL); // 4.096 тірек кернеуі үшін AREF пайдаланыңыз. Менің анықтамалық нақты кернеу - 4.113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {//… басына дейін орау: readIndex = 0; } // орташа мәнді есептеңіз: орташа = (жалпы / numReadings); кернеу = орташа * (Vref / 1023.0); //4.113 - бұл Vref vbat = кернеу/Radjust; // Милис көмегімен экранды жаңарту кідірісін орнату (currentMillis - previousMillis> = интервал) {// экранның соңғы рет жаңартылғанын сақтаңыз previousMillis = currentMillis; u8g2.clearBuffer (); // ішкі менорды тазарту // Pack Voltage display 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 («Нақты кернеу»); } u8g2.sendBuffer (); // ішкі жадты дисплей кідірісіне ауыстыру (1); }

Назар аударыңыз, мен Arduino кодтаумен біршама тот басқанмын, сондықтан егер сіз қатені немесе кодты жақсарту әдісін тапсаңыз, мен ұсыныстарға дайынмын:)

3 -қадам: Оны сынап көрейік

Оны сынап көрейік!
Оны сынап көрейік!
Оны сынап көрейік!
Оны сынап көрейік!
Оны сынап көрейік!
Оны сынап көрейік!

Бұл вольтметрді тексеру үшін мен жергілікті дүкеннен алған 8х 9в батареяларды қолдандым. Мен бұл вольтметрді аккумуляторлық батареялардағы кернеуді өлшеу үшін қолдануды жоспарлап отырмын (олардың кернеуі 24-60В аралығында, кейде 72В).

Электроника компьютерге және кішкене қорапқа салынғаннан кейін, бұл жақсы және портативті батарея есептегішін жасайды. OLED -дегі графика мен қаріптер сіздің қажеттіліктеріңізге сәйкес реттелуі мүмкін (мысалы, оқуға ыңғайлы үлкен қаріп).

Менің мақсатым Олед/Ардуино метрінде менің сандық мультиметрден алыс емес жерде кернеуді оқу болды. Мен +/- 0, 3в максималды дельтаға ұмтылдым. Бейнеден көріп отырғанымдай, мен оны мұрағаттай алдым, тек өлшеулердің жоғарғы жағынан.

Сізге бұл нұсқаулық ұнады деп үміттенемін және өз ойларыңызбен бөлісіңіз!

Ұсынылған: