Тензодатчик: различия между версиями

Материал из MIK32 микроконтроллер
Нет описания правки
Нет описания правки
Строка 29: Строка 29:


==Схема подключения==
==Схема подключения==
[[Файл:Мост Уинстона.jpg|мини|слева|Схема подключения тензорезистора в мосте Уинстона]]
[[Файл:Мост Уинстона.jpg|мини|слева|200px|Схема подключения тензорезистора в мосте Уинстона]]
Обычно тензорезистор подключают в одно или два плеча моста Уинстона.
Обычно тензорезистор подключают в одно или два плеча моста Уинстона.
При отсутствии физического взаимодействия U<sub>BC</sub> = 0 (R<sub>1</sub> / R<sub>2</sub> = R<sub>x</sub> / R<sub>3</sub>). При деформации тензорезистора изменяется сопротивление R<sub>x</sub>, что вызывает снижение потенциала точки соединения резисторов R<sub>x</sub> и R<sub>3</sub> и изменение полезного сигнала - U<sub>BC</sub>.
При отсутствии физического взаимодействия U<sub>BC</sub> = 0 (R<sub>1</sub> / R<sub>2</sub> = R<sub>x</sub> / R<sub>3</sub>). При деформации тензорезистора изменяется сопротивление R<sub>x</sub>, что вызывает снижение потенциала точки соединения резисторов R<sub>x</sub> и R<sub>3</sub> и изменение полезного сигнала - U<sub>BC</sub>.
Для тензодатчика обязательно подключение АЦП.
[[Файл:ТР с АЦП.jpg|обрамить|центр|Схема подключения тензодатчика на примере АЦП с микросхемой hx711]]
<syntaxhighlight lang="c">
#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");              // выводим текст в монитор последовательного порта
}
</syntaxhighlight>

Версия от 22:30, 28 мая 2021

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

Классификация

По форме:

  • консольный (балочный) - используется в системах дозирования, платформенных весах средней грузоподъемности, бункерах, напольных системах взвешивания, включая электронные весы для взвешивания животных.
  • мембранный (типа "шайба") - массово применяется при производстве вагонных, бункерных, автомобильных весовых системах. Также мембранные датчики используются в тех весодозирующих системах, где обыкновенные датчики не могут быть внедрены в конструкцию из-за своих габаритных размеров.
  • S - образный - в процессе взвешивания дозаторов, бункеров и прочих конвейерных весовых систем нашли свое применение S-образные тензометрические датчики. Следует отметить, что такие датчики превосходно подойдут для разрывных машин и испытательных стендов.
  • колонный (типа "бочка") - применяется для производства и модернизации бункерных, автомобильных, вагонных весов с большой грузоподъёмностью, а также в контрольно-измерительном оборудовании, испытательных стендах.


По величине измерения:

  • силы растяжения и сжатия
  • давления
  • ускорения
  • перемещения
  • крутящего момента

Принцип работы и конструкция

Наглядная деформация тензорезистора

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


Классификация тензорезисторов по материалу измерительного элемента:

  • фольговый - используется как наклеиваемый тензорезистор. Это очень удобная система, которая представляет собой фольговую ленту, толщиной до 12 мкм. Часть пленки имеет плотную форму, а часть – решетчатую. Данная модель отличается от остальных тем, что можно припаивать дополнительные контакты, к тому же они нормально переносят низкие температуры.
  • плёночный - является аналогом фольгового, за исключением материала, из которого изготовлен. Производители изготавливают такие модели из тензочувствительных пленок с особым напылением, которое увеличивает чувствительность системы. Их удобно использовать при необходимости измерить динамические нагрузки. Производство пленок выполняется из таких материалов, как титан, висмут, германий.
  • проволочный - способен измерить нагрузку от нескольких сотых грамма до целых тонн. Их называют одноточечные, т. к в отличие от пленочных и фольговых резисторов, они измеряют в одной точке, а не площади. Такая конструкция позволяет использовать проволочные тензорезисторы для измерения деформации сжатия и растяжения.

В качестве подложки обычно используют ткань, бумагу, полимерную плёнку, слюду и др.

Схема подключения

Схема подключения тензорезистора в мосте Уинстона

Обычно тензорезистор подключают в одно или два плеча моста Уинстона. При отсутствии физического взаимодействия UBC = 0 (R1 / R2 = Rx / R3). При деформации тензорезистора изменяется сопротивление Rx, что вызывает снижение потенциала точки соединения резисторов Rx и R3 и изменение полезного сигнала - UBC.

Для тензодатчика обязательно подключение АЦП.

Схема подключения тензодатчика на примере АЦП с микросхемой hx711
#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");               // выводим текст в монитор последовательного порта
}