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

محدد ضبط DIP باستخدام دبوس واحد: 4 خطوات
محدد ضبط DIP باستخدام دبوس واحد: 4 خطوات

فيديو: محدد ضبط DIP باستخدام دبوس واحد: 4 خطوات

فيديو: محدد ضبط DIP باستخدام دبوس واحد: 4 خطوات
فيديو: ضبط برنامج النقر التلقائي لمناديب #جاهز #مرسول # هنقرستيشن 2024, يوليو
Anonim
محدد ضبط DIP باستخدام دبوس واحد
محدد ضبط DIP باستخدام دبوس واحد

منذ فترة ، عملت في مشروع "صندوق الموسيقى" الذي كان بحاجة إلى الاختيار من بين ما يصل إلى 10 مقتطفات لحن مختلفة. كان الاختيار الطبيعي لاختيار نغمة معينة هو مفتاح غمس ذو 4 سنون لأن 4 مفاتيح توفر 24= 16 إعدادات مختلفة. ومع ذلك ، فإن تطبيق القوة الغاشمة لهذا النهج يتطلب 4 دبابيس للأجهزة ، واحدة لكل مفتاح. نظرًا لأنني كنت أخطط لاستخدام ATtiny85 للتطوير ، فإن فقدان 4 دبابيس كان كثيرًا جدًا. لحسن الحظ ، صادفت مقالًا يصف طريقة بارعة لاستخدام دبوس تناظري واحد للتعامل مع مدخلات التبديل المتعددة.

تستخدم تقنية التبديل المتعدد ؛ 1-input دارة Voltage Divider لتوفير قيمة عدد صحيح فريد لكل من مجموعات إعدادات التبديل الـ 16 الممكنة. ثم يتم استخدام هذه المجموعة المكونة من 16 معرفًا صحيحًا في برنامج التطبيق لربط إجراء ما بإعداد.

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

الخطوة 1: الأجهزة المطلوبة

الأجهزة المطلوبة
الأجهزة المطلوبة

يؤدي استخدام UNO كنظام أساسي للتنفيذ إلى تقليل عدد مكونات الأجهزة المطلوبة. يتطلب تنفيذ طريقة الإدخال متعدد المفاتيح فقط مفتاح غمس ذو 4 سنون ، والمقاومات الخمسة المستخدمة لمقسم الجهد ، وسلك التوصيل للتوصيلات. تتم إضافة جرس بيزو إلى التكوين لتنفيذ محدد نغمات صندوق الموسيقى. اختياريًا ، اعتمادًا على نوع مفتاح الغمس المستخدم ، من المفيد استخدام مقبس 2x4 8 سنون لتوصيل مفتاح الغمس بلوحة التجارب حيث يبدو أن دبابيس مفتاح الغمس القياسية مصنوعة من أجل اللحام بلوحة الأداء التي لا يتم توصيلها مباشرة بلوح التجارب. يعمل المقبس على تثبيت وصلات مفتاح الانحدار ويمنع رفع المفتاح بسهولة عند ضبط مفاتيح التبديل.

اسم المصدر المحتمل كيف تستخدم
مفتاح غمس ذو 4 سنون اختيار اللحن
مقبس 2x4 دبوس (اختياري) أمازون لا تمسك المنشورات الموجودة في معظم مفاتيح الانحدار المفتاح جيدًا في اللوح. يساعد المقبس على جعل الاتصال أكثر صلابة. البديل هو العثور على مفتاح غمس مصنوع حقًا لاستخدام اللوح مع دبابيس IC العادية.

المقاومات:

  • 10 كيلو × 2
  • 20 ألف
  • 40 ألف
  • 80 ألف
تنفيذ مقسم الجهد
الجرس بيزو السلبي أمازون قم بتشغيل اللحن كما يحركه التطبيق عبر وظيفة نغمة Arduino

الخطوة 2: شرح طريقة التبديل المتعدد

شرح طريقة التبديل المتعدد
شرح طريقة التبديل المتعدد

يناقش هذا القسم المفاهيم الأساسية لطريقة التبديل المتعدد ويطور المعادلات المطلوبة للحساب المستقل للمعرفات الفريدة لكل من التكوينات الـ 16 المحتملة لإعدادات التبديل. يمكن بعد ذلك استخدام هذه المعرفات في برنامج تطبيق لربط تكوين المحول بإجراء. على سبيل المثال ، قد ترغب في الإعداد - تشغيل 1 ، إيقاف تشغيل 2 ، إيقاف تشغيل 3 ، إيقاف تشغيل 4 (1 ، 0 ، 0 ، 0) - للعب Amazing Grace و (0 ، 1 ، 0 ، 0) للعب أسد ينام الليلة. للإيجاز والإيجاز ، تتم الإشارة إلى معرفات التكوين كمقارنات في باقي المستند.

