» إلكترونيات » أجهزة الكشف عن المعادن »جهاز الكشف عن المعادن على Arduino Pro Mini. معالجة أعماق Kolokolov-Shchedrin وفقًا لمبدأ "النقل"

جهاز الكشف عن المعادن في Arduino Pro Mini. معالجة أعماق Kolokolov-Shchedrin وفقًا لمبدأ "النقل"


إعادة تدوير مخطط كولوكولوف-شيدرين في المياه العميقة. الاختلافات عن المخطط الأصلي:
1. لا يوجد مذبذب بلوري على رقاقة k561 .. كوارتز 32 كيلو هرتز. تعطي إشارة 32 كيلو هرتز Arduino Pro Mini.
2. دارات الإخطار الصوتية على العديد من الدوائر الدقيقة 561 سلسلة غائبة أيضًا - أصوات الأهداف أيضًا ، اردوينو (ويجب أن أقول ، أصوات ممتازة ، مقارنة بدائرة المؤلف).
3. مدعوم من الجهد أحادي القطب 12 فولت (بطارية الرصاص الحمضية).
4. ضبط الحساسية مع الأزرار. مع مقياس ADC من 0 إلى 1023 ، يمكن تعديل عتبة الاستجابة من 1 إلى 38 (يمكن تغيير القيمة بسهولة في الرسم التخطيطي).


جهاز الكشف عن المعادن في Arduino Pro Mini. معالجة أعماق Kolokolov-Shchedrin وفقًا لمبدأ


الأهم من ذلك ، أردت أن أوضح في هذه المقالة أنه من الممكن تجميع MDs على Arduino غير أدنى من الأصل في الحساسية (تم ذلك ، لأن أصول الدائرة الأصلية تم جمعها بترتيب 10 قطع ، لذلك هناك مادة للمقارنة). الدائرة الأصلية:


عندما بدأت العمل مع Arduino لأول مرة ، كنت متحمسًا جدًا لدرجة أنني اعتقدت أنه يمكنني العثور على وتجميع أي دائرة للكشف عن المعادن من الإنترنت على Arduino يمكنني العثور عليها بسهولة في مكب القمامة الواسع. من حيث المبدأ ، اتضح ذلك ، ولكن الدوائر كانت تعتمد على عداد تردد ، والذي لم يسمح بتحقيق نطاق جيد حقًا. بعض ألعاب الأطفال واختبار القلم + محاولات لكسب المال على المبتدئين. أصل هذا MD هو حصان عمل حقيقي يسمح لك بالعثور على الأشياء الكبيرة على مسافة 2 متر (انظر كتاب Kolokolov-Shchedrin في Google). لا توجد إحصائيات حول MD المحولة. آمل أن تظهر بدعم من محبي MD و Arduino. عملت الخطة مع Arduino Uno و Arduino Pro Mini.

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




في الوقت الحالي ، هناك رسم تخطيطي يسمح لك بتعديل حاجز الحساسية (دبوس 7 دعوات +1 للحاجز ، دبوس 8-1 للحاجز). .
استخدم Arduino حول mini 5v و 16 MHz و ATmega168 والعرض. بجانب المقياس يوجد محول SD صغير


كما سبق ذكره ، 1602 تكلف 86 روبل ، ProMini - 82 روبل. إذا كنت ترغب في ذلك ، يمكنك بشكل عام أخذ ATmega168 عارية ، ووضع لوحة لها وملء الرسم مباشرة فيه.وهكذا ، على سبيل المثال ، قمت بتثبيت أمي على لوحة MD باستخدام الموصل. تُظهر الصورة قابس أردوينو المكون من 6 سنون ، والذي تم من خلاله سكب الرسومات مباشرة على اللوحة.

رسم MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino

