كيف يعمل حساس الميلان أو التسارع ADXL335 ؟ ومواجهته مع الاردوينو اكتب تعليقُا

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

كيف يعمل حساس الميلان أو التسارع ADXL335 ؟ ومواجهته مع الاردوينو

تساءلت يوما كيف يعرف هاتفك الذكي وضع الأعلي من الأسفل ! إنها واحدة من أروع ميزات الهواتف الذكية اليوم . لقد حصلوا جميعًا على جهاز صغير يسمى مقياس التسارع مضمّن في الدوائر التي يمكن أن تشعر عند إمالة الجهاز من جانب إلى آخر . هذه هي الطريقة التي يحدد بها هاتفك الذكي تلقائيًا وقت تبديل تخطيط الشاشة من صورة إلى عرض أفقي .

تُستخدم مقاييس التسارع على نطاق واسع في تطبيقات حساسة من حيث التكلفة ومنخفضة الطاقة والحركة والإمالة ، مثل الأجهزة المحمولة وأنظمة الألعاب وحماية محرك الأقراص وتثبيت الصور والأجهزة الرياضية والصحية .

دعونا نلقي نظرة فاحصة على ما هي مقاييس التسارع ، وماذا يفعلون ، وكيف يعملون .

ما هو التسارع ؟

حدد العالم الرائع إسحاق نيوتن في قانونه الثاني للحركة التسارع من خلال ربطه بالكتلة والقوة .

إذا كانت لديك قوة معينة (على سبيل المثال ، القوة في ساقك وأنت تطردها للخارج) وقمت بتطبيقها على كتلة (كرة قدم) ، فستجعل الكتلة تسارع (الكرة ستنطلق في الهواء) .

Force = Mass x Acceleration

Acceleration = Force / Mass

بمعنى آخر ، التسارع هو مقدار القوة التي نحتاجها لتحريك كل وحدة من كتلتها .

كيف يعمل حساس الميلان أو التسارع ؟

  • لمعرفة كيفية عمل مقاييس التسارع ، من المفيد غالبًا تخيل كرة داخل مكعب ثلاثي الأبعاد .
Accelerometer-Working-Illustration-Weightless-State
  • لنفترض أن المكعب موجود في الفضاء الخارجي حيث كل شيء في حالة انعدام الوزن ، سوف تطفو الكرة ببساطة في منتصف المكعب .
  • الآن دعنا نتخيل أن كل جدار يمثل محورًا معينًا .
    إذا قمنا بتحريك الصندوق بشكل مفاجئ إلى اليسار باستخدام تسارع 1g (أي G-Force 1g واحدة تعادل تسارع الجاذبية 9.8 م / ث 2) ، لا شك أن الكرة ستصل إلى الجدار X . إذا قمنا بقياس القوة التي تنطبق عليها الكرة في الجدار X ، يمكننا الحصول على قيمة إخراج 1G على المحور X .
Accelerometer-Working-Illustration-Sudden-Movement
  • دعونا نرى ما يحدث إذا وضعنا هذا المكعب على الأرض . سوف تسقط الكرة ببساطة على الحائط Z وستطبق قوة قدرها 1 جرام ، كما هو موضح في الصورة أدناه :
Accelerometer-Working-Illustration-Gravitation-Force
  • في هذه الحالة ، لا يتحرك الصندوق ولكننا لا نزال نحصل على قراءة 1 جم على المحور Z . وذلك لأن قوة الجاذبية تسحب الكرة لأسفل بقوة 1g .

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

كيف يعمل MEMS التسارع ؟

يتكون مقياس التسارع MEMS (Micro Electro Mechanical Systems) من هيكل مصغر مُصمم على سطح رقاقة السيليكون .

3
  • تم تعليق هذا الهيكل بواسطة نوابض البولي سيليكون . إنها تسمح للهيكل بالانحراف في الوقت الذي يتم فيه تطبيق التسارع على محور معين .
  • بسبب الانحراف ، يتم تغيير السعة بين الألواح الثابتة واللوحات المتصلة بالهيكل المعلق . هذا التغيير في السعة يتناسب مع التسارع في هذا المحور .
    يقوم المستشعر بمعالجة هذا التغيير في السعة ويحوله إلى جهد إخراج تماثلي .
4

أطراف حساس التسارع ADXL335 :

دعونا نلقي الان نظرة على الاطراف .

ADXL335-Accelerometer-Module-Pinout

الأسلاك - ربط حساس التسارع ADXL335 ما الاردوينو :

الآن بعد أن أصبح لدينا فهم كامل لكيفية عمل مقياس التسارع ADXL335 ، يمكننا أن نبدأ في تثبيت الأمر على الاردوينو لدينا .

الاتصالات سهلة جدا ، يجب أن يكون لديك شيء يشبه الرسم التوضيحي الموضح أدناه .

Wiring-ADXL335-Accelerometer-Module-to-Arduino-UNO

والآن بعد أن قمنا بتوصيل مقياس التسارع الخاص بنا ، فقد حان الوقت لكتابة بعض الأكواد واختبارها .

كود الاردوينو - قراءة التسارع ADXL335

كود بسيط جدا . إنه يعرض خرج المستشعر المعاير على كل محور على الواجهة التسلسلية . جرب الكود .

تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.
لتحميل الكود البرمجي اضغط هنا
const int xInput = A0;
const int yInput = A1;
const int zInput = A2;

// initialize minimum and maximum Raw Ranges for each axis
int RawMin = 0;
int RawMax = 1023;

// Take multiple samples to reduce noise
const int sampleSize = 10;

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

void loop() 
{
  //Read raw values
  int xRaw = ReadAxis(xInput);
  int yRaw = ReadAxis(yInput);
  int zRaw = ReadAxis(zInput);

  // Convert raw values to 'milli-Gs"
  long xScaled = map(xRaw, RawMin, RawMax, -3000, 3000);
  long yScaled = map(yRaw, RawMin, RawMax, -3000, 3000);
  long zScaled = map(zRaw, RawMin, RawMax, -3000, 3000);

  // re-scale to fractional Gs
  float xAccel = xScaled / 1000.0;
  float yAccel = yScaled / 1000.0;
  float zAccel = zScaled / 1000.0;

  Serial.print("X, Y, Z  :: ");
  Serial.print(xRaw);
  Serial.print(", ");
  Serial.print(yRaw);
  Serial.print(", ");
  Serial.print(zRaw);
  Serial.print(" :: ");
  Serial.print(xAccel,0);
  Serial.print("G, ");
  Serial.print(yAccel,0);
  Serial.print("G, ");
  Serial.print(zAccel,0);
  Serial.println("G");

  delay(200);
}

// Take samples and return the average
int ReadAxis(int axisPin)
{
  long reading = 0;
  analogRead(axisPin);
  delay(1);
  for (int i = 0; i < sampleSize; i++)
  {
  reading += analogRead(axisPin);
  }
  return reading/sampleSize;
}

الصورة التالية تبين إخراج التسارع على الشاشة التسلسلية في مواقع مختلفة .

ADXL335-Accelerometer-Output-on-X-axis
ADXL335-Accelerometer-Output-on-Y-axis-1
5

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *