- Необходими материали
- Електрическа схема
- Измервателна единица
- Изчислителна и дисплейна единица
- Програмиране на Arduino
- Как да измервате с по-голяма точност?
- Работа и тестване
Като инженери по електроника, ние винаги разчитаме на измервателни уреди / инструменти за измерване и анализ на работата на веригата. Започвайки с обикновен мултицет до сложни анализатори за качество на захранването или DSO, всичко има свои уникални приложения. Повечето от тези измервателни уреди са лесно достъпни и могат да бъдат закупени въз основа на измерваните параметри и тяхната точност. Но понякога може да се окажем в ситуация, в която трябва да изградим собствени измервателни уреди. Кажете например, че работите по слънчев фотоволтаичен проект и бихте искали да изчислите консумацията на енергия на вашия товар, в такива сценарии можем да изградим собствен ватметър, използвайки проста платформа за микроконтролер като Arduino.
Изграждането на собствени измервателни уреди не само намалява разходите за тестване, но също така ни дава възможност да улесним процеса на тестване. Подобно на това, ватметър, построен с помощта на Arduino, може лесно да бъде променен, за да следи резултатите на сериен монитор и да начертава графика на сериен плотер или да добавя SD карта, за да регистрира автоматично стойностите на напрежението, тока и мощността на предварително определени интервали. Звучи интересно, нали !? Така че нека да започнем…
Необходими материали
- Arduino Nano
- LM358 Op-Amp
- 7805 Регулатор на напрежение
- 16 * 2 LCD дисплей
- 0.22 ома 2W валутен резистор
- 10к пот за тример
- 10k, 20k, 2.2k, 1k резистори
- 0.1uF кондензатори
- Тестово натоварване
- Perf съвет или макет
- Комплект за запояване (по избор)
Електрическа схема
Пълната електрическа схема на проекта за ардуино ватметър е дадена по-долу.
За по-лесно разбиране схемата на ардуино ватметър е разделена на две единици. Горната част на веригата е измервателната единица, а долната част на схемата е изчислителната и дисплейната единица. За хората, които са нови за този тип вериги, следваха етикетите. Пример + 5V е етикет, което означава, че всички щифтове, към които е свързан етикетът, трябва да се считат, тъй като са свързани заедно. Етикетите обикновено се използват, за да направят схемата да изглежда изчистена.
Веригата е проектирана да се побере в системи, работещи между 0-24V с токов диапазон 0-1A, като се има предвид спецификацията на слънчева PV. Но можете лесно да разширите обхвата, след като разберете работата на веригата. Основният принцип зад веригата е да се измери напрежението в товара и тока през него, за да се изчисли консумираната от него мощност. Всички измерени стойности ще бъдат показани на 16 * 2 буквено-цифров LCD.
По-нататък по-долу нека разделим веригата на малки сегменти, за да можем да получим ясна представа за това как веригата е с отстъпи да работи.
Измервателна единица
Измервателната единица се състои от потенциален разделител, който ни помага да измерим напрежението и затворен резистор с неинвертиращ Op-усилвател се използва, за да ни помогне да измерим тока през веригата. Потенциалната делителна част от горната схема е показана по-долу
Тук входното напрежение се представя от Vcc, както беше казано по-рано, ние проектираме веригата за диапазон на напрежение от 0V до 24V. Но микроконтролер като Arduino не може да измерва толкова високи стойности на напрежението; той може да измери напрежение само от 0-5V. Така че трябва да картографираме (преобразуваме) диапазона на напрежението от 0-24V до 0-5V. Това може лесно да се направи, като се използва потенциална разделителна верига, както е показано по-долу. Резисторът 10k и 2.2k заедно образуват веригата на потенциалния разделител. Изходното напрежение на потенциален делител може да се изчисли, като се използват формулите по-долу. Същото се използва за определяне на стойността на вашите резистори, можете да използвате нашия онлайн калкулатор, за да изчислите стойността на резистора, ако препроектирате веригата.
Vout = (Vin × R2) / (R1 + R2)
Картираното 0-5V може да се получи от средната част, която е обозначена като напрежение. След това това картографирано напрежение може да бъде подадено към аналоговия щифт Arduino по-късно.
След това трябва да измерим тока чрез LOAD. Както знаем, микроконтролерите могат да четат само аналогово напрежение, така че трябва по някакъв начин да преобразуваме стойността на тока в напрежение. Това може да стане чрез просто добавяне на резистор (шунтиращ резистор) по пътя, който според закона на Ом ще изпусне стойност на напрежението през него, която е пропорционална на протичащия през него ток. Стойността на този спад на напрежението ще бъде много по-малка, така че ние използваме операционен усилвател, за да го усилим. Веригата за същото е показана по-долу
Тук стойността на шунтиращия резистор (SR1) е 0,22 Ома. Както беше казано по-рано, ние проектираме веригата за 0-1A, така че въз основа на закона на Ома можем да изчислим спада на напрежението в този резистор, който ще бъде около 0.2V, когато максимум 1A ток преминава през товара. Това напрежение е много малко, за да може микроконтролерът да чете, използваме Op-Amp в режим на неинвертиращ усилвател, за да увеличим напрежението от 0,2 V до по-високо ниво, за да може Arduino да чете.
Op-Amp в неинвертиращ режим е показан по-горе. Усилвателят е проектиран да има коефициент на усилване 21, така че 0.2 * 21 = 4.2V. Формулите за изчисляване на печалбата на Op-amp са дадени по-долу, можете също да използвате този онлайн калкулатор за печалба, за да получите стойността на вашия резистор, ако препроектирате веригата.
Печалба = Vout / Vin = 1 + (Rf / Rin)
Тук в нашия случай стойността на Rf е 20k и стойността на Rin е 1k, което ни дава гигантска стойност от 21. Усиленото напрежение от Op-усилвателя се дава на RC филтър с резистор 1k и кондензатор 0.1uF до филтрирайте всеки шум, който е свързан. Накрая напрежението се подава към аналоговия щифт на Arduino.
Последната част, която е останала в мерната единица, е частта на регулатора на напрежението. Тъй като ще дадем променливо входно напрежение, ние се нуждаем от регулирано + 5V волта за работа на Arduino и Op-amp Това регулирано напрежение ще бъде осигурено от регулатора на напрежението 7805. На изхода е добавен кондензатор за филтриране на шума.
Изчислителна и дисплейна единица
В измервателната единица сме проектирали веригата за преобразуване на параметрите на напрежението и тока в 0-5V, които могат да се подават към аналоговите щифтове Arduino. Сега в тази част от веригата ще свържем тези сигнали за напрежение към Arduino и ще свържем 16 × 2 буквено-цифров дисплей с Arduino, за да можем да видим резултатите. Веригата за същото е показана по-долу
Както можете да видите, щифтът за напрежение е свързан към аналогов щифт A3, а текущият щифт е свързан към аналогов щифт A4. LCD дисплеят се захранва от + 5V от 7805 и е свързан към цифровите щифтове на Arduino, за да работи в 4-битов режим. Също така използвахме потенциометър (10k), свързан към Con pin, за да променя контраста на LCD.
Програмиране на Arduino
Сега, когато имаме добро разбиране за хардуера, нека отворим Arduino и започнем програмирането. Целта на кода е да прочете аналоговото напрежение на щифтове A3 и A4 и да изчисли стойността на напрежението, тока и мощността и накрая да го покаже на LCD екрана. Пълната програма да направи същото е дадена в края на страницата, която може да се използва като такава за хардуера, обсъден по-горе. Освен това кодът е разделен на малки фрагменти и обяснен.
Както всички програми, с които започваме, определяме щифтовете, които сме използвали. В изходния проект щифтовете A3 и A4 се използват съответно за измерване на напрежение и ток, а цифровите щифтове 3,4,8,9,10 и 11 се използват за свързване на LCD с Arduino
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Споменете номера на пина за LCD връзка LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Също така включихме заглавен файл, наречен течен кристал, за да свържем LCD с Arduino. След това във функцията за настройка инициализираме LCD дисплея и показваме въвеждащ текст като “Arduino Wattmeter” и изчакваме две секунди, преди да го изчистим. Кодът за същото е показан по-долу.
void setup () { lcd.begin (16, 2); // Инициализиране на 16 * 2 LCD lcd.print ("Arduino Wattmeter"); // Входен ред за съобщение 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Забавяне на встъпителния ред 2 (2000); lcd.clear (); }
Вътре в функцията на главния контур ние използваме функцията за аналогово четене, за да прочетем стойността на напрежението от пиновете A3 и A4. Както знаем изходната стойност на Arduino ADC от 0-1203, тъй като има 10-битов ADC. След това тази стойност трябва да се преобразува в 0-5V, което може да се направи чрез умножаване с (5/1023). След това отново по-рано в хардуера сме картографирали действителната стойност на напрежението от 0-24V до 0-5V и действителната стойност на тока от 0-1A до 0-5V. Така че сега трябва да използваме множител, за да върнем тези стойности обратно към действителната стойност. Това може да се направи, като се умножи със стойност на множител. Стойността на множителя може да бъде изчислена теоретично, използвайки формулите, предоставени в хардуерния раздел, или ако имате известен набор от стойности на напрежение и ток, можете да го изчислите практически.Следвах последната опция, защото тя е по-точна в реално време. Така че тук стойността на множителите е 6,46 и 0,239. Следователно кодът изглежда по-долу
float Voltage_Value = analogRead (Read_Voltage); float Current_Value = analogRead (Read_Current); Voltage_Value = Voltage_Value * (5.0 / 1023.0) * 6.46; Current_Value = Current_Value * (5.0 / 1023.0) * 0.239;
Как да измервате с по-голяма точност?
Горният начин за изчисляване на стойността на действителното напрежение и ток ще работи добре. Но страда от един недостатък, тоест връзката между измереното напрежение ADC и действителното напрежение няма да бъде линейна, следователно единичен множител няма да даде много точни резултати, същото се прилага и за тока.
Така че, за да подобрим точността, можем да начертаем набор от измерени стойности на ADC с действителни доли, като използваме известен набор от стойности и след това да използваме тези данни, за да начертаем графика и да изведем умножителното уравнение, използвайки метода на линейна регресия. Можете да се обърнете към dB метър Arduino, в който съм използвал подобен метод.
И накрая, след като сме изчислили стойността на действителното напрежение и действителния ток през товара, можем да изчислим мощността, използвайки формулите (P = V * I). След това показваме всичките три стойности на LCD дисплея, като използваме кода по-долу.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Voltage_Value); lcd.print (""); lcd.print ("I ="); lcd.print (Current_Value); float Power_Value = Voltage_Value * Current_Value; lcd.setCursor (0, 1); lcd.print ("Мощност ="); lcd.print (Power_Value);
Работа и тестване
За урок използвах перфектна дъска за запояване на всички компоненти, както е показано в схемата. Използвах винтова клема Phoenix за свързване на товара и нормален DC барел Jack за свързване на моя източник на захранване. Платката Arduino Nano и LCD дисплеят са монтирани на женски Bergstik, за да могат да бъдат използвани повторно, ако е необходимо по-късно.
След като подготвите хардуера, качете кода на Arduino на вашата Nano платка. Регулирайте подложката за подстригване, за да контролирате нивото на контраст на LCD дисплея, докато видите ясен въвеждащ текст. За да тествате платката, свържете товара към съединителя на винтовия терминал, а източника към жака Barrel. Напрежението на източника трябва да бъде повече от 6V, за да работи този проект, тъй като Arduino изисква + 5V за работа. АКО всичко работи добре, трябва да видите стойността на напрежението в товара и тока през него, показан в първия ред на LCD и изчислената мощност, показана на втория ред на LCD, както е показано по-долу.
Забавната част от изграждането на нещо се крие в тестването му, за да се провери докъде ще работи правилно. За целта използвах 12V автомобилни индикаторни балончета като товар и RPS като източник. Тъй като самият RPS може да измерва и показва стойността на тока и напрежението, ще бъде лесно за нас да проверим точността и производителността на нашата верига. И да, аз също използвах моя RPS, за да калибрирам стойността си на множител, така че да се доближа до точната стойност.
Цялата работа може да бъде намерена във видеото, дадено в края на тази страница. Надявам се, че сте разбрали схемата и програмата и сте научили нещо полезно. Ако имате някакъв проблем да накарате това да работи, публикувайте го в раздела за коментари по-долу или пишете на нашите форуми за повече техническа помощ.
Този базиран на Arduino проект за ватметър има много повече ъпгрейди, които могат да бъдат добавени, за да се увеличи производителността към автоматично регистриране на данни, начертаване на графика, уведомяване за напрежение или текущи ситуации и т.н. Така че останете любопитни и ми кажете за какво бихте използвали това.