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

   

النمرالفولاذي
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2012
المشاركات: 134
نشاط [ النمرالفولاذي ]
قوة السمعة:
قديم 26-10-2014, 01:47 AM المشاركة 41   
افتراضي



تم تجريب الدائره على محرك النتيجه مرضيه لاكن يحتاج الى تنعيم الحركة اكثر
هذا فيديو يبين طرقت الاداء
https://m.youtube.com/watch?v=r1Nyqf...st_app=1&app=m

اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 26-10-2014, 05:17 AM المشاركة 42   
افتراضي


تم تجريب الدائره على محرك النتيجه مرضيه لاكن يحتاج الى تنعيم الحركة اكثر
هذا فيديو يبين طرقت الاداء
https://m.youtube.com/watch?v=r1Nyqf...st_app=1&app=m
أخي الفيديو لايعمل وتظهر رساله لي وتقول
This video is private.

ماهي مواصفات محرك ؟
يعني صراحه لم أفهم تنعيم الحركة اكثر هل تقصد ببطيئ الحركه او ....

ربما يحتاج الى ضبط السرعه من قبل برنامج

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

النمرالفولاذي
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2012
المشاركات: 134
نشاط [ النمرالفولاذي ]
قوة السمعة:
قديم 27-10-2014, 01:00 AM المشاركة 43   
افتراضي


أخي الفيديو لايعمل وتظهر رساله لي وتقول
This video is private.

ماهي مواصفات محرك ؟
يعني صراحه لم أفهم تنعيم الحركة اكثر هل تقصد ببطيئ الحركه او ....

ربما يحتاج الى ضبط السرعه من قبل برنامج
اسف استاذ حسن قمت برفع الفيديو من جديد ووضعه على النشر العام اما عمل المحرك ليس بالدقه المطلوبه سوف احاول تنعيم حركته الدورانيه اقصد عندما يدور بعض الخطوات غير منتضمه وضبطت السرعه ايضا وانشاء الله خير
https://www.youtube.com/watch?v=r1Ny...l-3EH2KQBqVEXQ


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 27-10-2014, 05:45 AM المشاركة 44   
افتراضي


اسف استاذ حسن قمت برفع الفيديو من جديد ووضعه على النشر العام اما عمل المحرك ليس بالدقه المطلوبه سوف احاول تنعيم حركته الدورانيه اقصد عندما يدور بعض الخطوات غير منتضمه وضبطت السرعه ايضا وانشاء الله خير
https://www.youtube.com/watch?v=r1Ny...l-3EH2KQBqVEXQ
السلام عليكم
يبدو أخي محرك ذو خطوه كبيره أقصد او أن سرعته عاليه
لذا أضبط السرعه وتأكد ايضا كم هي درجه الخطوه step angle قد تكون 45 درجه وهذه كبيره سترى محرك سريع اما مثلا step angle=1.8 ستلاحظ ان يتحرك بدقه عاليه جدا


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


السلام عليكم ورحمه الله

كل الشكر والاحترام لمهندسنا الغالى الاستاذ .. حسن .. على العطاء المبزول والجهد المتواصل ...

لى سؤال أخى الكريم وأسف انه خارج الموضوع ... هل يوجد طريه لتوفير كتابه الاكواد بالغة ميكرو سى ... لأنى عملة برنامج للتحكم فى ايضائة عدد من الليدات .. وللأسف عند ترجمة البرنامج يخبرنى أن البرنامج تجاوز مساحة الميكرو ..

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


هذة هى الطريقة اللتى استخدمها ..

