الخميس، 19 سبتمبر، 2013

Force sensor حساس القوة

Force sensor

حساس القوة 

هناك مجموعة متنوعة من الحساسات يمكننا ربطه مع الأردوينو , و الأستفادة من خصائصها لدمجها في المشاريع المختلفة .

 سأتحدث عن حساس القوه FSR في هذه التدوينة .



 force sensor






هذا أحد الحساسات التماثلية Analoge و الذي يمكننا من معرفة مقدار الضغط المتولد على وحدة مساحة .



هذا الحساس يأتي بالنشرة الفنية   , و هو عبارة عن مقاومة متغيرة تتغير تبعاً لمقدار الضغط الناشئ عليها .

ستحتاج لتنفيذ هذه التجربة البسيطة :






1) بطاقة أردوينو 
2)حساس القوة FSR 406 او اي نوع متوفر 
3)اسلاك توصيل 
4) BreadBoard .
5)مقاومة "قيمة تكون بين 2.2كيلو- 10كيلو اوم "

الفكرة الرئيسية التي ترتكز عليها قراءة مثل هذه الحساسات هي تقنية تسمى مقسم الجهد Voltage Divider



ترتكز كالأتي : اذا كان لدينا مصدر جهد Vcc و كان لدينا مقاومتين R1, R2 فإن تم توصيل المقاومتين على التوالي فأن مقدار الفولتية على المقاومة R2 تعطى بالقانون :



و مقدار الفولتية على المقاومة R1 يساوي :

هذا القانون أهم قانون في الدوائر الكهربائية و الأكثر شيوعاً و في حالتنا هذه سنستخدمه لقراءة مقدار الفولتية على حساس القوة .

و هذا الجدول مهم جداً و يعرض العلاقة بين المقاومة و مقدار القوة المطبقة على هذا الحساس .



التوصيل : سيكون التوصيل كالآتي :




البرمجة :


كبرنامج بسيط سنقوم بقراءة التغير كقيمة فولتية على شاشة السيريال .


// Written for Genotronex blog
// http://www.genotronex.com
//this code used to ,measure Force sensor reading 

 float volt;
 int sensorValue;
 #define SensorPin A0
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  sensorValue = analogRead(SensorPin);
  // print out the value you read:
  Serial.print("     sensorValue =");
  Serial.print(sensorValue);
  Serial.print("  ,  " );
  volt =sensorValue*4.88E-3;
  Serial.print(" Voltage = ");
  Serial.print(volt);
  Serial.println(" V ");

  delay(100);        // delay in between reads for stability
}



و هذا البرنامج يقيس المقاومة الناتجة ايضاً 
// Written for Genotronex blog
// http://www.genotronex.com
//this code used to ,measure Force sensor reading and it's resistance

 float volt;
 int sensorValue;
 unsigned long FRS,FRS_volt;
 unsigned int Vcc=5000; // Power supply 5 v , you can change it from here
 int R2=2200;//put here your resistance
 int SensorPin =A0;
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  sensorValue = analogRead(SensorPin);
  // print out the value you read:
  Serial.print("     sensorValue =");
  Serial.print(sensorValue);
  Serial.print("  ,  " );
  volt =sensorValue*4.88E-3;
  Serial.print(" Voltage = ");
  Serial.print(volt);
  Serial.print(" V ");
  Serial.print("  , ");

  //...........................
  // From voltage divider low :
  // VR2=R2*Vcc/(FSR+R2) .
  //So FSR=(Vcc-VR2)*R2/VR2
  FRS_volt=map(sensorValue,0,1023,0,5000);
  FRS_volt=constrain(FRS_volt,0,5000);
  Serial.print(" FRS_volt = ");
  Serial.print(FRS_volt);
  Serial.print(" mV ");
  Serial.print("  , ");
  FRS=(Vcc-FRS_volt)*R2;
  FRS /= FRS_volt; 
  if(FRS_volt==0){ //no force applied
   Serial.println(" No force !  ");
  }
  else{
  Serial.print(" Resistance =  ");
  Serial.println( FRS);
  }
  delay(500);        // delay in between reads for stability
}




هذا الحساس و بالرغم من بساطته الا أن له تطبيقات كثيرة في مجال الألعاب , الأجهزة الموسيقية , المعدات الطبية , و غيرها الكثير .



1 التعليقات :

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.