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

روبوكار أحمر يعمل بالتحكم عن بعد باستخدام AVR (ATMEGA32) MCU: 5 خطوات
روبوكار أحمر يعمل بالتحكم عن بعد باستخدام AVR (ATMEGA32) MCU: 5 خطوات

فيديو: روبوكار أحمر يعمل بالتحكم عن بعد باستخدام AVR (ATMEGA32) MCU: 5 خطوات

فيديو: روبوكار أحمر يعمل بالتحكم عن بعد باستخدام AVR (ATMEGA32) MCU: 5 خطوات
فيديو: شرح اساسيات برنامج الفوتوشوب Photoshop CS5 الدرس الرابع ب 2024, شهر نوفمبر
Anonim
روبوكار أحمر يعمل بالتحكم عن بعد باستخدام AVR (ATMEGA32) MCU
روبوكار أحمر يعمل بالتحكم عن بعد باستخدام AVR (ATMEGA32) MCU

يصف المشروع الحالي تصميم وتنفيذ RoboCar يعمل بالأشعة تحت الحمراء (IR) يتم التحكم فيه عن بعد والذي يمكن استخدامه في العديد من تطبيقات التحكم الآلي غير المأهولة. لقد صممت RoboCar بالتحكم عن بعد (حركة يسار - يمين / أمامي - خلفي). يعتمد النظام بأكمله على متحكم (Atmega32) يجعل نظام التحكم أكثر ذكاءً وسهل التعديل للتطبيقات الأخرى. إنها تمكن المستخدم من تشغيل RoboCar أو التحكم فيها وتشغيل مفتاح الطاقة الرئيسي من على بعد حوالي 5 أمتار.

الكلمات الأساسية: وحدة فك ترميز الأشعة تحت الحمراء ، متحكم AVR (Atmega32) ، وحدة تحكم عن بعد في التلفزيون ، اتصال لاسلكي

_

الخطوة 1: التواصل الداخلي

الاتصالات البينية
الاتصالات البينية

مبدأ الاتصال بالأشعة تحت الحمراء:

أ) انتقال الأشعة تحت الحمراء

جهاز إرسال IR LED داخل دائرته ، والذي يبعث ضوء الأشعة تحت الحمراء لكل نبضة كهربائية تعطى له. يتم إنشاء هذه النبضة عند الضغط على زر في جهاز التحكم عن بُعد ، وبالتالي إكمال الدائرة ، مما يوفر تحيزًا لمصباح LED. يصدر مؤشر LED عند كونه متحيزًا ضوءًا بطول موجة 940 نانومتر كسلسلة من النبضات ، تتوافق مع الزر المضغوط. ومع ذلك ، نظرًا لوجود العديد من المصادر الأخرى لضوء الأشعة تحت الحمراء جنبًا إلى جنب مع IR LED مثل البشر ، والمصابيح الكهربائية ، والشمس ، وما إلى ذلك ، يمكن أن تتداخل المعلومات المرسلة. حل هذه المشكلة هو التعديل. يتم تشكيل الإشارة المرسلة باستخدام تردد الموجة الحاملة 38 كيلو هرتز (أو أي تردد آخر بين 36 إلى 46 كيلو هرتز). تم تصميم IR LED للتأرجح عند هذا التردد طوال المدة الزمنية للنبض. يتم تعديل المعلومات أو الإشارات الضوئية بعرض النبضة وهي مضمنة في تردد 38 كيلو هرتز. يشير انتقال الأشعة تحت الحمراء إلى الطاقة الموجودة في منطقة طيف الإشعاع الكهرومغناطيسي بأطوال موجية أطول من تلك الموجودة في الضوء المرئي ، ولكنها أقصر من موجات الراديو. بالمقابل ، ترددات الأشعة تحت الحمراء أعلى من ترددات الموجات الدقيقة ، ولكنها أقل من تلك الخاصة بالضوء المرئي. يقسم العلماء طيف الأشعة تحت الحمراء (IR) إلى ثلاث مناطق. يتم تحديد الأطوال الموجية بالميكرونات (يرمز لها µ ، حيث 1 µ = 10-6 متر) أو نانومتر (مختصر نانومتر ، حيث 1 نانومتر = 10-9 متر = 0.001 5). يحتوي النطاق القريب من الأشعة تحت الحمراء على طاقة في نطاق الأطوال الموجية الأقرب إلى المرئي ، من حوالي 0.750 إلى 1.300 5 (750 إلى 1300 نانومتر). يتكون نطاق الأشعة تحت الحمراء الوسيطة (ويسمى أيضًا نطاق الأشعة تحت الحمراء الأوسط) من طاقة في النطاق من 1.300 إلى 3.000 5 (من 1300 إلى 3000 نانومتر). يمتد نطاق الأشعة تحت الحمراء البعيدة من 2.000 إلى 14.000 5 (3000 نانومتر إلى 1.4000 × 104 نانومتر).

