Программирование ARM HX711: 24-битный АЦП с дифференциальными входами Sat, May 24 2025  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


HX711: 24-битный АЦП с дифференциальными входами Печать
Добавил(а) microsin   

HX711 это точный 24-разрядный АЦП (ADC), основанный на патентованной технологии Avia Semiconductor. Он разработан для непосредственного считывания напряжения с моста тензодатчиков весов (таких как DYLY-102 компании Daysensor [2]) и других промышленных приложений.

Входной мультиплексор выбирает дифференциальный вход канала A или B для малошумящего усилителя с программируемым коэффициентом усиления (programmable gain amplifier, PGA). Канал A можно запрограммировать на усиление 128 или 64, что соответствует полному диапазону (full-scale) дифференциального входного напряжения ±20mV или ±40mV соответственно, когда питание 5V подключено к выводу аналогового питания AVDD. У канала B фиксированное усиление 32. Встроенный регулятор питания устраняет необходимость во внешнем регуляторе, чтобы запитывать ADC и подключаемый к нему сенсор. Предусмотрено гибкое тактирование. Это может быть либо внешний источник тактового сигнала, либо кварцевый резонатор, либо может использоваться встроенный в чип внутренний RC-генератор, в последнем случае никаких внешних компонентов не требуется. Встроенная система сброса по включению питания (power-on-reset) упрощает инициализацию цифрового интерфейса.

Не требуется программирование никаких внутренних регистров. Все управление HX711 осуществляется через его выводы.

Основные функциональные особенности HX711:

• Два входных дифференциальных канала, которые можно выбирать.
• Встроенный малошумящий PGA, у которого можно выбрать усиление 32, 64 и 128.
• Встроенный регулятор питания для питания датчика и питания аналоговой схемы ADC.
• Встроенный тактовый генератор, для работы которого не требуется никаких внешних компонентов, или может использоваться внешний кварц.
• Встроенная схема сброса по питанию (power-on-reset).
• Простое цифровое управление и последовательный интерфейс: управление осуществляется через выводы, программирование внутреннего состояния HX711 не требуется.
• Выбираемая частота выходных данных 10SPS или 80SPS.
• Одновременное подавление помех 50 и 60 Гц.
• Потребление тока, включающее встроенный аналоговый регулятор питания: нормальное функционирование < 1.5 mA, power down < 1 uA.
• Диапазон напряжений питания: 2.6 ~ 5.5V.
• Диапазон рабочих температур: -40 ~ +85℃.
• Корпус SOP-16, 16 выводов.

HX711 typical weigh scale application block diagram fig01

Рис. 1. Типовая схема подключения к измерительному мосту (тензодатчику) весов.

Цоколевка выводов:

HX711 SOP 16L pinout

Таблица 1. Описание выводов.

 

Имя Функция Описание
1 VSUP Питание Питание регулятора напряжения: 2.7V .. 5.5V.
2 BASE Аналоговый выход Управляющий выход регулятора (NC, когда не используется).
3 AVDD Питание Аналоговое питание: 2.6V .. 5.5V.
4 VFB Аналоговый вход Управляющий вход регулятора (подключите к AGND, если он не используется).
5 AGND Земля, Ground Аналоговая земля, общий провод.
6 VBG Аналоговый выход Выход источника опорного напряжения.
7 INA- Аналоговый вход Дифференциальный канал A, отрицательный вход.
8 INA+ Аналоговый вход Дифференциальный канал A, положительный вход.
9 INB- Аналоговый вход Дифференциальный канал B, отрицательный вход.
10 INB+ Аналоговый вход Дифференциальный канал B, положительный вход.
11 PD_SCK Цифровой вход Управление выключением (активный высокий уровень) и вход тактов последовательного интерфейса.
12 DOUT Цифровой выход Выход данных последовательного интерфейса.
13 XO Цифровой выход Подключение кварцевого резонатора, выход генератора (NC, когда не используется).
14 XI Цифровой вход Подключение кварцевого резонатора, вход генератора. Также может использоваться как вход, на который подается тактовый сигнал внешнего генератора.
15 RATE Цифровой вход Управление частотой выходных данных, 0: 10 Гц, 1: 80 Гц.
16 DVDD Питание Цифровое питание: 2.6V .. 5.5V.

Примечание: NC означает Not Connected, никуда не подключено.

Таблица 2. Основные электрические характеристики.