صورة
صورة

المفهوم الأساسي لطريقة التبديل المتعدد هو دائرة مقسم الجهد التي تتكون من مقاومات متسلسلة متصلة بجهد دخل. يتم توصيل سلك جهد الخرج بين المقاومات ، R1 و ر2، كما هو مبين أعلاه. يتم حساب جهد خرج المقسم على أنه جهد الدخل مضروبًا في نسبة المقاوم R2 لمجموع R.1 و ر2 (المعادلة 1). تكون هذه النسبة دائمًا أقل من 1 ، لذا يكون جهد الخرج دائمًا أصغر من جهد الدخل.

كما هو موضح في مخطط التصميم أعلاه ، تم تكوين المفتاح المتعدد كمقسم جهد مع R2 ثابت و R.1 يساوي المقاومة المركبة / المكافئة لمقاومات التبديل 4 dip. قيمة R.1 يعتمد على مفاتيح الانحدار التي يتم تشغيلها ، وبالتالي تساهم في المقاومة المركبة. نظرًا لأن مقاومات مفتاح الانحدار متوازية ، يتم تحديد معادلة حساب المقاومة المكافئة من حيث المقلوبات لمقاومات المكون. بالنسبة لتكويننا وحالة تشغيل جميع المفاتيح ، تصبح المعادلة

1 / ص1 = 1/80000 + 1/40000 + 1/20000 + 1/10000

إعطاء R1 = 5333.33 فولت. لحساب حقيقة أن معظم الإعدادات بها مفتاح واحد على الأقل مغلق ، يتم استخدام حالة التبديل كمضاعف:

1 / ص1 = ق1* 1/80000 + ثانية2* 1/40000 + ثانية3* 1/20000 + ثانية4*1/10000 (2)

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

RATIO = R.2/ (ر1+ ر2) = 10000/(5333.33+10000) =.6522

الخطوة الأخيرة في حساب قيمة المقارنة المتوقعة هي مضاعفة RATIO بمقدار 1023 لمحاكاة تأثير دالة analogRead. معرّف الحالة التي تكون فيها جميع المفاتيح قيد التشغيل

المقارنة15 = 1023*.6522 = 667

أصبحت جميع المعادلات جاهزة الآن لحساب المعرّفات لـ 16 إعداد تحويل ممكن. كي تختصر:

  1. ص1 يتم حسابها باستخدام المعادلة 2
  2. ص1 و ر2 تستخدم لحساب نسبة المقاومة المصاحبة
  3. يتم ضرب RATIO في 1023 للحصول على قيمة المقارنة
  4. اختياريًا ، يمكن أيضًا حساب جهد الخرج المتوقع على أنه RATIO * Vin

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

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

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

//-------------------------------------------------------------------------------------

// برنامج تجريبي لقراءة ناتج مقسم الجهد واستخدامه لتحديد // تكوين مفتاح dip الحالي من خلال النظر إلى قيمة الإخراج لأعلى في مجموعة من // قيم المقارنة لكل إعداد ممكن. يمكن // إما الحصول على القيم في صفيف البحث من تشغيل سابق للتكوين أو من خلال الحساب // بناءً على المعادلات الأساسية. // ------------------------------------------------ -------------------------------------- مقارن int [16] = {0، 111، 203 ، 276 ، 339 ، 393 ، 434 ، 478 ، 510 ، 542 ، 567 ، 590 ، 614 ، 632 ، 651 ، 667} ؛ // تحديد متغيرات المعالجة int dipPin = A0 ؛ // دبوس تناظري لإدخال مقسم الجهد int dipIn = 0 ؛ // يحمل إخراج الجهد المقسم المترجم عن طريق analogRead int count = 0 ؛ // loop counter int epsilon = 7 ؛ // فاصل المقارنة نصف العرض المنطقي dipFound = خطأ ؛ // صحيح إذا تم العثور على ناتج مقسم الجهد الحالي في إعداد فراغ جدول البحث () {pinMode (dipPin ، INPUT) ؛ // تكوين دبوس مقسم الجهد باعتباره INPUT Serial.begin (9600) ؛ // تمكين الاتصال التسلسلي} void loop () {delay (3000)؛ // منع التمرير السريع للإخراج // تهيئة معاملات البحث count = 0 ؛ dipFound = خطأ ؛ // قراءة وتوثيق الجهد الناتج الحالي dipIn = analogRead (dipPin) ؛ Serial.print ("إخراج مقسم") ؛ Serial.print (dipIn) ؛ // قائمة مقارنة البحث للقيمة الحالية بينما ((العد <16) && (! dipFound)) {if (abs (dipIn - Comparator [count]) <= epsilon) {// found it dipFound = true؛ Serial.print ("موجود في الإدخال") ؛ Serial.print (العد) ؛ Serial.println ("القيمة" + سلسلة (المقارنة [العدد])) ؛ استراحة؛ } count ++؛ } if (! dipFound) {// value not in table؛ لا ينبغي أن يحدث Serial.println ("OOPS! غير موجود ؛ أفضل استدعاء Ghost Busters") ؛ }}