// A3 مدخلات تناظرية لفولتميتر
// A4 المدخلات التناظرية للإشارة
// 6- اختتام zook
// 9 - تردد الخرج 31200 هرتز
# تشمل
شاشات الكريستال السائل السائلة (12 ، 11 ، 5 ، 4 ، 3 ، 2) ؛
                                       
  بايت z1 [8] = {// رمز البطارية
  0b01100 ، 0b11110 ، 0b11110 ، 0b11110 ، 0b11110 ، 0b11110 ، 0b11110} ؛
 
 عدد صحيح = 0 ؛ // متغير لتخزين قيمة مستوى المقياس
 int voltag = 0 ؛ // متغير لتخزين قيمة الجهد
 int noll = 0 ؛ // متغير لتخزين قيمة نقطة المنتصف
   #defined NUM_SAMPLES 10 // 10 عينات تناظرية لقراءتها في ثانية واحدة
   عدد صحيح = 0 ؛ // مجموع العينات المأخوذة
   int شمس = 0 ؛ // نفس الشيء ، ولكن مقسومًا على 10
   char غير موقعة sample_count = 0 ؛ // رقم العينة الحالي مع
   تعويم الجهد = 0.0 ؛ // الجهد المحسوب
   const int button1 = 7 ؛ // حاجز الزائد
   const int button2 = 8 ؛ // زر حاجز ناقص
   int i = 5 ؛ // حاجز
   
إعداد باطل () {
     lcd.begin (16 ، 2) ؛ // عرض التهيئة
     lcd.setCursor (1، 0) ؛
     lcd.setCursor (10، 1) ؛
     lcd.print ("Rx-Tx") ؛
     تأخير (3000) ؛
     lcd.clear () ؛
     
     TCCR1A = TCCR1A & أمبير ؛ 0xe0 | 2 ؛
     TCCR1B = TCCR1B & أمبير ؛ 0xe0 | 0x09 ؛
     analogWrite (9 ، 126) ؛ // عند الطرف 10 PWM = 50٪ f = 31200Hz
     
     lcd.createChar (1، z1) ؛
     }}
     
حلقة فارغة () {
     int buttonState1 = HIGH ؛ // حالة الزر واحدة
     int buttonState2 = HIGH ؛ // حالة زرّين
   sample_count = 0 ؛ // إعادة تعيين كفاف عدد الإضافات
   المجموع = 0 ؛ // إعادة تعيين مجموع 10 إضافات
   بينما (sample_count & lt؛ NUM_SAMPLES) {
   sum + = analogRead (A4) ؛ // يضاف القياس التالي إلى المجموع
   sample_count ++ ؛ // تمت إضافة الوحدة إلى رقم القياس
   sun = sum / 10؛} // أوجد متوسط ​​القيمة من 10 قياسات
   
   noll = analogRead (A3) / 2 ؛ // قوة نقطة المنتصف
   تعويم الجهد = خريطة (analogRead (A3)، 0،1023،0،1500) /100.0 ؛
                                        // الفولتميتر مدمج عند الإدخال A3
   if (sun & gt؛ = noll + i) {countleds = map (sun، noll + i، noll * 2 - 250، 9، 14) ؛
                                        // إذا كانت النتيجة المستلمة على الجزء 9-15 من المقياس
    نغمة (6 ، العد التنازلي * 100) ؛}
   if (sun & lt؛ = noll - i) {countleds = map (sun، 116، noll - i، 0، 7) ؛
                                        // إذا كانت النتيجة الناتجة هي 0-7 قطعة من المقياس
    نغمة (6 ، العد التنازلي * 50) ؛ }}
     if (sun & lt؛ noll & amp؛ & amp؛ sun & gt؛ = noll - (i-1)) {countleds = 7؛
    noTone (6) ؛ } // islet of ZERO ZERO (7 قطعة)
     إذا (sun & gt؛ noll & amp؛ & amp؛ sun & lt؛ = noll + (i-1)) {countleds = 8؛
    noTone (6) ؛ } // جزيرة مقياس صفر افتراضي (8 أجزاء)

   
    {lcd.setCursor (countleds، 0) ؛ // عيّن المؤشر على عمود العد ، السطر 0
    lcd.print ("\ xff") ؛ // أيقونة معبئة
    lcd.setCursor (0، 1) ؛ // الانتقال إلى 2 صف ، العمود 0
    lcd.print (char (1)) ؛ // إشارة رمز البطارية
    lcd.setCursor (1، 1) ؛ // الانتقال إلى مؤشر الجهد
    lcd.print (الجهد) ؛ // الجهد
    lcd.setCursor (7، 0)؛ // الصف الثامن العمود الأول
    if (sun & lt؛ noll) {lcd.print ("{")؛} // print
    lcd.setCursor (8، 0) ؛ // الصف التاسع العمود الأول
    if (sun & gt؛ noll) {lcd.print ("}")؛} // print
    lcd.setCursor (7، 1) ؛
    lcd.print ("B =") ؛
    lcd.setCursor (9، 1) ؛ // 11 عمود الصف الثاني
    lcd.print (i) ؛ // حاجز
    lcd.setCursor (13، 1) ؛ // الصف الثالث عشر العمود الثاني
    lcd.print (شمس) ؛ // اطبع متوسط ​​قيمة ADC
    تأخير (100) ؛ // انتظر
    
  buttonState1 = قراءة رقمية (button1) ؛ // قراءة الزر 1 الحالة
  buttonState2 = قراءة رقمية (button2) ؛ // حالة قراءة الزر 2
  if (buttonState1 == LOW) {i = i + 1 ؛ تأخير (50) ؛}
                                        // عند الضغط على الزر ، ينمو الحاجز بمقدار 1. Delay 50
  if (buttonState2 == LOW) {i = i - 1؛ تأخير (50) ؛}
                                        // عند الضغط على الزر ، ينخفض ​​الحاجز بمقدار 1. تأخير 50
  if (i & lt؛ 1) {i = 1؛} // الحد السفلي للجدار
  إذا (i & gt؛ 38) {i = 38؛} // الحد العلوي للحاجز
 
 lcd.clear () ؛
    }}
}}

