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.
Выводы
| Вывод | Обозначение | Назначение |
|---|---|---|
| 1 | VSUP | питание стабилизатора 2,7–5,5 В |
| 2 | BASE | выход управления внешним транзистором стабилизатора; свободен, если стабилизатор не нужен |
| 3 | AVDD | аналоговое питание 2,6–5,5 В — выход стабилизатора, он же питает мост |
| 4 | VFB | обратная связь стабилизатора (делитель R1, R2); на землю, если стабилизатор не используется |
| 5 | AGND | аналоговая земля |
| 6 | VBG | опорное 1,25 В, конденсатор 0,1 мкФ |
| 7, 8 | INA−, INA+ | вход канала A |
| 9, 10 | INB−, INB+ | вход канала B |
| 11 | PD_SCK | тактовый вход чтения и выключение (высокий уровень дольше 60 мкс) |
| 12 | DOUT | выход данных: низкий уровень — код готов |
| 13, 14 | XO, XI | кварц или внешний такт; XI на землю — внутренний генератор |
| 15 | RATE | скорость: 0 — 10 выборок/с, 1 — 80 выборок/с |
| 16 | DVDD | цифровое питание 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 важна меньше, чем отсутствие шума на нём.
Протокол чтения
- Пока преобразование не готово, DOUT в единице, PD_SCK держат в нуле.
- DOUT падает в ноль — код готов. Не раньше чем через 0,1 мкс подают первый импульс PD_SCK.
- Каждый импульс PD_SCK выдвигает один бит, старшим вперёд; бит готов не позже 0,1 мкс после фронта. Высокий и низкий уровень PD_SCK — от 0,2 мкс, высокий — не дольше 50 мкс.
- После 24 бит дают 1–3 дополнительных импульса — они выбирают канал и усиление следующего измерения и возвращают DOUT в единицу.
| Импульсов PD_SCK | Канал | Усиление |
|---|---|---|
| 25 | A | 128 |
| 26 | B | 32 |
| 27 | A | 64 |
Меньше 25 или больше 27 импульсов за одно преобразование давать нельзя — это нарушает обмен. Код — 24 бита в дополнительном коде: от 800000h до 7FFFFFh; при выходе сигнала за диапазон код «прилипает» к одной из этих границ. После включения, сброса, смены канала или усиления первые верные данные появляются через 400 мс при 10 выборках/с и через 50 мс при 80. Выключение: PD_SCK в единице дольше 60 мкс; при возврате в ноль микросхема продолжает с последними настройками канала и усиления.
Точность и шум
| Параметр (Avia, табл. 2, типовые значения) | Значение |
|---|---|
| Полная шкала | ±0,5 · AVDD / усиление |
| Синфазный вход | от AGND + 1,2 В до AVDD − 1,3 В |
| Шум, усиление 128 | 50 нВ ср. кв. (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, и его средняя точка оказывается около половины питания.
Источники
- 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 — история редакций
- Avia Semiconductor. HX711 brief (англ.) — архивная копия официального файла (Wayback, ноябрь 2013); краткое описание ранней редакции: те же каналы, усиления и диапазоны ±20/±40 мВ при 5 В — для сверки
Нашли ошибку?
Смотрите также
- Микросхемы АЦПВнешние АЦП: разрядность, скорость, опорное, интерфейс, карточки
- Мост УитстонаДва делителя и разность между ними: схема резистивных датчиков
- Программируемый усилительУсилитель с переключаемым усилением перед АЦП: диапазон, шаг, входное сопротивление
- Логометрическое измерениеДатчик и опорное АЦП от одного питания: колебания питания сокращаются
- Дополнительный кодTwo's complement: запись отрицательных целых
- ADS1115 и MCP300816 бит I²C с усилителем против 10 бит SPI на 8 каналов: выводы, диапазоны, точность
- Инструментальный усилительДифференциальный усилитель с усилением от одного резистора
- ENOB — эффективное число разрядовСколько разрядов АЦП работают с учётом шума
- Тензодатчик (load cell)Датчик силы на тензорезисторах, включённых мостом
- Сигма-дельта АЦПАЦП с передискретизирующим модулятором и цифровым фильтром
- Время преобразованияВремя от запуска измерения до готового результата; зависит от разрядности и скорости