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

أدوات الموضوع

Dynamite
:: مهندس ::
تاريخ التسجيل: Dec 2015
المشاركات: 4
نشاط [ Dynamite ]
قوة السمعة:0
قديم 03-12-2015, 01:27 PM المشاركة 1   
ha مساعدة بليز في عدد السايكلز للموتور Twitter FaceBook Google+



السلام عليكم

بغيت برنامج يحسب عدد الدورات في الدي سي موتور
يعني ابي الدي سي موتور يوقف بعدين يرجع لورى 4 دورات ويوقف



طبعا هذا البرنامج اللي راح اشتغل فيه 2 دي سي موتور والبيك 16F866A

وهذا السورس كود

void main()
{
int duty1;
int V1;
int duty2;
int V2;

TRISB = 1; // all portB are input
TRISC = 0; // all portC are output


PWM1_Init(5000); // Initialize PWM module at 5KHz
ADC_Init(); // Initialize ADC module with default settings
PWM1_Start(); // start pwm in ccp1
PWM2_Init(5000); // Initialize PWM module at 5KHz
ADC_Init(); // Initialize ADC module with default settings
PWM2_Start(); // start pwm in ccp2

while(1)// begin the loop
{
if(PORTB.B0 == 1)// if switch is on
{
PORTC.B0 = 1; // at B0 give 5 volt
PORTC.B3 = 0; // at B3 give 0 volt


}
else // other then before
{
PORTC.B0 = 0; // at B0 give 0 volt
PORTC.B3 = 1; // at B3 give 5 volt
}
if(PORTB.B3 == 1)// if switch is on
{
PORTC.B4 = 1; // at B0 give 5 volt
PORTC.B5 = 0; // at B3 give 0 volt


}
else // other then before
{
PORTC.B4 = 0; // at B0 give 0 volt
PORTC.B5 = 1; // at B3 give 5 volt
}
V1 = ADC_Read(0); // value of changable resistor on analouge 0
duty1 = V1/4; // determain the pulse width
PWM1_Set_Duty(duty1); // from 0 to 255 pulse width

V2 = ADC_Read(1); // value of changable resistor on analouge 0
duty2 = V2/4; // determain the pulse width
PWM2_Set_Duty(duty2); // from 0 to 255 pulse width




}

}

اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:409
قديم 04-12-2015, 05:27 AM المشاركة 2   
افتراضي


أولا لم تضع ارقام للمكونات حتى يمكن مناقشتك
ثانيا الموتورات 12 فولت و خرج الميكرو 5 فولت فلن تفتح الترانزيستورات العلوية - اكتب فى جوجل h-bridge تجد الاف الدوائر اختار منها ما يعمل على 12 فولت و التحكم من ميكرو
ثالثا لم تذكر كيف تستشعر أن الموتور يدور ولا متى يصل إلى هدفه و كيف تحدد اربع لفات
و اخيرا ربما التردد 5000 سيكون مرتفعا بالنسبة لموتور و عادة يكون من 50 إلى 200

أيضا طبقا للكود سيتحرك الموتور دوما إما للأمام او الوراء (للخلف) "مع أو عكس عقارب الساعة" طبقا لوضع المفتاح
ولن يتوقف بعد أى فترة فى أى من الإتجاهين


التعديل الأخير تم بواسطة : ماجد عباس محمد بتاريخ 04-12-2015 الساعة 08:10 AM السبب: إضافة
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

Dynamite
:: مهندس ::
تاريخ التسجيل: Dec 2015
المشاركات: 4
نشاط [ Dynamite ]
قوة السمعة:0
قديم 04-12-2015, 10:36 AM المشاركة 3   
افتراضي


أولا لم تضع ارقام للمكونات حتى يمكن مناقشتك
ثانيا الموتورات 12 فولت و خرج الميكرو 5 فولت فلن تفتح الترانزيستورات العلوية - اكتب فى جوجل h-bridge تجد الاف الدوائر اختار منها ما يعمل على 12 فولت و التحكم من ميكرو
ثالثا لم تذكر كيف تستشعر أن الموتور يدور ولا متى يصل إلى هدفه و كيف تحدد اربع لفات
و اخيرا ربما التردد 5000 سيكون مرتفعا بالنسبة لموتور و عادة يكون من 50 إلى 200