ب) استقبال الأشعة تحت الحمراء

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

تطبيقات IR:

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

· صناديق تحكم عن بعد للترفيه المنزلي

· لاسلكي (شبكات المنطقة المحلية)

· الروابط بين أجهزة الكمبيوتر المحمولة وأجهزة الكمبيوتر المكتبية

· مودم لاسلكي

· أجهزة كشف التسلل

· أجهزة كشف الحركة

· مجسات الحريق

· أنظمة الرؤية الليلية

· معدات التشخيص الطبي

· أنظمة توجيه الصواريخ

· أجهزة المراقبة الجيولوجية

يُشار أحيانًا إلى نقل بيانات الأشعة تحت الحمراء من جهاز إلى آخر باسم الإرسال.

الخطوة 2: مستشعر الأشعة تحت الحمراء وبروتوكول NEC Fromat

مستشعر الأشعة تحت الحمراء وبروتوكول NEC Fromat
مستشعر الأشعة تحت الحمراء وبروتوكول NEC Fromat
مستشعر الأشعة تحت الحمراء وبروتوكول NEC Fromat
مستشعر الأشعة تحت الحمراء وبروتوكول NEC Fromat
مستشعر الأشعة تحت الحمراء وبروتوكول NEC Fromat
مستشعر الأشعة تحت الحمراء وبروتوكول NEC Fromat
مستشعر الأشعة تحت الحمراء وبروتوكول NEC Fromat
مستشعر الأشعة تحت الحمراء وبروتوكول NEC Fromat

مستشعرات الأشعة تحت الحمراء (الشكل 1)

TSOP1738 ، SFH-5110-38 (38 كيلو هرتز)

ميزات مستشعرات TSOP:

  • المضخم وكاشف الصور كلاهما في عبوة واحدة
  • مرشح داخلي لتردد PCM
  • تدريع محسّن ضد اضطراب المجال الكهربائي
  • التوافق مع TTL و CMOS
  • الناتج نشط منخفض استهلاك الطاقة
  • مناعة عالية ضد الضوء المحيط
  • إمكانية نقل البيانات بشكل مستمر

بروتوكول NEC:

يستخدم بروتوكول نقل الأشعة تحت الحمراء من NEC تشفير مسافة النبضة لبتات الرسالة. يبلغ طول كل رشقة نبضة 562.5 μs ، بتردد موجة حاملة يبلغ 38 كيلو هرتز (26.3 μs). يتم إرسال البتات المنطقية على النحو التالي (الشكل 2):

  • منطقي '0' - نبضة نبضية 562.5 ثانية متبوعة بمساحة 562.5 مللي ثانية ، بإجمالي وقت إرسال يبلغ 1.125 مللي ثانية
  • منطقي '1' - انفجار نبضي 562.5 ثانية متبوعًا بمسافة 1.6875 مللي ثانية ، مع وقت إرسال إجمالي يبلغ 2.25 مللي ثانية

تتكون النبضة الحاملة من 21 دورة عند 38 كيلو هرتز. عادةً ما يكون للبقول نسبة علامة / مسافة تبلغ 1: 4 لتقليل الاستهلاك الحالي:

(تين. 3)

يبدأ كل تسلسل رمز بنبضة 9 مللي ثانية ، تُعرف باسم نبض AGC. يتبع ذلك صمت 4.5 مللي ثانية:

(الشكل 4)

تتكون البيانات بعد ذلك من 32 بت ، عنوان 16 بت متبوعًا بأمر 16 بت ، موضحًا بالترتيب الذي يتم إرساله به (من اليسار إلى اليمين):

(الشكل 5)

يتم إرسال البايتات الأربعة من بتات البيانات على الأقل في البداية. يوضح الشكل 1 تنسيق إطار إرسال NEC IR لعنوان 00h (00000000b) وأمر ADh (10101101b).