لم تستخدم السيارة ، وقد ترك آخر عنصرين من TL074 خاملاً. ولكن على الدارة واللوحة هم. قد ترغب في جعلهم في حالة عمل بعد ذلك بقليل. أعتقد أنني حققت هدفي. تعمل وحدة العرض بشكل رائع. كل شيء آخر يعتمد على MD.
9.8
10
10

أضف تعليقًا

    • ابتسميبتسمxaxaحسنًالا أعرفياهونيا
      رئيسهالصفرأحمقنعمنعم نعمعدوانيسر
      آسفارقصرقص 2رقص 3العفومساعدةالمشروبات
      توقفالأصدقاءجيدجيدصفارة الحكمإغماءلسان
      دخانالتصفيقصرخةيعلنمشتقعدم الإشارةتنزيل
      الحرارةغاضبتضحك 1mdaاجتماعالمسكسلبي
      not_iالفشارمعاقبةاقرأتخويفيخيفبحث
      ساخرشكرا لكهذاtoclclumnikحادتوافق
      سيءالنحلblack_eyeblum3استحىتباهىالملل
      للرقابةإرضاءسر 2تهددانتصاريونظارة شمس
      صدمةتنفسههههساداهلا وسهلاكروتويya_za
      ya_dobryiالمساعدne_huliganne_othodiحمىحظرقريب