Параметр Замечания min Typ MAX Ед.
Диапазон дифференциального входного напряжения (full scale) V(inp)-V(inn)(1) ±0.5(AVDD/GAIN) V
Не дифференциальное входное напряжение (common mode input) BASE AGND+1.2   AVDD-1.3 V
Частота появления выходных данных Внутренний генератор, RATE=0 10 Гц
Внутренний генератор, RATE=DVDD 80
Кварц или внешнее тактирование, RATE=0 fclk/1105920
Кварц или внешнее тактирование, RATE=DVDD fclk/138240
Кодирование выходных данных Дополнение до 2 800000   7FFFFF HEX
Время установки выхода(2) RATE=0 400 мс
RATE=DVDD 50
Дрейф входного смещения Усиление 128 0.2 mV
Усиление 64 0.4
Входной шум
Усиление 128, RATE=0 50 nV(rms)(3)
Усиление 128, RATE=VDD 90
Температурный дрейф Входное смещение (усиление 128) ±6 nV/℃
Усиление (при усилении 128) ±5 ppm/℃(4)
Подавление синфазного сигнала Усиление 128,RATE=0 100 dB
Подавление помех по питанию Усиление 128, RATE=0 100 dB
Напряжение опорного источника (VBG)   1.25 V
Частота кварца или внешнего тактирования   1 11.0592 20 МГц
Напряжение питания DVDD 2.6   5.5 V
AVDD, VSUP 2.6   5.5
Ток потребления аналогового питания (включая регулятор) Нормальный рабочий режим   1400   µA
Выключено (power down)   0.3  
Ток потребления цифрового питания Нормальный рабочий режим   100   µA
Выключено (power down)   0.2  

Примечания:

(1) V(inp) напряжение на положительном выводе дифференциального входа, V(inn) на отрицательном выводе дифференциального входа.
(2) Время относительно включения питания (power up), сброса (reset), изменения входного канала и изменения усиления - до момента получения стабильных и достоверных выходных данных.
(3) nV(rms) - rms означает среднее квадратическое значение (Root Mean Square), нановольт.
(4) ppm означает частей на миллион (Parts Per Million).

Аналоговые входы. Канал A имеет дифференциальный вход, который непосредственно подключается к дифференциальному выходу мостового датчика (такого как например тензодатчик DYLY-102 [2]). Усиление канала A может быть выбрано 128 или 64. Большое усиление подойдет к небольшому уровню сигнала от сенсора. Когда на выводе AVDD используется напряжение питания 5V, эти коэффициенты усиления соответствуют полному диапазону входного напряжения ±20 mV или ±40 mV соответственно. У дифференциального входа канала B усиление фиксированное, и равное 32. Когда для AVDD используется питание 5V, это соответствует полному диапазону входного напряжения ±80 mV.

DYLY 102 10kg

Питание. Цифровое питание (DVDD) должно совпадать с напряжением питания управляющего микроконтроллера (MCU).

Когда используется внутренний аналоговый регулятор питания, падение напряжения на регуляторе зависит от внешнего используемого транзистора. Выходное напряжение равно VAVDD = VBG * (R1+R2) / R1 (см. рис. 1). Это напряжение должно быть на 100 mV ниже напряжения VSUP.

Если встроенный регулятор аналогового напряжения не используется, то вывод VSUP должен быть подключен либо к AVDD, либо к DVDD, в зависимости от того, какое напряжение больше. Вывод VFB должен быть подключен к земле (GND), и вывод BASE ставится NC (Not Connected, не подключен). При этом не нужен внешний блокировочный конденсатор на выводе VBG, показанный на рис. 1.

Тактирование. При подключении вывода XI к земле (GND) активируется встроенный генератор. Номинальная скорость вывода данных при использовании внутреннего генератора равно 10SPS (RATE=0) или 80SPS (RATE=1).

Если нужна точная частота выходных данных, то может использоваться кварцевый резонатор или внешний опорный генератор. Кварц может быть непосредственно подключен между выводами XI и XO. Внешний тактовый сигнал может быть подключен к выводу XI через развязывающий конденсатор 20 пФ. Внешний тактовый сигнал необязательно должен быть прямоугольным. Он может поступать непосредственно от выхода кварцевого генератора чипа MCU, с амплитудой до 150 mV.

Когда используется кварц или внешняя тактовая частота, внутренний генератор автоматически выключается.

Скорость и формат выходных данных. Когда используется встроенный генератор, скорость выходных данных обычно 10SPS (RATE=0) или 80SPS (RATE=1).

Когда используется внешний тактовый генератор или кварц, скорость выходных данных прямо пропорциональна частоте тактов. При 11.0592 МГц получается точная скорость выходных данных 10SPS (RATE=0) или 80SPS (RATE=1).

Выходные 24 бита данных имеют формат дополнения до 2. Когда входной дифференциальный сигнал выходит за диапазон 24 бит, происходит насыщение до значение 800000h (MIN) или 7FFFFFh (MAX), пока входной сигнал не вернется во входной диапазон полной шкалы.

Последовательный интерфейс. Выводы PD_SCK и DOUT используются для считывания данных, выбора входа, выбора усиления и управления питанием.

Внутренняя схема HX711 сама запускает преобразование (оцифровку) уровня напряжения входов АЦП с заданной частой, зависящей от уровня на выводе RATE (10 или 80 Гц). Задача внешнего микроконтроллера прочитать данные результата преобразования, когда они будут готовы. Готовность данных можно определить по логическому уровню на выводе DOUT.