يلزم إجمالي 67.5 مللي ثانية لإرسال إطار رسالة. يحتاج إلى 27 مللي ثانية لإرسال 16 بت من العنوان (العنوان + معكوس) و 16 بت من الأمر (الأمر + معكوس).

(الشكل 6)

الوقت اللازم لإرسال الإطار:

تتطلب 16 بتًا للعنوان (العنوان + معكوسًا) 27 مللي ثانية لإرسال وقت ، وتتطلب 16 بت للأمر (الأمر + معكوس) أيضًا 27 مللي ثانية لإرسال وقت. لأن (العنوان + العنوان معكوس) أو (الأمر + عكس الأمر) سيحتوي دائمًا على 8 '0 و 8' 1 لذا (8 * 1.125 مللي ثانية) + (8 * 2.25 مللي ثانية) == 27 مللي ثانية. وفقًا لهذا الوقت الإجمالي المطلوب لإرسال الإطار هو (9 مللي ثانية + 4.5 مللي ثانية + 27 مللي ثانية + 27 مللي ثانية) = 67.5 مللي ثانية.

تكرار الرموز: إذا استمر الضغط على المفتاح الموجود على وحدة التحكم عن بُعد ، فسيتم إصدار رمز تكرار ، عادةً حوالي 40 مللي ثانية بعد اندفاع النبض الذي يشير إلى نهاية الرسالة. سيستمر إرسال رمز التكرار على فترات 108 مللي ثانية ، حتى يتم تحرير المفتاح أخيرًا. يتكون الكود المكرر مما يلي ، بالترتيب:

  • 9ms انفجر نبضي يؤدي
  • مساحة 2.25 مللي ثانية
  • دفقة نبضة بقيمة 562.5 درجة لتحديد نهاية الفراغ (ومن ثم نهاية كود التكرار المرسل).

(الشكل 7)

حساب التأخير (1 مللي ثانية):

تردد الساعة = 11.0592 ميجا هرتز

دورة الآلة = 12

تأخير = 1 مللي ثانية

TimerValue = 65536 - ((Delay * ClockFreq) / Machine Cycle) = 65536 - ((1ms * 11.0592Mhz) / 12)

= 65536-921 = 0xFC67

الخطوة 3: التحكم في محرك التيار المستمر باستخدام L293D

التحكم في محرك DC باستخدام L293D
التحكم في محرك DC باستخدام L293D

محرك بتيار مستمر

يحول محرك DC الطاقة الكهربائية إلى طاقة ميكانيكية يمكن استخدامها للقيام بالعديد من الأعمال المفيدة. يمكن أن تنتج حركة ميكانيكية مثل Go Forward / Backword لسيارة RoboCar الخاصة بي. تأتي محركات التيار المستمر في تصنيفات مختلفة مثل 6 فولت و 12 فولت. لها سلكان أو دبابيس. يمكننا عكس اتجاه الدوران عن طريق عكس قطبية المدخلات.

نحن هنا نفضل L293D حيث أن تصنيف 600mA جيد لقيادة محركات DC الصغيرة ويتم تضمين صمامات الحماية الثنائية في IC نفسه. وصف كل دبوس كما يلي: تمكين الدبابيس: هذه هي رقم التعريف الشخصي. رقم 1 ورقم التعريف الشخصي. 9. دبوس لا. 1 يستخدم لتمكين برنامج التشغيل Half-H 1 و 2. (جسر H على الجانب الأيسر). دبوس لا. 9 يستخدم لتمكين سائق الجسر H 3 و 4. (جسر H على الجانب الأيمن).

المفهوم بسيط ، إذا كنت ترغب في استخدام جسر H معين ، فيجب عليك إعطاء منطق عالي لمنافذ التمكين المقابلة جنبًا إلى جنب مع مصدر الطاقة إلى IC. يمكن أيضًا استخدام هذا الدبوس للتحكم في سرعة المحرك باستخدام تقنية PWM. VCC1 (دبوس 16): دبوس مزود الطاقة. قم بتوصيله بمصدر 5 فولت. VCC2 (دبوس 8): مزود الطاقة للمحرك. تطبيق + ve الجهد عليها حسب تصنيف المحرك. إذا كنت ترغب في قيادة محرك سيارتك بجهد 12 فولت ، فقم بتطبيق 12 فولت على هذا الدبوس.

من الممكن أيضًا تشغيل المحرك مباشرة على بطارية ، بخلاف تلك المستخدمة لتزويد الدائرة بالطاقة ، ما عليك سوى توصيل + طرفي من تلك البطارية بدبوس VCC2 وجعل GND لكلتا البطاريتين مشتركًا. (الحد الأقصى للجهد في هذا الدبوس هو 36 فولت وفقًا لورقة البيانات الخاصة به). GND (الدبابيس 4 ، 5 ، 12 ، 13): قم بتوصيلهم بـ GND المشترك للدائرة. المدخلات (الدبابيس 2 ، 7 ، 10 ، 15):

هذه عبارة عن دبابيس إدخال يتم من خلالها إعطاء إشارات التحكم بواسطة ميكروكنترولر أو دوائر / دوائر متكاملة أخرى. على سبيل المثال ، إذا قمنا بإعطاء المنطق 1 (5V) على الطرف 2 (إدخال محرك النصف الأول H) ، فسنحصل على جهد يساوي VCC2 على دبوس الإخراج المقابل لمحرك النصف الأول H أي رقم الدبوس. 3. وبالمثل بالنسبة للمنطق 0 (0V) على السن 2 ، يظهر 0V على السن 3. المخرجات (السن 3 ، 6 ، 11 ، 14): أطراف المخرجات. وفقًا لإشارة الإدخال ، تأتي إشارة خرج.

الحركات الحركية أ ب

-----------------------------------------------------------------------------------------

…………… التوقف: منخفض: منخفض

…… في اتجاه عقارب الساعة: منخفض: مرتفع

عكس اتجاه عقارب الساعة: مرتفع: منخفض

……………. التوقف: مرتفع: مرتفع

الخطوة 4: مخططات الدوائر الخاصة بسائق المحرك ومستشعر الأشعة تحت الحمراء

مخططات الدائرة لسائق المحرك ومستشعر الأشعة تحت الحمراء
مخططات الدائرة لسائق المحرك ومستشعر الأشعة تحت الحمراء
مخططات الدائرة لسائق المحرك ومستشعر الأشعة تحت الحمراء
مخططات الدائرة لسائق المحرك ومستشعر الأشعة تحت الحمراء
مخططات الدوائر لسائق المحرك ومستشعر الأشعة تحت الحمراء
مخططات الدوائر لسائق المحرك ومستشعر الأشعة تحت الحمراء

ATmega32 عبارة عن متحكم CMOS 8 بت منخفض الطاقة يعتمد على بنية RIS المحسنة AVR. من خلال تنفيذ تعليمات قوية في دورة ساعة واحدة ، يحقق ATmega32 مخرجات تقترب من 1 MIPS لكل MHz مما يسمح لمصمم النظام بتحسين استهلاك الطاقة مقابل سرعة المعالجة.

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

يوفر ATmega32 الميزات التالية:

  • 32 كيلوبايت من ذاكرة برنامج الفلاش القابلة للبرمجة داخل النظام مع إمكانات القراءة أثناء الكتابة ،
  • 1024 بايت EEPROM ، 2K بايت SRAM ،
  • 32 خطوط إدخال / إخراج للأغراض العامة ،
  • 32 سجل عمل للأغراض العامة ،
  • واجهة JTAG لـ Boundaryscan ،
  • دعم وبرمجة التصحيح على الرقاقة ، ثلاثة مؤقت / عدادات مرنة مع أوضاع المقارنة ، المقاطعات الداخلية والخارجية ، USART التسلسلي القابل للبرمجة ، واجهة تسلسلية ثنائية الأسلاك موجهة للبايت ، 8 قنوات ،
  • 10 بت ADC مع مرحلة إدخال تفاضلي اختيارية مع كسب قابل للبرمجة (حزمة TQFP فقط) ،
  • ساعة مراقبة قابلة للبرمجة مع مذبذب داخلي ،
  • منفذ تسلسلي SPI ، و
  • ستة أوضاع لتوفير الطاقة يمكن تحديدها بواسطة البرامج.

    • يوقف وضع الخمول وحدة المعالجة المركزية بينما يسمح لـ USART ،
    • واجهة ثنائية الأسلاك ، محول A / D ،
    • SRAM ،
    • الموقت / العدادات ،
    • منفذ SPI و
    • نظام المقاطعة لمواصلة العمل.
    • يحفظ وضع Power-down محتويات السجل ولكنه يجمد المذبذب ، مما يؤدي إلى تعطيل جميع وظائف الشريحة الأخرى حتى يتم إعادة تعيين المقاطعة الخارجية أو الأجهزة.
    • في وضع توفير الطاقة ، يستمر "المؤقت غير المتزامن" في العمل ، مما يسمح للمستخدم بالحفاظ على قاعدة مؤقت بينما يكون باقي الجهاز في وضع السكون.
    • يوقف وضع تقليل الضوضاء ADC وحدة المعالجة المركزية وجميع وحدات الإدخال / الإخراج باستثناء المؤقت غير المتزامن و ADC ، لتقليل ضوضاء التبديل أثناء تحويلات ADC
    • في وضع الاستعداد ، يعمل المذبذب البلوري / الرنان بينما يكون باقي الجهاز في وضع السكون. هذا يسمح ببدء سريع للغاية مع استهلاك منخفض للطاقة.
    • في وضع الاستعداد الموسع ، يستمر تشغيل كل من المذبذب الرئيسي والمؤقت غير المتزامن.

