السلام عليك
مازلت عاني من شئ ما في الكود لم افهمه ساكتب ما فهمت لكي تصحح افكاري
اولا وعلى بركة الله
قمت بتشغيل تيمر 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 نعم هناك أختلاف يمكن التعديل على الكود لجعله يقابل نفس التغير انا صراحه وضعته فقط لارى اين مشكله في الكود وهي علامه على سير البرنامج هل يعمل بشكل صحيح لان دائره بدون ليدات او شيئ يظهر لك لايمكن التكهن اين مشكله ولكن انا وضعنا ليدات في مناطق مهمه في الكود أعتقد سيمكن التكهن ان مايكرو متوقف عند هذا الكود او مايكرو لاينفذ الكود وبتالي عمليه أصلاحه أسهل
تحياتي