Перейти к содержанию

HX711 — 24-битный АЦП Avia Semiconductor для весов и тензодатчиков

HX711 — самый распространённый АЦП для самодельных весов: тензодатчик подключается к нему напрямую, без отдельного усилителя, а микроконтроллер читает 24-битный код по двум проводам. Регистров у микросхемы нет — канал и усиление выбирают числом тактовых импульсов. Разбираем по даташиту Avia Semiconductor выводы, протокол, диапазоны, шум и частые ошибки при чтении.

Обновлено Редакция GAW

HX711 (Avia Semiconductor) — 24-битный АЦП для мостовых датчиков: тензодатчиков весов, датчиков давления и силы. Перед АЦП стоят мультиплексор двух дифференциальных каналов и малошумящий усилитель с программируемым коэффициентом, рядом — стабилизатор, который питает и аналоговую часть, и сам мост, генератор и сброс при включении. Микроконтроллер подключается двумя линиями: DOUT сообщает о готовности и выдаёт код, PD_SCK тактирует чтение и выключает микросхему.

Коротко

  • Каналы — A с усилением 128 или 64 (±20 или ±40 мВ при AVDD 5 В), B с усилением 32 (±80 мВ).
  • Скорость — 10 или 80 выборок/с от внутреннего генератора (вывод RATE), точнее — с кварцем 11,0592 МГц.
  • Шум — 50 нВ ср. кв. при усилении 128 и 10 выборках/с, 90 нВ при 80.
  • Питание — 2,6–5,5 В; ток 1,4 мА аналоговой части со стабилизатором и 0,1 мА цифровой, в выключении меньше 1 мкА.
  • Корпус — SOP-16, рабочая температура −40…+85 °C.

Выводы

HX711, вид сверху: 1 VSUP, 2 BASE, 3 AVDD, 4 VFB, 5 AGND, 6 VBG, 7 INA-, 8 INA+, 9 INB-, 10 INB+, 11 PD_SCK, 12 DOUT, 13 XO, 14 XI, 15 RATE, 16 DVDDHX7111VSUP2BASE3AVDD4VFB5AGND6VBG7INA-8INA+9INB-10INB+11PD_SCK12DOUT13XO14XI15RATE16DVDDвид сверху
HX711 в корпусе SOP-16, вид сверху
ВыводОбозначениеНазначение
1VSUPпитание стабилизатора 2,7–5,5 В
2BASEвыход управления внешним транзистором стабилизатора; свободен, если стабилизатор не нужен
3AVDDаналоговое питание 2,6–5,5 В — выход стабилизатора, он же питает мост
4VFBобратная связь стабилизатора (делитель R1, R2); на землю, если стабилизатор не используется
5AGNDаналоговая земля
6VBGопорное 1,25 В, конденсатор 0,1 мкФ
7, 8INA−, INA+вход канала A
9, 10INB−, INB+вход канала B
11PD_SCKтактовый вход чтения и выключение (высокий уровень дольше 60 мкс)
12DOUTвыход данных: низкий уровень — код готов
13, 14XO, XIкварц или внешний такт; XI на землю — внутренний генератор
15RATEскорость: 0 — 10 выборок/с, 1 — 80 выборок/с
16DVDDцифровое питание 2,6–5,5 В — от того же источника, что микроконтроллер

Корпус SOP-16 по чертежу из даташита — ширина 3,9 мм, шаг 1,27 мм, как у SOIC-16.

Питание и стабилизатор

Стабилизатор HX711 — это управляющая часть: силовой транзистор (на опорной схеме — PNP S8550) ставят снаружи, вывод BASE управляет его базой, делитель R1, R2 на VFB задаёт напряжение AVDD = VBG · (R1 + R2) / R2 = 1,25 В · (R1 + R2) / R2. Avia требует, чтобы AVDD было хотя бы на 100 мВ ниже VSUP. От AVDD питается и аналоговая часть HX711, и мост тензодатчика: при выключении микросхемы гаснет и мост, ток всей схемы падает до долей микроампера. Если стабилизатор не нужен, VSUP соединяют с бо́льшим из AVDD и DVDD, VFB — с землёй, BASE оставляют свободным, конденсатор на VBG не нужен.

Наш вывод: раз мост и опорное АЦП питаются от одного AVDD, измерение ратиометрическое — колебания AVDD меняют и сигнал моста, и шкалу АЦП в одинаковой пропорции, поэтому стабильность самого AVDD важна меньше, чем отсутствие шума на нём.

Протокол чтения

  1. Пока преобразование не готово, DOUT в единице, PD_SCK держат в нуле.
  2. DOUT падает в ноль — код готов. Не раньше чем через 0,1 мкс подают первый импульс PD_SCK.
  3. Каждый импульс PD_SCK выдвигает один бит, старшим вперёд; бит готов не позже 0,1 мкс после фронта. Высокий и низкий уровень PD_SCK — от 0,2 мкс, высокий — не дольше 50 мкс.
  4. После 24 бит дают 1–3 дополнительных импульса — они выбирают канал и усиление следующего измерения и возвращают DOUT в единицу.
Импульсов PD_SCKКаналУсиление
25A128
26B32
27A64

Меньше 25 или больше 27 импульсов за одно преобразование давать нельзя — это нарушает обмен. Код — 24 бита в дополнительном коде: от 800000h до 7FFFFFh; при выходе сигнала за диапазон код «прилипает» к одной из этих границ. После включения, сброса, смены канала или усиления первые верные данные появляются через 400 мс при 10 выборках/с и через 50 мс при 80. Выключение: PD_SCK в единице дольше 60 мкс; при возврате в ноль микросхема продолжает с последними настройками канала и усиления.

