АЦП на базе микросхемы hx711: различия между версиями
Материал из MIK32 микроконтроллер
мНет описания правки |
Нет описания правки |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 1: | Строка 1: | ||
[[Файл:HX711.jpg|мини|справа|Внешний вид АЦП HX711]] | [[Файл:HX711.jpg|мини|справа|Внешний вид АЦП HX711]] | ||
Arduino-модуль HX711 на основе АЦП со встроенным усилителем HX711 предназначен для получения данных с тензодатчиков ( датчиков, преобразующих величину деформации в электрический сигнал). Основа модуля – специализированная микросхема HX711. | Arduino-модуль HX711 на основе АЦП со встроенным усилителем HX711 предназначен для получения данных с тензодатчиков (датчиков, преобразующих величину деформации в электрический сигнал). Основа модуля – специализированная микросхема HX711. | ||
Микросхема HX711 позволяет с высокой точностью получать показания веса или давления, оказываемого на тензодатчик (он же - тензорезистор). | Микросхема HX711 позволяет с высокой точностью получать показания веса или давления, оказываемого на тензодатчик (он же - тензорезистор). | ||
Микросхема имеет 2 канала считывания показания счётчика: А и В. Это позволяет подключать к микросхеме HX711 до 2 независимых тензодатчиков. | Микросхема имеет 2 канала считывания показания счётчика: А и В. Это позволяет подключать к микросхеме HX711 до 2 независимых тензодатчиков. | ||
Строка 6: | Строка 6: | ||
==Контакты АЦП== | ==Контакты АЦП== | ||
*'''GND''' - | *'''GND''' - земля; | ||
*'''VCC''' - питание 5В; | *'''VCC''' - питание 5В; | ||
*'''DT''' - линия данных (любой цифровой вход на Arduino); | *'''DT''' - линия данных (любой цифровой вход на Arduino); | ||
Строка 19: | Строка 19: | ||
*Количество каналов подключения тензодатчиков – 2 | *Количество каналов подключения тензодатчиков – 2 | ||
*Коэффициент усиления: | *Коэффициент усиления: | ||
# для канала А: 64, 128 | #для канала А: 64, 128 | ||
# для канала В: 32 | #для канала В: 32 | ||
*Дифференциальный вход с напряжением – ± 40 мВ | *Дифференциальный вход с напряжением – ± 40 мВ | ||
*Разрядность АЦП – 24 бит | *Разрядность АЦП – 24 бит |
Текущая версия от 21:26, 11 мая 2022
Arduino-модуль HX711 на основе АЦП со встроенным усилителем HX711 предназначен для получения данных с тензодатчиков (датчиков, преобразующих величину деформации в электрический сигнал). Основа модуля – специализированная микросхема HX711. Микросхема HX711 позволяет с высокой точностью получать показания веса или давления, оказываемого на тензодатчик (он же - тензорезистор). Микросхема имеет 2 канала считывания показания счётчика: А и В. Это позволяет подключать к микросхеме HX711 до 2 независимых тензодатчиков.
Контакты АЦП
- GND - земля;
- VCC - питание 5В;
- DT - линия данных (любой цифровой вход на Arduino);
- SCK – линия синхронизации (любой цифровой вход на Arduino);
- E– , E+ - питание тензорного моста;
- A– , A+ - подключение канала А;
- В– , В+ - подключение канала В;
Спецификация модуля HX711
- Напряжение питания – 6-5.5 В
- Рабочее напряжение – 5 В
- Количество каналов подключения тензодатчиков – 2
- Коэффициент усиления:
- для канала А: 64, 128
- для канала В: 32
- Дифференциальный вход с напряжением – ± 40 мВ
- Разрядность АЦП – 24 бит
- Частота измерений – 10/80 Гц
- Рабочий ток <10 мА
- Рабочая температура – -40 – 85 °С
- Размеры: 38x21x10 мм
Схема подключения на примере Arduino Uno
Пример кода
#include "HX711.h" // библиотека для работы с АЦП #define DT A0 // Указываем номер вывода данных DT #define SCK A1 // Указываем номер вывода синхронизации SCK HX711 scale; // создаём объект scale float calibration_factor = -14.15; // калибровочный коэффициент (необходимо сначала определить) float units; // переменная для измерений в граммах float ounces; // в унциях void setup() { Serial.begin(9600); // работу порта на 9600 бод scale.begin(DT, SCK); // инициируем работу с датчиком scale.set_scale(); // измерение без калибровочного коэффициента scale.tare(); // сбрасываем значения веса на датчике в 0 scale.set_scale(calibration_factor); // устанавливаем калибровочный коэффициент } void loop() { Serial.print("Reading: "); // текст в монитор порта for (int i = 0; i < 10; i ++) { // считаем значения датчика 10 раз units = + scale.get_units(), 10; // суммируем показания 10 замеров } units = units / 10; // усредняем показания, разделив сумму значений на 10 ounces = units * 0.035274; // переводим вес из унций в граммы Serial.print(ounces); // выводим в монитор порта вес в граммах Serial.println(" grams"); // выводим текст в монитор последовательного порта }