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

   

WRHLAMDA
:: عضو فضي ::
تاريخ التسجيل: Feb 2005
المشاركات: 630
نشاط [ WRHLAMDA ]
قوة السمعة:
قديم 25-08-2012, 01:37 AM المشاركة 161   
افتراضي



أهلا


بالنسبة للتجربة الأولى ،، فقد كانت النتيجة هي نفسها عند توصيل الدايودات وعند فصلها ،، تكون النتيجة نفسها اعني ان التتابع في المايكركنترولر لا يختلف وهو شيء منطقي حيث ان الأوبتوكبلور يعزل الدائرتين عن بعضهما البعض ،، ولا يوجد ما يمكن ان يؤثر على سير تتابع المايكركنترولر


بالنسبة لوضع دايود ضوئي على الجهد المغذي للمحرك ،! ،، اين تقصد بالضبط؟ ،، هل بين الdrain والجهد السالب ام ماذا؟


تمنياتي
ان كنت ركبت الدائرة الجديدة فلا داعي للتجربة

اما الدايود الضوئي لمراقبة الفولتية فبين الموجب والسالب لمجهز القدرة

اعلانات

الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 636
نشاط [ المظلوم ]
قوة السمعة:
قديم 25-08-2012, 01:38 AM المشاركة 162   
افتراضي


لقد فحصت الاشارة التي تخرج من ممر الطابعة باستخدام mach3

اشارة الاتجاه تكون اما 0 او 5 فولت ولا تتغير الا عند تغير الاتجاه اي عند توقف المحرك تبقى الاشارة على وضع اخر اتجاه كان يتحرك به المحرك

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

البرنامج الي عندي بلغة الاسمبلي ان كان يفيدك ؟؟؟؟؟؟؟؟؟

لا لن يفيدني ،، للأسف ،،

ولكن هل تعرف كيف يمكنني التعامل مع اشارة الــ step ? اعني هل هي اشارة analog ام انها ديجيتال ؟ ،،

وهل تعرف كيف يمكنني ان اختبرها على مداخل المايكروكنترولر ،،



تمنياتي

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

WRHLAMDA
:: عضو فضي ::
تاريخ التسجيل: Feb 2005
المشاركات: 630
نشاط [ WRHLAMDA ]
قوة السمعة:
قديم 25-08-2012, 02:04 AM المشاركة 163   
افتراضي


لا لن يفيدني ،، للأسف ،،

ولكن هل تعرف كيف يمكنني التعامل مع اشارة الــ step ? اعني هل هي اشارة analog ام انها ديجيتال ؟ ،،

وهل تعرف كيف يمكنني ان اختبرها على مداخل المايكروكنترولر ،،



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

لم افهم بالضبط ماذا تعني باختبارها على مدخل البك

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

وكمثال بسيط يجب ان يكون لديك متغير يمثل الحالة السابقة لممر الادخال في البك
وكلما قمت بقراءة ممر الادخال تقوم بمقارنتة مع الحالة السابقة له فاذا كان التغير من 0 الى 1 تعتبر هذة بداية النبضة وهنا لانفعل شيء بلل نجدد قيمة المتغير وننتظر اختفاء النبضة ( لماذا لانقوم باي شيء هنا ولا نعطي اشارة الى المحرك ؟ لان وقت النبضة قصير ومن الافضل ان نتحقق من انها انتهت حتى اذا عدنا من خطوات اعطاء اشارة للمحرك نكون متأكدين اننا سنبدا بانتظار اشارة جديدة عكس ذلك قد نعود من خطوات اعطاء اشارة للمحرك ونجد الاشارة 1 فلا نعرف هل هي اشارة جديدة ام انها الاشارة القديمة لم تنتهي لحد الان ..... طبعا يمكن استخدام المقاطعات لكن عملية البرمجة ستكون اكثر تعقيدا )
نستمر بمراقبة ممر الادخال ومقارنتة مع الحالة السابقة لحين حصول اشارة تحول 1 الى 0 هنا ننتقل الى قراءة حالة اشارة الاتجاه ثم نتحول الى اعطاء اشارة الى المحرك تتناسب مع وضعة السابق واشارة الاتجاه