24 تعليق
المؤلف
بفضل puteec FU! طلبت ذلك من المرة الثانية. خيطت من خلال Arduino uno. اختفت المشكلة بعد تحديث محمل الإقلاع. يهتم الآن بكيفية تكوين المزيد.
puteec fu
أي أردوينو مناسب لـ atmega168 ، atmega328. حول نانو هذا مع موصل USB إذا لم يكن مخطئا. خياطة في Arduino ide من أمثلة رسم Blink (المصابيح الوامضة على دبوس 13 ، يتم تثبيت LED على اللوحة). تأكد من أنك تستخدم المنفذ الصحيح ، تم تحديد اللوحة بشكل صحيح ، تم تحديد المعالج على اللوحة بشكل صحيح ، تم تحديد تردد الكوارتز على اللوحة بشكل صحيح ، تم تحديد طريقة البرنامج الثابت (μ2) بشكل صحيح.
حدث خطأ.
قم بإنشاء ملف جديد في Arduino ، انسخ الرسم من هنا إلى رسم جديد ونظيف وسيعمل.ولكن أولاً ، اجعل LED على لوحة Arduino يومض بمثال وامض قياسي. ثم انتقل.
اشتريت Arduino p nano فقط على معالج Atmega328. لقد راجعت مجموعة من مقاطع الفيديو والمنتديات ... قالوا أنه يجب أن يأتي .... ولكن بعد ذلك لا تومض المشاعر .... يعطي # تتضمن توقع "FILENAME" أو . هل واجه أي شخص هذا؟
المؤلف
رسم تخطيطي يعمل مع هذا المنتدى. ما هي المكونات بالضبط؟
إذا قمت بصب الرسم الأخير ، فلا يمكن تثبيت جميع التفاصيل المتعلقة بـ D3.3 و D3.4 وكذلك هم أنفسهم. على لحام الحديد هناك إعادة رسم حول هذا الموضوع
انجي 888
مرحبًا. هذا الموضوع مهتم جدا اريد تجميع الجهاز. لقد صنعت لوح لحام من الحديد بعيدًا ... ثم علقت. حيث أن هناك الكثير من الخلافات بين المجلس والدائرة. بدأت بمقارنة منتداك ... هذا فرق كبير. ولكن الخلط مع تسخير اردوينو.
أطلب مساعدة الناس المطلعين.
المؤلف
نفس الشيء بالنسبة للمعادن الأخرى. يعتمد عمق الكشف على منطقة الهدف. كلما كان أعمق.
ضيف يوجين
ما هي حدود الكشف عن الأشياء؟ الذهب والألمنيوم والنحاس.
ضيف الإسكندر
ماذا تفعل الآن ، لأنه لا يزال هناك حاجز شوتكي؟
المؤلف
جيد هنا! حول حتى أصغر قيمة غير وارد! شكرا للتوضيح.
اقتباس: puteec_80
وسيفهم الناس بشكل أسرع وبديهية ما أتحدث عنه.
يمكنك الاستمرار في البقاء في هذا الخطأ. ((سيكون الأشخاص المتعلمون تقنيًا في حالة خسارة طفيفة.
الحاجب زوج.
1. عقبة (نوع من الجدار ، شعاع عرضي) في الطريق.
2. سياج ، سياج.

عتبة ، عتبة ، زوج.
1. في العلم والتكنولوجيا ، يطلق على العتبة القيمة الأصغر ، ودرجة ظهور شيء ما.
عتبة حساسية الجهاز. | عتبة السمع. | عتبة الألم. | يتم تشغيل المستشعر عند تجاوز عتبة درجة الحرارة المحددة.
ابتسم
المؤلف
دعونا نبقى مع وحدتنا. سأكتب "زيادة الحاجز بمقدار وحدة واحدة" و "كانت حساسية المتلقي 5 ميكرو فولت." وأنت تكتب "زيادة عتبة التشغيل بوحدة واحدة" و "عتبة حساسية المتلقي .." علاوة على ذلك ، سيفهم الناس بشكل أسرع وبديهي ما أتحدث عنه.
وأشرح في هذا المثال. لا يوجد حد دقيق ، لأنه لا يوجد مقياس مرجعي واضح. هناك نوع من الفرقة العائمة انقطاع من إشارة عائمة. لذا ، يبدو لي أن تعريف الحاجز أكثر ملاءمة بكثير لهذا الشريط "العائم" منه للعتبة.
حجة لا طائل منها وغباء. هل لديك اي سؤال؟
اقتباس: puteec_80
ما هي العتبات الدنيا والعليا؟
ربما لا تتطابق معاني الكلمات المترجمة أو لا تتطابق قليلاً. لكنهم يصفون العملية بشكل مثالي ويدخلون تدريجياً في العامية.
بالضبط ما هي العتبة. عتبة الرد في قضيتك. يرجى توضيح كيف يصف "الحاجز" العملية.
بالنسبة للانضمام إلى العامية - الآن هناك الكثير من أنواع سوء الفهم هناك. ((
المؤلف
في هذه الحالة ، ما زلت أميل إلى استخدام كلمة "حاجز" ، لأن إنه الحاجز الذي تم تعيينه في نص البرنامج ، فقط لا يقع في نطاقه ، يعتبر المتحكم الدقيق الإشارة مفيدة. وهو الحاجز لأن له قيمتان - الحد الأعلى والسفلي للتدخل ، أي تحدث العملية فوق الحد "العلوي" وتحت الحد "السفلي" للجدار على مقياس ADC. ومع ذلك ، أنت تعرف أفضل. ما هي العتبات الدنيا والعليا؟
ربما لا تتطابق معاني الكلمات المترجمة أو لا تتطابق قليلاً. لكنهم يصفون العملية بشكل مثالي ويدخلون تدريجياً في العامية.
بالمناسبة. الحساسية والجدار هما شيئان مختلفان تمامًا.
نعمتتقاطع. لكن ليس أكثر.
اقتباس: puteec_80
في MD الأجنبية ، تقول القائمة "Barier".

قد أفاجئك ، لكن العديد من الكلمات الإنجليزية التي تشبه كلماتنا لها معنى مختلف ، وأحيانًا قريبة ، وأحيانًا لا. ابحث عن الكلمات "أصدقاء المترجم الكاذب".
الآن بشكل أساسي. بالروسية تقني التوثيق لا ببساطة ليس هناك مثل هذه العبارة "حاجز الحساسية" - وهذا كل شيء! هناك "عتبة الحساسية" ، في بعض الحالات يمكن للمرء أن يقول "حد الحساسية" ، ولكن ليس "حاجز الحساسية". ربما يتم استخدامه في بعض فروع المعرفة الأخرى ، ولكن ليس في الإلكترونيات.
المؤلف
حسنًا ، هذا يعني أن جميع المهندسين الأجانب يقفزون فوق عصا على الطريق. في القائمة الأجنبية MD ، تقول القائمة "Barier" أيها الرفيق إيفان ، أنت تسقط في عيني بمثل هذه العبث الصغير! أين تعليقاتكم على الأسس الموضوعية؟ وبعد ذلك عليك التصفيق على جبينك؟ كنت تفسد لي في كثير من الأحيان معاقبة
الفرق كبير: العتبة مصطلح تقني ، الحاجز هو "عصا عبر الطريق".
المؤلف
ربما. لكني لا أرى الفرق.
ربما ليس "حاجزًا" ، بل عتبة؟ ؛)
المؤلف
الرسم البياني لا يظهر أزرار ضبط الحاجز. وهي متصلة بالدبابيس 7 و 8 من Arduino. يتم سحب كل منها بمقاومة 10 كيلو إلى الزائد ، ويغلق عند الضغط على الكتلة.
المؤلف
حلقة فارغة () {
int buttonState1 = HIGH ؛ // حالة الزر واحدة
int buttonState2 = HIGH ؛ // حالة زرّين

int وعاء = analogRead (A4) ؛ // مرشح للتغيير السريع للإشارة
sign = sign * (1-K) + وعاء * K ؛

noll = noll * (1-L) + sign * L ؛ // مرشح إشارة طويل المدى
// الفولتميتر مدمج عند الإدخال A3
تعويم الجهد = خريطة (analogRead (A3)، 0،1023،0،1500) /100.0 ؛

if (sign> = noll + i) {countleds = map (sign، noll + i، 1023، 9، 14) ؛
// إذا كانت النتيجة المستلمة على الجزء 9-15 من المقياس
نغمة (6 ، العد التنازلي * 100) ؛}
if (sign <= noll - i) {countleds = map (sign، 0، noll - i، 0، 7) ؛
// إذا كانت النتيجة الناتجة هي 0-7 قطعة من المقياس
نغمة (6 ، العد التنازلي * 50) ؛ }}
if (sign = noll - (i-1)) {countleds = 7 ؛
noTone (6) ؛ } // islet of ZERO ZERO (7 قطعة)
if (sign> noll && sign <= noll + (i-1)) {countleds = 8 ؛
noTone (6) ؛ } // جزيرة مقياس صفر افتراضي (8 أجزاء)


{lcd.setCursor (countleds، 0) ؛ // عيّن المؤشر على عمود العد ، السطر 0
lcd.print ("\ xff") ؛ // أيقونة معبئة
lcd.setCursor (0، 1) ؛ // الانتقال إلى 2 صف ، العمود 0
lcd.print (char (1)) ؛ // إشارة رمز البطارية
lcd.setCursor (1، 1) ؛ // الانتقال إلى مؤشر الجهد
lcd.print (الجهد) ؛ // الجهد
lcd.setCursor (7، 0)؛ // الصف الثامن العمود الأول
if (sign lcd.setCursor (8، 0) ؛ // الصف التاسع العمود الأول
if (sign> noll) {lcd.print ("}")؛} // print
lcd.setCursor (7، 1) ؛
lcd.print ("B =") ؛
lcd.setCursor (9، 1) ؛ // 11 عمود الصف الثاني
lcd.print (i) ؛ // حاجز
lcd.setCursor (13، 1) ؛ // الصف الثالث عشر العمود الثاني
lcd.print (علامة) ؛ // اطبع متوسط ​​قيمة ADC
تأخير (10) ؛ // انتظر

buttonState1 = قراءة رقمية (button1) ؛ // قراءة الزر 1 الحالة
buttonState2 = قراءة رقمية (button2) ؛ // حالة قراءة الزر 2
if (buttonState1 == LOW) {i = i + 1 ؛ تأخير (50) ؛}
// عند الضغط على الزر ، ينمو الحاجز بمقدار 1. Delay 50
if (buttonState2 == LOW) {i = i - 1؛ تأخير (50) ؛}
// عند الضغط على الزر ، ينخفض ​​الحاجز بمقدار 1. تأخير 50
if (i <1) {i = 1؛} // الحد السفلي للجدار
if (i> 38) {i = 38؛} // الحد العلوي للحاجز

lcd.clear () ؛
}
}
المؤلف
رسم جديد. تم تغيير خوارزمية الكشف عن الإشارة المفيدة. المخطط مبسط ، لا توجد عناصر D3.4 و D3.3 مع كل ارتباطاتها. إذا أخذت توقيعك الخاص ، فلا يمكن ببساطة تثبيت كل هذه التفاصيل. المزيد من الحساسية. لا إيجابيات كاذبة.
رسم:

// -3- مدخلات تناظرية لمقياس الفولتميتر.
// دخل تناظري A4 للإشارة ، اضبط بأقل إشارة على D3.2
// المقاوم R40 لقراءات ADC لحوالي 510.
// 6- اختتام zook
// 9 - تردد الخرج 31200 هرتز
# تشمل
شاشات الكريستال السائل السائلة (12 ، 11 ، 5 ، 4 ، 3 ، 2) ؛

بايت z1 [8] = {// رمز البطارية
0b01100 ، 0b11110 ، 0b11110 ، 0b11110 ، 0b11110 ، 0b11110 ، 0b11110} ؛
عدد صحيح = 0 ؛ // متغير لتخزين قيمة مستوى المقياس

تعويم الجهد = 0.0 ؛ // الجهد المحسوب
const int button1 = 7 ؛ // حاجز الزائد
const int button2 = 8 ؛ // زر حاجز ناقص
int i = 5 ؛ // حاجز
كون تطفو K = 0.1 ؛ // عامل التصفية لتتبع التغييرات السريعة (المعامل. الأصغر والأقوى)
كونت تطفو L = 0.07 ؛ // تغييرات تتبع عامل التصفية على مدى فترة طويلة
علامة تعويم = 0 ؛ // عامل التصفية
العوامة العائمة = 0 ؛

إعداد باطل () {
lcd.begin (16 ، 2) ؛ // عرض التهيئة
lcd.createChar (1، z1) ؛
pinMode (9 ، OUTPUT) ؛
pinMode (6 ، OUTPUT) ؛
TCCR1A = TCCR1A & 0xe0 | 2 ؛
TCCR1B = TCCR1B & 0xe0 | 0x09 ؛
analogWrite (9 ، 126) ؛ // عند الطرف 10 PWM = 50٪ f = 31200Hz
// في الواقع ، بالنسبة لـ PWM = 50٪ ، تحتاج إلى ضبط 220 حشوة على الأقل ، وفقًا لمنظار الذبذبات
// duin لا يستطيع التعامل معها. هذا ليس بالغ الأهمية.
}
المؤلف
أولئك الذين سيشاهدون الرسم. تم استبدال اللافتات> = و <= بمجموعات غريبة من & gt و & lt. لماذا لا اعرف. عندما قمت بتصحيح الأمر كان طبيعيا.

ننصحك بقراءة:

تسليمها للهاتف الذكي ...