الخطوة 3: جدول بيانات المقارنة

صورة
صورة

يتم توفير حسابات قيم المقارنة الـ 16 في جدول البيانات الموضح أعلاه. يتوفر ملف Excel المصاحب للتنزيل في الجزء السفلي من هذا القسم.

تسجل أعمدة جدول البيانات A-D قيم مقاومة التبديل dip وإعدادات التبديل الـ 16 الممكنة. يرجى ملاحظة أن مفتاح DIP للأجهزة الموضح في مخطط التصميم المبهر مرقم فعليًا من اليسار إلى اليمين بدلاً من الترقيم من اليمين إلى اليسار الموضح في جدول البيانات. لقد وجدت هذا محيرًا إلى حد ما ولكن البديل لا يضع التكوين "1" (0 ، 0 ، 0 ، 1) في أول القائمة. يستخدم العمود E الصيغة 2 من القسم السابق لحساب المقاومة المكافئة لمقسم الجهد R1 من أجل الإعداد. يستخدم العمود F هذه النتيجة لحساب نسبة المقاومة المصاحبة ، وأخيرًا ، يضرب العمود G النسبة بالقيمة القصوى analogRead (1023) للحصول على قيمة المقارنة المتوقعة. يحتوي العمودان الأخيران على القيم الفعلية من تشغيل البرنامج التجريبي جنبًا إلى جنب مع الاختلافات بين القيم المتوقعة والفعلية.

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

الخطوة 4: قم بتشغيل اللحن

اعزف لحن
اعزف لحن

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

توجد مقتطفات النغمات المتاحة في ملف الرأس Tunes.h ، جنبًا إلى جنب مع تعريف هياكل الدعم الضرورية. يتم تعريف كل نغمة على أنها مصفوفة من الهياكل ذات الصلة بالملاحظة التي تحتوي على تردد النغمة ومدتها. ترد ترددات النوتة الموسيقية موجودة في ملف رأس منفصل ، Pitches.h. يتوفر البرنامج وملفات الرأس للتنزيل في نهاية هذا القسم. يجب وضع الملفات الثلاثة في نفس الدليل.

يتم الاختيار وتحديد الهوية على النحو التالي:

  1. يقوم "المستخدم" بتعيين مفاتيح التبديل في التكوين المرتبط بالنغمة المطلوبة
  2. في كل دورة حلقة برنامج ، يتم الحصول على المعرف الخاص بإعداد مفتاح dip الحالي عبر analogRead
  3. تتم مقارنة معرف التكوين الخطوة 2 مع كل مقارنة في قائمة النغمات المتاحة
  4. إذا تم العثور على تطابق ، يتم استدعاء روتين playTune بالمعلومات المطلوبة للوصول إلى قائمة نغمات النغمات

    باستخدام وظيفة نغمة Arduino ، يتم تشغيل كل نغمة من خلال الجرس

  5. إذا لم يتم العثور على تطابق ، لا يتم اتخاذ أي إجراء
  6. كرر 1-5

تظهر إعدادات مفتاح DIP للألحان المتوفرة في الجدول أدناه حيث 1 يعني أن المفتاح قيد التشغيل ، 0 إيقاف. تذكر أن الطريقة التي يتم بها توجيه مفتاح dip تضع المفتاح 1 في أقصى موضع لليسار (الذي يرتبط بمقاوم 80K).

اسم التبديل 1 التبديل 2 التبديل 3 التبديل 4
داني بوي 1 0 0 0
الدب الصغير 0 1 0 0
أسد ينام الليلة 1 1 0 0
لا أحد يعرف المشكلة 0 0 1 0
نعمة مذهلة 0 0 0 1
مساحة فارغة 1 0 0 1
الطائر المحاكي 1 0 1 1

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

موصى به: