قياس شدة المجال المغناطيسي باستخدام الاردوينو

مبتدئ

image_pdf

في هذا الدرس سنتعلم ما هو مستشعر المغناطيسية وبرمجته مع الاردوينو لقراءة قيم رقمية عند وجود مجال مغناطيسي، و قيم تناظرية لشدة المجال المغناطيسي تبدأ القراءة بقيمة أولية يحددها جهد الدخل ومقياس الجهد، وستزداد هذه القيمة أو تنقص اعتمادًا على شدة وقطبية المجال المغناطيسي.

المواد والأدوات

اردوينو

X1 اردوينو

سلك اردوينو

X1 سلك اردوينو

مستشعر المغناطيسية

X1 مستشعر المغناطيسية

اسلاك توصيل

مجموعة أسلاك توصيل (M/F)

 

مستشعر المغناطيسية

مبدأ عمل مستشعر تأثير هول

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

يتم وصف عمل مستشعر تأثير هول أدناه:

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

linear-magnetic-hall-sensor-with-arduino
عندما يعمل مجال مغناطيسي خارجي على المستشعر، فإن قوة لورنتز تزيح حاملات الشحنة لتتبع مسارًا منحنيًا.
نتيجة لذلك، تنحرف حاملات الشحنة السالبة نحو جانب واحد من الموصل وحاملات الشحنة الموجبة إلى جانب آخر.
بسبب تراكم حاملات الشحنة الموجبة والسالبة في جوانب مختلفة من الموصل، يمكن ملاحظة جهد (فرق الجهد) بين جانبي اللوحة. الجهد الناتج يتناسب طرديا مع التيار الكهربائي وشدة المجال المغناطيسي.

linear-magnetic-hall-sensor-with-arduino

توصيل الدائرة

linear-magnetic-hall-sensor-with-arduino

الكود البرمجي

int analogPin = A0;

int digitalPin = 3;

void setup() {
pinMode(digitalPin, INPUT);
Serial.begin(9600);
}

void loop() {
int analogVal = analogRead(analogPin);
int digitalVal = digitalRead(digitalPin);
Serial.print(analogVal);
Serial.print("\t");
Serial.println(digitalVal);
delay(100);
}

شرح الكود البرمجي 

نعرف المنافذ التناظرية و الرقمية التي تم توصيلها مع الحساس

int analogPin = A0; 
int digitalPin = 2;

نقوم بتهيئة الاتصال التسلسلي و تعريف منفذ الدخل

void setup() {
pinMode(digitalPin, INPUT);
Serial.begin(9600);
}

في دالة void loop() نقوم بقراءة القيم من الحساس و عرضها على شاشة الاتصال التسلسلي

void loop() {
int analogVal = analogRead(analogPin);
int digitalVal = digitalRead(digitalPin);
Serial.print(analogVal);
Serial.print("\t");
Serial.println(digitalVal);
delay(100);
}

 

X
تم إضافة المنتج إلى السلة بنجاح