Тензодатчик Ардуино подключение через hx711 и использование

В этой статье мы рассмотрим устройство для измерения веса на основе платы Arduino, датчика нагрузки/веса (Load Cell) и модуля усиления HX711.

Наверняка вы в различных магазинах видели весы различных конструкций, которые показывают вес вещей, размещенных на их платформе. В этом проекте мы рассмотрим создание аналогичных весов со взвешивающей способностью до 40 кг.

В дальнейшем этот лимит (предел) взвешивания может быть увеличен при помощи использования более мощного датчика нагрузки.

Тензодатчик Ардуино подключение через hx711 и использование

Необходимые компоненты

Датчик веса и модуль усиления HX711

Датчик веса представляет собой полупроводник, который преобразует приложенные силу или давление в электрическое напряжение. Величина этого напряжения прямо пропорциональна приложенной к датчику силе.

Датчик веса имеет измеритель деформации (strain gauge), который деформируется под действием приложенной силы (давления). Измеритель деформации генерирует электрический сигнал когда в результате деформации изменяется его эффективное сопротивление.

Обычно датчик нагрузки состоит из 4-х измерителей деформации, объединенных по принципу моста Уитстона (моста для измерения сопротивления).

Мы в нашем проекте будем использовать датчик нагрузки, способный измерять вес тел до 40 кг, однако производятся датчики нагрузки и с другим диапазоном измеряемых весов – до 5 кг, до 10 кг, до 100 кг и более.

Тензодатчик Ардуино подключение через hx711 и использование

Но электрические сигналы, генерируемые датчиком веса, весьма слабы – всего несколько милливольт. Поэтому перед их обработкой в плате Arduino они нуждаются в усилении – и для этой цели подходит модуль усиления датчика нагрузки HX711, показанный на нижеприведенном рисунке.

Этот модуль содержит чип HX711, представляющий собой высокоточный 24-разрядный аналогово-цифровой преобразователь (АЦП). HX711 имеет два аналоговых входных канала, коэффициент усиления для которых можно программировать.

Таким образом, модуль HX711 усиливает слабые электрические сигналы от датчика нагрузки и затем эти усиленные и оцифрованные сигналы подает на плату Arduino для их дальнейшей обработки (извлечения информации о весе).

Тензодатчик Ардуино подключение через hx711 и использование

• зеленый провод — к A+.

Тензодатчик Ардуино подключение через hx711 и использование

Установка датчика нагрузки на платформу и базу

Этот этап вы можете пропустить и не использовать никакой платформы/основания, но лучше все таки его сделать для более удобной работы с проектируемыми нами весами. Таким образом, нам необходимо сделать каркас или платформу, на которую мы потом будем класть вещи, вес которых мы хотим измерить.

База (основание) также желательна для фиксации на ней датчика нагрузки с помощью болтов. В нашем проекте мы использовали жесткий картон для изготовления каркаса и деревянную доску в качестве базы/основания. Теперь нам осталось сделать всего лишь несколько соединений и наше устройство будет готово.

Тензодатчик Ардуино подключение через hx711 и использование
Тензодатчик Ардуино подключение через hx711 и использование
Тензодатчик Ардуино подключение через hx711 и использование

Работа схемы

Схема устройства представлена на следующем рисунке.

Тензодатчик Ардуино подключение через hx711 и использование

Для подключения ЖК дисплея его контакты RS, EN, d4, d5, d6, и d7 соединяются с контактами 8, 9, 10, 11, 12 и 13 платы Arduino соответственно. Контакты DT и SCK модуля HX711 непосредственно подключаются к контактам A0 и A1 платы Arduino. Соединение датчика нагрузки с модулем усиления HX711 было описано в предыдущем разделе статьи.

Перед началом работы устройства его необходимо откалибровать. Сразу после включения питания система автоматически начинает процесс собственной калибровки. Но если вы хотите откалибровать его вручную, то для этого необходимо будет нажать соответствующую кнопку. При нажатии этой кнопки будет запускаться функция void calibrate(), описанная в следующем разделе статьи.

