Соединяем датчик давления SEN-09376 и микроконтроллер Ардуино

Включаем светодиод для определения увеличения давления при помощи датчика давления SEN-09376 и платы Arduino Uno.

Шаг 1. Комплектующие

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

Оборудования

  • Arduino UNO / Genuino UNO × 1
  • SEN-09376 датчик давления × 1
  • Светодиоды LED (универсальный) × 3

Программное обеспечение

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

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

Этот мини-урок служит быстрым руководством по датчикам давления и демонстрирует, как их подключить и использовать с Arduino.

Шаг 2. Схема соединения

Все комплектующие мы подключаем согласно схеме выше.

Шаг 3. Код проекта

Вы можете скопировать или скачать код проекта ниже.

const int FSR_PIN = A0; // Pin connected to FSR/resistor divider
const int LED_PIN1 = 7;
const int LED_PIN2 = 6;
const int LED_PIN3 = 4;
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);
  pinMode(LED_PIN1, OUTPUT);
  pinMode(LED_PIN2, OUTPUT);
  pinMode(LED_PIN3, OUTPUT);
}

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();
    if(force<10)
    {
       digitalWrite(LED_PIN1,LOW);
      digitalWrite(LED_PIN2,LOW);
      digitalWrite(LED_PIN3,LOW);}
    if(force>20)
    {
      digitalWrite(LED_PIN1,HIGH);
      digitalWrite(LED_PIN2,LOW);
      digitalWrite(LED_PIN3,LOW);
     
    }
    if(force>60)
    {
      digitalWrite(LED_PIN2,HIGH);
      digitalWrite(LED_PIN1,LOW);
      digitalWrite(LED_PIN3,LOW);
    }
    if(force>100)
    {
       digitalWrite(LED_PIN3,HIGH);
      digitalWrite(LED_PIN2,LOW);
      digitalWrite(LED_PIN1,LOW);
    }
  
    delay(500);
    
  }
  else
  {
    // No pressure detected
  }
}

На этом всё, наш мини-урок завершен. Новых вам изобретений и качественных комплектующих!

10.01.2019 | Уроки | Теги статьи , |
Ардуино+