انا لا اعرف مقدار خبرتك في كتابة اكود ( انا ايضا لم اكتب الكثير من البرامج) فلا زلت اخوض في اساسيات التعامل مع البك ( نعم البك 16f84a جربت كل امكانياتة لانة بسيط )

لكن كتبت بعض البرامج الطويلة احدها استخدمت بة 90% من ذاكرة البك في هذة الدائرة




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

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


التعديل الأخير تم بواسطة : WRHLAMDA بتاريخ 25-08-2012 الساعة 02:22 AM

الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 636
نشاط [ المظلوم ]
قوة السمعة:
قديم 25-08-2012, 02:24 AM المشاركة 164   
افتراضي


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

لم افهم بالضبط ماذا تعني باختبارها على مدخل البك

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

وكمثال بسيط يجب ان يكون لديك متغير يمثل الحالة السابقة لممر الادخال في البك
وكلما قمت بقراءة ممر الادخال تقوم بمقارنتة مع الحالة السابقة له فاذا كان التغير من 0 الى 1 تعتبر هذة بداية النبضة وهنا لانفعل شيء بلل نجدد قيمة المتغير وننتظر اختفاء النبضة ( لماذا لانقوم باي شيء هنا ولا نعطي اشارة الى المحرك ؟ لان وقت النبضة قصير ومن الافضل ان نتحقق من انها انتهت حتى اذا عدنا من خطوات اعطاء اشارة للمحرك نكون متأكدين اننا سنبدا بانتظار اشارة جديدة عكس ذلك قد نعود من خطوات اعطاء اشارة للمحرك ونجد الاشارة 1 فلا نعرف هل هي اشارة جديدة ام انها الاشارة القديمة لم تنتهي لحد الان ..... طبعا يمكن استخدام المقاطعات لكن عملية البرمجة ستكون اكثر تعقيدا )
نستمر بمراقبة ممر الادخال ومقرنتة مع الحلة السابة لحين حصول اشارة تحول 1 الى 0 هنا ننتقل الى قراءة حالة اشارة الاتجاه ثم نتحول الى اعطاء اشارة الى المحرك تتناسب مع وضعة السابق واشارة الاتجاه

انا لا اعرف مقدار خبرتك في كتابة اكود ( انا ايضا لم اكتب الكثير من البرامج) فلا زلت اخوض في اساسيات التعامل مع البك ( نعم البك 16f84a جربت كل امكانياتة لانة بسيط )

لكن كتبت بعض البرامج الطويلة احدها استخدمت بة 90% من ذاكرة البك في هذة الدائرة




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

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


حسنا انا سأحاول ان اكتب برنامجا يقوم بما ذكرت وأن شاء الله اوفق في ذلك ،، ولكن اريد ان تضع لي تفاصيل دائرتك" اعني اي أرجل هل مخارج للبن وأي أرجل هي مداخل ؟ ، حتى اتمكن من تجربة البرنامج عند شرائي للمتكاملة 16f84a ،، انت سبق وان ذكرت لي ذلك ،، ولكن لا اذكر في أي رد ،،

وكم الكريستالة التي تستخدمها ؟


الكود اعتقد انني سأجده في احدى ردودك في الصفحة السابقة ،،، واذا كان لديك من الهيكس فايل نسخة ارجوا ان تعطيني رابطها ،،


في نفس الوقت سأحاول كتابة كود منفصل ،، حتى لا يقتصر الموضوع على مجرد استخدام جهود الآخرين دون التعلم !



تمنياتي


الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 636
نشاط [ المظلوم ]
قوة السمعة:
قديم 25-08-2012, 02:36 AM المشاركة 165   
افتراضي


أهلا أخي ،، هذا كود وجدته بعد بحث طويل ،، مكتوب لدائرة تقريبا نفس مبدأ الدائرة التي نعمل بها " كنت قد وجدته وانا ابحث عن كود للدائرة السابقة ،، التي كنت اعمل عليها " ،، وقمت بالتعديل عليه ،، قليلا ، ولكن إلى الآن يوحد به امور لا افهمها ،،

لما افهم بالضبط كيف تعمل اشارة الــ step لذا لم افهم الكود ،،


