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

مقياس التسارع accelerometer ADXL335

مقياس التسارع ADXL335

Accelerometer ADXL335



اليوم سأتحدث عن موضوع مقياس التسارع , مفهومه العام و استخداماته و ايضاً عن طريقة ربطه مع بطاقة الأردوينو و برمجته ايضاً .



في البداية ما هو مقياس التسارع accelerometer ؟

مقياس التسارع هو جهاز نستطيع من خلاله قياس التسارع اعتماداً على تغييره بفعل الجاذبية الأرضية , بالأعتماد على قانون نيوتن 

F=ma  

و هذه الخاصية تمكننا من معرفة المحاور الرئيسية و اي تغيير في الحركة قد يحدث و يغير من احداثيات هذه المحاور .

مقياس التسارع الذي سأتحدث عنه هو adxl335 الذي يستطيع استشتعار التغيير في المحاور الثلاثة 3axis  .


البنية الداخلية لهذا الحساس تظهر كما في الصورة 


اهم مواصفات ال adxl335  هي كما يلي :


فولتية التغذية :بين 1.8 - 3.6 فولت 
الحساسية : 300ملي فولت \g
0g فولتية المرجع :
 x&y axis  ما بين 1.35-1.65 فولت .
 z axis :  ما بين 1.2 - 1.8 فولت .

هذه اهم المعلومات التي نحتاجها لبرمجة و استخدام مقياس التسارع adxl335.

و لتتذكر امراً مهماً هو أننا في العادة نستخدم BreakOut عبارة عن لوحة مطبوعة و موضوع عليها القطع اللازمة مع هذا الحساس , في بعض الأنواع تدعم التوصيل مع 5 فولت , اما إذا لم تكن تدعم ال 5 فولت , فكل ما عليك هو توصيل مقاومة 500 اوم بين مداخل ال x,y,z لهذا الحساس و مداخل الأردوينو .

انا سأستخدم breakOut يدعم التوصيل مباشرة مع 5فولت دون الحاجة لاضافة أي مقاومات .

القطع التي سنحتاجها لاجراء هذه التجربة :



1) بطاقة اردوينو 
2) مقياس التسارع Accelerometer ADXL335
3) اسلاك توصيل SOLDERLESS Jumper
4)BreadBoard .

طريقة التوصيل :





قبل ان نبدا بالبرمجة نعود  لطرح سؤال مهم , كيف يمكننا تحديد المحاور و تغيرها بالنسبة للجاذبية ؟

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

و لمحور ال Zout

و الصورة الكاملة تتضح هنا .

حسناً في حال كان المقياس موازياً لسطح الأرض يعمل فقط محور الz axis فاما يعطي ان الوجه العلوي باتجاه الأرض -g او باتجاه الأعلى +g .

بالنسبة للمرجع Reference 0g و كيفية حسابه .

في الحالة العادية يكون الanalog reference  الخاص بالADC في الأردوينو هو 5 فولت و عليه تكون الحساسية SENSITIVITY الخاصة  بالADC  هو :

S=5/1023 = 4.887E-3 Volt/Reading.

يصبح حساب الzero g سهلاً و يكون :
0 g(x&y axis) = 1.5/4.887E-3 = 307 Typical
0 g(x&y axis) = 1.35/4.887E-3 = 276 min
0 g(x&y axis) = 1.5/4.887E-3 = 337 Max

و عليه تكون قراءة المدخل التشابهي للمحورين السيني و الصادي هو ما بين (276 و 337  )  .
و يمكنكم حساب القراءة لمحور الZ Axis كما هو مبين بالطريقة اعلاه  .
هذا الكود الخاص بهذا الحساس , يمكن رؤية النتائج على الSerial Monitor 
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/

//****************************************************

//Name :Mohannad Rawashdeh .
//Date "13/5/2013 3:00am
// Description: This  Code for using ADXL 335 Acce. sensor 
// Programmed for http://www.genotronex.com/
   
int x_axis=14;
int y_axis=15;
int z_axis=16;
float x_axis_reading=0;
float y_axis_reading=0;
float z_axis_reading=0;
float x_axis_volt=0.00;
float y_axis_volt=0.00;
float z_axis_volt=0.00;
//.....................
void setup(){
  Serial.begin(9600);
pinMode(x_axis,INPUT);
pinMode(y_axis,INPUT);
pinMode(z_axis,INPUT);
}
void get_ADXL335_Reading(){
  x_axis_reading=analogRead(x_axis);
  y_axis_reading=analogRead(y_axis);
  z_axis_reading=analogRead(z_axis);
}
  void get_ADXL335_Volt(){
    x_axis_volt= ((x_axis_reading*5)/1023);
    y_axis_volt= ((y_axis_reading*5)/1023);
    z_axis_volt= ((z_axis_reading*5)/1023);
  }
  void loop(){
    get_ADXL335_Reading();
    delay(100);
    get_ADXL335_Volt();
    delay(50);
    Serial.print("x axis Reading = ");
    Serial.println(x_axis_reading);
    Serial.print("y axis Reading = ");
    Serial.println(y_axis_reading);
    Serial.print("z axis Reading = ");
    Serial.println(z_axis_reading);
    Serial.print("x axis voltage= ");
    Serial.println(x_axis_volt);
    Serial.print("y axis voltage= ");
    Serial.println(y_axis_volt);
    Serial.print("z axis voltage= ");
    Serial.println(z_axis_volt);
    Serial.println("-------------------");
    Serial.println(" Update ...." );  
    delay(1000);
  }
  




تطبيقات هذا الحساس :
يستخدم هذا الحساس بشكل رئيسي في
1) قياس الأهتزازات مثل اهتزاز المحركات - اهتزاز المنشئات المدنية و المباني -قياس الهزات الأرضية و شدتها 
2) في الأذرع الاليه لقياس مدى شدة انقباض الذراع الألي على الأجسام .
3) تستخدم في برامج اختبارات السلامة الخاصة بالتصادمات في السيارات .



تحياتي 

0 التعليقات :

إرسال تعليق

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