Для начала процесса калибровки подождите пока на экране ЖК дисплея загорится надпись “put 100g” (положите 100 грамм), после этого положите 100 грамм на датчик нагрузки и подождите. Спустя несколько секунд процесс калибровки будет закончен. После этого вы можете класть на наши самодельные весы любую вещь массой до 40 кг и на экране ЖК дисплея высветится ее вес в граммах.

Тензодатчик Ардуино подключение через hx711 и использование

В этом проекте плата Arduino управляет всем процессом. Датчик нагрузки измеряет вес и передает электрический аналоговый сигнал на модуль усиления HX711, который усиливает и превращает в цифровую форму сигнал с выхода датчика нагрузки.

Затем это усиленное значение сигнала подается на вход платы Arduino, которая измеряет величину этого сигнала, конвертирует его в значение веса в граммах и показывает его на ЖК дисплее. Кнопка используется для запуска процесса ручной калибровки устройства.

Структурная схема работы нашего проекта показана на следующем рисунке.

Тензодатчик Ардуино подключение через hx711 и использование

Исходный код программы

Код программы, наверное, будет немного сложен для новичков, поскольку мы не использовали в нем библиотеку для работы с модулем HX711. Мы всего лишь изучили даташит на этот модуль и программировали работу с ним вручную. Хотя ряд имеющихся в свободном доступе библиотек могут значительно упростить процесс взаимодействия с этим модулем.