يتم إعطاء جميع الدوائر ذات الصلة هنا كما يتم إعطاء الدائرة الرئيسية (atmega32).

الخطوة 5: برامج Avr

برامج Avr
برامج Avr
برامج Avr
برامج Avr

1. بالنسبة إلى "جهاز الاستشعار عن بعد":

# تضمين # تضمين

# تضمين "remote.h"

// Globals متغير التوقيت غير الموقعة ؛ // مؤقت رئيسي ، يخزن الوقت في 10 us ، // تم التحديث بواسطة ISR (TIMER0_COMP) متغير غير موقّع char BitNo ؛ // موضع BIT التالي غير الموقعة char ByteNo ؛ // موضع البايت الحالي

متطاير غير موقعة char IrData [4] ؛ // أربعة بايت بيانات من Ir Packet // 2-Byte Address 2-Byte Data متطايرة غير موقعة char IrCmdQ [QMAX] ؛ // تم استلام الأمر النهائي (المخزن المؤقت)

حرف متقلب غير موقعة PrevCmd ؛ // يستخدم للتكرار

// المتغيرات المستخدمة لبدء التكرار فقط بعد الضغط على المفتاح لفترة معينة

تكرار الأحرف غير الموقعة المتقلبة ؛ // 1 = نعم 0 = لا يوجد char RCount غير متغير ؛ //تكرار العد

حرف متقلب QFront = -1 ، QEnd = -1 ؛

دولة شار غير موقعة متقلبة ؛ // حالة المتلقي

حافة شار متقلبة غير موقعة ؛ // حافة المقاطعة [RISING = 1 OR FALLING = 0]

توقف كثافة العمليات غير الموقعة المتقلبة ؛

/ *************************************************** *********************************************** / / * وظائف النجوم * / / ************************************************** ************************************************ /

RemoteInit باطل () {

شار أنا لـ (i = 0 ؛ i <4 ؛ i ++) IrData = 0 ؛

توقف = 0 ؛ الدولة = IR_VALIDATE_LEAD_HIGH ، الحافة = 0 ؛ كرر = 0 ؛

// إعداد Timer1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL ، // تعيين قيمة المقارنة

char GetRemoteCmd غير موقعة (char wait) {unsigned char cmd؛

إذا (انتظر) بينما (QFront == - 1) ؛ وإلا إذا كان (QFront == - 1) يعود (RC_NONE) ؛

cmd = IrCmdQ [QFront] ،

إذا (QFront == QEnd) QFront = QEnd = -1 ؛ else {if (QFront == (QMAX-1)) QFront = 0 ؛ آخر QFront ++ ؛ }

عودة cmd ؛

}

2. main ():

int main (void) {

uint8_t cmd = 0 ؛ DDRB = 0x08 ؛

DDRD = 0x80 ؛

DDRC = 0x0f ؛ PORTC = 0x00 ؛

while (1) // Infinite Loop to active IR-sensor {

cmd = GetRemoteCmd (1) ،

مفتاح (cmd) {

الحالة xx: {// BOT Moves forward // Ch + btn forwardmotor ()؛

استراحة؛ // كلا المحركين في الاتجاه الأمامي

}

………………………………………………….

………………………………………………….

………………………………………………….

الافتراضي: PORTC = 0x00 ؛ استراحة ؛ // توقف كل من المحركات اليمنى واليسرى}

}

} / * نهاية الرئيسي * /

……………………………………………………………………………………………………………………

// إنه نموذج أساسي ، لكن يمكنني استخدامه في وضع PWM.

//……………………………………………..استمتع……………………………………………………//

موصى به: