Вимірювання напруги на АЦП TI ADC101c021, з обробкою подій і мін/макс за HW регістрами, шляхом опитування I2C

220300

Вимірювання напруги постійного струму на базі АЦП TI ADC101c021, з обробкою подій перетину нижнього та верхнього порогів із залученням всіх наявних апаратних регістрів, з накопиченням у регістрах мін/макс значень, шляхом постійного опитування шини I2C через рівні проміжки часу.

Даний програмний продукт автоматично вимірює поточне значення напруги на єдиному вході Vin у рівні проміжки часу. Також виконується відслідковування стану регістру прапорця перетину встановлених користувачем нижнього та верхнього порогів з урахуванням гістерезису.
Програмний модуль побудовано таким чином, що пороги та гістерезис задається у мілівольтах, або поділках шкали АЦП, що дуже зручно і дозволяє швидко виконувати початкове налаштування програми.
Окрім подій, програмний модуль відслідковує регістри автоматичного накопичення мінімального та максимального значення величини на вході. Оскільки АЦП самостійно виконує накопичення цих значень, то всі отримані дані буде враховано, навіть у період між вимірюваннями.

Очистити

Опис

Цей програмний модуль розроблявся і тестувався для роботи з

TI ADC101c021    (малопотужний, монолітний 10-бітний АЦП,  для роботи при напрузі живлення + 2.7 … 5.5 В)

та максимально використовує наявні можливості цього АЦП, а саме:

  • Вимірювання поточного значення напруги на вході
  • Обробка подій перетину нижнього і верхнього порогів
  • Накопичення (реєстрація) мінімального та максимального значень вимірювання

Користувач має має можливість встановлювати власні значення для порогів, гістерезису і часу опитування майстер-контролером. Ці параметри задаються у зручному для користувача форматі. Пороги напруги задаються у мілівольтах, або ж за потреби, у поділках шкали АЦП. Час опитування задається у мілісекундах.
Застосування вбудованих регістрів накопичення найменшого та найбільшого значення означає відсутність ризику втрати будь-яких пікових значень напруги у період часу між вимірюваннями. І дозволяє в такому разі збільшити проміжок часу між опитуваннями, розвантаживши шину I2C і майстер-контролер.

Для кого цей продукт

Цей програмний продукт розроблено із застосуванням безмежного розмаїття можливостей простих і доступних контролерів, сенсорів та інших електронних компонентів, які можна знайти у будь-якому магазині. Головна наша мета – надати прості і недорогі інструменти швидкого вирішення задуманих проектів.

Ми будемо раді, якщо нашими продуктами скористаються:

  • Діти та їх батьки;
  • Учні та їх вчителі;
  • Студенти та їх лабораторні роботи;
  • Новачки у технологіях Інтернету речей;
  • Лаборанти та їх експерименти;
  • Аматори-електронщики-не-програмісти;
  • Аматори-програмісти-не-електронщики;
  • Професійні інженери та їх поважні замовники;

Можливості сучасних обчислювальних систем настільки потужні і всеосяжні, що дані програмні компоненти однаково добре згодяться як для домашньої автоматизації і факультативного навчання, так і комерційного впровадження, або швидкого розгортання окремих сегментів комерційних систем та виконання їх пілотних випробовувань.

Необхідні навички та інструменти

Всі програмні продукти на нашому сайті розраховано на користувачів, які вже вміють самостійно підключати, прошивати та програмувати контролер ESP8266 з прошивкою NodeMCU і мовою програмування Lua.

Таким чином, застосування даного комерційного-придбаного програмного модуля Клієнтом полягає у тому, щоб:

  • завантажити (download) lua-код у середовище розробника на комп’ютер,
  • ознайомитися з кодом і супутніми матеріалами пакету постачання,
  • адаптувати код за необхідності під свої задачі,
  • вивантажити (upload) програмний код у контролер та запустити на виконання;
  • після тестування придбаного коду, користувач може інтегрувати його до своїх власних програмних розробок.

Стандарт планування та застосування пінів

У даному комерційному програмному продукті прийнято Стандарт планування та застосування пінів контролера ESP8266.
Також на нашому сайті є Глосарій, який постійно поповнюється.

Приклад роботи програмного модуля

Приклад журналу виводу даних у консоль програмним модулем під час його роботи. Можна бачити спрацювання ‘Evnt’ в момент перетину встановлених користувачем порогів.

# – номер вимірювання/рядка виводу в консоль;
curr adc – поточне значення поділок АЦП;
lo adc – значення мінімального виміряного значення, поділок АЦП;
lo mV – значення мінімального виміряного значення, мілівольт;
hi adc – значення максимального виміряного значення, поділок АЦП;
hi mV – значення максимального виміряного значення, мілівольт;
alrt – значення поточного стану прапорця перетину порогів [0; 1; 2].

Можливі застосування програмного модуля

Вимірювання напруги постійного струму у діапазоні від 0 до 3300 мВ, наприклад:

  • температури шляхом підключення термістора,
  • освітленості шляхом підключення фоторезистора,
  • сили струму і напруги шляхом підключення сенсора на ефекті Холла, трансформатора струму, трансформатора напруги відповідно,
  • дискретних станів з сенсорів типу “контакт”,

та багато інших задач.

