قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 664
نشاط [ funky112233 ]
قوة السمعة:
قديم 03-02-2013, 02:55 PM المشاركة 105   
افتراضي



بسم الله الرحمن الرحيم

اخى

القطعه الى مكتوب عليها 455

هذه هى
http://ram-e-shop.com/oscmax/catalog...oducts_id=1094

وهى تعمل كا كريستالة وتعمل على ترددات الريموت
افتح اى ريموت عندك ستجدها داخلة

اما الازرار من A0-A7 فهى ما تحدد شفرة الارسال
وهى ما تحافظ على عدم التشويش اذا كان يعمل اكثر من ريموت فى مكان واحد

ونعم هو يعمل ل 4 ازرار فقط

بالنسبة لموضوع ثبات الاضاءة والى اخرة

فيمكنك استخدام دوائر الكترونية لتثبيت الاضاءة

ونصيحة منى تعامل مع الميكروكنترولر فهو افضل وارخص ويفعل اشياء كثيرة جدا
ويوفر الكثير والكثير

بالتوفيق ان شاء الله

اعلانات

ضياء الذاري
:: مهندس ::
تاريخ التسجيل: Mar 2013
المشاركات: 11
نشاط [ ضياء الذاري ]
قوة السمعة:
قديم 26-03-2013, 02:20 AM المشاركة 106   
افتراضي


بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته

اولا
احب اشكر اخى فى الله سعد بالكانة saad belgana
لما قدمة لي لنجاح هذا المشروع فهو من قام بعمل كود المستقبل وانا قمت فقط
بالتعديل علية بسيطا


ثانيا

اريدكم ان تشاهدوا هذا الفديو للتجربة الحقيقية



IR Sony Remote - YouTube



وبعد المشاهدة
نبدء فى الشغل العملى على طول
اولا

حمل الدائرة والكود والمحاكاة وكل شىء من هنا
http://www.4shared.com/rar/bxKIRhhJ/...y_Remote.html?


انا موصل IR_Link علشان نجرب الدائرة كانها على الحقيقة بالزبط

طبعا سوف تلاحظ انى لم استخدم كريستال او مقاومة على الطرف mclr
هذه من خواص هذا الميكرو 16f628a
يوجد بة مذبذب داخلى ولا يحتاج لكريستال وايضا يمكنك الغاء طرف mclr


"((نيجى بقى لشرح كل الى احنا حطيناه دة))"

1 - كيف نرسل اشعه تحت حمراء ويستقبلها المستقبل ؟؟

يجب ان تعلم ان المستقبل لا يستقبل الاشارة الا اذا كانت بتردد معين
مثل 36khz او 38khz او 40khz

وهناك ما هو اقل او اكثر من ذلك
المهم هو ان نرسل الاشارة بتردد

ولكن كيف يفكك المستقبل الاشارة وما تعنى الارسال بتردد اليس التردد نبضات ؟؟!! اذن سيخرج المستقبل نفس عد النبضات وهو ملا يحدث اذن ماذا يحدث بالفعل

هذه الصورة توضح عمل المستقبل بكل دقة




انظر الى المرسل كيف هى الاشارة وكيف يخرجها المستقبل
المستقبل ليس مجرد ترانزيستور ضوئى يخرج كما ترسل له
لا يوجد به نظام للاستقبال بتردد واخراج الاشارة TTL كما تراها

بدون الدخول فى تفاصيل كثيرة

هناك طريقة سهلة للارسال وهى استخدام PWM او التعديل فى عرض النبضة
والطريقة بسيطة جدا ((الشرح فى الكود تحت باذن الله))

وهى الطريقة المستخدمة فى المشروع وتم الارسال بتردد 38khz

وكما نعلم ان بروتوكول شركة سونى هو من اسهل البروتوكلات الموجودة
لذا قمت باستخدام ريموت سونى وايضا المرسل الذى صنعته يرسل اشارات سونى

كيف هو شكل نبضات بروتوكول سونى ؟؟

هو كا الاتى فى البدء نبضة بداية 2.4 مللى ثانية
وبعد ذلك مساحة بدون ارسال لمدة 600 ميكرو ثانية
وبعد ذلك يبدء الارسال على حسب البايت المرسل
مع العلم انه فى كل بايت مرسل توجد مساحة 600 ميكرو ثانية

الرقم واحد فى البايت يساوى 1200 ميكرو ثانية
اما الصفر فهو يساوى 600 ميكرو ثانية

يعنى هاكذا مثلا اذا اردنا ارسال البايت هذا
10000000
يكون هكذا
2.4 مللى ثانية نبضة البداية
وبعد ذلك 600 ميكرو ثانية مساحة بدون ارسال((اى يتوقف المرسل عن الارسال))
وبعد ذلك
يبدء البايت هنا اول بيت هو 1 اذا 1200 ميكروثانية وبعد ذلك مساحة
والذى يلية هو 0 اذا 600 ميكرو ثانية ارسال ثم مساحة (اى بدون ارسال)
ثم البيت الى بعدة وهكذا

فى الكود الى انشاتة 12 بيت غير نبضة البداية
مقسمون الى 7 بيت كومند
و 5 بيت ادريس او عنوان

الادريس او العنوان فائدة تحدد نوع الجهاز حتى لا يحدث تداخل بين الاجهزة
وفى حالة ريموت التلفزيون يساوى 10000 وهو ثابت على التلفزيون لشركة سونى

والكومند الى هما 7 بيت عبارة عن الاوامر التى تنفزها الازرار بمعنى
الزرار واحد يساوى 0000000 اى 7 اصفار والواحد يساوى 1000000
وهكذا
يعنى اذا رادنا ارسال شفرة الزرار الاول نرسلها بتردد 38khz بهذا الشكل
نبضة البداية 2.4 ثم فراغ ثم 12 بيت بينه فراغات كما وضحت هكذا
000000010000
كما نرى 7 اصفار كومند و 10000 الادريس

ولمعرفة اكواد الريموت كلها اتبع الرابط الاتى
http://www.kucher.org/projects/tvcontrol/

هذا شرح للعملية
ولكن اذا لم تفهم لا تقلق مع شرح الكود سوف تفهم جيدا كل حرق كتبتة

ناتى لشرح كود الارسال

سوف اضح شكل الكود لزرار واحد فقط حتى لا يكون طويل
واذا فهمت الفكرة يمكنك عمل كل ازرار الريموت كما تريد

كود:
char x;