void main() {
// int x;

adcon1 = 0x07;

loop:

TRISB=0b00000000;
TRISC=0b00000000;
TRISD=0b00000000;
TRISA=0b00000000;
TRISE=0b00000000;
//
PORTB=0b00000000;
PORTC=0b00000000;
PORTD=0b00000000;
PORTA=0b00000000;
PORTE=0b00000000;
// for(x=0;x<5;x++)
{PORTB=0b11111111;
PORTC=0b11111111;
PORTD=0b11111111;
PORTA=0b00000111;
PORTE=0b00000111;
delay_ms(1000);

PORTB=0b0;
PORTC=0b0;
PORTD=0b0;
PORTA=0b0;
PORTE=0b0;
delay_ms(1000);}
PORTB=0b11111111;
PORTD=0b11000000;
delay_ms(1000);
PORTC=0b11110011;
PORTD=0b11111100;
delay_ms(1000);
PORTC=0b00001100;
PORTD=0b11000011;
PORTA=0b00000111;
PORTE=0b00000111;
delay_ms(1000);
PORTB=0b0;
PORTC=0b11111111;
PORTD=0b00111111;
delay_ms(1000);
PORTA=0b0;
PORTE=0b0;
PORTD=0b11001100;
PORTB=0b00000111;
PORTC=0b01110000;
delay_ms(1000);
PORTC=0b0;
PORTD=0b11000000;
PORTB=0b00000111;
PORTA=0b00000111;
PORTE=0b00000011;
delay_ms(1000);
PORTA=0b0;
PORTE=0b0;
PORTC=0b10000011;
PORTD=0b00110000;
PORTB=0b11111100;
delay_ms(1000);
PORTD=0b11010000;
PORTB=0b11111111;
PORTC=0b11110000;
delay_ms(1000);
PORTB=0b0;
PORTD=0b00010011;
PORTC=0b11111100;
PORTA=0b00000111;
PORTE=0b00000111;
delay_ms(1000);
PORTD=0b11110000;
PORTB=0b11100001;
PORTC=0b11000000;
PORTE=0b00000011;
PORTA=0b00000100;
delay_ms(1000);
PORTB=0b0;
PORTD=0b00010110;
PORTC=0b01011001;
PORTE=0b00000011;
PORTA=0b00000010;
delay_ms(1000);
//
PORTC=0b0;
PORTE=0b0;
PORTA=0b0;
PORTB=0b11111111;
PORTD=0b11000000;
delay_ms(1000);
PORTB=0b01111111;
PORTD=0b11000100;
delay_ms(100);
PORTB=0b00111111;
PORTD=0b11001100;
delay_ms(100);
PORTB=0b00011111;
PORTC=0b00010000;
delay_ms(100);
PORTB=0b00001111;
PORTC=0b00110000;
delay_ms(100);
PORTB=0b00000111;
PORTC=0b01110000;
delay_ms(100);
PORTB=0b00000011;
PORTC=0b11110000;
delay_ms(100);
PORTB=0b00000001;
PORTD=0b11011100;
delay_ms(100);
PORTB=0b00000000;
PORTD=0b11111100;
delay_ms(100);
PORTD=0b01111100;
PORTC=0b11110001;
delay_ms(100);
PORTD=0b00111100;
PORTC=0b11110011;
delay_ms(100);
PORTD=0b01111100;
PORTC=0b11110001;
delay_ms(100);
PORTD=0b11111100;
PORTC=0b11110000;
delay_ms(100);
PORTD=0b11001100;
PORTB=0b00000011;
delay_ms(100);
PORTC=0b01110000;
PORTB=0b00000111;
delay_ms(100);
PORTC=0b00110000;
PORTB=0b00001111;
delay_ms(100);
PORTC=0b00010000;
PORTB=0b00011111;
delay_ms(100);
PORTC=0b00000000;
PORTB=0b00111111;
delay_ms(100);
PORTD=0b11000100;
PORTB=0b01111111;
delay_ms(100);
PORTD=0b11000000;
PORTB=0b11111111;
delay_ms(100);
PORTD=0b0;
PORTB=0b0;
delay_ms(100);
PORTD=0b01000000;
delay_ms(100);
PORTD=0b11000000;
delay_ms(100);
PORTB=0b00000001;
delay_ms(100);
PORTB=0b00000011;
delay_ms(100);
PORTB=0b00000111;
delay_ms(100);
PORTB=0b00001111;
delay_ms(100);
PORTB=0b00011111;
delay_ms(100);
PORTB=0b00111111;
delay_ms(100);
PORTB=0b01111111;
delay_ms(100);
PORTB=0b11111111;
delay_ms(100);
PORTD=0b11000100;
delay_ms(100);
PORTD=0b11001100;
delay_ms(100);
PORTC=0b00010000;
delay_ms(100);
PORTC=0b00110000;
delay_ms(100);
PORTC=0b01110000;
delay_ms(100);
PORTC=0b11110000;
delay_ms(100);
PORTD=0b11011100;
delay_ms(100);
PORTD=0b11111100;
delay_ms(100);
PORTC=0b11110001;
delay_ms(100);
PORTC=0b11110011;
delay_ms(100);
PORTD=0b11111110;
delay_ms(100);
PORTD=0b11111111;
delay_ms(100);
PORTC=0b11111011;
delay_ms(100);
PORTC=0b11111111;
delay_ms(100);
PORTE=0b00000100;
delay_ms(100);
PORTE=0b00000110;
delay_ms(100);
PORTE=0b00000111;
delay_ms(100);
PORTA=0b00000100;
delay_ms(100);
PORTA=0b00000110;
delay_ms(100);
PORTA=0b00000111;
delay_ms(100);
//
PORTB=0b0;
PORTC=0b0;
PORTD=0b0;
PORTA=0b0;
PORTE=0b0;
PORTD=0b00000011;
PORTC=0b00001100;
PORTE=0b00000111;
PORTA=0b00000111;
delay_ms(1000);
PORTD=0b00000111;
delay_ms(100);
PORTD=0b00001111;
delay_ms(100);
PORTD=0b00001011;
PORTC=0b00011100;
delay_ms(100);
PORTD=0b00000011;
PORTC=0b00111111;
delay_ms(100);
PORTC=0b01101100;
delay_ms(100);
PORTC=0b11001100;
delay_ms(100);
PORTD=0b00000011;


goto loop;
}