В программе первым делом мы должны подключить заголовочный файл библиотеки для работы с ЖК дисплеем и определить контакты платы Arduino, к которым он подключен. Также необходимо инициализировать контакт, к которому подключена кнопка. После этого необходимо инициализировать (объявить) ряд переменных, которые потребуются нам в дальнейшем.

  • #include
    LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
    #define DT A0
    #define SCK A1
    #define sw 2
    long sample=0;
    float val=0;
    long count=0;
  • После этого мы запрограммировали ниже приведенную функцию для чтения данных с модуля HX711.
  • unsigned long readCount(void)
    {
    unsigned long Count;
    unsigned char i;
    pinMode(DT, OUTPUT);
    digitalWrite(DT,HIGH);
    digitalWrite(SCK,LOW);
    Count=0;
    pinMode(DT, INPUT);
    while(digitalRead(DT));
    for (i=0;i

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

Датчик веса – очень важный элемент многих проектов Arduino. По изменению массы можно не только узнать массу, но также отследить и фиксировать изменения объекта, а затем и выполнить какие-то действия. В этой статье мы узнаем, как подключить датчик веса к Ардуино на примере тензодатчиков различного номинала и микросхемы HX711 в качестве аналого-цифрового преобразователя.

Принцип работы тензодатчика

Тензодатчик Ардуино подключение через hx711 и использованиеТензодатчик Ардуино подключение через hx711 и использование

Работа датчика веса основана на изменении какого-либо физического параметра, пропорционально весу измеряемого предмета. Параметр зависит от того, какой элемент используется в датчике.

Так при изменении нагрузки на пьезокерамическую пластину меняется напряжение, снимаемое с электродов на концах пьезодатчика. При использовании ёмкостного датчика меняется ёмкость переменного конденсатора.

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

Тензодатчик Ардуино подключение через hx711 и использование  Тензодатчик Ардуино подключение через hx711 и использование

Тензодатчик Ардуино подключение через hx711 и использование

Датчик представляет собой прямоугольный брусок из алюминиевого сплава, с отверстием в центре. На его боковые поверхности нанесены тонкоплёночные резисторы, соединённые по мостовой схеме, поэтому резистивный датчик имеет 4 гибких вывода. Все элементы датчика залиты эпоксидным компаундом.

Читайте также:  Ds18b20 подключение датчика температуры к arduino: инструкция

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

Для того чтобы резисторы изменяли своё сопротивление, тензометрический датчик должен одним концом фиксироваться на основании, а на другой его конец должен действовать груз так, чтобы возникла деформация бруска и, соответственно, плёночных резисторов.

Для того чтобы преобразовать аналоговый сигнал с выхода тензорного датчика в двоичный код, применяется аналого-цифровой преобразователь (АЦП) НХ711.

Тензодатчик и НХ711

Тензодатчик Ардуино подключение через hx711 и использование

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

Основные технические характеристики НХ711:

  • Разрядность АЦП – 24 бит
  • Усиление по входу А – 64 или 128
  • Усиление по входу В – 32
  • Частота измерений – 10 или 80 раз в секунду
  • Питающее напряжение – 2,6-5,5 В
  • Потребляемый ток – менее 10 мА
  • Входное напряжение – ± 40 мВ

На плате с АЦП имеются два разъёма – J1 и JP2, на которых имеются следующие обозначения:

  • J1
    • E –, E + питание тензорного моста
    • A –, A + дифференциальный вход канала А
    • В –, В + дифференциальный вход канала В
  • JP2
    • GND, VCC питание
    • DT, SCK – информационные шины

Подключение HX711 к Arduino

Тензодатчик Ардуино подключение через hx711 и использование
Поскольку резисторы тензорного датчика включены по мостовой схеме, от устройства отходят 4 проводника, имеющих разную цветовую маркировку. На два плеча моста подаётся опорное напряжение, а с двух других плеч снимается выходное напряжение, которое подаётся на вход операционного усилителя микросхемы НХ711. Подключение по цветам проводов осуществляется следующим образом:

  • Красный – Е +
  • Чёрный – Е –
  • Белый – А –
  • Зелёный – А +

Тензодатчик Ардуино подключение через hx711 и использование Тензодатчик Ардуино подключение через hx711 и использование

Для дальнейшей обработки и передачи информации осуществляется подключение НХ711 к Ардуино UNO.

Для этого контакты питания GND и VCC HX711 подключаются к точкам GND и 5V разъёма POWER модуля Arduino UNO, а контакты DT и SCK подключаются к точкам A1 и A0 разъёма ANALOG IN.

Тензодатчик НХ711 через контроллер Arduino UNO можно подключить к жидкокристаллическому дисплею LCD 1602 или компьютеру, используя USB порт и стандартные библиотеки для Ардуино.

Поскольку на выходе измерительного моста изменяется напряжение, то именно оно преобразуется в бинарный код. Диапазон контролируемых напряжений зависит от выбранного коэффициента усиления.

Если коэффициент равен 128, диапазон измеряемых напряжений варьируется от – 20 mV до + 20 mV, выбор коэффициента усиления 64 определяет пределы измерения от – 40 mV до + 40 mV и при коэффициенте равном 32 пределы измерения определяются величинами – 80 mV и + 80 mV. Эти данные будут корректными только при напряжении питания +5 V.

Если входное напряжение выйдет за нижнюю границу диапазона, АЦП выдаст код 800000h, а если за верхнюю, то код будет 7FFFFFh. Для калибровки и измерений можно использовать следующие коды:

//код для калибровки
//код для калибровки
#include «HX711.h»

HX711 scale(A1, A0); // DT, CLK

float Calibration_Factor_Of_Load_cell = -3.7; // этот калибровочный коэффициент настраивается в соответствии с тензодатчиком
float U;
float O;

void setup() {
Serial.begin(9600);
Serial.println(«HX711 calibration sketch»);
Serial.println(«Remove all weight from scale»);
Serial.println(«After readings begin, place known weight on scale»);
Serial.println(«Press + or a to increase calibration factor»);
Serial.println(«Press — or z to decrease calibration factor»);

scale.set_scale();
scale.tare(); //Сбросьте масштаб до 0
long zero_factor = scale.read_average(); //Получаем базовое чтение
Serial.print(«Zero factor: «); //Это можно использовать, чтобы устранить необходимость тарирования шкалы. Полезно в проектах постоянного масштаба.
Serial.println(zero_factor);
}

void loop() {

scale.set_scale(Calibration_Factor_Of_Load_cell); //Отрегулируйте этот калибровочный коэффициент
Serial.print(«Reading: «);
U = scale.get_units();
if (U < 0) { U = 0.00; } O = U * 0.035274; Serial.print(O); Serial.print(" grams"); Serial.print(" Calibration_Factor_Of_Load_cell: "); Serial.print(Calibration_Factor_Of_Load_cell); Serial.println(); if (Serial.available()) { char temp = Serial.read(); if (temp == '+' || temp == 'a') Calibration_Factor_Of_Load_cell += 1; else if (temp == '-' || temp == 'z') Calibration_Factor_Of_Load_cell -= 1; } }

Подключение Ардуино к тензодатчику, при помощи модуля HX711

Тензодатчик — устройство позволяющее фиксировать изменения приложенной к нему силы. На него подается питающее напряжение, которое изменяется на выходе, пропорционально приложенной нагрузке. Благодаря взаимосвязи между силой и выходным напряжением тензодатчики получили широкое распространение во всех областях где требуется решать задачи измерения веса.

Из-за хорошей линейности характеристик, невысокой стоимости и простоты работы с ними, на текущий момент, тензодатчики практически вытеснили все механические весы.

В этой статье мы рассмотрим вопросы подключения тензодатчика к плате Ардуино при помощи модуля HX711, и постараемся определить для каких целей можно применять подобное решение, а для каких лучше использовать промышленные весовые контроллеры и преобразователи тензосигнала.

В качестве АЦП для преобразования сигнала с тензодатчика мы будем использовать 24-разрядный аналого-цифровой преобразователь, называемый HX711. С его помощью Ардуино будет получать информацию о текущей нагрузке на тензодатчик и выводить это значение на индикатор.

Для работы с модулем HX711 мы возьмем стандартную библиотеку, дабы не усложнять себе жизнь и проверить насколько точную весоизмерительную систему можно собрать из готовых компонент. Чтобы установить библиотеку, перейдите в диспетчер библиотек в среде IDE Arduino и введите HX711. Мы будем использовать библиотеку от Богдана Некула (Bogdan Necula), самая верхняя на приведенном ниже скриншоте.

Тензодатчик Ардуино подключение через hx711 и использование

Помимо модуля АЦП и платы Ардуино нам понадобятся:

  • 0.96 Oled дисплей, вариант I2C
  • 4 тактовые кнопки
  • 4 резистора 10кОм

Тензодатчик Ардуино подключение через hx711 и использование

После сборки платы необходимо загрузить в вашу ардуино исполняемый код, его можно создать из скетча приведенного в конце данной статьи. А результат его работы можно посмотреть на видео:

#include #include «HX711.h» #include #include #include #define SCREEN_WIDTH 128 // ширина дисплея в пикселях #define SCREEN_HEIGHT 64 // высота дисплея в пикселях // Создаем объект дисплея #define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); int Button_1 = 22;  //Кнопка увеличения коэффициента калибровки int Button_2 = 23;  //Кнопка уменьшения коэффициента калибровки int Button_3 = 24;  //Кнопка применения коэффициента калибровки int Button_4 = 25;  //Кнопка назначения нулевого веса // Подключение модуля ацп const int LOADCELL_DOUT_PIN = A0; const int LOADCELL_SCK_PIN = A1; // Создаем Объект модуля АЦП HX711 scale; float calibration_factor =3178.0  ; // коэффициент калибровки float cal_y1 = 500.0; // calibrated mass to be added long cal_x1 = 0L; long cal_x0 = 0L; float units;  //Код АЦП float gramm;  // Вес в граммах float gramm_max=0;  // определение разброса float gramm_min=1000;  // определение разброса void setup() {  // Запускаем дисплей  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) // по адрессу 0x3С  {    Serial.println(F(«SSD1306 allocation failed»)); //выводим сообщение если не получилось    for(;;);  }  // Очищаем дисплей  display.clearDisplay();     display.setTextColor(WHITE);  display.setTextSize(1);  // Выводим информационый экран  display.setTextSize(2);  display.setTextColor(WHITE);  display.setCursor(0,32);  display.println(«TMM-002»);  display.setTextSize(1);  display.setCursor(0,48);  display.println(«WWW.INTEREL.RU»);  display.display();  //Запускаем АЦП  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);  scale.set_scale();   //scale.set_scale(calibration_factor);       //Применяем калибровку   pinMode(Button_1, INPUT);   pinMode(Button_2, INPUT);   pinMode(Button_3, INPUT);   pinMode(Button_4, INPUT);    delay(5000); } void loop() {    Serial.print(«Reading: «);    //for(int i = 0;i < 10; i ++) units =+ scale.get_units(), 10;   // усредняем показания считав 10 раз  //units / 10;                                                   // делим на 10 units = scale.get_units(10);  gramm = units;                                    // переводим унции в граммы                Serial.print(gramm);                                          // отправляем в монитор порта  Serial.print(» grams»);    Serial.println();  display.clearDisplay();  display.setTextSize(1);  display.setCursor(0,0); if (gramm_min>gramm)gramm_min=gramm; if (gramm_max

Читайте также:  G-сенсор: что это в видеорегистраторе и на смартфоне, как работает акселерометр

Весы на arduino и калибровка тензодатчика с HX711

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

Состоят весы из двух частей, тензодатчика и модуля на микросхеме HX711. HX711 это 24 битный аналого-цифровой преобразователь специализированный для весов, к которому подключается тензодатчик.

Подключение к arduino:

Тензодатчик Ардуино подключение через hx711 и использованиеМодуль можно подключать на два любых выхода arduino, в данном случаи подключено на два аналоговых входа, но работают они как цифровые.

Софт:

Библиотеку для работы с HX711 можно скачать тут.

Калибровка тензодатчика:

  • Процесс калибровки показан в видео:
  • Код из видео для калибровки:

/* Setup your scale and start the sketch WITHOUT a weight on the scale Once readings are displayed place the weight on the scale Press +/- or a/z to adjust the calibration_factor until the output readings match the known weight Arduino pin 6 -> HX711 CLK Arduino pin 5 -> HX711 DOUT Arduino pin 5V -> HX711 VCC Arduino pin GND -> HX711 GND */ #include «HX711.h» HX711 scale(A1, A0);   // DT, CLK float calibration_factor = -3.7; // this calibration factor is adjusted according to my load cell float units; float ounces; void setup() {  Serial.begin(9600);  Serial.println(«HX711 calibration sketch»);  Serial.println(«Remove all weight from scale»);  Serial.println(«After readings begin, place known weight on scale»);  Serial.println(«Press + or a to increase calibration factor»);  Serial.println(«Press — or z to decrease calibration factor»);  scale.set_scale();  scale.tare();  //Reset the scale to 0  long zero_factor = scale.read_average(); //Get a baseline reading  Serial.print(«Zero factor: «); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.  Serial.println(zero_factor); } void loop() {  scale.set_scale(calibration_factor); //Adjust to this calibration factor  Serial.print(«Reading: «);  units = scale.get_units(), 10;  if (units

hx711 arduino: пример того что можно сделать, описание

В этой статье мы рассмотрим модуль hx711 Arduino, примером использования которого и будет создание весов на Ардуино.

Описание модуля

Недостаточно купить стандартный микроконтроллер Ардуино и написать пару строчек кода, чтобы считаться инженером. Когда вам надоест играть с светодиодами и делать простые замочки с одним-двумя датчиками, необходимо будет перейти к более практичным и полезным в быту проектам.

Это могут быть как автоматизированные системы, теплица, так и полноценные электронные весы, которые можно сделать своими руками.

Давайте рассмотрим, что это вообще за покупной модуль и какие функции он выполняет в системе.

Под Ардуино существует десяток разнообразных модулей и чипов, способных расширить функционал МК. И условно их можно разделить на три группы:

  1. Датчики и подобные им модули. В этой группе находятся все чипы, которые предназначены для измерения любых параметров окружающей среды и трансформации их в электронный сигнал. Именно датчики позволяют измерять вес, засечь звуковые волны при хлопке или уловить удар о поверхность. Без них большая часть проектов и систем в современном мире просто не могли бы существовать. Так что на деле их можно сравнить с трансформаторами внешних сигналов, которые они переводят во внутренние.
  2. Чипы и микроконтроллеры, позволяющие расширить стандартные возможности Ардуино. Могут, например, добавить немного постоянной или оперативной памяти, позволить подключать различные источники питания параллельным соединением. В большей своей части влияют на программную часть системы, в то время, как датчики и переходники напрямую модифицируют аппаратную. Могут быть использованы в том случае, если нет желания спаивать несколько МК, но ресурсов для выполнения вычислений не хватает.
  3. Переходники и вспомогательные средства для усиления сигнала. Именно к ним относится hx711, который усиливает сигнал от датчика веса и переводит его в цифровой, который может воспринимать Ардуино. Между предыдущим и этим пунктом есть небольшая грань, которую зачастую стирают и совмещают их в один класс. Тем не менее, если «расширители» влияют именно на программную часть, то разнообразные переходники позволяют усовершенствовать аппаратную.

Встречаются и комбинированные разновидности, например, слот под флешку, для расширения постоянной памяти стандартным физическим носителем.

Итак, мы разобрались, что hx711 – это 24-х битный АЦП, необходимый для адаптации тензодатчиков и весов в Ардуино. Однако подходит он лишь для простых систем Ардуино, где необходимы точные показание с тех же тензодатчиков.

Ранее мы упоминали про возможность создания весов с его помощью, но на деле он необходим именно для снятия показаний о силе давления, что позволяет адаптировать данный чип и для других систем.

Так, с его помощью вы можете создать различные приборы для измерения силы сервоприводов в 3Д принтерах и специальные датчики, для тестирования продукции.

В коробке HX711 разобран, и состоит из штыревых разъемов, что не припаяны к плате. Соответственно, при необходимости, пользователь может, с помощью пайки, подсоединить их, а если нет, то никто не запрещает подсоединять связь напрямую через клеммы, для экономии пространства, занимаемого чипом в конструкции.

Далее чип подключается уже к тем самым датчикам через мостовую схему и к МК, являясь промежуточным звеном между ними. В данном случае мы рассматриваем подключение именно к Ардуино, но на деле подойдёт любой микроконтроллер, который вам будет удобнее программировать. Аппаратных ограничений в этом плане нет.

Читайте также:  Датчик неровной дороги: что это такое, зачем нужен

Характеристики и распиновка 711 модуля

В самом чипе имеется несколько разъемов для подключения датчиков и МК, и для подачи питания, соответственно. J1 является разъемом для подключения датчиков, а вот E+ и Е необходимы для подключения их питания, в то же время, JP2 необходим для подсоединения чипа к микроконтроллеру Ардуино и последующей подачи питания через него.

Также присутствует несколько пинов, нужных для измерения различных данных системы: от напряжения, подаваемого на прибор, до частоты передачи данных. И, конечно, в плате присутствует интерфейс, распределённый на IIC или I2C. Всё это стоит изучить прежде, чем приступать к непосредственной пайке.

По А каналу можно установить коэффициенты усиления сигнала от датчиков, их имеется две разновидности – в 64 и в 128 раз. Это позволит измерять десятые доли килограммов, которые попадают на тензодатчики. Сам чип способен потреблять энергию не только непосредственно из Ардуино, но и из внешних источников через дополнительно подключенное питание.

Не стоит и упоминать, что на месте Ардуино может быть любой, полюбившийся вам контроллер. Напряжение плата выдерживает от 2.6 до 5.5 Вольт соответственно, это стоит учитывать, если вы беспокоитесь, о необходимости припайки резисторов к конструкции.

Распиновка HX711

Пример использования модуля

Примеры того, как можно применять данный чип, уже частично описаны выше. Подробнее стоит рассмотреть самые популярные решения:

  1. Весы через hx711, о которых мы и поговорим ниже. Здесь система достаточно простая: состоит из датчика, МК и самого чипа. Логика построения кода и самого проекта также незамысловата, достаточно всё это подключить последовательно и в правильном порядке. Естественно, ко всему вышеперечисленному, стоит докупить интерфейс, который будет выводить полученные данные. Или же специальный блютуз модуль, позволяющий подключить систему к смартфону и смотреть всю информацию уже непосредственно на нём. Всё зависит от того, каким проект вы видите сами. Также, для большего усиления сигнала, если потребуется, можно последователь подсоединять несколько чипов.
  2. Датчики на различных устройствах, от 3Д принтера, до специальных приспособлений для тестирования продукции. Чип выдаёт данные именно о давлении, и уже через формулы в коде вы их преобразовываете в килограммы веса. Соответственно, если нужно измерить силу, достаточно применить соответствующие алгоритмы перевода единиц, и у вас на руках будет уже совершенно другое устройство. Сферы его применения зависят исключительно от фантазии инженера, но чаще всего такие датчики используют именно в 3Д-принтерах, по понятным причинам.

Как сделать Ардуино весы на hx711

Но, предположим, вы решили сделать простейшие Ардуино весы (мы публиковали отдельный урок), тогда выбирайте один из вариантов, описанных выше, для получения выходящих данных.

Это может быть блютуз или wi-fi модуль, который будет передавать всё на другое устройство. Но можно использовать и обычный LED-экран. Однако, в таком случае, учитывайте, что вам необходимо будет написать немало строчек кода и для того, чтобы этот экран научить выводить нужные вам числа, а в некоторых ситуациях и буквы.

Сами Ардуино весы на hx711 крайне просты, как по конструкции, так и по пайке. Программирование тоже не вызовет больших проблем, ведь, в крайнем случае, вы сможете найти все необходимые библиотеки в интернете. Поэтому можно модифицировать устройство, с помощью дополнительных датчиков переменного электричества.

Выше на картинке вы можете увидеть примерный вариант устройства весов на Arduino Uno. В комплекте с модулем HX711 идет тензорезистор. На фото к нему прикреплены два небольших куска оргстекла — как основа и как опора для измеряемого предмета.

Схема устройства самая простая:

Осталось добавить код. Но прежде — скачайте библиотеку для нашего модуля HX711 по ссылке — https://github.com/bogde/HX711.

После того как библиотека скачана мы можем добавить наш код. Сначала код программы для калибровки:

/*
Setup your scale and start the sketch WITHOUT a weight on the scale
Once readings are displayed place the weight on the scale
Press +/- or a/z to adjust the calibration_factor until the output readings match the known weight
Arduino pin 6 -> HX711 CLK
Arduino pin 5 -> HX711 DOUT
Arduino pin 5V -> HX711 VCC
Arduino pin GND -> HX711 GND
*/

#include «HX711.h»

HX711 scale(A1, A0); // DT, CLK

float calibration_factor = -3.7; // this calibration factor is adjusted according to my load cell
float units;
float ounces;

void setup() {
Serial.begin(9600);
Serial.println(«HX711 calibration sketch»);
Serial.println(«Remove all weight from scale»);
Serial.println(«After readings begin, place known weight on scale»);
Serial.println(«Press + or a to increase calibration factor»);
Serial.println(«Press — or z to decrease calibration factor»);

scale.set_scale();
scale.tare(); //Reset the scale to 0

long zero_factor = scale.read_average(); //Get a baseline reading
Serial.print(«Zero factor: «); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
Serial.println(zero_factor);
}

void loop() {

scale.set_scale(calibration_factor); //Adjust to this calibration factor

Serial.print(«Reading: «);
units = scale.get_units(), 10;
if (units < 0) { units = 0.00; } ounces = units * 0.035274; Serial.print(ounces); Serial.print(" grams"); Serial.print(" calibration_factor: "); Serial.print(calibration_factor); Serial.println(); if(Serial.available()) { char temp = Serial.read(); if(temp == '+' || temp == 'a') calibration_factor += 1; else if(temp == '-' || temp == 'z') calibration_factor -= 1; } }

И сам код для весов ниже.

В коде добавлен перевод единицы измерения веса из унций в граммы.

#include «HX711.h»

HX711 scale(A1, A0);

float calibration_factor = -3.7; // калибровка!
float units;
float ounces;

void setup() {
Serial.begin(9600);
scale.set_scale();
scale.tare(); //Сбрасываем на 0
scale.set_scale(calibration_factor); //Применяем калибровку
}

void loop() {

Serial.print(«Reading: «);

for(int i = 0;i < 10; i ++) units =+ scale.get_units(), 10; // усредняем показания считав 10 раз units / 10; // делим на 10 ounces = units * 0.035274; // переводим унции в граммы Serial.print(ounces); // отправляем в монитор порта Serial.print(" grams"); Serial.println(); }

В целом на этом всё. Более подробные уроки по использованию этого модуля мы обязательно опубликуем в ближайших уроках. Подробный урок по созданию весов на данном модуле смотрите здесь.

Сделайте весы, которые способны измерять не только ваш вес, но и содержание жира в организме, а также воды. Это будет полезно для тех инженеров, которые следят за собой, но покупать дорогие оригинальные весы не хотят по очевидным причинам.

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *