جدول المحتويات:

كاشف الحث النبضي القائم على اردوينو - ملف الوجه: 5 خطوات (بالصور)
كاشف الحث النبضي القائم على اردوينو - ملف الوجه: 5 خطوات (بالصور)

فيديو: كاشف الحث النبضي القائم على اردوينو - ملف الوجه: 5 خطوات (بالصور)

فيديو: كاشف الحث النبضي القائم على اردوينو - ملف الوجه: 5 خطوات (بالصور)
فيديو: كيف يعمل كاشف المعادن How does a metal detector work? 2024, يوليو
Anonim
كاشف الحث النبضي القائم على اردوينو - ملف الوجه
كاشف الحث النبضي القائم على اردوينو - ملف الوجه
كاشف الحث النبضي القائم على اردوينو - ملف الوجه
كاشف الحث النبضي القائم على اردوينو - ملف الوجه

الفكرة

بعد أن صنعت بعض أجهزة الكشف عن المعادن في الماضي بنتائج مختلفة ، أردت استكشاف إمكانيات Arduino في هذا الاتجاه.

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

عند التفكير في أجهزة الكشف عن المعادن ، فإن الموضوع الرئيسي هو كيفية الشعور بالتغيرات الطفيفة في الجهد في الإشارات المتعلقة بملف البحث. عادة ما تكون هذه التغييرات صغيرة جدًا. سيكون الأسلوب الأكثر وضوحًا هو استخدام المدخلات التناظرية لـ ATmega328. لكن بالنظر إلى المواصفات ، هناك مشكلتان أساسيتان: هما (غالبًا) يتباطأان والدقة (في معظم الحالات) منخفضة.

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

لهذا الغرض ، يتمتع ATmega328 بميزة أنيقة للمقارن الداخلي بين D6 و D7. هذا المقارن قادر على تشغيل مقاطعة ، مما يتيح معالجة دقيقة للأحداث. ترك بجانب إجراءات التوقيت المشفرة بدقة مثل millis () و micos () والدخول إلى المؤقت الداخلي لـ ATmega328 بدقة أعلى بكثير ، فإن Arduino يعد أساسًا رائعًا لمقاربات الكشف عن المعادن.

لذا من عرض الكود المصدري ، ستكون البداية الجيدة هي برمجة المقارنة الداخلية لـ "تغيير" في قطبية المدخلات واستخدام عداد داخلي بأعلى سرعة ممكنة للتغيير في توقيت التغييرات.

الكود العام في Arduido لتحقيق هذا هو:

// تحديد جميع المتغيرات المسبقة المطلوبة وما إلى ذلك وإعداد السجلات

char clockSelectBits غير الموقعة = _BV (CS10) ؛ // no prescale، full xtal void setup () {pinMode (6، INPUT)؛ // + من المقارنة - عن طريق تعيينها كـ INPUT ، يتم تعيينها على وضع pinMode عالي المقاومة (7 ، INPUT) ؛ // - من المقارنة - عن طريق تعيينها كـ INPUT ، يتم تعيينها على cli () عالية المقاومة ؛ // إيقاف المقاطعات TCCR1A = 0 ؛ // قم بتعيين سجل TCCR1A بالكامل على 0 TCCR1B = 0 ؛ // نفس الشيء لـ TCCR1B -> الوضع العادي TTCNT1 = 0 ؛ // تهيئة قيمة العداد إلى 0 ؛ TCCR1B | = clockSelectBits ؛ // يحدد prescaler ويبدأ الساعة TIMSK1 = _BV (TOIE1) ؛ // يعين مؤقت تجاوز التدفق تمكين بت sei () ؛ // السماح بالمقاطعات ACSR = (0 << ACD) | // المقارنة التناظرية: ممكّن (0 << ACBG) | // تحديد فجوة المقارنة التناظرية: يتم تطبيق AIN0 على المدخلات الإيجابية (0 << ACO) | // خرج المقارنة التناظرية: إيقاف التشغيل (1 << ACI) | // إشارة مقاطعة المقارنة التناظرية: مسح المقاطعة المعلقة (1 << ACIE) | // مقاطعة المقارنة التناظرية: ممكّنة (0 << ACIC) | // التقاط إدخال المقارنة التناظرية: معطل (0 << ACIS1 | 0 << ACIS0 // interrupt on output toggle // (0 << ACIS1 | 1 << ACIS0 // reserved // (1 << ACIS1 | 0 <<) ACIS0 // مقاطعة عند هبوط حافة الإخراج // (1 << ACIS1 | 1 << ACIS0 // مقاطعة عند ارتفاع حافة الإدخال ؛}

// يتم استدعاء هذا الروتين في كل مرة ينشئ فيها المقارنة مقاطعة

ISR (ANALOG_COMP_vect) {oldSREG = SREG ، cli () ؛ الطابع الزمني = TCNT1 ؛ SREG = oldSREG ، }

// يسمى هذا الروتين في كل مرة يوجد فائض في العداد الداخلي

ISR (TIMER1_OVF_vect) {timer1_overflow_count ++ ؛ }

// يستخدم هذا الروتين لإعادة ضبط المؤقت على 0

إعادة تعيين باطل (باطل) {oldSREG = SREG ؛ cli () ؛ // تعطيل المقاطعات TCNT1 = 0 ؛ // تهيئة قيمة العداد إلى 0 SREG = oldSREG ؛ // استعادة سجل الحالة TCCR1B | = clockSelectBits ؛ // يعين أداة القياس المسبق ويبدأ مؤقت الساعة 1_overflow_count = 0 ؛ // إعادة تعيين عداد التدفق}

بالطبع هذه الفكرة ليست جديدة تمامًا. يمكن العثور على الجزء الرئيسي من هذا الرمز في مكان آخر. تطبيق جيد مثل هذا التقريب لمتحكم دقيق موجود على TPIMD - Tiny Pulse Induction Metal Detector الصفحة الرئيسية.

www.miymd.com/index.php/projects/tpimd/ (للأسف هذه الصفحة لم تعد متصلة بالإنترنت ، يوجد حاليًا نسخة احتياطية من الموقع على www.basic4mcu.com ، ابحث عن "TPIMD").

الخطوة 1: فكرة الحث النبضي من Arduino - فليب الملف

اردوينو فكرة الحث النبضي - فليب كويل
اردوينو فكرة الحث النبضي - فليب كويل
اردوينو فكرة الحث النبضي - فليب كويل
اردوينو فكرة الحث النبضي - فليب كويل

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

بالنظر إلى جهد الملف في كاشف PI ، يمكن تقسيم المنحنى الناتج على مرحلتين مختلفتين. المرحلة الأولى هي النبضة نفسها التي تشغل الملف وبناء المجال المغناطيسي (1). المرحلة الثانية هي منحنى انحلال الجهد ، بدءًا من ذروة الجهد ، ثم التكيف السريع لجهد الملف "بدون طاقة" (2). المشكلة هي أن الملف يغير قطبيته بعد النبض. هل النبضة موجبة (Var 1. في الصورة المرفقة) يكون منحنى الانحلال سالبًا. إذا كانت النبضة سالبة ، فسيكون منحنى الانحلال موجبًا (Var 2. في الصورة المرفقة)

لحل هذه المشكلة الأساسية ، يجب "قلب الملف" إلكترونيًا بعد النبض. في هذه الحالة ، يمكن أن يكون النبض موجبًا ويمكن أن يكون منحنى الانحلال موجبًا أيضًا.

لتحقيق ذلك ، يجب عزل الملف عن Vcc و GND بعد النبض. في هذه اللحظة ، لا يوجد سوى تيار يتدفق من خلال المقاوم التخميد. يمكن توجيه هذا النظام المعزول للملف والمقاوم التخميد إلى أي جهد مرجعي. هذا ، من الناحية النظرية ، سيخلق المنحنى الإيجابي المشترك (أسفل الرسم)

يمكن استخدام هذا المنحنى الموجب عن طريق المقارنة لاكتشاف النقطة الزمنية التي "يتقاطع" فيها جهد الانحلال مع الجهد المرجعي. في حالة وجود كنوز بالقرب من الملف ، يتغير منحنى الاضمحلال ونقطة الوقت التي تعبر فيها الجهد المرجعي. يمكن الكشف عن هذا التغيير.

بعد إجراء بعض التجارب ، أثبتت الدائرة التالية أنها تعمل.

تتكون الدائرة من وحدة Arduino Nano. تقوم هذه الوحدة بتشغيل ترانزستورات MOSFET تعمل على تشغيل الملف (عند SV3) عبر D10. عندما ينتهي النبض عند D10 ، تعزل كلتا MOSFET الملف من 12V و GND. تتسرب الطاقة المحفوظة في الملف من خلال R2 (220 أوم). في نفس الوقت ، يربط R1 (560 أوم) الجانب الإيجابي السابق للملف مع GND. هذا يغير منحنى الانحلال السالب عند R5 (330 أوم) إلى منحنى موجب. تحمي الثنائيات دبوس الإدخال في Arduino.

R7 عبارة عن مقسم جهد عند حوالي 0.04 فولت. في الوقت الحالي ، يصبح منحنى الانحلال عند D7 أكثر سلبية من 0.04 عند D6 ، يتم تشغيل المقاطعة ويتم حفظ المدة بعد نهاية النبض.

في حالة وجود معدن بالقرب من الملف ، يستمر منحنى الانحلال لفترة أطول ، ويزداد الوقت بين نهاية النبض والمقاطعة.

الخطوة 2: بناء الكاشف (اللوح)

بناء الكاشف (اللوح)
بناء الكاشف (اللوح)
بناء الكاشف (اللوح)
بناء الكاشف (اللوح)
بناء الكاشف (اللوح)
بناء الكاشف (اللوح)

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

يستخدم مؤشر D13 LED الموجود على لوحة Arduino Nano كمؤشر للمعادن

إن Unsing لوح التجارب هو أسرع طريقة لعمل كاشف. هناك حاجة إلى بعض الأسلاك ، لا يزال من الممكن القيام بذلك باستخدام لوح صغير. يظهر هذا في الصور في 3 خطوات حيث يخفي Arduino و MOSFET بعض الأسلاك. عند الاختبار ، قمت بفصل الثنائيات بطريقة ما دون أن ألاحظ في البداية. لم يكن لهذا تأثير سلبي على سلوك الكاشف. في إصدار PCB من الدائرة تركتهم خارجًا تمامًا.

لا يظهر في الصور التوصيلات بشاشة 0.96 OLED. هذه الشاشة متصلة:

Vcc - 5V (عند دبوس Arduino ، وليس جهد الإمداد !!!)

GND - GND

SCL - A5

SDA - A4

شاشة OLED هذه مطلوبة لمعايرة الكاشف في البداية. يتم ذلك عن طريق ضبط الجهد المناسب على PIN6 في Arduino. يجب أن يكون هذا الجهد حوالي 0.04 فولت. تساعد الشاشة على ضبط الجهد المناسب.

يعمل إصدار اللوح بشكل جيد ، على الرغم من أنه ربما لا يكون مناسبًا للذهاب إلى البرية.

الخطوة 3: الذهاب إلى ثنائي الفينيل متعدد الكلور

الذهاب PCB
الذهاب PCB
الذهاب PCB
الذهاب PCB
الذهاب PCB
الذهاب PCB
الذهاب PCB
الذهاب PCB

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

تم إجراء التعديلات التالية:

1. تم ترك الثنائيات.

2. حصلت بوابات الدوائر المتكاملة على مقاومة 10 أوم

3. يتم إعطاء جهد التغذية لمقسم الجهد عند D6 بواسطة إشارة مستوى عالي عند D8

4. تم تغيير دبوس السائق الخاص بـ MOSFETs.

بهذه الطريقة يمكن إنشاء ثنائي الفينيل متعدد الكلور من جانب واحد يمكن لحامه على ثنائي الفينيل متعدد الكلور عالمي. باستخدام هذه الدائرة ، سيكون لديك كاشف PI يعمل مع 8-10 مكونات خارجية فقط (حسب استخدام شاشة OLED و / أو مكبر صوت).

الخطوة 4: إعداد واستخدام الكاشف

إعداد واستخدام الكاشف
إعداد واستخدام الكاشف
إعداد واستخدام الكاشف
إعداد واستخدام الكاشف
إعداد واستخدام الكاشف
إعداد واستخدام الكاشف

إذا تم بناء الكاشف بشكل صحيح وكان البرنامج مكتوبًا على Arduino ، فإن أسهل طريقة (إن لم تكن الوحيدة) لإعداد الوحدة هي استخدام شاشة OLED. الشاشة متصلة بـ 5V ، GND ، A4 ، A5. يجب أن تعرض الشاشة "معايرة" بعد تشغيل الوحدة. بعد بضع ثوانٍ ، يجب أن تظهر عبارة "تمت المعايرة" ويجب أن تظهر ثلاثة أرقام على الشاشة.

الرقم الأول هو "القيمة المرجعية" المحددة أثناء المعايرة. القيمة الثانية هي آخر قيمة تم قياسها والقيمة الثالثة هي متوسط القيمة لآخر 32 قياسًا.

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

لبدء الإعداد الأولي ، يجب ألا يكون هناك معدن بالقرب من الملف.

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

قد يحدث أن تتجمد الشاشة. فقط اضغط على زر إعادة الضبط وابدأ من جديد.

بالنسبة للإعداد الخاص بي (الملف: 18 لفة عند 20 سم) ، تبلغ القيمة الثابتة حوالي 630-650. بمجرد الضبط ، اضغط على زر إعادة الضبط ، وتعيد الوحدة معايرة ويجب أن تكون جميع قيم الشجرة في نفس النطاق مرة أخرى. إذا تم إحضار المعدن الآن إلى ملف ، فيجب أن يضيء مؤشر LED الموجود على لوحة Arduino (D13). يعطي مكبر الصوت المرفق بعض أصوات النقر (هناك مجال للتحسين في البرمجة هناك).

لمنع التوقعات الكبيرة:

يكتشف الكاشف بعض الأشياء ، لكنه يظل كاشفًا بسيطًا للغاية ومحدودًا.

لإعطاء انطباع عن القدرات ، قام a ببعض عمليات الكشف المرجعية باستخدام أجهزة كشف أخرى مختلفة. بالنظر إلى النتائج ، فإنه لا يزال مثيرًا للإعجاب بالنسبة لجهاز الكشف الذي يحتوي على 8 أجزاء خارجية فقط ولكن لا يتطابق مع أجهزة الكشف الاحترافية.

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

استمتع!

الخطوة 5: التحديث 1: استخدام شاشة LCD مقاس 16 × 2

Update1: استخدام شاشة LCD مقاس 16 × 2
Update1: استخدام شاشة LCD مقاس 16 × 2
Update1: استخدام شاشة LCD مقاس 16 × 2
Update1: استخدام شاشة LCD مقاس 16 × 2
Update1: استخدام شاشة LCD مقاس 16 × 2
Update1: استخدام شاشة LCD مقاس 16 × 2

تحسينات

أثناء الاختبارات الإضافية ، أدركت أن مكتبة شاشة I2C OLED كانت تستهلك وقتًا طويلاً. لذلك قررت استخدام شاشة مقاس 16 × 2 مع محول I2C بدلاً من ذلك.

لذلك اعتمدت البرنامج على شاشة LCD مضيفة بعض الميزات المفيدة. يُظهر السطر الأول من الشاشة الآن قوة الإشارة لمؤشر محتمل. يعرض السطر الثاني الآن قيمتين. أشارت القبضة إلى انحراف الإشارة الحالية مقارنة بقيمة المعايرة. يجب أن تكون هذه القيمة "0". إذا كانت هذه القيمة سلبية أو موجبة باستمرار ، فيجب إعادة معايرة الكاشف بالضغط على زر إعادة الضبط. تشير القيم الإيجابية إلى وجود معدن بالقرب من الملف.

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

يسمح البرنامج الآن بفترات نبض متعددة في تسلسل (وسيلة للتجربة / تحسين الأداء). لم أحقق أي اختراق. لذلك يتم تعيين الافتراضي لمدة نبضة واحدة.

الإعداد الأولي للكاشف

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

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

لفائف

أقوم ببناء 3 ملفات لمزيد من الاختبارات

1 -> 18 دورة عند 200 مم

2 -> 25 لفة عند 100 مم

3 -> 48 دورة عند 100 مم

ومن المثير للاهتمام أن جميع الملفات عملت بشكل جيد ، مع نفس الأداء تقريبًا (عملة 20 قيراطًا عند 40-50 مم في الهواء). قد تكون هذه ملاحظة ذاتية تمامًا.

موصى به: