สร้างเว็บEngine by iGetWeb.com
Cart รายการสินค้า (0)

arduino กับ pressure sensor

arduino กับ pressure sensor

arduino กับ pressure sensor

เบอร์ที่เลือกใช้ในบทความนี้

Pressure sensor MPX5010DP

Pressure sensor MPX101

Pressure sensor MPX5050

Pressure Sensor คือ อุปกรณ์ตรวจวัดความดันของก๊าซหรือเหลว เซ็นเซอร์จะส่งสัญญาณทางไฟฟ้าที่มีความสัมพันธ์กับความดัน เซนเซอร์ถูกสร้างให้มีเยื่อบางที่สามารถโค้งงอตามความดัน ซึ่งระดับความโค้งงอ สามารถวัดได้ด้วยการเปลี่ยนแปลงความต้านทาน หรือ การเปลี่ยนแปลงของการเก็บประจุในการพัฒนาเซ็นเซอร์แรกเริ่มทำด้วยวิธีการประดิษฐ์โครงสร้างจุลภาคบนพื้นผิว (Surface Micromachining) สำหรับใช้งานในช่วงความดันต่างๆ เพื่อประยุกต์ใช้ในอุตสาหกรรมยานยนต์และเซ็นเซอร์ตรวจวัดแรงดันในเส้นเลือด เป็นต้น

ขาที่ใช้ในการต่อ กับ ตัว arduino จ่ายไฟเลี้ยง 5V  GND และ ขา A0

code การทำงาน  ตัว

Pressure sensor  ให้ output เป็นแรวดัน แปรผันตามความแรงของลมดังนั้นเราสามารถ เขียนโปรแกรม อ่านค่า ADC แล้วแสดงผลทาง serial ได้เลยครับ

// Pin 1 (notch) - Analog output
// Pin 2 - Gnd
// Pin 3 - 5V


int sensorPin = A0;    // Select input pin for the potentiometer
int sensorValue = 0;   // Variable stores value coming from the sensor

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(sensorPin);  // Read sensor
  Serial.println(sensorValue, DEC);     // Display result
  delay(400);         // Wait 400 milliseconds
}


ดู output ทาง serial monitor ครับเราสามารถประยุกต์ ตั้งค่าต่างได่ เช่น ตั้งค่าว่าถ้ามีแรงดันลมในช่วง ช่วงหนึ่งแล้วให้อุปกรณ์อะไรสักอย่างทำงานประมาณนี้ครับ







ตัวอย่างที่ แสดงค่าออกทาง LCD และแปลงค่า เป็น KPA
อยู่ด้านล่างนี้ครับ


#include <LiquidCrystal.h>
#include <Wire.h>

#define kpa2atm 0.00986923267

// initialize the LCD library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// pin defs
int pressurePin = 0;
int ledPin = 13;

// variables
byte res;
byte msb;
byte lsb;
int val;
float tC; // temperature in Celsius
float tF; // temperature in Fahrenheit
float pkPa; // pressure in kPa
float pAtm; // pressure in Atm

unsigned long time;


void setup()
{
// set up led pin as output
pinMode(ledPin, OUTPUT);

// set up the LCD's number (col,row):
lcd.begin(20, 2);
lcd.print("Temp");

Serial.begin(9600);
Wire.begin();
}

void loop()
{
/* turn led ON */
//digitalWrite(ledPin, HIGH);

lcd.clear();

/* get and print current time */
time = millis()/1000;
//lcd.print(time);
Serial.print(time);
Serial.print(": ");

/* get the pressure */
val = analogRead(pressurePin);
pkPa = ((float)val/(float)1023+0.095)/0.009;
pAtm = kpa2atm*pkPa;

/* show pressure in kPa on LCD */
lcd.setCursor(0,0);
lcd.print(pkPa);
lcd.print("kPa");
lcd.setCursor(0,1);
lcd.print(pAtm);
lcd.print(" Atm");

/* send pressure to serial port */
Serial.print(pkPa);
Serial.print("kPa ");
Serial.print(pAtm);
Serial.print("Atm ");

/* get temperature from TMP102 */
res = Wire.requestFrom(72,2);

if (res == 2) {

msb = Wire.receive(); /* Whole degrees */
lsb = Wire.receive(); /* Fractional degrees */
val = ((msb) << 4); /* MSB */
val |= (lsb >> 4); /* LSB */

/* calculate temperature */
tC = val*0.0625;
tF = (tC * 9/5) + 32;

/* show temperatures on display */
lcd.setCursor (12,0);
lcd.print(tC);
lcd.print("\xdf""C");

lcd.setCursor(12, 1);
lcd.print(tF);
lcd.print("\xdf""F");


Serial.print(tC);
Serial.print("C ");
Serial.print(tF);
Serial.println("F");

}
else {
lcd.print("ERR");
Serial.println("ERROR");
}

/* turn led off */
//digitalWrite(ledPin, LOW);

delay(1000);
}



view