- Необхідні матеріали
- Кругова діаграма
- Вимірювальний блок
- Блок обчислення та відображення
- Програмування Arduino
- Як виміряти з більшою точністю?
- Робота та тестування
Як інженери-електроніки, ми завжди залежать від вимірювачів / приладів для вимірювання та аналізу роботи схеми. Починаючи з простого мультиметра і закінчуючи складними аналізаторами якості енергії або DSO, все має свої унікальні програми. Більшість з цих лічильників легко доступні і їх можна придбати, виходячи з параметрів, що підлягають вимірюванню, та їх точності. Але іноді ми можемо потрапити в ситуацію, коли нам потрібно побудувати власні лічильники. Скажімо, наприклад, ви працюєте над сонячним фотоелектричним проектом, і хотіли б розрахувати енергоспоживання вашого навантаження, у таких сценаріях ми можемо створити власний ватметр, використовуючи просту платформу мікроконтролера, таку як Arduino.
Побудова власних лічильників не тільки зменшить витрати на тестування, але і дасть нам можливість полегшити процес тестування. Подібно до цього, ватметр, побудований за допомогою Arduino, можна легко налаштувати для моніторингу результатів на послідовному моніторі та побудови графіку на послідовному плоттері або додавання SD-карти для автоматичного реєстрації значень напруги, струму та потужності через заздалегідь визначені інтервали. Звучить цікаво, правда !? Тож давайте почнемо…
Необхідні матеріали
- Arduino Nano
- LM358 Op-Amp
- 7805 Регулятор напруги
- 16 * 2 РК-дисплей
- Шунтуючий резистор 0,22 Ом 2 Вт
- 10к горщик для тримера
- Резистори 10k, 20k, 2.2k, 1k
- Конденсатори 0,1 мкФ
- Тестове навантаження
- Perf дошка або макет
- Набір для пайки (додатково)
Кругова діаграма
Повна електрична схема проекту ваттметра Arduino наведена нижче.
Для зручності розуміння схема ваттметра arduino розділена на два блоки. Верхня частина схеми - це одиниця вимірювання, а нижня частина схеми - блок обчислення та відображення. Для людей, які не знайомі з цим типом схем, слідували ярлики. Приклад + 5 В - це етикетка, що означає, що всі штирі, до яких підключена етикетка, слід розглядати, оскільки вони з'єднані між собою. Зазвичай етикетки використовуються для того, щоб принципова схема виглядала акуратно.
Схема розроблена для підключення до систем, що працюють від 0 до 24 В з діапазоном струму 0-1 А, враховуючи специфікацію сонячної фотоелектричної батареї. Але ви можете легко розширити діапазон, як тільки зрозумієте роботу схеми. Основним принципом, що лежить в основі схеми, є вимірювання напруги на навантаженні та струму, що проходить через нього, для розрахунку споживаної ним потужності. Всі виміряні значення відображатимуться на буквено-цифровому РК-дисплеї 16 * 2.
Далі нижче давайте розділимо схему на невеликі сегменти, щоб ми могли отримати чітке уявлення про те, як схема працює з відступами.
Вимірювальний блок
Вимірювальний блок складається з дільника потенціалу, який допомагає нам виміряти напругу, і замикається резистор з неінвертуючим підсилювачем використовується для вимірювання струму через ланцюг. Частина дільника потенціалу з наведеної схеми показана нижче
Тут вхідна напруга представлена Vcc, як вже говорилося раніше, ми розробляємо схему для діапазону напруг від 0 В до 24 В. Але такий мікроконтролер, як Arduino, не може виміряти такі високі значення напруги; він може вимірювати напругу лише від 0-5В. Отже, ми маємо відобразити (перетворити) діапазон напруги від 0-24В до 0-5В. Це можна легко зробити за допомогою схеми потенційного дільника, як показано нижче. Резистор 10k і 2.2k разом утворюють ланцюг потенційного дільника. Вихідну напругу дільника потенціалу можна розрахувати, використовуючи наведені нижче формули. Те саме буде використано для визначення значення ваших резисторів. Ви можете використовувати наш онлайн-калькулятор для розрахунку вартості резистора, якщо ви переробляєте схему.
Vout = (Vin × R2) / (R1 + R2)
Карту 0-5 В можна отримати з середньої частини, яка позначена як напруга. Потім цю відображену напругу можна подати на аналоговий штифт Arduino пізніше.
Далі ми маємо виміряти силу струму через ВАЛУ. Як ми знаємо, мікроконтролери можуть зчитувати лише аналогову напругу, тому нам потрібно якось перетворити значення струму на напругу. Це можна зробити, просто додавши резистор (шунтуючий резистор) на шляху, який згідно із законом Ома знизить значення напруги на ньому, пропорційне струму, що проходить через нього. Значення цього падіння напруги буде набагато меншим, тому ми використовуємо операційний підсилювач для його посилення. Схема для цього ж показана нижче
Тут значення шунтуючого резистора (SR1) становить 0,22 Ом. Як вже було сказано раніше, ми розробляємо схему для 0-1А, тому на основі закону Ома ми можемо розрахувати падіння напруги на цьому резисторі, яке буде близько 0,2 В, коли через навантаження проходить максимум струм 1 А. Ця напруга дуже мала для зчитування мікроконтролером, ми використовуємо Op-Amp в режимі неінвертуючого підсилювача, щоб збільшити напругу з 0,2 В до більш високого рівня для зчитування Arduino.
Операційне підсилювач у режимі неінвертування показано вище. Підсилювач розрахований на коефіцієнт посилення 21, так що 0,2 * 21 = 4,2 В. Формули для розрахунку коефіцієнта підсилення Операційного підсилювача наведені нижче, ви також можете використовувати цей онлайн-калькулятор підсилення, щоб отримати значення вашого резистора, якщо ви переробляєте схему.
Підсилення = Vout / Vin = 1 + (Rf / Rin)
Тут у нашому випадку значення Rf дорівнює 20k, а значення Rin дорівнює 1k, що дає нам гіганне значення 21. Посилена напруга у формі Op-підсилювача надається RC-фільтру з резистором 1k та конденсатором 0,1uF до відфільтруйте будь-який шум, який пов'язаний. Нарешті напруга подається на аналоговий штифт Arduino.
Остання частина, що залишилася в вимірювальному блоці - це частина регулятора напруги. Оскільки ми будемо подавати змінну вхідну напругу, нам потрібна регульована напруга + 5 В для роботи Arduino та Op-amp. Ця регульована напруга буде забезпечуватися регулятором напруги 7805. На виході додається конденсатор для фільтрації шуму.
Блок обчислення та відображення
В одиниці вимірювання ми розробили схему для перетворення параметрів напруги та струму в 0-5В, які можуть подаватися на аналогові висновки Arduino. Тепер у цій частині схеми ми підключимо ці сигнали напруги до Arduino, а також підключимо до Arduino буквено-цифровий дисплей 16 × 2, щоб ми могли переглянути результати. Схема для цього ж показана нижче
Як бачите, вивід напруги підключений до аналогового виводу A3, а поточний - до аналогового виводу A4. РК-дисплей живиться від + 5 В від 7805 і підключений до цифрових контактів Arduino для роботи в 4-бітному режимі. Ми також використовували потенціометр (10k), підключений до роз'єму Con, для зміни контрастності РК-дисплея.
Програмування Arduino
Тепер, коли ми добре розуміємось на апаратному забезпеченні, давайте відкриємо Arduino і почнемо програмувати. Призначення коду - зчитувати аналогову напругу на штифтах A3 та A4, обчислити значення напруги, струму та потужності та, нарешті, відобразити це на РК-екрані. Повна програма для того, щоб зробити те саме, наведена в кінці сторінки, яка може бути використана як така для обладнання, про яке йшлося вище. Далі код розбивається на невеликі фрагменти та пояснюється.
Як і всі програми, з яких ми починаємо, визначаємо шпильки, які ми використовували. У проекті штир A3 та A4 використовується для вимірювання напруги та струму відповідно, а цифрові висновки 3,4,8,9,10 та 11 використовуються для взаємодії РК з Arduino
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Згадайте номер контакту для підключення РК- дисплея LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Ми також включили заголовочний файл під назвою рідкий кристал для взаємодії РК-дисплея з Arduino. Потім всередині функції налаштування ми ініціалізуємо РК-дисплей і виводимо вступний текст як “Ватметр Arduino” і чекаємо дві секунди, перш ніж очистити його. Код для цього наведено нижче.
void setup () { lcd.begin (16, 2); // Ініціалізація рідкокристалічного друку на РК- дисплеї 16 * 2 ("Ватметр Arduino"); // Вступний рядок повідомлення 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Затримка вступного рядка повідомлення 2 (2000); lcd.clear (); }
Усередині функції головного шлейфу ми використовуємо функцію аналогового зчитування для зчитування значення напруги з контактів A3 і A4. Як ми знаємо вихідне значення АЦП Arduino від 0-1203, оскільки воно має 10-бітний АЦП. Потім це значення потрібно перетворити на 0-5 В, що можна зробити, помноживши на (5/1023). Потім знову в апаратному забезпеченні ми відобразили фактичне значення напруги від 0-24В до 0-5В і фактичне значення струму від 0-1А до 0-5В. Тож тепер нам доведеться використовувати множник, щоб повернути ці значення назад до фактичного значення. Це можна зробити, помноживши його на значення множника. Значення множника можна розрахувати теоретично, використовуючи формули, наведені в розділі апаратного забезпечення, або якщо у вас є відомий набір значень напруги та струму, ви можете обчислити його практично.Я дотримувався останнього варіанту, оскільки він, як правило, є більш точним у реальному часі. Тож тут значення множників становить 6,46 та 0,239. Отже, код виглядає як нижче
float Voltage_Value = analogRead (Read_Voltage); float Current_Value = analogRead (Read_Current); Значення_напруги = Значення_напруги * (5,0 / 1023,0) * 6,46; Current_Value = Current_Value * (5.0 / 1023.0) * 0.239;
Як виміряти з більшою точністю?
Наведений вище спосіб обчислення значення фактичної напруги та струму буде справно працювати. Але він страждає одним недоліком, тобто зв’язок між виміряною напругою АЦП і фактичною напругою не буде лінійним, отже, один множник не дасть дуже точних результатів, як і для струму.
Отже, для підвищення точності ми можемо побудувати набір виміряних значень АЦП з фактичними значеннями долин, використовуючи відомий набір значень, а потім використати ці дані для побудови графіку та виведення рівняння множника за допомогою методу лінійної регресії. Ви можете звернутися до дБ-вимірювача Arduino, в якому я використовував подібний метод.
Нарешті, коли ми розрахували значення фактичної напруги та фактичного струму через навантаження, ми можемо розрахувати потужність за формулами (P = V * I). Потім ми відображаємо всі три значення на РК-дисплеї, використовуючи наведений нижче код.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Voltage_Value); lcd.print (""); lcd.print ("I ="); lcd.print (Current_Value); float Power_Value = Значення_напруги * Current_Value; lcd.setCursor (0, 1); lcd.print ("Потужність ="); lcd.print (Power_Value);
Робота та тестування
Для підручника я використав дошку для перфорації, щоб припаяти всі компоненти, як показано на схемі. Я використовував гвинтову клему Phoenix для підключення навантаження та звичайний роз'єм для ствола постійного струму для підключення джерела живлення. Плата Arduino Nano та РК-дисплей встановлені на жіночому пристрої Bergstik, щоб їх можна було використовувати повторно, якщо це буде потрібно пізніше.
Підготувавши апаратне забезпечення, завантажте код Arduino на плату Nano. Відрегулюйте горщик тримера, щоб контролювати рівень контрастності РК-дисплея, поки не з’явиться чіткий вступний текст. Для випробування плати підключіть навантаження до гвинтового роз'єму клеми, а джерело - до гнізда ствола. Для роботи цього проекту напруга джерела повинна бути більше 6 В, оскільки для роботи Arduino потрібно + 5 В. ЯКЩО все працює нормально, ви повинні бачити значення напруги на навантаженні та силу струму, що відображається в першому рядку РК-дисплея, і розрахункову потужність, що відображається на другому рядку РК-дисплея, як показано нижче.
Найцікавіша частина побудови чогось полягає в його тестуванні, щоб перевірити, наскільки воно буде працювати належним чином. Для цього я використовував автомобільні індикатори на 12 В як навантаження та RPS як джерело. Оскільки сам RPS може вимірювати та відображати значення струму та напруги, нам буде легко перехресно перевірити точність та ефективність нашої схеми. І так, я також використовував свій RPS для калібрування свого значення множника, щоб наблизитись до точного значення.
Повну роботу можна знайти у відео, поданому в кінці цієї сторінки. Сподіваюся, ви зрозуміли схему та програму та дізналися щось корисне. Якщо у вас виникли проблеми з отриманням цієї роботи, опублікуйте її в розділі коментарів нижче або напишіть на наших форумах для отримання додаткової технічної допомоги.
Цей проект, заснований на Arduino, має набагато більше оновлень, які можна додати для підвищення продуктивності до автоматичного реєстрації даних, побудови графіків, сповіщення про напругу чи поточну ситуацію тощо. Тож будьте цікаві та повідомте мені, для чого ви б це використали.