Поширені формати кодування результуючих даних в регістрах сенсорів

Зміст: формати кодування

  • Доповняльний код (англ. two’s complement, «доповнення до 2»)
  • Число з рухомою комою (floating point): мантиса і експонента
  • Прямий двійковий код (straight binary code)
  • Кодування цілої і дробової частини числа фракціями у вигляді ступенів двійки
  • Двійково-десятковий код (Binary Coded Decimal)

Формат: Доповняльний код (англ. two’s complement, «доповнення до 2»)

Опис формату Wikipedia

Доповняльний код

Приклади компонентів де застосовується формат кодування:

Назва компонентуРегістрПосилання
Пульсоксиметр MAX30102Регістр температури: Temperature Data (0x1F–0x21)MAX30102
АЦП ADS1115Регістр результату перетворення: Conversion Register (0x00)
Регістри порогів: Lo_thresh (0x02) & Hi_thresh (0x03)
ADS1115

Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:

Назва продуктуКатегоріяПосилання
Модуль конвертує задане у доповненому до 2ки форматі десяткове число у звичайне десяткове число з урахуванням знаку та десяткової фракції після комиПеретворення та обчислення, Системні компонентиtwosc2dec.lua

Формат: Число з рухомою комою (floating point): мантиса і експонента

Опис формату Wikipedia

Число з рухомою комою

Приклади компонентів де застосовується формат кодування:

Назва компонентуРегістрПосилання
MAX44009 22-bit I2C-bus Low Power Ambient Light Sensor with ADCРезультат вимірювання у люксах: LUX READING (0x03-0x04) 4-bit exponent followed by an 8-bit mantissa
Регістри порогів: THRESHOLD SET (0x05-0x06)
max44009

Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:

Назва продуктуКатегоріяПосилання
Сенсор освітленості MAX44009 – програмний I2C драйвер з обробкою подій без GPIO перериваньВимірювання цифрових величин, Детектування цифрових сенсорів, Обробка подій цифрових сенсорів, Перетворення цифрових даних, Сенсори, Цифрові сенсориmax44009.lua

Формат: Прямий двійковий код (straight binary code)

Опис формату Wikipedia

Прямий код

Приклади компонентів де застосовується формат кодування:

Назва компонентуРегістрПосилання
АЦП TI ADC101C021Регістр результату перетворення: Conversion Result Register (0x00)АЦП TI ADC101C021
NXP PCA9538 I2C-bus GPIO expanderРегістр поточного стану входів-виходів: Input Port register 0x00 & Output Port register 0x01NXP PCA9538

Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:

Назва продуктуКатегоріяПосилання
Вимірювання напруги на АЦП TI ADC101c021, з обробкою подій і мін/макс за HW регістрами, шляхом опитування I2CАналого-цифрові перетворювачі, Обробка подій аналогових сенсорів, Перетворювачі, СенсориTI adc101c021.lua
Восьмиканальний розширювач портів PCA9538 – програмний I2C драйвер з обробкою перериваньДискретні розширювачі вводу-виводу, Сенсориpca9538.lua
I2C драйвер модуля інтерфейсів користувача IoT-Devices I2CUI1 з обробкою подійЗумери, Інтерфейс користувача, Кнопки, Локальна індикація і сигналізація, Локальне керування, Світлодіодиi2cui1.lua

Формат: Кодування цілої і дробової частини числа фракціями у вигляді ступенів двійки

Приклад формату:

Приклади компонентів де застосовується формат кодування:

Назва компонентуРегістрПосилання
CCS811 I2C-bus Ultra-Low Power Digital Gas Sensor for Monitoring Indoor Air Quality – eCO2 & eTVOCРегістри компенсації по вологості і температурі: ENV_DATA (Environment Data) Register (0x05)CCS811

Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:

Назва продуктуКатегоріяПосилання
Цифровий газовий датчик CCS811 для моніторингу якості повітря в приміщенні по CO2 та TVOC – програмний I2C драйвер з обробкою подій без GPIO перериваньВимірювання цифрових величин, Детектування цифрових сенсорів, Обробка подій цифрових сенсорів, Перетворення цифрових даних, Сенсори, Цифрові сенсориccs811.lua

Формат: Двійково-десятковий код (Binary Coded Decimal)

Опис формату Wikipedia

Двійково-десятковий код

Приклад формату:

  1. для десяткового числа 22333, функція dec2bcd(22333) повертає результат перетворення у двійково-десятковому форматі як масив, чи як текст: 
  1. для кодованого у двійково-десятковому форматі двійкового числа 0001001000110100 функція bcd2dec(0001001000110100) повертає результат перетворення у десяткове як число: 

Примітка: назву функцій bcd2dec & dec2bcd наведено лише для наочності прикладу.

Калькулятор онлайн: digital computation: bcd decimal converter

Приклади компонентів де застосовується формат кодування:

Назва компонентуРегістрПосилання
DS3231 Extremely Accurate I2C-Integrated RTC/TCXO/CrystalВміст регістрів часу та календаря (0x00 – 0x06)DS3231

Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:

Наразі комерційного продукту не пропонується.

Але рекомендуємо подивитися приклад реалізації перетворення у вихідному коді офіційного Lua-модуля прошивки NodeMCU за наступним посиланням: nodemcu firmware: lua modules ds3231

Документація на модуль: lua modules: ds3231