هل يوجد طريقة مختصرة لتعريف البورت أو اختيار بن معين بدون الحاجة لكتابه باقى البنات مثلا انا محتاج 1منطقى على البن رقم 7 و 4 من البورت B فهكتبها كدة ...

0PORTB=0b10010000 ;


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 27-10-2014 الساعة 06:33 AM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 27-10-2014, 06:31 AM المشاركة 46   
افتراضي


السلام عليكم ورحمه الله

كل الشكر والاحترام لمهندسنا الغالى الاستاذ .. حسن .. على العطاء المبزول والجهد المتواصل ...

لى سؤال أخى الكريم وأسف انه خارج الموضوع ... هل يوجد طريه لتوفير كتابه الاكواد بالغة ميكرو سى ... لأنى عملة برنامج للتحكم فى ايضائة عدد من الليدات .. وللأسف عند ترجمة البرنامج يخبرنى أن البرنامج تجاوز مساحة الميكرو ..

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


هذة هى الطريقة اللتى استخدمها ..
أخي ماهم نوع البيك وكذلك تردد كرستاله


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


أخي ماهم نوع البيك وكذلك تردد كرستاله
نوع البك هو 16F877A

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


وكنت اريد ان اشكرك على مساعدتى فى المشروع الاول لى فى هذا المجال وكان الخطأ فى سعة المكسفات .. كانو 100 بيكو فراد .. وركبت 22 بيكو فراد والدائرة اشتغلت تمام ..
الف شكر لك أخى الكريم


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 27-10-2014 الساعة 06:40 AM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 27-10-2014, 06:26 PM المشاركة 48   
افتراضي


السلام عليكم ورحمه الله

كل الشكر والاحترام لمهندسنا الغالى الاستاذ .. حسن .. على العطاء المبزول والجهد المتواصل ...

لى سؤال أخى الكريم وأسف انه خارج الموضوع ... هل يوجد طريه لتوفير كتابه الاكواد بالغة ميكرو سى ... لأنى عملة برنامج للتحكم فى ايضائة عدد من الليدات .. وللأسف عند ترجمة البرنامج يخبرنى أن البرنامج تجاوز مساحة الميكرو ..

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


هذة هى الطريقة اللتى استخدمها ..




هل يوجد طريقة مختصرة لتعريف البورت أو اختيار بن معين بدون الحاجة لكتابه باقى البنات مثلا انا محتاج 1منطقى على البن رقم 7 و 4 من البورت B فهكتبها كدة ...

0PORTB=0b10010000 ;
السلام عليكم
أخي أنا أخذت كود ونسخته وعملت build فلم يتجاوز سعه ذاكره روم او رام


أخي تأكد من أعدادات مشروع أنك مختار البيك 16f877a وضبط كرستاله على XT
لاتنسى تربط مقاومه 10k الى طرف mclr لان هذا البيك لايحتوي على خاصيه الغاء mclr

بالنسبه لاختصار الكود
تذكر هذه طريقه اذا عندك كود يتكرر قم بأنشاء داله وتكتب بها الكود ومن ثم تستدعي هذه داله لانك كلما تستدعي داله فأن كود لايزداد لان داله تمت خزنها وعندما تستدعيها فأن مايكرو او البيك يستدعيها من مكان مخزون فيها داله في روم

مثلا ديلي 1000ms أكدر أكتبها هكذا
[CODE]void delay_1_second()
{
delay_ms(1000);
}[/CODE
هنا أنشأت داله 1 ثانيه وكلما أريد أكتب ديلي 1 ثانيه أستدعي هذه داله لان كتابه أمر ديلي يأخذ حير من ذاكره اما أنشاء داله لزمن 1 ثانيه فيأخذ من ذاكره حيز واحد فقط فكلما كررتها فلايزداد حجم ذاكره

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

أذن حاول تفهم الدوال ومن ثم تبني الكود على أساس دوال

تحياتي


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 27-10-2014 الساعة 06:40 PM


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