تقديم
لا تخف فلن أرهقك وإياي بالمعادلات الرياضية والنظريات المملة. بل ما أود فعله هو تعليمك كيفة الاستعمال فقط، فإن تمكنت من استعمالهما بشكل جيد فيمكنك حينها دراستها بشكل معمق إن أردت...
إن تعلمك استعمال هذين المركبين الإليكترونيين إليكترونيا وبرمجيا سيسهل عليك الكثير من المشاريع بل وقد يلهمك بالتفكير في اختاراعات جديدة.
هذا المقال مهم لأنه سيكون داعما أساسيا لنا في إنجاز مقالات أخرى لتعليمك كيفية صنع مروحيات وطائرات وروبوتات متوازنة بنفسك.
ما علينا إلا أن نريك كيف تستعملهما وما عليك إلا أن ترينا ما تفكر فيه!
|
![]() |
الجيروسكوب
عندما تقلع الطائرة في السماء، يكون ذيلها متجها إلى الأرض ورأسها نحو السماء. بعد 15 دقيقة تقريبا يقوم ربان الطائرة بإعادتها إلى مستواها الأفقي تقريبا. وحيث أن الربان لا يرى مستوى الأرض حتى يوازي الطائرة به فكيف يعرف درجة زاوية الميلان بدقة إذن؟ لاشك أن الطائرة مجهزة بجهاز يقيس زاوية الميلان في الأبعاد الثلاثة. هذا الجهاز وبكل بساطة إنما هو الجيروسكوب.
نفس الشيء لو كنت تملك أحد الهواتف الذكية كالآيفون مثلا، فستجد أن بعض تطبيقاته تستجيب لتحريك الهاتف بزاوية محددة. أبسط مثال هو مسألة قلب الصورة حتى تراها أنت بشكل أفقي أو عمودي.
وبالتالي يمكنك الاستنتاج أن دور الجيروسكوب هو تحديد زاوية الميلان في معلم ثلاثي الأبعاد. |
|
|
|
الجهاز بشكله الميكانيكي. |
|
|
أما إليكترونيا فله شكل مغاير تماما. |
مقياس التسارع
أحيانا نحتاج إلى قياس سرعة السيارة في الطريق. فنقول أن هذه السيارة تمشي بسرعة 10 كلم/الدقيقة مثلا. لكن لو كانت هذه السيارة تزيد من سرعتها بمقياس 5 كلم/الدقيقة خلال كل دقيقة. ففي خلال الدقيقة الأولى تكن سرعة السيارة هي 15 كلم/الدقيقة وخلال الدقيقة الثانية تصبح سرعتها هي 20 كلم/الدقيقة وهكذا... نقول إذن بأن تسارع السيارة هو 5 كلم/(الدقيقة × الدقيقة) وهو تسارع موجب.
أما إذا كانت السرعة تنقص بمقدار معين فسنقول بأنه تسارع سالب (يعني تآخر). وفي حالة كانت السرعة ثابتة طوال الوقت فسنقول بأن التسارع منعدم.
|
|
ما قلناه يتعلق بمحور واحد فقط، لكن ماذا عن التسارع في كل الاتجاهات؟
لا شك أنك تعرف المعلم الممنظم ثلاثي الأبعاد (x,y,z). أليس كذلك؟
في هذه الحالة باستعمال مقياس التسارع يمكننا قياس التسارع في محور الأفاصيل x، ومحور الأراتيب y وكذلك في المحور z. |
|
استعمالات
الهواتف الذكية
Galaxy Nexus و iPhone |
|
|
الدراجات والروبتات المتوازنة
"Segway" |
|
|
المروحيات |
|
|
الغواصات |
|
|
الطائرات |
|
استعمال الجيروسكوب
ثلاثة أشياء
سنحتاج لمعرفة 3 قيم عن الجيروسكوب:
1. أولا وقبل كل شيء، ستحتاج لمعرفة قيمة الجهد الكهربائي المخصصة للجيروسكوب (غالبا 3.3 فولط أو 5 فولط)
2. ثانيا، عندما يكون الجيروسكوب ثابثا سيخرج لنا جهدا كهربائية محددا. هذا الجهد الكهربائي يعرف بالإسم (الجهد الكهربائي المنعدم أي zero voltage أو null voltage). لمعرفة هذه القيمة يجب أن تنظر إلى ملخص بيانات الجيروسكوب (أي datasheet). في مثال يومنا هذا، قيمة الجهد المنعدم هي 2.5 فولط.
3. القيمة الأخرى التي سنحتاجها من datasheet هي الحساسية (اي sensitivity). صيغتها هي mV/deg/sec. في مثال يومنا هذا، قيمتها هي 7mV/deg/sec.
أما بالنسبة للميكروكنترولور، فطريقة معالجته للقيم الصادرة من الجيروسكوب قد تخلتف من ميكروكنترولور لآخر. بالنسبة لمثال يومنا هذا، سنعتمد على بطاقة Arduino.
بما أن الجيروسكوب سيزودنا بقيم كثيرة، فسنقوم بإيصاله بمربط تناظري للميكروكنترولرو إذن.
بطاقة Arduino مزودة بمحول يتكون من 10 أزواج (10bit ADC). يقوم هذا المحول بتمثيل الجهد الكهربائي (0-5 فولط) بقيمة محصورة بين 0 و 1023 تلقائيا.
عند برمجة الجيروسكوب، من الأحسن تحديد قيمة مبدئية تمثل الحد الأدنى الذي نسمح به للميلان في محور معين.
إذا قام الجيروسكوب بتزويدنا بقيمة أكبر من الحد الأدنى نقوم في هذه الحالة بالتعامل مع الوضعية حسب الصنع (أي لإرجاع الجهاز إلى هيئته الأولى كالطائرة مثلا إذا فقدت توازنها بسبب الريح).
برمجة
/* معرفة زاوية الانحناء بالنسبة لمحور واحد فقط * Analog Pin 0 إيصال الجيروسكوب بالمربط التناظري * eric barch / ericbarch.com :تأليف * ترجمة: السهلي محمد* */
int gyroPin = 0; // الجيروسكوب متصل بالمربط التناظري 0 float gyroVoltage = 5; //5V التيار الذي يحتاجه الجيروسكوب هو float gyroZeroVoltage = 2.5; //2.5V قيمة التيار المنعدم float gyroSensitivity = 0.007; //7mV/deg/sec الحساسية float rotationThreshold = 1; //deg/sec الحد الأدنى بـ float currentAngle = 0; //لحساب الزاوية في الوضع الحالي
void setup(){ Serial.begin (9600); }
void loop(){ //بعد قراءة قيمة الجيروسكوب نقوم بتحويلها من المجال 0-1023 إلى المجال 0-5 فولط float gyroRate = (analogRead(gyroPin) * gyroVoltage) / 1023; //الفرق بين الوضع الحالي والقيمة في الحالة المنعدمة للجيروسكوب gyroRate -= gyroZeroVoltage; gyroRate /= gyroSensitivity; //نقسم على قيمة الحساسية
//نتجاهل الوضع إذا كانت القيمة أكبر أو تساوي الحد الأدنى أو أصغر من قيمتها السالبة if (gyroRate >= rotationThreshold || gyroRate //(1000ms/10ms) نقسمها على 100 لأن هذه الدالة تنفذ خلال كل 10 ميليثانية gyroRate /= 100; currentAngle += gyroRate; }
//لنحافظ على زاويتنا بين 0 و 359 if (currentAngle < 0) currentAngle += 360; elseif (currentAngle > 359) currentAngle -= 360;
Serial.println(currentAngle); delay(10); //تنفذ خلال كل 10 ميليثانية } |
استعمال مقياس التسارع
تقديم
توجد عدة مستشعرات اليكترونية لقياس التسارع. سنستعمل في هذا المثال مقياس التسارع Memsic 2125. تجد خصائصه في الملف التالي: http://www.parallax.com/dl/docs/prod/acc/memsickit.pdf
مقياس التسارع Memsic 2125 قادر على قياس التسارع في محورين فقط (أي ليس في فضاء ثلاثي الأبعاد).
|
|
حملق في الصورة جانبه جيدا وستجد مثلثا مطبوعا على ظهر المستشعر. يساعدنا هذا المثلث على معرفة أسماء مرابط المستشعر وطريقة تركيبه. يتكون المستشعر من 6 مرابط وهي كالتالي: |
|
|
تركيب
سنستعمل بطاقة أردوينو للتبيان فقط. ويمكنك استعمال أي ميكروكنترولور آخر بطبيعة الحال. قم بإيصال المربط +5V والمربطين GND للمستشعر بمثيلاتهم في البطاقة أردوينو. ثم صل المربط المنطقي 2 للبطاقة أردوينو بمربط المحور X للمستشعر، والمربط المنطقي 3 بمربط المحور y للمستشعر. الصورة التالية توضح ما نقصده. |
|
عمليا ستكون النتيجة هكذا: |
|
في حالة استعمال ميكروكنترولور آخر، توضح لك الصورة التالية طريقة إيصال المستشعر بالميكروكنترولور الخاص ببطاقة Arduino |
|
برمجة
/* Memsic2125 شيفرة لقراءة التسارع باستعمال مستشعر التسارع ثم نقوم بإظهار القيمتين على شاشة الحاسوب. David A. Mellis من طرف Tom Igoe من طرف من طرف محمد السهلي int accelerationX, accelerationY; // متغيران لحساب التسارع بالنسبة لكل محور Serial.begin(9600); pinMode(xPin, INPUT); // 1000 milli-g's أو o ثقالة الأرض هي 1g accelerationY = ((pulseY / 10) - 500) * 8; // milli-g'sالتحويل باعتبار وحدة القياس هي Serial.print("\t"); |
تأليف
محمد السهلي
{jumi [*3]}
المراجع
http://ar.wikipedia.org/wiki/%D8%AC%D9%8A%D8%B1%D9%88%D8%B3%D9%83%D9%88%D8%A8
http://en.wikipedia.org/wiki/Gyroscope
http://en.wikipedia.org/wiki/Accelerometer
http://arduino.cc/playground/Main/Gyro
http://www.arduino.cc/en/Tutorial/AccelerometerMemsic2125
http://arduino.cc/en/Tutorial/ADXL3xx
http://www.instructables.com/id/Accelerometer-Gyro-Tutorial/
http://www.hvwtech.com/products_view.asp?ProductID=542
http://www.parallax.com/tabid/768/ProductID/93/Default.aspx
التعليقات
شكرا لك