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

   

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 23-06-2019, 11:26 PM المشاركة 25   
افتراضي



اخي الكريم هل يستطيع المتحكم الصغري انتاج اشارة ثلاثية الطور جيبية على ان تكون الزوايا بين النبضات بفارق ٩٠ درجة
مع امكانية التحكم بجهد تلك الاشارات
لا اريد التعديل بعرض الموجه وانما بجهدها فقط.
ارجو الاجابة باختصار كي لا آخذ من وقتك الكثير يكفيني اما نعم او لا ودع الشرح لما بعد حول تلك الاشارة.
صدقني لا استطيع كبح نفسي عن الاسئلة لذلك تحملني بارك الله بك
قد ارسلت لك عبر الخاص هل استلمت ام لا


التعديل الأخير تم بواسطة : مسلم11 بتاريخ 24-06-2019 الساعة 01:37 AM
اعلانات

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 24-06-2019, 04:23 AM المشاركة 26   
افتراضي


السلام عليكم
لقد كتبت البرنامج
يبدو ان برنامج ميكرو سي خاصتي غير الذي لديك

انظر هنا بالمربع الصغير اعلى ويسار الصورة
عندما اضع المؤشر عليه يظهر مربع مكتوب فيه void
هل هنا يجب ان اكتب البرنامج
لا اخفيك ان الهاتف سقط فوق لوحة المفاتيح وظهر هذا المربع

كيف اغير تنسيق النص ليصبح كما تنسيقك
ولاحظ وجود خطوط حمراء تحت الكلمات تفيد بان البرنامج لم يتعرف عليها كما ببرنامج world
هل يتعرف عليها البرنامج ام لا وما الحل
بالنسبة لبروتس جاري محاولة التشغيل عبره
حياك الله وبارك بك


اخي
اصدار البرنامج اللذي في الصوره تبعك هوا V6.6.1

واصدار البرنامج اللذي استخدمه انا V7.1.0

ولا اعتقد ان فرق الإصدار يعمل مشكله

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

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

اليك الطريقه

اضغط علي المتحكم مرتين متتاليتين كلك شمال وتظهر لك هذه النافذه اضغط علي الفولدر الأصفر




سوف تظهر نافذه ثانيه اذهب الي مسار تخزين البرنامج او كما يسمي ملف الهيكس واضغط عليه مرتين




ستعود الي هذه النافذه اضبط قيمه الكرستاله بنفس القيمه اللتي اخترتها في برنامج ميكرو سي



ثم اضغط OK واذهب واعمل حفظ لكي تسبت ملف الهكس علي المتحكم ولا تتطر لأعاده تركيبه مره اخري


.


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 24-06-2019 الساعة 04:30 AM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 24-06-2019, 05:01 AM المشاركة 27   
افتراضي


اخي الكريم هل يستطيع المتحكم الصغري انتاج اشارة ثلاثية الطور جيبية على ان تكون الزوايا بين النبضات بفارق ٩٠ درجة
مع امكانية التحكم بجهد تلك الاشارات
لا اريد التعديل بعرض الموجه وانما بجهدها فقط.
ارجو الاجابة باختصار كي لا آخذ من وقتك الكثير يكفيني اما نعم او لا ودع الشرح لما بعد حول تلك الاشارة.
صدقني لا استطيع كبح نفسي عن الاسئلة لذلك تحملني بارك الله بك
قد ارسلت لك عبر الخاص هل استلمت ام لا
بالصبر نستطع الوصول الي مانريد

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


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

ويمكننا ايضا تنعيم منحني الموجه في طريقه كتابه البرنامج بحيث تكون الموجه اكثر جمالا

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


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 24-06-2019, 03:16 PM المشاركة 28   
افتراضي


شكرا لك جاري التنفيذ


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 24-06-2019, 08:17 PM المشاركة 29   
افتراضي


السلام عليكم
اخي عبدالله بعد ان حلت مشكلة البرنامج وانشأت ملف ال hex قمت بفتح برنامج بروتس ومن ثم حملت معلومات الملف الى المعالج و عند الانتهاء ضغطت على مفتاح play بالبرنامج من اجل التشغيل فظهرا هذه الرسالة

وهذه الدارة