هذا هو الكود


كود:
void main ()
{

unsigned char step_seq;
unsigned char direction;
unsigned char i;

TRISB=0b00001100;       // bits 0,1,4,5 output - 2,3 inputs
PORTB=0b00010001;       // intial state

step_seq = 0;

pulse_detect :

do {}

 while (B2 == 0); /* loop while Step signal is LO i.e. B2=0*/

/* Step signal has gone to 1 */

direction = B3;                                /* get Direction signal input*/

if (B2 == 0) goto pulse_detect;                /* too narrow must be noise reject*/
i = B3;                                        /* read B3 again and temporarily store Direction in i*/
if (direction != i) goto pulse_detect ;        /* compare two samples of Direction reject if not the same */


do {
} while (B2 == 1); /* waite for negative edge of Step signal*/
if (B2 ==1) goto pulse_detect ;
if (direction ==0)
{
step_seq++;
if (step_seq == 4) step_seq = 0;
}
else
{
if (step_seq == 0) step_seq = 4;
step_seq--;
}


switch (step_seq) {
case 0:
PORTB = 0b010001;
delay_ms(4);
break;
case 1:
PORTB = 0b010010;
delay_ms(2);
break;
case 2:
PORTB = 0b100010;
delay_ms(2);
break;
case 3:
PORTB = 0b100001;
delay_ms(2);
break;
default : step_seq = 0;
}
goto pulse_detect;
}


WRHLAMDA
:: عضو فضي ::
تاريخ التسجيل: Feb 2005
المشاركات: 630
نشاط [ WRHLAMDA ]
قوة السمعة:
قديم 25-08-2012, 02:38 AM المشاركة 166   
افتراضي


الرابط التالي فية ملف الكود والهيكس وصوره تمثل الربط

http://www.4shared.com/zip/nvpXRyRW/u2source.html?

الكرستالة 4 ميكاهرتز

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


الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 636
نشاط [ المظلوم ]
قوة السمعة:
قديم 25-08-2012, 02:55 AM المشاركة 167   
افتراضي


الرابط التالي فية ملف الكود والهيكس وصوره تمثل الربط

http://www.4shared.com/zip/nvpXRyRW/u2source.html?

الكرستالة 4 ميكاهرتز

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

!! مسألة اعادة ترجمته وهو في الأصل كود اسمبلي لم افعلها من قبل ،، ولكن كيف قمت بذذلك عن طريقة برنامج المبرمجة ؟ ،، أنا استخدام pickit2 ،، ! كيف اقوم بذلك ؟


WRHLAMDA
:: عضو فضي ::
تاريخ التسجيل: Feb 2005
المشاركات: 630
نشاط [ WRHLAMDA ]
قوة السمعة:
قديم 25-08-2012, 03:08 AM المشاركة 168   
افتراضي


أهلا أخي ،، هذا كود وجدته بعد بحث طويل ،، مكتوب لدائرة تقريبا نفس مبدأ الدائرة التي نعمل بها " كنت قد وجدته وانا ابحث عن كود للدائرة السابقة ،، التي كنت اعمل عليها " ،، وقمت بالتعديل عليه ،، قليلا ، ولكن إلى الآن يوحد به امور لا افهمها ،،

لما افهم بالضبط كيف تعمل اشارة الــ step لذا لم افهم الكود ،،


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

العبارة التالية

do {} while (B2 == 0); /* loop while Step signal is LO i.e. B2=0*/

تجعل البرنامج يدور في مكانة منتظرا اختلال شرط استمرارها وفيها يقوم بفحص مدخل اشارة الخطرة ( على B2 ) اذا كان 0 يرجع ليفحصة مرة ثانية لحين يكون 1 وعندها يخرج من هذة الدورة ليكمل الى الخطوة التالية يعني تحقق من وجود بداية اشارة الخطوة ثم يتم بعض الاختبارات الاحتياطية بعدها في هذة الخطوة

do { } while (B2 == 1); /* waite for negative edge of Step signal*/

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


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


التعديل الأخير تم بواسطة : WRHLAMDA بتاريخ 25-08-2012 الساعة 03:19 AM


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