Тензодатчики и весы на HX711: мост, подключение, калибровка
Под нагрузкой тензодатчик выдаёт единицы милливольт, и весы получаются точными, только если правильно возбудить мост, оцифровать сигнал и откалибровать ноль и наклон. Разбираем по документам TI, Microchip и Avia: что значит 2 мВ/В, как подключить датчик к HX711, сколько граммов на самом деле различают 24 бита и что мешает больше шума АЦП.
Обновлено Редакция GAW
Тензодатчик веса (load cell) — металлический упругий элемент с наклеенными тензорезисторами, включёнными мостом Уитстона. Под нагрузкой элемент чуть деформируется, сопротивления плеч меняются, и между средними точками моста появляется разность в единицы милливольт, пропорциональная силе. Чтобы получить из неё граммы, нужны три вещи: возбуждение моста, АЦП с большим усилением и калибровка каждого экземпляра.
Коротко
- Чувствительность тензодатчика — в мВ/В: типично 1–3 мВ/В, при 2 мВ/В и возбуждении 5 В полная нагрузка даёт 10 мВ.
- Допуск чувствительности — ±15–20 %, баланс нуля — до ±0,3 мВ/В: без калибровки гирей весы врут на десятки процентов.
- HX711 питает мост от того же AVDD, что и АЦП: измерение логометрическое, и точность опорного напряжения не нужна.
- Шкала канала A HX711 при усилении 128 — ±0,5 · AVDD/128, при 5 В около ±20 мВ; шум — 50 нВ ср. кв. при 10 выборках/с.
- Температурный дрейф датчика (0,036 % шкалы/°C у LCL816G) и ползучесть обычно ограничивают весы сильнее, чем шум АЦП.
- Безопасная перегрузка — 150 % номинала: выше неё возможны повреждения датчика, а 200 % в примере TI — предельная перегрузка.
Мост, мВ/В и что написано в паспорте датчика
В тензодатчике веса обычно стоит полный мост — все четыре плеча активные: два растягиваются, два сжимаются. По TI такой мост вчетверо чувствительнее моста с одним активным элементом и не имеет собственной нелинейности, свойственной четверть-мосту (SBAA532A, разд. 2.1). Выход моста пропорционален напряжению возбуждения, поэтому чувствительность задают в милливольтах на вольт:
где S — номинальный выход (мВ/В), F — нагрузка, Fном — номинальная нагрузка. Параметры двух датчиков из документов производителей микросхем:
| Параметр | Пример TI (датчик на 2 кг) | Omega LCL816G (Microchip AN717) |
|---|---|---|
| Номинальный выход | 2,0 мВ/В ± 15 % | 2 мВ/В ± 20 % |
| Баланс нуля | ±10 % шкалы (±0,2 кг) | ±0,3 мВ/В |
| Сопротивление моста | 1000 Ом | 1200 ± 300 Ом |
| Возбуждение | до 15 В | 5–12 В |
| Безопасная перегрузка | 150 % (3 кг) | 150 % |
| Предельная перегрузка | 200 % (4 кг) | — |
| Невоспроизводимость | ±0,05 % шкалы (±1 г) | — |
| Влияние температуры на выход | ±0,05 % шкалы/°C (±1 г/°C) | 0,036 % шкалы/°C |
| Влияние температуры на ноль | ±2,0 % шкалы/°C (±40 г/°C; так в табл. 4-1) | 0,036 % шкалы/°C |
Что из этого следует для весов:
- Наклон. Допуск ±15 % означает, что «10 мВ» на полной нагрузке у конкретного экземпляра — от 8,5 до 11,5 мВ (SBAA532A, разд. 4.5). Это ошибка усиления, и её убирает калибровка гирей.
- Ноль. ±0,3 мВ/В у LCL816G при 5 В — до ±1,5 мВ без нагрузки, 15 % шкалы; в примере TI — ±10 % шкалы. Это смещение, и его убирает тарирование.
- Дрейф и ползучесть. Изменение нуля и наклона с температурой, нелинейность, гистерезис и ползучесть калибровкой по двум точкам не убираются, а ползучесть по TI не калибруется вообще (разд. 4.6–4.8). Они и определяют реальную точность весов.
- Перегрузка. Выше безопасных 150 % номинала датчик можно повредить; в механике весов ставят упоры, которые принимают нагрузку раньше.
Возбуждение и логометрическое измерение
Мост питают напряжением, и тем же напряжением задают опорный вход АЦП. Тогда код АЦП пропорционален отношению выхода моста к возбуждению, то есть только изменению сопротивлений плеч, а не точному значению питания: логометрическое измерение нечувствительно к дрейфу возбуждения, и коррелированный шум источника сокращается (SBAA532A, разд. 3.1).
Ток моста. У моста 350 Ом при 5 В — 14,3 мА (SBAA532A, разд. 4.2), у моста 1000 Ом — 5 мА, это больше тока самого HX711 (1,4 мА аналоговой части со стабилизатором). Для батарейных весов мост выключают между измерениями: у HX711 высокий уровень на PD_SCK дольше 60 мкс выключает микросхему, а при встроенном стабилизаторе — и питание датчика.
Четыре и шесть проводов
Четырёхпроводный датчик: два провода возбуждения (E+ и E−) и два сигнальных (S+ и S−). По проводам возбуждения течёт весь ток моста, и их сопротивление уменьшает напряжение на самом мосту. В примере TI мост 350 Ом от 5 В и провода по 1 Ом дают ошибку 0,6 % (SBAA532A, ур. 17). Ток через сигнальные провода ничтожен, их сопротивление не важно.
Шестипроводный датчик добавляет две линии SENSE, подключённые к верху и низу моста. По ним опорный вход АЦП видит напряжение прямо на мосту — это кельвиновское подключение, и ошибка от проводов возбуждения исчезает (разд. 3.3). Для датчика на коротком кабеле разница мала: у моста 1000 Ом провода по 0,1 Ом дают около 0,02 % (наш расчёт), что заметно меньше допуска наклона и снимается калибровкой — если сопротивление проводов не меняется с температурой.
Цвета проводов у производителей датчиков разные: назначение каждого провода берут из паспорта своего датчика, а не из таблицы для «типичного» датчика.
Подключение к HX711
HX711 — 24-битный сигма-дельта АЦП Avia с усилителем на входе, рассчитанный именно на мост: вход канала A подключают к средним точкам моста напрямую, а встроенный стабилизатор питает и АЦП, и датчик.
| Вывод HX711 | Куда |
|---|---|
| AVDD (3) | E+ датчика и аналоговая часть АЦП |
| AGND (5) | E− датчика, общий провод |
| INA+ (8), INA− (7) | S+ и S− датчика |
| DVDD (16) | питание микроконтроллера: по Avia DVDD берут от того же источника |
| VSUP (1), BASE (2), VFB (4) | встроенный стабилизатор с внешним транзистором, или VSUP — к AVDD либо DVDD (к большему), VFB — на общий провод |
| PD_SCK (11), DOUT (12) | два вывода микроконтроллера |
Напряжение AVDD. Со встроенным стабилизатором UAVDD = 1,25 В · (R1 + R2)/R2, и оно должно быть хотя бы на 100 мВ ниже VSUP. Шкала канала A при усилении 128 — ±0,5 · AVDD/128, при 5 В это ±19,5 мВ (в даташите округлено до ±20 мВ); канал B с усилением 32 — ±80 мВ.
Синфазное напряжение. Входы должны лежать в пределах от AGND + 1,2 В до AVDD − 1,3 В. Средние точки моста — около AVDD/2: при AVDD = 5 В это 2,5 В, внутри диапазона 1,2–3,7 В; граница наступает при AVDD = 2,6 В (наш расчёт: 1,3 В при пределах 1,2–1,3 В).
Чтение. Когда DOUT падает в ноль, данные готовы; 24 импульса PD_SCK выдвигают код старшим битом вперёд в дополнительном коде, а 25-й, 26-й или 27-й импульс выбирает следующее измерение: 25 — канал A ×128, 26 — канал B ×32, 27 — канал A ×64. Высокий уровень PD_SCK — не дольше 50 мкс, иначе при 60 мкс микросхема уходит в выключение. Подробности протокола и тайминги — в карточке HX711.
Скорость и установление. Вывод RATE выбирает 10 или 80 выборок/с. После включения, смены канала или усиления первый достоверный результат появляется через 400 мс при 10 выборках/с и через 50 мс при 80. При 10 выборках/с HX711 одновременно подавляет помехи 50 и 60 Гц и шумит меньше: 50 нВ против 90 нВ ср. кв.
Сколько граммов различают 24 бита
Пример: датчик на 5 кг, 2 мВ/В, AVDD = 5 В, канал A ×128.
- Сигнал. Полная нагрузка — 2 мВ/В · 5 В = 10 мВ, то есть 2 мкВ на грамм.
- Код. Шаг АЦП — 19,53 мВ / 2²³ ≈ 2,33 нВ, на грамм приходится около 860 кодов, а на полную нагрузку — около 4,3 миллиона. Цифр много, но младшие из них — шум.
- Шум. 50 нВ ср. кв. при 10 выборках/с — это 1/200 000 от 10 мВ, около 0,025 г. Но стабильную последнюю цифру определяет размах шума, а не среднеквадратичное значение (SBAA532A, разд. 5.2), и он в несколько раз больше. Avia размах не приводит; у TI ADS1232 при тех же условиях — 17 нВ ср. кв. и 110 нВ размаха, то есть около 91 000 отсчётов, свободных от шума, на 10 мВ, или 0,055 г на 5 кг.
- Дрейф. Датчик с дрейфом выхода 0,036 % шкалы/°C, как LCL816G, на 5 кг уходит на 1,8 г при изменении температуры на градус — в 30–70 раз больше шума АЦП (наш расчёт).
Вывод: разрешение АЦП с запасом, весы ограничивает датчик — температура, ползучесть, механика. Число делений шкалы задают по дрейфу и повторяемости датчика, а не по разрядности HX711. Усреднение нескольких отсчётов уменьшает шум, но не дрейф.
| АЦП для моста | HX711 | ADS1232 (TI) |
|---|---|---|
| Усиление и шкала при 5 В | ×128 ±20 мВ, ×64 ±40 мВ, канал B ×32 ±80 мВ | ×1 ±2,5 В, ×2 ±1,25 В, ×64 ±39 мВ, ×128 ±19,5 мВ |
| Скорость | 10 или 80 выборок/с | 10 или 80 выборок/с |
| Шум при ×128, 10 выборок/с | 50 нВ ср. кв. | 17 нВ ср. кв., 110 нВ размаха |
| Каналы | 2 дифференциальных | 2 (ADS1234 — 4) |
| Питание, температура | 2,6–5,5 В, −40…+85 °C | 2,7–5,3 В, −40…+105 °C |
| Особенности | встроенный стабилизатор для моста | датчик температуры, калибровка смещения по команде |
У обеих микросхем нет регистров: канал, усиление и скорость задают выводы и число тактов. Для бюджета погрешности всего тракта пригодится калькулятор погрешности АЦП, а для моста на внешнем измерительном усилителе — калькулятор усилителя.
Тарирование и калибровка гирей
TI предлагает три уровня калибровки: по одной точке (только смещение), по двум точкам (смещение и наклон) и кусочно-линейную по таблице — для нелинейных систем и калибровки по температуре (SBAA532A, разд. 5.5). Для весов обычно хватает двух точек, прямой y = Mx + B:
- Прогреть весы под питанием, дать устояться механике.
- Без груза усреднить несколько десятков отсчётов — это код тары C0.
- Положить гирю известной массы mэт, лучше не меньше трети шкалы, и усреднить код C1.
- Коэффициент k = mэт/(C1 − C0), масса m = k (C − C0); C0 и k сохранить в EEPROM.
Пример с числами из предыдущего раздела: тара C0 = 120 000, гиря 1000 г даёт C1 = 980 000. Тогда k = 1000 г / 860 000 ≈ 1,163 мг на код, а код 550 000 соответствует 1,163 · 430 000 ≈ 500 г.
// Two-point calibration of a load cell read through HX711 (24-bit two's complement)
typedef struct { int32_t zero; float grams_per_count; } scale_cal_t;
static int32_t hx711_sign_extend(uint32_t raw) {
// HX711 outputs 24 bits MSB first; extend bit 23 to a 32-bit signed value
return (raw & 0x800000u) ? (int32_t)(raw | 0xFF000000u) : (int32_t)raw;
}
void scale_calibrate(scale_cal_t *c, int32_t code_empty, int32_t code_ref, float ref_grams) {
c->zero = code_empty;
c->grams_per_count = ref_grams / (float)(code_ref - code_empty);
}
float scale_grams(const scale_cal_t *c, uint32_t raw) {
return c->grams_per_count * (float)(hx711_sign_extend(raw) - c->zero);
}
Тару пересчитывают и в работе: кнопка «ноль» снова запоминает C0, а медленный уход нуля при пустой платформе программа может отслеживать сама. Если датчик стоит в помещении с меняющейся температурой, калибровку повторяют при разных температурах или ставят датчик с меньшим дрейфом.
Типичные ошибки
- Перепутаны S+ и S−. Код уменьшается под нагрузкой — меняют провода местами или знак коэффициента.
- Синфазное напряжение вне диапазона. Мост питается от отдельного источника, не от AVDD, и средние точки выходят за пределы AGND + 1,2 В … AVDD − 1,3 В — код искажается. Для HX711 мост питают от AVDD.
- Длинный высокий уровень PD_SCK. Прерывание посреди чтения растягивает импульс дольше 60 мкс, и HX711 выключается. Чтение делают с запретом прерываний или аппаратно.
- Паразитные термопары. Спай разных металлов на входе — клемма, разъём — даёт термо-ЭДС, меняющуюся с температурой: TI называет её одним из источников смещения (разд. 4.4). Входные цепи делают симметричными и держат при одной температуре.
- Калибровка маленькой гирей. Ошибка массы гири и шум делятся на малую разность C1 − C0; берут гирю на треть шкалы и больше.
- Ожидание граммовой точности от разрядности. 24 бита — это не 16 миллионов делений: шум, дрейф и ползучесть оставляют от них в лучшем случае десятки тысяч.
Несколько датчиков
Платформенные весы часто собирают из нескольких мостов. TI разбирает параллельное соединение нескольких четырёхпроводных мостов на одном канале АЦП с логометрической опорой (SBAA532A, разд. 6.7): АЦП меряет общий сигнал, ток возбуждения растёт пропорционально числу мостов. Если датчики нужны раздельно, берут второй канал АЦП или ADS1234 с четырьмя входами; канал B HX711 с усилением 32 Avia предлагает для второго сигнала, например контроля батареи.
Другие датчики — в разделе «Датчики», термины — в статьях «Тензодатчик» и «Мост Уитстона».
Частые вопросы
Что значит 2 мВ/В у тензодатчика?
При номинальной нагрузке выход моста — 2 мВ на каждый вольт возбуждения: при 5 В это 10 мВ на всю шкалу датчика. Значение задано с допуском — ±15 % в примере TI и ±20 % у Omega LCL816G, — поэтому реальный выход может быть от 8,5 до 11,5 мВ при ±15 % и от 8 до 12 мВ при ±20 %, и каждые весы калибруют гирей.
Как откалибровать весы на HX711?
По двум точкам. Без груза запоминают код C0 — это тара. Затем кладут гирю известной массы m и читают код C1. Коэффициент k = m / (C1 − C0), а масса любого груза — k · (C − C0). Калибруют после прогрева, гирей не меньше трети шкалы и при той же температуре, при которой будут взвешивать: ноль и наклон датчика дрейфуют с температурой.
Сколько граммов различают весы на HX711 с датчиком на 5 кг?
По шуму HX711 — доли грамма: при 2 мВ/В и AVDD = 5 В полная нагрузка даёт 10 мВ, а шум HX711 при 10 выборках в секунду — 50 нВ ср. кв., то есть 1/200 000 шкалы, около 0,025 г. Но показание, которое не дрожит, определяется размахом шума, а он в несколько раз больше, и ещё сильнее мешает температурный дрейф датчика: у LCL816G 0,036 % шкалы на градус — около 1,8 г/°C для 5 кг.
Чем шестипроводный тензодатчик лучше четырёхпроводного?
Двумя линиями SENSE, которые измеряют напряжение прямо на мосту. По проводам возбуждения течёт ток моста — 14,3 мА у моста 350 Ом при 5 В, — и сопротивление проводов уменьшает напряжение на мосту: по 1 Ом в каждом проводе дают ошибку 0,6 %. Шестипроводная схема подаёт напряжение с моста на опорный вход АЦП, и эта ошибка исчезает. Для датчика на коротком кабеле достаточно четырёх проводов.
Почему показания весов медленно ползут под постоянным грузом?
Это ползучесть датчика: выход под нагрузкой меняется со временем, даже когда температура и всё остальное постоянны, а после снятия груза он так же медленно возвращается. TI отмечает, что ползучесть калибровкой не убирается — её закладывают в бюджет погрешности. Помогают датчик с меньшей ползучестью и работа в пределах номинальной нагрузки.
Источники
- Texas Instruments. Lizon B., Wu J. A Basic Guide to Bridge Measurements (SBAA532A, February 2022, revised March 2024) — разд. 2.1 — четверть-, полу- и полный мост, полный мост без собственной нелинейности; разд. 3.1 — логометрическое измерение не зависит от точного VREF и возбуждения, шум возбуждения сокращается; разд. 3.2 — четырёхпроводное подключение, ур. 17: при 350 Ом и 5 В ток 14,3 мА, провода по 1 Ом дают ошибку 0,6 %; разд. 3.3 — шестипроводное: линии SENSE как кельвиновское подключение; табл. 4-1 — пример датчика на 2 кг: 2,0 мВ/В ± 15 %, безопасная перегрузка 150 %, предельная 200 %, невоспроизводимость ±0,05 % шкалы (±1 г), влияние температуры на выход ±0,05 % шкалы/°C и на ноль ±2,0 % шкалы/°C (±40 г/°C), баланс нуля ±10 % шкалы (±0,2 кг), сопротивление моста 1000 Ом; разд. 4.1 — типично 1–3 мВ/В, 2 мВ/В при 5 В — 10 мВ; разд. 4.2 — 120, 350 и 1000 Ом; разд. 4.4 — смещение от разброса плеч, паразитных термопар и входных токов АЦП; разд. 4.5 — ±15 % — от 8,5 до 11,5 мВ, калибруется; разд. 4.6–4.8 — нелинейность и гистерезис калибруются плохо, ползучесть не калибруется; разд. 5.2 — эффективное и свободное от шума разрешение, NFC, пример ADS1235: 0,16 мкВ размаха на 10 мВ — 62 500 отсчётов; разд. 5.5 — калибровка по одной и двум точкам, y = Mx + B; разд. 6.7 — несколько мостов параллельно на одном канале
- Microchip. Baker B. C. AN717: Building a 10-bit Bridge Sensing Circuit using the PIC16C6XX and MCP601 Operational Amplifier (DS00717A, 1999) — табл. 1 — тензодатчик Omega LCL816G: 896 г, возбуждение 5–12 В, номинальный выход 2 мВ/В ± 20 %, баланс нуля ±0,3 мВ/В, температурный дрейф нуля и выхода 0,036 % шкалы/°C, компенсированный диапазон −5…+50 °C, сопротивление 1200 ± 300 Ом, безопасная перегрузка 150 %
- Avia Semiconductor. HX711 24-Bit Analog-to-Digital Converter (ADC) for Weigh Scales, V2.0; архивная копия официального файла с aviaic.com в Wayback Machine, снимок 19 августа 2019 года — с. 1 — канал A ×128 и ×64 (±20 и ±40 мВ при AVDD 5 В), канал B ×32, встроенный стабилизатор питает АЦП и датчик, 10 и 80 выборок/с, подавление 50 и 60 Гц, ток меньше 1,5 мА и меньше 1 мкА в выключении, 2,6–5,5 В, рис. 1; с. 2 — табл. 1, выводы SOP-16; с. 3 — табл. 2: полная шкала ±0,5 · AVDD/GAIN, синфазный вход AGND + 1,2 В … AVDD − 1,3 В, установление 400 и 50 мс, шум 50 и 90 нВ ср. кв. при ×128, дрейф смещения ±6 нВ/°C, усиления ±5 ppm/°C, ток аналоговой части 1400 мкА, цифровой 100 мкА; с. 4 — VAVDD = VBG · (R1 + R2)/R2 не меньше чем на 100 мВ ниже VSUP, канал B ±80 мВ; дополнительный код, насыщение на 800000h и 7FFFFFh; DOUT в нуле — данные готовы, 25–27 импульсов PD_SCK, табл. 3; с. 5 — PD_SCK в единице дольше 60 мкс — выключение вместе с датчиком при встроенном стабилизаторе
- Texas Instruments. ADS123x 2- and 4-Channel, 24-Bit, Delta-Sigma ADCs for Bridge Sensors (SBAS350H, June 2005, revised June 2025) — разд. 1 и 3 — усиление 1, 2, 64, 128 и полная шкала ±2,5 В, ±1,25 В, ±39 мВ, ±19,5 мВ, 10 выборок/с с подавлением 50 и 60 Гц и 80 выборок/с, 2,7–5,3 В, −40…+105 °C, датчик температуры, калибровка смещения по команде, управление выводами без регистров; табл. 6-1 и 6-2 — при AVDD = VREF = 5 В и ×128: 17 нВ ср. кв. и 110 нВ размаха при 10 выборках/с, 44 и 247 нВ при 80
Нашли ошибку?
Смотрите также
- ДатчикиТок, температура, газы, вес, движение, ИК и звук: подключение к МК, расчёт и калибровка
- HX711АЦП для тензодатчиков: выводы, каналы и усиление, протокол, шум, питание
- Тензодатчик (load cell)Датчик силы на тензорезисторах, включённых мостом
- Мост УитстонаДва делителя и разность между ними: схема резистивных датчиков
- ТензорезисторРезистивный датчик деформации и схемы его включения в мост
- Логометрическое измерениеДатчик и опорное АЦП от одного питания: колебания питания сокращаются
- Инструментальный усилительRG, синфазный диапазон (diamond plot), REF, погрешность
- Бюджет ошибок АЦППолная погрешность измерения АЦП: сумма и RSS в LSB, мВ и битах
- Почему весы на HX711 показывают скачущий вес?Шум HX711 — сотые доли грамма; скачки дают 80 выборок/с, питание, провода и механика
- Почему HX711 показывает отрицательный вес?Провода INA+ и INA− наоборот, нет тары или потерян знак 24-битного кода