void main() {
CMCON=0x07;TRISA=255;TRISB=0;portb=0;
PWM1_Init(38000);
PWM1_Set_Duty(255);


  while (1) {
  if (porta.f0==0){
      PWM1_Start();delay_us(2400);PWM1_Stop();                    //button 1
      delay_us(600);
      for(x=0;x<7;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }

      PWM1_Start();delay_us(1200);PWM1_Stop();
        delay_us(600);
         for(x=0;x<4;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
      delay_ms(250);
        }
         }
        }
فى البدء عرفت متغير اسمة X
وبعد ذلك قمت بتحديد الخرج والدخل

ثم جعل PWM يعمل على تردد 38khz وتكتب 38000 كما تروها
بكل هذه البساطة سوف يخرج الميكرو اشارة بتردد 38khz
وبعد ذلك جعلت النبضات تخرج 5 فولت وليس اقل

اذا لم يبقى علينا الا تشغيل الخرج لل PWM وايقافة بالاوقات المطلوبة
على حسب الشفرة بتاعت الريموت

هذا الزر هو رقم 1 فى الريموت
وشفرتة هى
000000010000

اى كل الكومند اصفار وطبعا الادريس ثابت كما قلت

انظر الى النقطه هذه

كود:
PWM1_Start();delay_us(2400);PWM1_Stop();                    //button 1
      delay_us(600);
      for(x=0;x<7;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
ماذا فعلت هنا ؟؟

ببساطة قلت له شغل الخرج لمدة 2.4 مللى ثانية اى 2400 ميكرو ثانية وهى نبضة البداية
وبعد ذلك افصلة لمدة 600 ميكرو ثانية ((المساحة التى تكلمت عنها ))

ثم وهذا هو الاهم
احنا عايزينة يبعت 7 بيت بتوع الكومند كلهم 0
يبقى نكرر الامر بتاع ارسال الرقم 0 7 مرات
كما ترى يشغل الخرج لمدة 600 ميكرو ثانية ثم يفصل لمدة 600 ميكرو ثانية المساحة التى تكلمت عنها
وهكذا 7 مرات يعطينا 0000000 بكل بساطة

ثم 5 بيت بتوع الادريس او العنوان
اولهم الرقم واحد 1
فكتبتة فى الاول هكذا امر بتشغيل الخرج لمدة 1200 ميكرو ثانية
ثم المساحة
تبقى لنا الان من 5 بيت 4 بيت فقط لاننا ارسال اول بيت منهم

اذا نكرر الامر 0 4 مرات وهكذا يصبح لدينا 0000
وفى المجمل 000000010000
وهى الاشارة المطلوبة

وباقى الازرار هكذا
ما يمكن تكرارة نكررة والذى يكون وحيد مثل الرقم واحد نكتبة مرة واحدة هكذا
وهذا يوفر فى المساحة للميكرو

وفى النهاية ينتظر 250 مللى ثانية حتى ترفع يدك من على الزرار


وهذا هو كود ارسال الرقم 2

كود:
    if (porta.f1==0){
      PWM1_Start();delay_us(2400);PWM1_Stop();
      delay_us(600);
      PWM1_Start();delay_us(1200);PWM1_Stop();      //button  2
      delay_us(600);
      for(x=0;x<6;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
        PWM1_Start();delay_us(1200);PWM1_Stop();
        delay_us(600);
         for(x=0;x<4;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
        delay_ms(250);
        }
ارجوا من المتابعين كتابة الرقم 3 بنفس الطريقة
والاكواد موجودة فى الموقع فوق


وانا عارف ان شرحى مش كويس ههههههههههه
حوال ان تجتهد شوية فى فهم الكود والنقطة الى تقف معاك متترددش انك تسئل

وان شاء الله انا بحضر للمستقبل
ولكن هنزل الشرح بتاعه لما
نفهم المرسل كويس اوى الاول



ملحوظة هناك الكثير من الطرق لعمل المرسل والمستقبل وهذه احداها
اخي الكريم
اولا- الذي اريد ان اعرفة ما هو البرنامج او الطريقة التي ابرمج بها هذه الايسيهات
ثانيا- ماهي مكونات دائرة الارسال ودائرة الاستقبال
ولك جزيل الشكر

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

ضياء الذاري
:: مهندس ::
تاريخ التسجيل: Mar 2013
المشاركات: 11
نشاط [ ضياء الذاري ]
قوة السمعة:
قديم 28-03-2013, 10:32 PM المشاركة 107   
ha


جزاك الله خير اخي الكريم

شرح رائع وممتاز وفي انتضار البقيه
مشروع جميل جدا
ولكن ياليت تعطونا مكونات دائرة الارسال والاستقبال مع المخطط الالكتروني


4th ENgineer
:: مهندس ::
تاريخ التسجيل: Mar 2013
المشاركات: 31
نشاط [ 4th ENgineer ]
قوة السمعة:
قديم 08-04-2013, 12:46 PM المشاركة 108   
افتراضي


معلش اصبرو علي ...
فيه حاجه ما فهمتاش
هل الPWM هيه خاصيه موجوده في البيك اللي انت استخدمتها ؟
او انها function انت كتبتها بنفسك ف الكود ؟


geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,134
نشاط [ geniusse01 ]
قوة السمعة:
قديم 16-04-2013, 09:51 AM المشاركة 109   
افتراضي


السلام عليكم

الحقيقة انني منذ فترو اتصفح الموقع بشكل سريع لعدم وجود الوقت الكافي .. ولكنني امام الموضوع الجميل لم استطع مقاومة التسجيل للدخول للموقع وقول
( جزاك الله كل خير ونفع بك الاسلام والمسلمين ) ارجو ان تتحفنا بمواضيع جميلة وتطوير للمشاريع ..

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم


mostafa saad
:: مهندس ::
تاريخ التسجيل: Jan 2009
المشاركات: 9
نشاط [ mostafa saad ]
قوة السمعة:
قديم 04-05-2013, 07:47 PM المشاركة 110   
افتراضي


السلام عليكم اريد من اهل الخبره دائرة ارسال واستقبال rf لعدد 6 ريلهات لكى تعمل على مسفات طويله ولكم جزيل الشكر


moody2
:: موقوف ::
تاريخ التسجيل: Apr 2011
الدولة: Usa
المشاركات: 39
نشاط [ moody2 ]
قوة السمعة:
قديم 18-05-2013, 02:53 PM المشاركة 111   
افتراضي تعديل للربط عن طريق الRF


ينفع استبدل الانفرا بال RF هل هيتغير حاجة فى الكود ولا هيبقى نفس المبدأ ادريس وكومند وكدة اتمنى لو ينفع ياريت تقولنا ازاى


magdy_3
:: مهندس متميز ::
تاريخ التسجيل: Aug 2006
الدولة: Philippines
المشاركات: 339
نشاط [ magdy_3 ]
قوة السمعة:
قديم 19-05-2013, 11:35 AM المشاركة 112   
افتراضي


السلام عليكم
اخى محمد
بصراحة موضوع اكثر من رائع وكل مواضيعك حلوة ومفيدة
ربنا يجازيك كل خير ويجعله فى ميزان حسناتك .

لما دخلت على الموقع الى كاتب شفرات سونى
لاحظت انو كاتب رقم امام كل مفتاح واحد عشرى والتانى سداسى عشر
انا فكرت فى طريقة لكتابة الكود بطريقة تكون بسيطة
وسهلة فى التعامل بتاعها بحيث
انا كل الى عليا اديها الرقم الى مكتوب امام اى مفتاح وهى تدينى شفرته
بدون العناء فى كتابة شفرة كل مفتاح كل مرة مثال
لو انا عايز شفرة مفتاح الاطفاء اكتب
;(if(porta.f5==0)code1(21
بس كدة ستخرج شفرة هذا المفتاح
انا جربتها على الملف بتاعك واشتعلت تمام
بس لسه ماجربتهاش عمليا
انا قولت ابعتلكم الملف واخد رايكم فيه




التعديل الأخير تم بواسطة : magdy_3 بتاريخ 19-05-2013 الساعة 12:31 PM


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 03:20 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)