حياك الله اخي عبد الله وبارك بك وعليك
كل شيء بدايته صعبة ارجو ان تتحملني كوني لا اجيد استخدام برنامج بروتس


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 24-06-2019, 10:20 PM المشاركة 30   
افتراضي


السلام عليكم
لقد تم الامر لقد نجحت في تنفيذ المشروع
الحمد لله 😗😗😗😗😗😗😆😆😅😘😅😊😊🤗🤗😥😥😥

عند الضغط على المفاتيح نتحكم بعرض النبضة
بانتظار شرح البرنامج
شكرا لك شكرا لك اخي عبدالله


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 26-06-2019, 06:11 AM المشاركة 31   
افتراضي


السلام عليكم

اولا شرح سريع للكود




نبدأ بأول سطر للكود وهوا اعلان عن وجود متغير لكي يتم حجز مساحه من ذاكرة الوصول العشوائي للمتحكم وهنا نوع المتغير هوا " short: عدد صحيح حجمه 2 بايت.

كود:
  unsigned short current_duty;
اللون الأزرق اعلان عن متغير
اللون الأحمر نوع المتغير
اللون الأخضر اسم المتغيرر

وهنا قائمه بأنواع المتغيرات


أنواع االمتغيرات
int: عدد صحيح حجمه 4 بايت.
short: عدد صحيح حجمه 2 بايت.
long: عدد صحيح حجمه 4 بايت.
bool: منطقي حجمه 1 بايت.
float: عدد عشري حجمه 4 بايت.
double:عدد مضاعف حجمه 4 بايت.
char: حرفي من جدول الأسكي
wchar_t: حرفي واسع يضم جدول اليونيكود أوسع من الأسكي.

وهنا دور هذا المتغير هوا اللذي سوف نستخدمه في ضبط عرض النبضه و سوف اوضح ذالك بعد قليل

-------------------------------------------------------------------------------------------------------


وهنا الداله الأساسيه وهي من يبدأ البرنامج منها نزولا لأسفل
كود:
  void main()
واسم هذه الداله هوا شرطي ولا يمكن تغيير اسمها علي عكس الدوال الفرعيه وسيأتي شرحها في مواضيع اخري لأنها ليست موجوده في هذا البرنامج .. وللعلم يمكنك تسمية الدوال الفرعيه كما تشاء بشرط أن لا تأخذ اسم متغير أو تكرر اسم الداله ووجود مسافه في اسمها لا يقبل المترجم وجود مسافه في اسم الداله
..---------------------------------------------------------------------------------------------------------


وهنا تم اخبار المتحكم اننا نريد استخدام المنفذ C بالكامل ك خرج وهنا يحتوي المنفذ علي 8 بيت أي 8 ارجل
وها هوا امر تهيئه المنفذ Cك خرج
كود:
  TRISC=0;
وهنا اخبرنا الميكرو ان يخرج صفر فولت علي جميع ارجل المنفذ C
كود:
 PORTC=0;
وهنا لاحظ الصفر الموجود أخر الأمر بالون الأزرق C
كود:
 PORTC=0;
هنا نكتب الأرقام بالنظام DECIMAL

وهنا اخبرنا المتحكم اننا نريد استخدام المنفذ B بالكامل ك دخل لكي نشبك عليه المفاتيح
كود:
   
TRISB=255;
سيتم شرح الرقم 255 هذا ولماذاا 255 وايضااا لماذا صفر

وهنا اخبرنا المتحكم بجعل كل اطراف المنفذ B = صفر فولت
كود:
 PORTB=0;
-------------------------------------------------------------------------------------------------------
وهذا الأمر نستطيع من خلاله ان نظبط التردد اللذي نحتاجه للموجه الخارجه
كود:
 PWM1_Init(1000);
والرقم 1000 يدل علي قيمة التردد ويمكننا تغيره كما نشاء

-----------------------------------------------------------------------------------------------------

وهذا الأمر يتحكم في عرض الموجه
كود:
 PWM1_Set_Duty(255);
والرقم 255 يدل علي اقصي عرض للموجه يمكننا استخدامه
------------------------------------------------------------------------------------------------------