Точность и шум

Параметр (Avia, табл. 2, типовые значения)Значение
Полная шкала±0,5 · AVDD / усиление
Синфазный входот AGND + 1,2 В до AVDD − 1,3 В
Шум, усиление 12850 нВ ср. кв. (10 выборок/с), 90 нВ (80 выборок/с)
Дрейф смещения6 нВ/°C (усиление 128)
Дрейф усиления5 ppm/°C (усиление 128)
Input offset drift (так в таблице Avia, единица — мВ)0,2 мВ (усиление 128), 0,4 мВ (усиление 64)
Подавление синфазной помехи и пульсаций питания100 дБ
Частота кварца1–20 МГц, 11,0592 МГц — ровно 10 и 80 выборок/с

В табл. 2 есть столбцы MIN, TYP и MAX, но для шума, дрейфа, подавления помех и токов даны только типовые значения — гарантированных пределов Avia не приводит. Строку «Input offset drift» производитель указывает в милливольтах, без «на °C» и без условий; наше прочтение — это смещение нуля на входе, а не его температурный дрейф (дрейф дан отдельной строкой в нВ/°C). Наш расчёт для оценки: при шкале ±20 мВ размах входа — 40 мВ, и отношение его к шуму 50 нВ — около 800 000, то есть примерно 19,6 бита эффективной разрядности; из 24 бит младшие четыре-пять — шум. Если это действительно смещение нуля, 0,2 мВ много больше шума, поэтому ноль весов всегда снимают программно (тарировка), а масштаб калибруют грузом известной массы.

Подключение тензодатчика

Тензодатчик с полным мостом подключают четырьмя проводами, как на рис. 1 даташита: питание моста — к AVDD и AGND, сигнальные выходы — к INA+ и INA−. Какой провод датчика за что отвечает, берут из его паспорта. Если вес растёт, а код уменьшается, достаточно поменять местами сигнальные провода или знак в программе. Канал B Avia предлагает использовать для контроля напряжения батареи.

Аналоги

Для мостовых датчиков подходят и универсальные АЦП с усилителем — например, 16-битный ADS1115 с I²C: разрядов у него меньше, зато есть регистры настройки и дифференциальные входы. Классический вариант с отдельными узлами — инструментальный усилитель и обычный АЦП.

Частые вопросы

Как выбрать канал и усиление у HX711?

Числом импульсов PD_SCK при чтении. После 24 импульсов, которые выдвигают код, нужно дать ещё один, два или три: всего 25 импульсов — следующее измерение по каналу A с усилением 128, 26 — канал B с усилением 32, 27 — канал A с усилением 64. Настройка относится к следующему преобразованию, поэтому после смены канала первый прочитанный код ещё от старого.

Почему HX711 выдаёт мусор или зависает при чтении?

Частая причина — слишком длинный высокий уровень PD_SCK. По таблице таймингов он не должен быть длиннее 50 мкс, а если PD_SCK держится в единице дольше 60 мкс, микросхема уходит в режим выключения. Наш вывод: прерывание, которое пришлось на середину импульса, может сорвать чтение, поэтому выдвигают биты с запрещёнными прерываниями или аппаратным SPI с подходящей частотой.

Как переключить HX711 на 80 выборок в секунду?

Подать высокий уровень на вывод RATE (15): при внутреннем генераторе низкий уровень даёт 10 выборок/с, высокий — 80. Шум при этом растёт с 50 до 90 нВ (типовые значения, усиление 128; других Avia не даёт), а время установления после смены канала или усиления сокращается с 400 до 50 мс. На готовом модуле сначала проверьте по его схеме, куда подключён вывод RATE.

Какой диапазон напряжения у входа HX711?

Полная шкала — ±0,5 · AVDD / усиление. При AVDD = 5 В это ±20 мВ на канале A с усилением 128, ±40 мВ с усилением 64 и ±80 мВ на канале B с усилением 32. Синфазное напряжение входов должно лежать от AGND + 1,2 В до AVDD − 1,3 В, поэтому мост тензодатчика питают от того же AVDD, и его средняя точка оказывается около половины питания.

Источники

  1. Avia Semiconductor. HX711 24-Bit Analog-to-Digital Converter (ADC) for Weigh Scales, V2.0 — архивная копия официального файла (Wayback, август 2019); с. 1 — описание, каналы и усиление, ±20 и ±40 мВ при 5 В, токи, питание 2,6–5,5 В, рис. 1; с. 2 — выводы SOP-16, табл. 1; с. 3 — табл. 2: диапазон ±0,5·AVDD/GAIN, синфазный диапазон, 10 и 80 Гц, fclk/1 105 920 и /138 240, время установления 400 и 50 мс, шум 50 и 90 нВ, дрейф, подавление 100 дБ, VBG 1,25 В, кварц 1–20 МГц, токи; с. 4 — канал B ±80 мВ, стабилизатор VAVDD = VBG·(R1 + R2)/R2, тактирование, формат и насыщение, последовательный интерфейс, табл. 3; с. 5 — тайминги T1–T4, выключение после 60 мкс; с. 6–8 — опорная плата и пример драйвера; с. 9 — история редакций
  2. Avia Semiconductor. HX711 brief (англ.) — архивная копия официального файла (Wayback, ноябрь 2013); краткое описание ранней редакции: те же каналы, усиления и диапазоны ±20/±40 мВ при 5 В — для сверки

Нашли ошибку?