Дводіапазонний вольтамперметр на МК ATMEGA8

Автор: studiotandem. Опубликовано в Вольтметры

Poser mДводіапазонний вольтамперметр:

- МК ATMEGA8
- семисегментні LED - індикатори (або модулі на MAX7219)
- теплоконтроль на DS18b20.

 

 

Даний прилад є продовженням проєкту «АЦП универсальный «показометр», LED - МК Atmega8». Метою модернізації було покращення точності вимірів та додавання нових функцій. А саме:
- вимірювання напруги та струму у двох діапазонах.
- апаратна та програмна корекція зміщення нуля операційних підсилювачів, що використовуються у датчиках струму.
- максимальна відмова від механічних регулювальних елементів (підстроєчних резисторів) у вимірювальних вузлах. Хоча на схемі та платах вони присутні, іх можна замінити постійними (відповідно розрахувавши з допуском 5%). Точну підгонку можна здійснити у меню з допомогою коефіцієнтів у кожному діапазоні струму та напруги.
- компенсація напруги, що падає на шунті.
- контроль температури силових елементів та дворівневий управління.
- функція «прогнозування вихідного струму».
- вивід індикації на семисегментний LED-модуль MAX7219. (https://collider.prom.ua/p1102018313-modul-max7219-vosmirazryadnyj.html) (https://datasheetspdf.com/pdf-file/444174/Maxim/MAX7219/1)

max7219 hd

Технічні характеристики:
- дводіапазонний вольтметр 0-100V
1-й діапазон 0-9.999V. дискретність виміру 0.001V,
2-й діапазон 10.00-99.99V. дискретність виміру 0.01V,
- дводіапазонний амперметр 0-10A
1-й діапазон 0-999.9mA. дискретність виміру 0.1mA,
2-й діапазон 1.000-9.999A. дискретність виміру 0.001A,
- термометр на DS18b20. дискретність виміру 0.1C,
- струм споживання ~70 mA (при напрузі живлення 9V) і залежить від яскравості індикаторів.

За точністю вимірів прилад набагато перевершив різного роду «показометри» і стоїть в одному ряду з мультиметрами загального вжитку. Принаймні покази між ним та моїм "еталонним" M890G майже повністю збігаються (+-2 молодших розрядів з чотирьох) у діапазоні 0-20V/0-2A (більше не було). А додаткові функції, такі як дводіапазонний термоконтроль та режим «прогнозування струму» роблять його унікальними. Принаймні, подібного на такій (народній) елементній базі я не зустрічав. Але якби не допомога Soir у написанні прошивки, цього проекту не було б. За що йому ВЕЛИЧЕЗНА ПОДЯКА!

Принципова схема:

VA ATMEGA8 LED 2020 Tandem SCH

Принципова схема блоку індикації на 74HC595:

VA ATMEGA8 LED 2020 Tandem SCH LED74НС595

 

LED74НС595 foto

Зовнішній вигляд блоку індикації 74HC595.

Термоконтроль.
Являє собою дворівневий контроль за температурою радіатора, на якому встановлені силові елементи. При досягненні заданої в меню температури (параметр FAn) включається охолоджувальний вентилятор. Гістерезис 5 градусів. Але може статись так, що вентилятор не справиться з охолодженням і температура продовжуватиме рости. Це може закінчитись сумно. Для запобігання цьому є другий рівень захисту. Він полягає в тому, що в меню задається ще один поріг температури (параметр t En), по досягненню якого на контакт 16 (PB2) МК виводиться сигнал «T_MAX» лог. 1 для подачі на сторонній пристрій. Як ним скористатись це вже окрема тема.

Прогнозований струм.
Що це таке?... І як це працює?
Ось як дізнатись на який струм обмеження виставлений регулятор струму в БЖ ? Як правило, вставляємо пінцет на вихід БЖ і крутимо «регулятор струму» БЖ, дивлячись на покази амперметра. По-простому, коротимо вихід. Все це супроводжується світловими та звуковими ефектами і виглядає це схожим на контактне зварювання. Функція "прогнозований струм" дозволяє уникнути цього. При спробі покрутити «регулятор струму» БЖ (RV4 в Proteusi, а фізично це «регулятор струму« в БЖ і на схемі показаний схематично) міряється напругу на повзунку «регулятора струму» БЖ. А оскільки регулятори напруги та струму БЖ живляться стабільною Uref (5V), то відповідно, при хорошій лінійності нашого вольтамперметра можна з достатньою точністю спрогнозувати яким буде струм обмеження по виходу. Виводиться «прогнозований струм» лише при нульовому струмі навантаження мигаючим показником пару секунд після крутіння резистора "рег. струму"(чутливість задається в меню параметром coIP). Тобто... навантаження нема - амперметр показує нуль - покрутили резистор "рег. струму" (МК має зловити ту невеличку дельту напруги) - індикатор моргаючи показує пару сек. "прогнозований" струму обмеження і повертається в початковий стан. Ну якось так.... Надіюсь, що зрозуміло пояснив.

Прилад призначений для встроювання в лабораторні БЖ та електронні навантажен-ня. Складається він з трьох частин:
1 - Блок індикації. Встановлюється на передній панелі та містить всього три сигнальні лінії + живлення.
2 - Вимірювальний блок. Найкраще його розташовувати поблизу силових елементів.
3 - Блок керування на МК ATMEGA8. Його через стойки можна прикрутити до блоку індикації етажеркою (отвори для кріплення там співпадають

Кнопки (та світлодіоди) практично є сервісними та потрібні лише на етапі налаштувань і можна нікуди їх не виводити. Хіба що вивести одну кн. «MINUS» для оперативного контролю температури та «прогнозованого струму».

Блок індикації.
Може бути виконаний у двох варіантах, як на звичайних чотирьох-розрядних семисегментних LED - індикаторах з можливістю вибору СК/СА джемпером (к.13 МК), так і на семисегментному LED-модулі MAX7219. Сам модуль потребує незначної доробки. А саме заміни конденсатора по живленню на більшої ємності (з 0,1 на 20-50 мкФ). Китайці ж такі економісти...

max7219

Без цієї переробки модуль значно збільшує пульсації живлення. Також не слід занадто збільшувати в меню (опція LiGH) яскравість, бо це істотно збільшує струм споживання (при 16 до 250 mA!) і може привести до перегріву та виходу з ладу модуля. Таке враження, що в модулі взагалі відсутні струмообмежуючі резистори, а струм задається лише внутрішнім опором самого світлодіода.
LED - індикатори вибрані тому, що на них набагато зручніше оперативно спостерігати за показами вимірювальних величин. Великі яскраві символи, в які не потрібно вдивлятись, напружуючи зір і незахаращенність непотрібною інформацією, яка тільки відвертає увагу. Для покращення контрасту і кращої видимості при зовнішньому засвітленні бажано використати світлофільтр (кольорове оргскло або плівку) відповідного кольору. Я ж використовую димчасту плівку з неробочих дисплеїв від смартфонів. Її необхідно обережно відклеїти від матриці та відмити від клею. А ще вона добра тим, що можна використовувати індикатори різного кольору (червоний-зелений) для струму та напруги.
Красиво розведені друковані плати для індикації на 74HC595 під різні розміри індикаторів є тут (https://sxem.org/2-vse-stati/20-voltmetry/4-universalnyj-pokazometr)

Вимірювальний блок.
Також може бути у двох варіантах. На ОП широкого вжитку LM358 (https://www.ti.com/lit/ds/symlink/lm158-n.pdf) або на недорогому прецезійному OP07 (К140УД17)(https://www.analog.com/media/en/technical-documentation/data-sheets/OP07.pdf). Буде доречно більш детально зупинитись на виборі ОП та режиму його роботи, бо від цього істотно залежать вимірювальні характеристики по виміру струму приладу. Багато користувачів в подібних конструкціях стикаються з проблемою невірних показів амперметра (велика нелінійність, нечутливість на початку діапазону) і борються з цим явищем по-різному. Хто збільшує опір шунта і намарно гріє навколишнє середовище, хто підбирає ОП з однотипних, вибираючи найкращий, а хто використовує дорогі прецезійні або Rail-to-Rail ОП, облегшуючи свій гаманець. Але все це не завжди помагає. Причина ж полягає у такому важливому параметрі ОП як початкове зміщення (Input Offset Voltage). Цей параметр завжди вказаний даташиті. Для операційників широкого вжитку межі коливань більші, для прецизійних - менші. Так, наприклад, у LM358 типовий показник -+2mV, а в OP07 -+30μV. Різниця на порядки. Ця напруга помножена на коефіцієнт підсилення ОП буде присутня на його виході. А сам коефіцієнт залежить від опору шунта. Чим менший шунт, тим більший коефіцієнт. На практиці він може становити 200 і більше. І виходить, що використавши LM358 зі зміщенням -+2mV і к=200 ми отримаємо напругу на виході (без сигналу) 0,4V. Немало, враховуючи що для МК весь діапазон поміщається у 0-2,5V(2,56V, якщо бути точним). І виходить, що замість нуля (бо навантаження немає) ми бачимо на індикаторі якесь число. Але це ще не все.... цих 0,4V можуть бути і від’ємними (-0,4V). В такому випадку на індикаторі ми бачитимемо нуль, але збільшуючи струм навантаження ми все одно будем бачити нуль.... І лише при якомусь струмі покази індикатора відірвуться від нуля. Обидва випадки нас не тішитимуть. В першому ми бачитимемо наш струм плюс «якесь число», в другому на початку ми бачитимемо нуль і лише потім наш струм мінус «якесь число». Це «якесь число» і показуватиме наскільки зміщений ОП. Ситуація з OP07 буде подібна, але «якесь число» буде набагато менше. Може таке статись, що на виході буде нуль, але це тільки в тому випадку, коли казково пощастило і попався операційник з нульовим зміщенням. На таке щастя годі й сподіватись. Китайські друзі вміють все гарненько виміряти та акуратно розкласти по коробочках Будьте певні... до нас надійдуть не найкращі екземпляри. І тоді виникає запитання «як цього позбутись?». А просто. Необхідно якось компенсувати початкове зміщення ОП. Як це зробити? Сама процедура називається балансування. В багатьох, а особливо в прецизійних, є спеціальні виводи для цього. До них під'єднується підстроєчний резистор і з його допомогою викручується «нуль» на виході при нульовому навантаженні. У OP07 вони є (виводи 1,8), а у LM358 немає. Але і LM358 можна збалансувати, подавши напругу через високоомний резистор на інвертуючий або неінвертуючий вхід (залежить від того в яку сторону втік нуль). Все вищенаписане актуально для «класичного» двополярного живлення. Більшість подібних конструкцій працюють при однополярному живленні. Це тільки поглиблює проблему. Нуля на виході при такому живленні досягнути практично неможливо... навіть використовуючи Rail-to-Rail ОП. Слід зауважити, що у Rail-to-Rail також присутній Input Offset Voltage і з ним також потрібно боротись. Для повноцінної роботи ОП потрібне двополярне живлення. Бодай невеликий мінус. І воно в даній конструкції реалізовано. МК на к.15 (PB1) генерує меандр 100KHZ (опція Fout в меню), які після двопівперіодного випрямляча та фільтру перетворюються на «мінус». При використанні Rail-to-Rail Fout необхідно вимкнути, а к.4 ОП з’єднати з землею. При правильному живленні балансування ОП не становить проблеми. Необхідно лише задати на виході операційника маленьку (+2-5mV) позитивну напругу, яка потім компенсується програмно (в меню є опція oIL та oIH).
Що LM358, що OP07 працюють однаково добре. Лише OP07 потрібно два корпуси, і вона дозволяє працювати з меншим шунтом (у мене 2 мОм), а для LM358 менш як 10 мОм небажано. При таких шунтах якогось впливу температурної нестабільності не зауважив. Такого номіналу шунти є на старих материнських платах від ноутбуків. Також можна викоримтати SMD-резистори розміром 1206 і номіналом 0,1 оМ включенних паралельно (вийде 20 мОм). Місця на платі для цього передбачені.
Для корекції падіння напруги на шунті в меню є опція Shnt (в міліомах) з допомогою якої можна компенсувати цю втрату
Пару слів на рахунок резисторів зворотнього зв'язку, що задають коефіцієнт підсилення. Їх необхідно розрахувати в залежності від використаного шунта та наявних номіналів. Критерієм є напруга (вказана на схемі) на входах МК відповідних діапазонів при заданому струмі (напрузі). Чим точніше - тим краще. 5%-ної точності цілком достатньо. Це можна зробити не вставляючи в панельку МК і задаючи відомий струм через шунт. Похибка компенсується програмно за допомогою коефіцієнтів при фінальному налаштуванні. Це саме стосується і дільників по виміру напруги.

current amplifier LM358 foto          current amplifier OP07 lay

Підсилювач струму на LM358.

current amplifier OP07 foto      current amplifier LM358 lay

Підсилювач струму на OP07 (необхідно 2 шт).

Блок керування на МК ATMEGA8.

Опис роботи.
1. Вхід в налаштування довгим натиском кнопки SET (понад 2 сек).
2. Зміна параметру кнопками PLUS/MINUS.
3. Налаштовуємий параметр мигає.
4. В неактивному вікні умовні символи параметру.
5. Перехід до наступного параметра кнопкою SET.
6. Вихід з налаштувань – повторне довге натискання на SET або автоматично через 10 сек від останнього натискання на кнопки. При виході з налаштувань відбувається збереження параметрів в енергонезалежну пам'ять.
7. В основному режимі кн. MINUS показ поточної температури DS18B20 на індикаторі напруги, а на індикаторі струму "прогнозований струм" (5 сек.) та вихід в основне меню.
8. В основному режимі кн. PLUS поміняти місцями V і A.

- Вибір типу індикаторів СК/СА джемпером.
- В залежності від часу натискання кнопки змінюється швидкість змін параметрів. (Довге утримування збільшує швидкість).
- Максимальна сумісність з попередніми версіями.
- Вивід інформації амперметра в нижньому діапазоні в mA (0-999.9mA), а в верхньому в А (1.000-9.999A).
Вивід інформації вольтметра в нижньому діапазоні в V 0-9.999V), а в верхньому (10.00-99.99V).
* Такий формат показуватиме «чесних» 3 розряди + 1 «штучний» (програмний). Букви V та A появляються при включенні на 5 сек. і потім на їх місці четверта "нечесна цифра".

Параметри меню:
1. oIL – компенсація напруги зміщення ОП підсилювача струму нижнього діапазону IL. (кн. PLUS - запам'ятати зміщення, кн. MINUS - обнулити зміщення). ***
2 oIH – компенсація напруги зміщення ОП підсилювача струму верхнього діапазону IH. (кн. PLUS - запам'ятати зміщення, кн. MINUS - обнулити зміщення). ***
3. coVL – корекція показів макс. напруги нижнього діапазону VL (00,00-99,99, по замовчуванню 04,00).****
4. coVH – корекція показів макс. напруги верхнього діапазону VH (00,00-99,99, по замовчуванню 40,00).****
5. coIL – корекція показів макс. струму нижнього діапазону IL (000,0-999,9, по замовчуванню 025,0).****
6. coIH – корекція показів макс. струму верхнього діапазону IH (00,00-99,99, по замовчуванню 02,50).****
7. FAn(значок градуса) – Температура включення вентилятора охолодження. Гістерезис 5 градусів постійний.
8. t En – Температура аварійного відключення. Гістерезис 5 градусів постійний. При аварії лог. 1 для подачі на сторонній пристрій.
9. coIP – чутливість "прогнозованого" струму. (0-999.9, по замовчуванню 000.0).
000.0 = OFF.
10. Shnt – опір шунта (0-999.9 в міліомах, по замовчуванню 100.0). Потрібно для корекції падіння напруги на шунті. Коли 0.0 то корекції немає. *
11. IP – корекція показів "прогнозованого струму" (00,00-99,99, по замовчуванню 04,00).
12. Fout – генератор 100KHZ (On/Off). Формує мінус живлення ОП.

Примітки:
* Індикатор параметру в режимі мигання виводить почергово сам параметр та результат, на який впливає даний параметр.

*** Це напруга зміщення ОП (верх. та ниж. діапазону відповідно), яку необхідно компенсувати. Натискання кн. PLUS - запам'ятає це зміщення та відніматиме його при розрахунках. кн. MINUS - обнулить зміщення.

**** Точна корекція показів проводиться при подачі на вхід приладу відомої напруги. Кнопками PLUS/MINUS слід виставити правильні покази виміряної напруги. Грубе налаштування попередньо проводиться вхідними резистивними дільниками. Корекцію бажано проводити при вхідній напрузі близькій до максимальної. Зі струмом аналогічно.

Control ATMEGA8 foto

LED74НС595 Spl

При монтажі не рекомендую використовувати активовані флюси. Найкраще підходить спиртоканіфоль. Після монтажу плати ретельно промити (спирт+бензин).

Налаштування приладу.
Проводиться у два етапи: грубе та точне (програмне).
При правильній збірці блок керування та блок індикації починають працювати зразу. Слід лише перевірити роботу формувача живлення мінуса (-2-4V). Вимірювальний блок потребує додаткових налаштувань. А саме:
- Балансування ОП. Вимірюємо напругу на входах IL(PC0) та IH(PC1). Якщо вона виходить за межі 0-50 mV - то необхідне балансування. Ідеал - +2-5mV. Мінусові значення неприпустимі. Для цього крутимо підстроєчні резистори «Баланс».
- Налаштовуємо вхідні дільники та коефіцієнти підсилення підсилювачів датчика струму. Це зручно робити вийнявши МК з панельки та при заданій вхідній напрузі/струмі (наприклад 10V/1A) привести у відповідність напругам, вказаним на схемі в обидвох діапазонах, як напруги , так і струму. Зробити це слід максимально точно, але без фанатизму. Влаштує точність 5%. Я це робив підбором постійних резисторів, хоча на платі датчика струму є місце на малі SMD-дешні підстроєчні резистори. Та це не є дуже доброю ідеєю (нестабільність з часом та неможливість промивки після монтажу). Краще скористатись додатковими (є місце на платі) постійними резисторами. На фото підсилювачів струму можна побачити, як я це зробив.
Далі можна переходити до програмного налаштування. Але перед тим для уникнення хибного спрацювання «прогнозування струму» від наводок необхідно на час налаштувань закоротити вхід IP блоку керування на землю. Прошитий МК вставляємо в прилад та вмикаємо живлення. На цьому етапі ми вже бачитимемо покази, але ще не точні. Для подальших дій заходимо в меню натиском кн. SET (понад 2 сек). Всі пункти цього меню вказані в розділі «Параметри меню».
- Задаємо параметр Shnt (опір шунта) в міліомах в залежності від того, який встановлений на платі..
- Параметрами oIL та oIH – компенсуємо напруги зміщення ОП підсилювачів струму нижнього та верхнього діапазонів відповідно (кн. PLUS - запам'ятовує зміщення, кн. MINUS - обнуляє зміщення). Спочатку ми бачитимемо число, що показує зміщення, а після натискання кн. MINUS буде нуль. Зміщення компенсовано.
- Подаємо на вхід напругу 9,99V і параметром coVL корегуємо покази макс. напруги нижнього діапазону. В цей час ми бачитимемо мигаючий параметр (коефіцієнт) та нашу напругу, яку потрібно підкоригувати до «еталонної» 9,99V..
- Подаємо на вхід напругу 10,00V і параметром coVH корегуємо покази макс. напруги верхнього діапазону приладу до «еталонної» напруги 10,00V.
- Аналогічні дії робимо для двох діапазонів струму. з допомогою параметрів coIL та coIH. Лише замість подачі «еталонної» напруги на вхід, задаємо струм через шунт 999mA/1,00A для діапазонів coIL та coIH відповідно.
- Задавши максимальний струм через шунт, в невеликих межах змінюємо параметр Shnt, добиваючись показів максимально наближених «еталонному» амперметру..
- Перевіряємо лінійність вимірів струму та напруги у всьому діапазоні та момент перемикання діапазонів (10,00V/1,00A) і при потребі підкориговуємо коефіцієнти.

Сама конструкція приладу не є складною, проте вимагає чіткого розуміння роботи та скрупульозності при налагоджуванні, а також правильного підключення земляних та сигнальних ліній у кінцевому пристрої. На закінчення зауважу, що схему можна дещо спростити, якщо не потрібне дводіапазонне вимірювання. Для цього необхідно входи VL та IL блоку керування під'єднати до VCC (+5V). Також можна відмовитись від теплоконтролю на DS18b20 У такий спосіб прилад перетвориться у звичайний однодіапазонний вольтамперметр.

Ну ось, власне, і все... Намагався якнайдоступніше все описати. Не впевнений, що мені це вдалося. Це моя перша стаття.... так що не судіть строго. Якщо є питання - питайте. На форумі є обговорення.

Файли:

Схема Splan, плати Sprint-Layout

Прошивка, Proteus для LED 74НС595

Прошивка, Proteus для MAX7219

Fuse

ATM8 8MHz Int

LOW=$E4
HI=$D9
LOCK=$3F

Демонстрація роботи