Подключение датчиков силы нажатия к Arduino

07 сентября 2017

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

Сопротивление FSR изменяется, когда давление на датчик увеличивается или уменьшается. Если к FSR не применяется давление, его сопротивление будет больше 1 МОм. Чем сильнее вы нажимаете на головку датчика, тем ниже сопротивление между двумя клеммами. Объединив FSR со статическим резистором, для создания делителя напряжения, можно создать переменное напряжение, которое может быть прочитано аналого-цифровым преобразователем микроконтроллера.

Материалы

Данное руководство показывает, как быстро подключить и использовать датчик силы. Поэтому, помимо самого датчика, нам понадобится:

Обзор различных FSR

Существует множество вариантов FSR и несколько ключевых характеристик для их дифференциации: размер, форма и диапазон чувствительности. Вот краткий обзор:

Форма и размер

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

Диапазон измерения

Еще одна ключевая характеристика FSR - это номинальный диапазон чувствительности, который определяет минимальное и максимальное количество давления, которое может различать датчик.

Чем ниже минимальный и максимальный предел, тем более чувствительным может быть ваш FSR датчик. Но любое давление, превышающее максимальный предел датчика, будет неизмеримым (и может повредить компонент). Небольшой 1-килограммовый FSR обеспечит более чувствительные значения от 0 до 1 кг, но не сможет отличить боле большой вес.

Сила VS Сопротивление

На данном графике можно ознакомиться с типичным соотношением силы и сопротивления.

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

Пример подключения

Один из самых сложных моментов – это выбор резистора. Самое главное – мы не должны превзойти максимальное сопротивление датчика.

Если вы используете FSR, который охватывает широкий диапазон (например 0,1-10 кг), то лучше всего взять резистор примерно на 3,3 кОм.

Переходим к схеме.

Резистор, выступающий как делитель напряжения, приведет к увеличению напряжения на А0 по мере уменьшения сопротивления сенсора. Когда на FSR отсутствует давление, цепь получается разомкнутой и напряжение на А0 равно 0. Но по мере увеличения давления на сенсор, будет увеличиваться и напряжение. И при максимальном давлении оно будет соответствовать 5V.

Код

Вот простой пример кода для нашего проекта.

/******************************************************************************
Force_Sensitive_Resistor_Example.ino
Example sketch for SparkFun's force sensitive resistors
  (https://www.sparkfun.com/products/9375)
Jim Lindblom @ SparkFun Electronics
April 28, 2016


Create a voltage divider circuit combining an FSR with a 3.3k resistor.
- The resistor should connect from A0 to GND.
- The FSR should connect from A0 to 3.3V
As the resistance of the FSR decreases (meaning an increase in pressure), the
voltage at A0 should increase.


Development environment specifics:
Arduino 1.6.7
******************************************************************************/
const int FSR_PIN = A0; // Pin connected to FSR/resistor divider


// Measure the voltage at 5V and resistance of your 3.3k resistor, and enter
// their value's below:
const float VCC = 4.98; // Measured voltage of Ardunio 5V line
const float R_DIV = 3230.0; // Measured resistance of 3.3k resistor


void setup() 
{
  Serial.begin(9600);
  pinMode(FSR_PIN, INPUT);
}


void loop() 
{
  int fsrADC = analogRead(FSR_PIN);
  // If the FSR has no pressure, the resistance will be
  // near infinite. So the voltage should be near 0.
  if (fsrADC != 0) // If the analog reading is non-zero
  {
    // Use ADC reading to calculate voltage:
    float fsrV = fsrADC * VCC / 1023.0;
    // Use voltage and static resistor value to 
    // calculate FSR resistance:
    float fsrR = R_DIV * (VCC / fsrV - 1.0);
    Serial.println("Resistance: " + String(fsrR) + " ohms");
    // Guesstimate force based on slopes in figure 3 of
    // FSR datasheet:
    float force;
    float fsrG = 1.0 / fsrR; // Calculate conductance
    // Break parabolic curve down into two linear slopes:
    if (fsrR <= 600) 
      force = (fsrG - 0.00075) / 0.00000032639;
    else
      force =  fsrG / 0.000000642857;
    Serial.println("Force: " + String(force) + " g");
    Serial.println();


    delay(500);
  }
  else
  {
    // No pressure detected
  }
}

После загрузки необходимо установить скорость передачи 9600 бит/с.

Теперь при нажатии на датчик будут появляться расчеты давления.

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

На этом все. Проект полностью готов.


Статья является авторским переводом с сайта sparkfun.com.


Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.


Поделиться: