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

أدوات الموضوع

abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 15-09-2014, 02:59 PM المشاركة 121   
افتراضي



أعتقد يمكن ولكن يجب تغير الكود لانه كود
كود:
while(time<cont)
{
time=128*(tmr0-100);
}
يصبح غير مجدي لانه سوف يؤثر على كل بأعتبار ان نبضات متزامنه عند كل نقطه 0
وبتالي يحتاج الى استبداله بطريقه أخرى
أحاول ارتب ذلك
تحياتي
شكرا اخي على المتابعة
سامحني على كثرة الاسئلة فعلم اخي العزيز اني احاول الفهم والاستوعاب ودلك رجع عليك اخي انك لم تبخل علي

اعلانات

abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 15-09-2014, 03:00 PM المشاركة 122   
افتراضي


لم أجرب ذلك ولكن ستنجح أن شالله
بس تأكد من شرط if(sw_inc) هل ==0 او ==1

أخي كريم لغرض كتابه الكود في مشاركه ولكي يظهر اكثر وضوحا أضغط على علامه # وموجود ضمن صفحه مشاركه فتظهر لك هكذا
كود:
هنا الصق الكود
اخي
لقد بحت هنا وهناك وهنالك ولم اجد علامه # وموجود ضمن صفحه مشاركه فتظهر لك هكذا [code]هنا الصق الكود[/

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

abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 15-09-2014, 03:34 PM المشاركة 123   
افتراضي


السلام عليك
مازلت عاني من شئ ما في الكود لم افهمه ساكتب ما فهمت لكي تصحح افكاري
اولا وعلى بركة الله
قمت بتشغيل تيمر 0 مع التقاطع rb0 وجعلتهما على نفس البورت ثم جعلت تيمر 0 يحسب المدة الزمنية 20 ميلي تانية وهي المدة التي تستغرقها الموجة الموجبة والسالبة وبعد دلك جعلنا rb0 يستشعر انعدام المنحنى في 180 و 360 درجة
عندما لا يتحقق شرط if(zero_crosing)
وعند الضغط على احد الزرين يتم اما الزيادة او نقصان 1 في ratio
وعند تحقق الشرط if(zero_crosing اقوم بارجاع zero_crosing الى حالته البدئية ثم اصفر التيمر 0 بعد دلك يضرب ratio في 100 لكي احوله ميكروتانية
وهو نتيجة cont الدي يدخل شرط المؤقت0 while(time<cont)
فادا اردت ان اتحكم في 90 درجة كما قلت اخي يجب ان تكون في ratio =50
لكي نحصل cont=5000 اي 5000 ميكرو تانية هي 5 ميلي تانية
بما ان المؤقت سيبدئ بشكل مدقق متوقيت المنحنى فسوف يحسب 5 ميلي تانية ثم سوف يستخرج لنا نبدة ليتم قدح الترياك

اخي
لtime=128*(tmr0-100); هده العلاقة لحساب المدة الزمنية لدي نريد
هنا تيمر 0=256 لكي نحصل على 20 ميلي تانية لدلك جعلناها داخل اللوب
ليد تتغير rb4 عكس rb3

والسلام عليكم


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 15-09-2014, 06:42 PM المشاركة 124   
sun


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


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 15-09-2014, 08:59 PM المشاركة 125   
افتراضي


السلام عليك
مازلت عاني من شئ ما في الكود لم افهمه ساكتب ما فهمت لكي تصحح افكاري
اولا وعلى بركة الله
قمت بتشغيل تيمر 0 مع التقاطع rb0 وجعلتهما على نفس البورت ثم جعلت تيمر 0 يحسب المدة الزمنية 20 ميلي تانية وهي المدة التي تستغرقها الموجة الموجبة والسالبة وبعد دلك جعلنا rb0 يستشعر انعدام المنحنى في 180 و 360 درجة
عندما لا يتحقق شرط if(zero_crosing)
وعند الضغط على احد الزرين يتم اما الزيادة او نقصان 1 في ratio
وعند تحقق الشرط if(zero_crosing اقوم بارجاع zero_crosing الى حالته البدئية ثم اصفر التيمر 0 بعد دلك يضرب ratio في 100 لكي احوله ميكروتانية
وهو نتيجة cont الدي يدخل شرط المؤقت0 while(time<cont)
فادا اردت ان اتحكم في 90 درجة كما قلت اخي يجب ان تكون في ratio =50
لكي نحصل cont=5000 اي 5000 ميكرو تانية هي 5 ميلي تانية
بما ان المؤقت سيبدئ بشكل مدقق متوقيت المنحنى فسوف يحسب 5 ميلي تانية ثم سوف يستخرج لنا نبدة ليتم قدح الترياك

اخي
لtime=128*(tmr0-100); هده العلاقة لحساب المدة الزمنية لدي نريد
هنا تيمر 0=256 لكي نحصل على 20 ميلي تانية لدلك جعلناها داخل اللوب
ليد تتغير rb4 عكس rb3

والسلام عليكم
هل هدا هو المقصود اخي في هدا الفهم
هل يمكن استغلال المؤقت 1 في ديمر2


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 16-09-2014, 02:05 AM المشاركة 126   
افتراضي


اخي
لقد بحت هنا وهناك وهنالك ولم اجد علامه # وموجود ضمن صفحه مشاركه فتظهر لك هكذا [code]هنا الصق الكود[/
أخي لاتختار الرد السريع وانما الانتقال الى الوضع متطور


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 16-09-2014, 02:28 AM المشاركة 127   
افتراضي


السلام عليك
مازلت عاني من شئ ما في الكود لم افهمه ساكتب ما فهمت لكي تصحح افكاري
اولا وعلى بركة الله
قمت بتشغيل تيمر 0 مع التقاطع rb0 وجعلتهما على نفس البورت ثم جعلت تيمر 0 يحسب المدة الزمنية 20 ميلي تانية وهي المدة التي تستغرقها الموجة الموجبة والسالبة وبعد دلك جعلنا rb0 يستشعر انعدام المنحنى في 180 و 360 درجة
عندما لا يتحقق شرط if(zero_crosing)
وعند الضغط على احد الزرين يتم اما الزيادة او نقصان 1 في ratio
وعند تحقق الشرط if(zero_crosing اقوم بارجاع zero_crosing الى حالته البدئية ثم اصفر التيمر 0 بعد دلك يضرب ratio في 100 لكي احوله ميكروتانية
وهو نتيجة cont الدي يدخل شرط المؤقت0 while(time<cont)
فادا اردت ان اتحكم في 90 درجة كما قلت اخي يجب ان تكون في ratio =50
لكي نحصل cont=5000 اي 5000 ميكرو تانية هي 5 ميلي تانية
بما ان المؤقت سيبدئ بشكل مدقق متوقيت المنحنى فسوف يحسب 5 ميلي تانية ثم سوف يستخرج لنا نبدة ليتم قدح الترياك

اخي
لtime=128*(tmr0-100); هده العلاقة لحساب المدة الزمنية لدي نريد
هنا تيمر 0=256 لكي نحصل على 20 ميلي تانية لدلك جعلناها داخل اللوب
ليد تتغير rb4 عكس rb3

والسلام عليكم
السلام عليكم
اولا أخي هو لايحسب فتره زمنيه 20ms لاننا بألاصل نتحكم بنصف موجه يعني zero_crosing عند 180 و360 يعني نتحكم فقط بنصف موجه وطالما zero_crosing تكشف الصفر عند 360 فهذا يعني هناك تحكم كامل بالموجه ولهذا زمن نصف موجه هو 10ms وبتالي هو لن يصل الى حاله انتربت لكوني محتاج أحتساب زمن اقل من 10ms يعني مثلا 8ms والسبب في ذلك لكون البرنامج ايضا له زمن لتنفيذ أوامر يجب ان تؤخذ بحسبان مثلا ان قلت له عند 9ms اخرج لي نبضه فأن مايكرو لن يخرج النبضه عند 9ms وانما لربما عند 11ms وسبب هناك زمن تنفيذي لاوامر سوف تضاف الى زمن مطلوب

بالنسبه لشرحك عن لوب صحيح فهو يجعل مايكرو في حاله أنتظار فقط قبل ارسال نبضه لان نبضه أحتاجها عند نقطه معينه وبتالي أحتاج فتره تأخيريه لكي بعدها ارسل النبضه

اخي
لtime=128*(tmr0-100); هده العلاقة لحساب المدة الزمنية لدي نريد
هنا تيمر 0=256 لكي نحصل على 20 ميلي تانية لدلك جعلناها داخل اللوب
ليد تتغير rb4 عكس rb3
اساسا معادله الي تحسب الزمن من تايمر0 هي

وبتالي تايمر0 يعمل بصوره مستقله عن مايكرو وبتالي هو يزداد ونتيجه هي زياده في قيمه time
لو طبقنا معادله بما متوفر لدينا من معطيات لحصلنا علة معادله
(time=128*(tmr0-100

بالنسبه لليد rb4 و rb3 نعم هناك أختلاف يمكن التعديل على الكود لجعله يقابل نفس التغير انا صراحه وضعته فقط لارى اين مشكله في الكود وهي علامه على سير البرنامج هل يعمل بشكل صحيح لان دائره بدون ليدات او شيئ يظهر لك لايمكن التكهن اين مشكله ولكن انا وضعنا ليدات في مناطق مهمه في الكود أعتقد سيمكن التكهن ان مايكرو متوقف عند هذا الكود او مايكرو لاينفذ الكود وبتالي عمليه أصلاحه أسهل
تحياتي


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 16-09-2014, 09:57 AM المشاركة 128   
افتراضي


شكرا اخي العزيز
بخصوص تيمر1 لكي نستغله في ديمر 2 على نفس المتحكم لقد حاولت لكن لم استطع بل سادفني مشكل الشرط
كود:
 if(zero_crosing)
                       {
                         zero_crosing=0;
                         led_check=1;
                         time=0;
                         cont=ratio*100;
                         while(time<cont)
                                {
                                 time=128*(tmr0-100);
                                }
                         led_check=0;
                          trigger=1;
                         delay_us(100);
                         trigger=0;
                       }
            if(zero_crosing2)
                       {
                         zero_crosing2=0;
                         time2=0;
                         cont1=ratio1*100;
                         while(time2<cont1)
                                {
                                 time2=128*(tmr2-100);
                                }
                          trigger1=1;
                         delay_us(100);
                         trigger1=0;
                       }

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025