السادة أعضاء المنتدى,
كما وعدتكم بخصوص الأشعة تحت الحمراء , فى هذا الموضوع سنشرح إن شاء الله الجزء الأول وهو خاص بالإرسال و فهم طريقة عمل ريموت الأشعة تحت الحمراء. وعذرا للتأخير حيث أننى لا أكتفى بتشغيل الدائرة على Proteus وإنما أقوم ببناءها وتجربتها على أرض الواقع, بالذات فى هذا النوع من التطبيقات ( الأشعة تحت الحمراء واللاسلكى حيث أن التجربة على أرض الواقع قد تختلف عن برامج ال Simulation
رسالة للأخ مشرف المنتدى, إن رأيت أن هذا الموضوع هاما كما أعتقد فأرجو تثبيته لفترة لتعم الفائدة
ندخل مباشرة فى الموضوع , دعونى أحاول جمع الأفكار والعناوين الرئيسية:
1. شرح مبسط لشكل الموجة وهناك العديد من المواقع لمن يريد المزيد
2. كيفية قراءة الأكواد من الريموت كونترول
3. كيفية قياس ال Pulse Width أو عرض النبضة
4. كيفية كتابة برنامج الميكروسى لتوليد هذا الموجات
أولا: بخصوص الأشعة تحت الحمراء وشكل الموجات:
سأحاول التقليل من الكلام النظرى بقدر المستطاع حيث أن غالبية الأعضاء ممن يريدون عمل مشاريع من هذا النوع يفضلون الدوائر العملية وفهم الكود.
أود الإشارة إلى أن المقال الذى أرسله الأخ Robota جيد فعلا وبه أفكار جيدة لمن أراد توضيح أكثر
ياترى عندما أضغط على زر الريموت , ماذا يرسل ؟ وما شكل الموجة المرسلة وكيف أن مداه يصل لهذه المسافة باستخدام حجرين بطارية عاديين:
- الإشارات المرسلة من أى ريموت هى عبارة عن بيانات تسلسلية أو مجموعة من ال Bits يمكن أن يكون عددها كبير أو صغير كل شركة تقرر التصميم, فهى يمكن أن تبدأ من 12 كما هو الحال مع شركة Sony ويمكن أن تصل إلى أكثر من ذلك 32 أو 40 أو 60 بت.
- حتى الآن مفهوم أو كما يقول الإنجليز So Far So Good , هل ترسل هذه البيانات كما هى ؟ أى كأننى قمت بتوصيل ميكروكونترولر بليد أشعة تحت حمراء وأرسل مجموعة من البيانات؟ الإجابة لأ. لأن فى تطبيقات الأشعة تحت الحمراء لابد من عمل Modulation , وما معناه؟ , Modulation أو تعديل الموجة هو أن تولد موجة ذات تردد معين مثلا 40 كيلو هرتز كما هو الحال مع الأشعة تحت الحمراء فى تطبيقات الريموت, ثم تقوم بتعديل هذا الموجة باستخدام Square waves أو الموجات التى تعبر عن البيانات.
ببساطة : لما أريد أن أرسل إشارة منطقية واحد, معناها أن أرسل موجة عرضها مثلا 2 ميلى ثانية , ولما أريد أن أرسل إشارة منطقية "صفر" , أرسل موجة أو نبضة عرضها 1 ميلى ثانية.
ولكن هذه الموجة هى عبارة عن إخراج تردد 40 كيلو هرتز لمدة 1 ميلى ثانية أو 2 ميلى ثانية , أعتقد الآن قد فهمنا الفكرة.
- فالآن نتفق على أنه عند ذكر أننا نريد أن نرسل مجموعة من البيانات أو Serial Data نتذكر دائما أنها ليست اشارة ديجيتال عادية وانما هى نبضات مكونة من اشارة ترددها من 38 إلى 40 كيلو هرتز لمدة معينة.
الشكل الآتى يوضح الإشارة كما تم التقاطها بالأوسيلوسكوب الخاص بى, الإشارة ملتقطة من خرج الأى سى الموصل إلى الليد - بداخل ريموت سونى, أردت فقط أن أوضح أن البيانات معدلة وليست موجة مربعة عادية.
- كما ترون بل الشكل الأعلى , البينات مرسلة على هيئة نبضات لها عرض معين , تسمى هذه الطريقة Pulse Width Modulation أى طريقة ارسال البيانات عن طريق تغيير عرض النبضة وهى المستخدمة من قبل شركة سونى, ولكن هل كل الريموتات تستخدم هذه الطريقة؟
الإجابة كالعادة, لا, هناك عدة طرق , قد ذكرنا طريقة ال Pulse وهناك طريقتين أخريين سأذكرهما فى عجالة لأننا سوف لا نستخدمهم كثيرا فى مشروعاتنا نظرا لصوبة إعادة قرائتهم.
الأولى تسمى: Shift
وهى تعتمد على تغيير اتجاه النبضات, فمثلا " إشارة منطقية واحد" هى عبارة عن اشاءة تتغير من High إلى Low والعكس صحيح, ولكن عرض هذه النبضات ثابت
الثانية تسمة Space :
وفيها يتم ارسال البيانات على هيئة نبضات متساوية فى العرض ولكن يتم تمييز الصفر من الواحد عن طريق الوقت بين النبضات.
الشكل بالأسفل تم استعارته من المقالة التى ذكرتها :
نأتى الآن للجزء المهم, وهو كيف نقرأ هذه البيانات , وباالتالى ننتقل للنقطة التالية:
ثانيا: كيفية قراءة الأكواد من ريموت كونترول
لو تمتلك أوسيلوسكوب فالموضوع سهل جدا, ولكن هل أقوم بفتح الريموت وتوصيل الأوسيلوسكوب على طرف الليد ؟ الإجابة: أنت غير محتاج لذلك لسببين:
الأول: لأنك ستحصل على شكل الموجة المعدلة كما أوضحت سابقا, وسوف يكون قياس عرض النبضة صعبا
السبب الثانى: أنه من المستحيل الحصول على معلومات فى حالة عدم توافر جهاز أوسيلوسكوب. لأننا سنستخدم ال Sound Card الموجود بجهازك و من المعروف أن سرعة قراءة البيانات Sampling Rate هى حوالى 44 كيلوهرتز والموجة المعدلة ترددها 40 وباالتالى لا يمكن قراءتها.
كما تعرفون حسب قانوت
Nyquist لقياس اشارة لابد أن يكون ال Sampling rate أعلى من ضعف أعلى تردد بالإشارة. عموما هذا موضوع نظرى ولمن يريد المزيد , راجع ويكيبيديا على هذا الرابط:
http://en.wikipedia.org/wiki/Nyquist...mpling_theorem
- والآن كيف نقرأ بيانات الريموت؟ انت محتاج للآتى:
1.
IR Receiver Module أو قطعة الكترونية المسؤلة عن استقبال الإشعة تحت الحمراء , طبعا السؤال , أين أجدها, هى متوافرة عند معظم محلات الإلكترونيات ولكن للأسف لو قلت لهم هذا الإسم كما فعلت أنا من قبل, ستسمع إجابات كثيرة "لا والله مفيش" , " إيه؟؟" وهكذا , مع أنها عندهم, المهم تقول مستقبل الأشعة تحت الحمراء الخاص بريسيفر أو تلفزيون وقول له "أبو ثلاث أرجل المعدنى"

.
الشكل الآتى يوضه صورته:
2.
جهاز أوسيلوسكوب, هناك نوع رخيص وعملى وأنا أستخدمه وهو PC Baed Oscilloscope ويتم توصيله بالكمبيوتر ولا يحتاج لأى Power إضافى وموجود عند رام , هناك 40MHZ و 60 MHZ
وفى حالة عدم وجود Oscilloscope إذن انت تحتاج استعمال كارت الصوت بجهازك والفكرة كالآتى:
- أحضر أى Jack كالخاص بسماعات ال Headphones ووصل به سلكان واحد أرضى والآخر يوصل بالإشارة وعند القياس ضعة بمدخل ال Line In وليس ال Mic لأن الجهد المراد قياسه كبير - 5 فولت وأنت غير محتاج للتكبير .
- لاحظ أنك ستحتاج إلى مقاومة متغيرة لتقليل الجهد وهذا ضرورى لأن 5 فولت هو جهد كبير بالنسبة لإشارة صوتية.
هذه الخطوة مهمة وانا غير مسؤول عن أى خسائر, اللهم بلغت اللهم فاشهد
الشكل الآتى يوضح الدائرة البسيطة:
وهذا شكل آخر لنفس الدائرة مع استخدام مكثف
ثالثا : كيف سنقيس عرض النبضة وكيف سنوصل مستقبل الأشعة تحت الحمراء:
هذه القطعة سهلة جدا ولا تحتاج إلى أى قطعة أخرى , فقط تحتاج 5 فولت , كما موضح بالصورة أعلى , وصل الأرضى على الطرف GND وال 5 فولت على VCC ثم خذ الإشارة من الطرف Vout
وابدأ بتوجيه الريموت على هذه القطعة وطبعا ستلاحظ المدى الجيد الذى يصل إلى أكثر من 3 أمتار , واضغط على أحد الأزرة ثم قم بمشاهدة شكل الموجات على الأوسيلوسكوب , وسوف لا أتعرض لكيفية ضبط ال Time Base وال Trigger لأنه لو كان عندك هذا الجهاز فأكيد ستعرف كيف تستخدمه.
الملاحظة المهمة:
ستلاحظ أنه ليس هناك Carrier أو موجة حاملة, لأن المستقبل قد قام بفك الموجة المطلوبة وأعطاك إشارة TTL أى أنها نبضات بدون أى موجات وبالتالى سيسهل قرائتها.
والشكل الآتى يوضح شكل الموجة على الأوسيلوسكوب بعد توصيله بالخرج الخاص ب IR Module.
كيفية القراءة:
كما ترى بالأعلى طالما أنك تعرف أن الطريقة المستخدمة فى إرسال البيانات هى طريقة تعديل عرض الموجة PWM إذن فالذى يهمك هو عرض كل نبضة, وللقياس ابدأ من اليسار ولاحظ جيدا أن هناك نبضة البداية وهى التى تخير الميكرو الذى سيقرأ متى يبدأ بالعد.
من بعد هذه النبضة ابدأ بالعد - ستجد أنه هناك نبضة عريضة وأخرى ضيقة سجل عرض كل نبضة بالميلى ثانية ولا تنسى تسجيل الوقت بين النبضات أيضا.
بالنسبة لسونى فهذه هى بياناتهم وهى طبعا موجودة على الإنترنت:
هى عبارة عن 12 bit مقسمة إلى 7 بت بيانات و 5 عنوان Address bits طبعا نبضة البداية غير محسوبة
- نبضة البداية عرضها 2.4 ميلى ثانية
- "1" يتم التعبير عنه بنبضة عرضها 1.2 ميلى ثانية ثم فراغ أو Space عرضه 0.6 ميلى ثانية
- "0" نبضة عرضها 0.6 ميلى ثانية ثم فراغ بنفس المدة
لاحظ أيضا أن الخمسة بت الخاصين بال Address هم دائما 10000 فى كل الريموتات
كيف أقرأ البيانات باستخدام كارت الصوت:
بعد التوصيل كما أوضحت سابقا, انت محتاج إلى برنامج مثل PC Scope
http://www.zeitnitz.de/Christian/scope_en
ويمكنك تسجيل الموجة , أى قم بالتسجيل ثم اضغط على زر بسرعة ثم أوقف التسجيل وافتح الملف فى أى Sound Editor وأنا استخدمت هذا البرنامج ووجدته جيد
http://audacity.sourceforge.net/
ومن خلال البرنامج يمكنك قياس عرض الموجة باستخدام الماوس وتسجيلها
View -> Set Selection Format - Sec
ملحوظة:
سوف تلاحظ أن شكل الموجة ليس مربعا تماما ويمكن أن تجد الإشارة مشوهة قليلا Distorted وهذا متوقع حيث أن مدخل كارت الصوت به مكثفات ربط مما يؤدى لتشويه الموجات المربعة قليلا , وأيضا يجي الإشارة إلى أنك لا تستطيع قياس الجهد المستمر وأن أعلى جهد يمكن قياسه هو فى حدود ال 1 فولت.
إن قررت استخدام الكود الخاص بسونى فى حالة تصنيع ريموت أو جهاز يتحكم بالتليفزيون مثلا , يمكنك الحصول على الأكواد من اللينك :
http://www.hifi-remote.com/sony/Sony_tv.htm
الأكواد مكتوبة Decimal طبعا حولها إلى Binary وقارنها بالموجات التى ستقرئها ستجدها متطابقة
الصورة المأخودة أعلى للإشارات نتجت بالضغط على الزر 2 من الريموت
سوف أكتفى بهذا القدر الآن , وفى المشاركة القادمة سنكمل إن شاء الله
ونوضح كيف نكتب الكود الذى سيولد هذه الإشارت مع الدوائر وفيديو عملى
ثم بعد ذلك بمشيئة الله نبدأ بالجزء الثانى وهو كيفية فهم واستقبال البيانات وبعدها أستطيع القول بأنك قادر على بناء أى مشروع يعمل بالأشعة تحت الحمراء
أرجو الرد إن كنت قد وفقت بتوضيح الفكرة , وأعتذر إن كان هناك أى أخطاء
أنا مستعد لتوضيح أى جزء قد سقط سهوا