وهذا الأمر يجعل المتحكم يكرر تنفيذ الأكواد الي ما لا نهايه
كود:
 while (1) 
       
       {
-------------------------------------------------------------------------------------------------------

نأتي الأن الي بدأ المتحكم في تنفيذ الأوامر بعد ان تم تهيئة الأطراف وتحديد وظائفها
كود:
   if(PORTB.f0==1){current_duty++; delay_ms(50);};
الأن نقطع هذا الأمر
كود:
  if(PORTB.f0==1){current_duty++; delay_ms(50);};
وهوا أمر شرطي

اولا جملة
كود:
  if
ومعناها في الشروط المنطقيه ( لو )
وهنا نأتي لتكمله شرح باقي امر الشرط
كود:
 PORTB.f0
وهنا كما هوا واضح ان المنفذ B البن رقم صفر
كود:
 PORTB.f0==1
لو تساوي واحد أي تم الضغط علي المفتاح المربوط مع البن رقم صفر في المنفذ B لو = 1 ايذا تم الضغط علي المفتاح ويتم تنفيذ هذه العباره داخل القوسين
كود:
 
{current_duty++; delay_ms(50);};
وهنا يتم ذيادة قيمة المتغير
كود:
 current_duty++;
بواحد بستمرار حيث مزال المفتاح مضغوط عليه وهنا كان لازم ان نجعل المتحكم أن ينتظر 50 ميلي سانيه قبل ان يعيد ذيادة المتغير بواحد اخر من خلال هذا الأمر
كود:
delay_ms(50);
ولأن المتحكم ينفذ الأوامر بسرعة كبيره كان لازم نضع أمر تأخير لكي نلاحظ التغيرر اللذي يحدث في عرض الموجه
-----------------------------------------------------------------------------------------------------

وهنا
كود:
    if(PORTB.f1==1){current_duty--; delay_ms(50);};
نفس شرح الأمر السابق مع اختلاف ان هذا الأمر ينقص المتغير
كود:
 current_duty--;
بواحد عند كل ضغطه للمفتاح الثاني

-------------------------------------------------------------------------------------------------------


وهنا تأتي اهمية المتغير
كود:
  current_duty
من خلال هذا الأمر
كود:
    PWM1_Set_Duty(current_duty);
كان من الممكن ان نكتب أمر التحكم في عرض النبضه هكذا
كود:
  PWM1_Set_Duty(255);
ولكن لو فعلا ذالك لا يمكننا التحكم في عرض النبضه الا عند كتابة البرنامج فقط بمعني نظبط عرض الموجه وعند تنزيل البرنامج علي المتحكم ستكون عرض الموجه كما كتبناها في البرنامج ولا يمكننا التحكم فيها



----------------------


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 26-06-2019 الساعة 06:17 AM

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 26-06-2019, 06:31 AM المشاركة 32   
افتراضي


وهنا يأتي اهميه المتغير لاحظ لقد وضعنا المتغير مكان الرقم 255
كود:
    PWM1_Set_Duty(current_duty);
وهنا عند ذيادة او نقصان قيمة المتغير current_duty سوف تصبح قيمتة مكان الرقم 255 وهنا نستطيع ان نتحكم في عرض الموجه من خلال مفتاحان مربوطين مع المتحكم وتأتي هنا اهمية المتغير في البرنامج

---------------------------------------------------------------------

وهنا هذا الأمر اخبر المتحكم ان يبدأ في تشغيل نظام PWM لأخراج الموجات و
كود:
  PWM1_Start();
وهنا نلاحظ ان المتحكم قد يكون فية اكثر من بن يستطيع اخراج اشارةPWM منها وكان لازم ان نحدد للميكرو ونختار رقم البن اللذي سوف يخرج الموجات وهنلا لاحظ PWM1 يمكن ان نجعلها PWM2 أو PWM3 ألخ ويمكننا تشغيل اكثر من بن لإخراج الموجات او كلهم حسب رقم المتحكم توجد انواع بها قناتين PWM واخري يوجد بها 6 قنوات واكثر وهكذا كل متحكم له مميزاته وعيوبه

__________________________________________________ ____________________


وفي الأخير تأتي اهميه الأقواس في لغة C


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

-----------------------------------



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