Когда выходные данные не готовы для чтения, на цифровом выходе DOUT присутствует лог. 1. На входе тактов PD_SCK должен быть уровень лог. 0. Когда DOUT переходит в лог. 0, это означает готовность данных к чтению. Путем подачи 25 .. 27 положительных импульсов на вывод PD_SCK данные выдвигаются наружу через вывод DOUT. Каждый положительный импульс PD_SCK производит сдвиг на 1 бит, начиная со старшего бита (MSB), пока не будут выдвинуты все 24 бита. 25-й импульс PD_SCK приведет к обратному переводу DOUT в состояние лог. 1 (см. рис. 2).

Выбор входа и усиления управляется количеством входных импульсов PD_SCK (таблица 3). Количество импульсов PD_SCK не должно быть меньше 25 и больше 27 в течение периода преобразования, чтобы не допустить ошибки последовательной коммуникации.

Таблица 3. Входной канал и выбор усиления.

Импульсов PD_SCK Входной канал Усиление
25 A 128
26 B 32
27 A 64

HX711 digital interface timing fig02

Рис. 2. Выход данных, тайминг и управление выбором входа и усиления.

Симв. Замечания min Typ MAX Ед.
T1 DOUT falling edge to PD_SCK rising edge 0.1     мкс
T2 PD_SCK rising edge to DOUT data ready     0.1
T3 Время лог. 1 PD_SCK 0.2 1 50
T4 Время лог. 0 PD_SCK 0.2  

Reset и Power-Down. Когда на чип подается питание, встроенная схема сбрасывает чип в исходное состояние.

Вывод PD_SCK используется для выключения HX711. Когда на входе PD_SCK лог. 0, чип находится в нормальном рабочем режиме.

HX711 power down control fig03

Рис. 3. Управление выключением (Power Down).

Когда вывод PD_SCK меняет уровень с лог. 0 на лог. 1, и остается в таком состоянии на время больше 60 мкс, HX711 входит состояние выключения (power down mode, рис. 3). При использовании внутреннего регулятора для HX711 и внешнего преобразователя питания, выключается как HX711, так и преобразователь. Когда PD_SCK возвращается к низкому уровню, чип сбрасывается и переходит в нормальный режим работы.

После события сброса (reset) или выключения (power-down) по умолчанию выбирается канал A с усилением 128.

[Пример применения]

На рис. 1 показана типовая схема применения HX711 для весов с тензодатчиком. Используется встроенный генератор (XI=0), скорость выходных данных 10 Гц (RATE=0). Единое напряжение питания (2.7V .. 5.5V)приходит непосредственно от шины питания MCU. Канал B может использоваться для определения уровня заряда батареи, на рис. 1 схема для этого не показана.

HX711 reference PCB board schematic fig04

Рис. 4. Образец принципиальной схемы (плата рис. 5).

HX711 reference PCB board layout fig05

Рис. 5. Образец разводки печатной платы.

Пример кода на языке ассемблера:

/*-------------------------------------------------------------------
Вызов из ASM: LCALL ReaAD
Вызов из C: extern unsigned long ReadAD(void);
      .
      .
unsigned long data;
data=ReadAD();
      .
      .
----------------------------------------------------------------------*/
PUBLIC ReadAD
HX711ROM segment code
rseg HX711ROM
sbit ADDO = P1.5;
sbit ADSK = P0.0;
/*-------------------------------------------------- OUT: R4, R5, R6, R7 R7=>LSB ---------------------------------------------------*/
ReadAD: CLR ADSK //AD разрешено(PD_SCK установлен в лог. 0) SETB ADDO //Разрешено I/O 51CPU JB ADDO,$ //AD-преобразование завершено? MOV R4,#24
ShiftOut: SETB ADSK //PD_SCK установлен в лог. 1(начало положительного импульса) NOP CLR ADSK //PD_SCK установлен в лог. 0 (конец положительного импульса) MOV C,ADDO //чтение бита XCH A,R7 //перемещение данных RLC A XCH A,R7 XCH A,R6 RLC A XCH A,R6 XCH A,R5 RLC A XCH A,R5 DJNZ R4,ShiftOut //перемещено 24 бита? SETB ADSK NOP CLR ADSK RET END

Пример кода на языке C:

sbit ADDO = P1^5;
sbit ADSK = P0^0;

unsigned long ReadCount(void) { unsigned long Count; unsigned char i; ADDO=1; ADSK=0; Count=0; while(ADDO); for (i=0;i<24;i++) { ADSK=1; Count=Count<<1; ADSK=0; if(ADDO) Count++; } ADSK=1; Count=Count^0x800000; ADSK=0; return Count; }

HX711 SOP 16L package fig06

Рис. 6. Размеры корпуса SOP-16L, указанные в миллиметрах.

[Ссылки]

1. HX711 24-Bit Analog-to-Digital Converter (ADC) for Weigh Scales site:sparkfun.com.
2. S Type Load Cells DYLY-102 site:7sensor.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page