Обраний нами АЦП задовольняє всім вимогам задачі з вимірювання напруги постійного струму як-от:

  • Наявність регістру прапорця стану перетину порогів Alert (Norma, Up, Down)
  • 10-бітне перетворення (близько 3 мВ/поділку)
  • Низька похибка вимірювання (+-0.25 поділки типова і +-0.8 поділки макс.)
  • Інтерфейс I2C
  • Апаратні регістри мінімального та максимального вимірювання
  • Швидкодія перетворення (tconv 1 мк сек)
  • Наявність глибокого сну

Перелік функцій

У даному програмному модулі реалізовано наступні функції:

  • Функція запису послідовності байт регістр пристрою на шині i2c;
  • Функція читання байт з певного регістру пристрою на шині i2c;
  • Функція встановлення початкової конфігурації у апаратних регістрах АЦП;
  • Функція читання байт з пристрою на шині i2c за адресою пристрою та регістром;
  • Функція перетворення значущої (корисної) частини отриманого значення у десяткове число;
  • Функція перетворення десяткового числа у двійкове значення для запису у 2-байтні регістри у форматі АЦП;
  • Функція розчеплення на байти двох-байтового слова з метою підготовки даних для запису у регістри АЦП;
  • Функція отримання поточних значень, стану і накопичених показників, а також наявності події на АЦП

Вся описана тут функціональність програмного модуля розроблялася і буда протестована на стабільність на реальному пристрої у всіх режимах роботи. На зображеннях показано як сам пристрій на якому відбувалася розробка, так і реальний вивід даних програмним модулем у консоль під час його роботи.

Комплект поставки

Комплект поставки обирає Клієнт під час замовлення. В залежності від здійсненого вибору певного комплекту на цей товар, Клієнт отримає один з наведених нижче варіантів:

комплект “модуль”

ti_adc101c021_6noCom.lua
ti_adc101c021_6.log

комплект “модуль + коментарі”

ti_adc101c021_6.lua
ti_adc101c021_6noCom.lua
ti_adc101c021_6.log

комплект “модуль + коментарі + документація”

ti_adc101c021_6.lua
ti_adc101c021_6noCom.lua
ti_adc101c021_6_description.txt
ti_adc101c021_6.log

 

Кожен комплект поставки має індивідуальну вартість. Це зроблено для того, щоб кожен користувач міг обрати потрібний комплект і не сплачувати більше, ніж необхідно для вирішення своєї задачі.

Розширені дані

@script ti_adc101c021_6.lua
Версія: 1.0
Розмір програмного модуля:
розмір без коментарів: 4483 байт
розмір з коментарями: 11293 байт
Різновид: HW current value, lo/hi threshold events, min/max HW registers
До збірки прошивки Nodemcu має входити перелік наступних бібліотечних модулів:
@module I2C
@module BIT
@link https://nodemcu.readthedocs.io/en/master/en/modules/i2c/
@link https://nodemcu.readthedocs.io/en/master/en/modules/bit/

@param ADDR, I2C STLM75 Address
@param SDA, i2c data signal
@param SCL, i2c sync signal
@param hw_min_mv, lower threshold limit
@param hw_max_mv, higher threshold limit
@param hw_hyst_mv, threshold hysteresis
@param readout_freq, readout timer timeout in ms

As global vars:
@return g_res_pnts, Current measured ADC points value
@return g_res_mv, Current measured mV value
@return g_lowest_res_pnts, Lowest measured ADC points value
@return g_lowest_res_mv, Lowest measured mV value
@return g_highest_res_pnts, Highest measured ADC points value
@return g_highest_res_mv, Highest measured mV value
@return g_alert_status, Alert event tri-state status internal hw reg
@return g_g_errlvl, -100 (device not found) or -101 (sensor data error) or -102 (Wrong func params or use) error level values

Ліцензія

Назва ліцензії: Невиключна Стандартна ліцензія
Copyright 2018 alterstrategy.com

Також може бути корисно переглянути розділ атрибуції.

Електронні компоненти

Для реалізації задачі з вимірювання рівня напруги постійного струму, у даному програмному продукті застосовано наступні електронні компоненти:

TI ADC101C021 10-bit 1 Channel Single-Ended Analog to Digital Converter

Important: HW Alert output pin is not used due to malfunction of this ADC component. Only SW alert status internal register works well and used.

Важливо: Апаратний пін виходу не застосовується з причини його нестабільної роботи. Тому використано тільки регістр прапорця стану, що працює добре і правильно

Інтерфейс: I2C Bus
Тип інтерфейсу: цифровий
Група апаратних елементів: Зовнішні апаратні
Призначення: вимірювання рівня напруги на вході
Електронний компонент: Аналогово-цифровий перетворювач
Тип компоненту: для встановлення на плату
Бітність: 10-bit корисна
Межі вимірювання: від 0 mV до 3300 mV
Напруга живлення: 3.3В
Сторінка компоненту: https://alterstrategy.com/2020/04/26/atsp-ti-adc101c021/

Додаткова інформація

Інтерфейсна шина

Debug-консоль, I2C, уніполярний вх АЦП

Рівень складності

Складний

Передача даних назовні

Немає

Тип виконання

Як функція на таймер

Локальний Web-сервер

Немає

Журналювання

Немає

Енергоспоживання

Звичайне

Композиція скриптів

Один скрипт

Статистична обробка даних

Проста обробка

Перевірена версія прошивки

2.2.1-master_20181207

Отримання точного часу

Немає

Інтерфейс користувача

Вивід на UART консоль

Виробники апаратного забезпечення

Espressif Systems, TI

Необхідні модулі прошивки

bit модуль, i2c модуль

Мінімальна сумісна версія прошивки

1.5.4.1-master_20161201