![]() |
#21
|
||||
|
||||
![]()
السلام عليكم ورحمه الله وبركاتة
فى المرفقات محاولتى للتحكم فى 2 سيرفو موتور عندما يكون الاول على زاوية -90 يتحرك الاخر بين +90 و -90 اما عندما يكون الاول على زاوية +90 لا يتحرك الاخر ملف البروتس +ملف الهكس + الكود فى المرفقات تحياتى وفى انتظار اكمال الشرح ![]() |
#22
|
||||
|
||||
![]() اقتباس:
ماشاء الله عليك سعدت ببرنامج مهندس عمرو برنامجك جميل واصل تقدمك بالتوفيق للجميع |
#23
|
||||
|
||||
![]()
جزاك الله خيرا على التشجيع
وفى انتظارك لتكملة المشروع ![]() |
#24
|
||||
|
||||
![]()
الخطوة التاليه تكون باستخدام التايمر زيرو لتوليد نبضه ترددها 50 هرتز اعتذر عن شرح الموضوع الان لكن نفس الفكرة قمت بطرحها فى موضوعى بهذا المنتدى (طريقه لتوليد pwm على هذا الرابط
http://dbaasco.com/vb/showthread.php?t=6597 الموضوع به فكرة استخدام التايمر زيرو لكن بعرض نبضه قدرها 10 ميللى ثانيه عالى و 10 ميللى منخفض لتعطى تردد 20 ميللى ثانيه اى 50 هرتز. التعديل الان هو كيف اجعل هذه النبضه العالى 1 ميللى ثانيه و باقى النبضه منخفض (ال 19 ميللى ثانيه) حاولو التفكير فى المشروع حيث ان مشاركه الافكار ستزيد الموضوع وتفتح مجالات اكير و اعمق . سارفق ملف الهيكس لمشروعى التحكم فى اثنين سيرفو فى نفس الوقت بازمنه مختلفه و ملف المحاكاة على ان اشرح الموضوع شرح وافى بعد رجوعى من السفر ان شاء الله الثلاثاء. اسالكم الدعاء لى بالخير والرزق اخوكم مهندس اشرف كمال الحماحمى |
#25
|
||||
|
||||
![]()
رائع يا باشمهندس وربنا يوفقك وترجعلنا بالسلامة
جزاك الله خيرا |
#26
|
||||
|
||||
![]()
السلام عليكم ورحمة الله..
نبدا اليوم كيفيه استخدام التايمر زيرو للتحكم فى اكثر من سيرفو موتور فى نفس الوقت. الفكرة هى عمل تامير و استخدام متغير x بحيث فى كل مرة يحدث طفحان للتايمر over flow يزداد المتغير x بمقدار معين. بشرط ان يكون التردد فى كل الاحوال هو 50 هرتز او 20 ميللى ثانيه. اذا جعلنا التايمر زيرو يحدث له overflow كل مده زمنيه مقدارها 0.1 ميللى ثانيه (اللون الوردى فى الصورة) وفى كل مره يحدث فيها طفحان يزداد المتغير x بمقدار الوحدة. اذن عند مرور 20 ميللى ثانيه تكون قيمة المتغير x اصبحت 200. كما فى الصورة==>> ![]() اذن اذا اردنا اعطاء السيرفو نبضه مقدارها 1 ميللى ثانيه يمكن عمل ذلك عن طريق اختبار قيمة x باستمرار و فى حاله و صولها للقيمة 190 نجعل خرج على طرف الميكرو و عند وصول قيمة المتغير الى 200 تكون نهايه التردد و نصفر قيمه x وكذلك خرج الميكرو كنترول. كما فى الصورة==> [ ![]() بنفس الفكرة يمكن التحكم فى عده سيرفو موتور باختبار قيمه المتغير فى حيز معين و اعطاء خرج فى هذا النطاق ثم فصل الخرج عند ما لا تكون قيمه المتغير ضمن هذا النطاق. مثلا لتشغيل سيرفو اخر 1 ميللى ثانيه نختبر نفس الشروط السابقه عند x=140 او كثر شغل الخرج الثانى و عند وصول قيمه المتغير الى 150 صفر خرج البورت كله ثم اختبر قيمه المتغير من جديد هل تساوى 190 شغل السيرفو الاول وعند وصول الى نهايه القيمة صفر بورت الخرج . كما فى الصورة===> [ ![]() يجب الاخذ فى الاعتبار ان اقصى زمن لنبضات السيرفو 2 ميللى ثانيه فيمكن التحكم فى9 سيرفو موتور بهذه الطريقه حيث اننا اخدنا اسوء احتمال ان يكون عرض النبضه لكل موتور هو 2 ميللى ثانيهو بذلك استغللنا 2*9 ميللى ثانيه من قيمة التردد الكلى ولكن يفضل الايزيد عدد السيرفو عن 8 . الى هنا تكون نهايه الجزىء النظرى و فى المره القادمة نشرح البرنامج وحبذا لو ارى محاولاتكم فى هذا الصدد . نريد عمل برنامج كالذى ارفقته فى المشاركة السابقة وهو التحكم فى زوايه اثنين سيرفو موتور فى نفس الوقت و للتسهيل نريد جعل احد السيرفو يتحرك اقصى اليسار و الاخر اقصر اليمين عند تشغيل البرنامج فقط و باستخدام التايمر زيرو و يرجى ارفاق الكود فى المشاركه للمناقشه.ادعو الله ان تكون الفكرة قد اتضحت ولاى استفسار انا فى انتظار مشاركاتكم وتعليقاتكم والسلام عليكم و رحمة الله و بركاته. |
#27
|
||||
|
||||
![]()
السلام عليكم و رحمة الله ..نكمل اليوم جزىء الميكرو سى للتحكم فى سيرفو موتور واحد بعدة زوايا عشوائيه باستخدام التايمر زيرو .
بداية اضع كود اليكرو سى تفصيلا و نيدا بشرح كل جزىء منفردا. كود PHP:
بدايه حجز متغير x ومتغير اخر i و حجز مصفوفه تمثل قيم الزوايا التى سيتحركها الموتور. كود PHP:
الشرح: عند استخدام مجزىء 1:2 للتايمر زيرو اى ان كل 100 نبضه سيزداد التايمر يمقدار 50 وفى نفس الوقت نحن نريد ان يحدث طفحان للتايمر كل 100 ميكرو ثانيه اى 0.1 ميللى ثانيه وعند استخدام كريستاله يتردد 4 ميجا هرتز يكون الزمن الكلى لنبضه التعليمه هو 1 ميكرو ثانيه ويالتالى عند مرور 100 ميكرو ثانيه من الزمن سيزداد التايمر زيرو بمقدار 50 ونقوم بعمل طفحان للتايمر بعد هذه القيمة لذلك نضع قيمه ابتدائيه للتايمر و هى 255-50=205 وبالتالى نضمن ان يحدث طفحان للتايمر بعد 0.1 ميللى ثانيه. الجزىء الاخر من البرنامج فى تعليمات المقاطعه. كود PHP:
بذلك نكون استطعنا التحكم فى عدة الزوايا للسيرفو و الجزىء الاخير من البرنامج لاعادة الزاويه للقيمةمعينة فى المصفوفه بعد وصول المتغير i الى اعلى قيمة فى عدد عناصر المصفوفة. المرة القادمة نريد التحكم فى اثنين سيرفو موتور ولكن بزوايا مختلفه لكل موتور اظن الفكرة اصبحت اكثر وضوحا ويمكم التعديل فى الكود و الكود و ملف المحاكاة تم ارفاقهم فى مشاركاتى السابقه يمكنكم اعاده الكتابه و التعديل لتحقيق المطلوب و انتظر حلولكم و لاى استفسار انا فى الانتظار و السلام عليكم ورحمة اللة اخوكم مهندس اشرف كمال الحماحمى. صورة للتحكم فى 3 سيرفو بزوايا مختلفة التعديل الأخير تم بواسطة اشرف كمال ; 08-24-2011 الساعة 08:00 PM |
#28
|
||||
|
||||
![]()
تم اضافه الجزىء قبل الاخير من التحكم فى السيرفو موتور وقبل اضافة الجزىء الاخير ..اتسائل هل هناك اى اسئله او اى شىء غير واضح!!!!!
التعديل الأخير تم بواسطة اشرف كمال ; 08-27-2011 الساعة 04:18 AM |
#29
|
|||
|
|||
![]()
بارك الله فيك يابشمهندس على الشرح الجميل
وصراحة الشرح مبسط كل حاجة شكرا لك |
#30
|
||||
|
||||
![]()
صراحة يا اخى شرح اكثر من رائع
بارك الله فيك وجزاك الله خيرا وان شاء الله سترى تطبيقى قريبا عن الانتهاء من شرح الجزء الاخير |
![]() |
مواقع النشر (المفضلة) |
أدوات الموضوع | |
انواع عرض الموضوع | |
|
|