أيضا طبقا للكود سيتحرك الموتور دوما إما للأمام او الوراء (للخلف) "مع أو عكس عقارب الساعة" طبقا لوضع المفتاح
ولن يتوقف بعد أى فترة فى أى من الإتجاهين
اخي ماجد . في نفس الدائرة الترانزيسترات تشتغل معي لما اعمل لها ساميولايت
لما قلت كيف تستشعر الموتور يدور او لا فيا ليت تفيدني كيف اعرف
بالنسبة للتردد 5000 فاشتغلت على اقل منه فلما اعمل لها debug ما يرضى يشتغل .
طبعا طبقا للكود فاصل عمل البرنامج هو عمل كونترول في السرعة والاتجاه
لان في الاخير ابي احرك كرسي متحرك فلما اعطيه امر الوقوف فرضا من ريموت كونترول يتوقف بعدين يتجه نحو اليسار 90 درجه ثم يذهب للوراء 4 دورات ويتوقف

المكونات :
مقاوتين متغيره pot - hg 1k
2 سويتش مع مقاومتين 10K
10 ترانزسيسترات من نوع 2n2222
2 دي سي موتور

المخارج من المايكرو
RB 0 الى السوتش
RB 3 الى السوتش
RC 0 الى التانزيستور اول والثالث في االموتور الاول
RC 3 الى التانزيستور الثاني والرابع في الموتور الأول
RC 4 الى التانزيستور الخامس والسابع في الموتور الثاني
RC 5 الى التانزيستور السادس والثامن في الموتور الثاني

CCP 1 موصل في التانزيستور الوحيد في الموتور الاول
CCP 2 موصل في التانزيستور الوحيد في الموتور الثاني


ميدو تانجو
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2014
المشاركات: 84
نشاط [ ميدو تانجو ]
قوة السمعة:0
قديم 04-12-2015, 10:39 AM المشاركة 4   
افتراضي


يمكنك عمل ذلك باستخدام التايمر لكن لابد من تعديل الكود


Dynamite
:: مهندس ::
تاريخ التسجيل: Dec 2015
المشاركات: 4
نشاط [ Dynamite ]
قوة السمعة:0
قديم 04-12-2015, 11:22 AM المشاركة 5   
افتراضي


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


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:409
قديم 04-12-2015, 04:39 PM المشاركة 6   
افتراضي


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

طريقة التايمر أو غيرها لا تجدى فلن يتحرك الموتور المستمر كل مرة نفس الزاوية و نفس السرعة فالبطارية جهدها سيتغير و الحمل أيضا لن يكون موحدا
بالنسبة للتردد 5000 فاشتغلت على اقل منه فلما اعمل لها debug ما يرضى يشتغل .
هذا أيضا من مشاكل البرنامج المذكور فكلما كبر الموتور زاد الحث لملفاته و صار أصعب أن تتعامل بالترددات الأعلى
طبعا طبقا للكود فاصل عمل البرنامج هو عمل كونترول في السرعة والاتجاه
لان في الاخير ابي احرك كرسي متحرك فلما اعطيه امر الوقوف فرضا من ريموت كونترول يتوقف بعدين يتجه نحو اليسار 90 درجه ثم يذهب للوراء 4 دورات ويتوقف

المكونات :
مقاوتين متغيره pot - hg 1k
2 سويتش مع مقاومتين 10K
10 ترانزسيسترات من نوع 2n2222
2 دي سي موتور

المخارج من المايكرو
RB 0 الى السوتش
RB 3 الى السوتش
RC 0 الى التانزيستور اول والثالث في االموتور الاول
RC 3 الى التانزيستور الثاني والرابع في الموتور الأول
RC 4 الى التانزيستور الخامس والسابع في الموتور الثاني
RC 5 الى التانزيستور السادس والثامن في الموتور الثاني

CCP 1 موصل في التانزيستور الوحيد في الموتور الاول
CCP 2 موصل في التانزيستور الوحيد في الموتور الثاني
لاحظ أن موتور يحرك كرسى سيحتاج ربما 10 أمبير أو اكثر فلا تصلح هذه الترانزيستورات


ميدو تانجو
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2014
المشاركات: 84
نشاط [ ميدو تانجو ]
قوة السمعة:0
قديم 05-12-2015, 02:54 AM المشاركة 7   
افتراضي


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


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:409
قديم 05-12-2015, 05:20 AM المشاركة 8   
افتراضي


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

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025