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

   

hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 696
نشاط [ hamzazayyad ]
قوة السمعة:
قديم 31-05-2014, 02:11 PM المشاركة 25   
افتراضي



اوكي اخي بس لي سؤال هل نقوم نحن بتوليد اشاره pwm لانه لايمكن اعتماد على pwm موجوده في مكتبه مايكروسي برو لانه يطلب تردد اكثر من 50 وعلاوه على ذلك عدد الاطراف pwm قليل 1 او 2

سؤال اخر ماذا يحصل لو توقفنا عن ارسال النبضات ؟
و

سؤال اخر رأيت كثير من برامج ترسل عده نبضات ثم تتوقف
مثل
http://www.mikroe.com/forum/viewtopic.php?f=88&t=30615

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

ما رايكم؟؟

اعلانات

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 31-05-2014, 03:26 PM المشاركة 26   
افتراضي


اوكي اخي بس لي سؤال هل نقوم نحن بتوليد اشاره pwm لانه لايمكن اعتماد على pwm موجوده في مكتبه مايكروسي برو لانه يطلب تردد اكثر من 50 وعلاوه على ذلك عدد الاطراف pwm قليل 1 او 2

سؤال اخر ماذا يحصل لو توقفنا عن ارسال النبضات ؟
و

سؤال اخر رأيت كثير من برامج ترسل عده نبضات ثم تتوقف
مثل
http://www.mikroe.com/forum/viewtopic.php?f=88&t=30615

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

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

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


نعم علينا ان نقوم نحن بتوليد اشارة الBWM واستخدامها مع اطراف المايكرو
حقيقة لم اجرب ماذا سيحدث ان توقفنا عن ارسال النبضات ولكن لو لم يكن يضر بالسيرفو لاكتفو بقول ان هذه المحركات يتم التحكم بزاويتها من 1 الى 2 ميلي ثانية دون ذكر التردد
السلام عليكم
هل يمكن اخي مساعدتنا في حصول على داتا شيت لمحرك سيرفو كما طلب منا اخ hamzazayyad

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

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


hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 696
نشاط [ hamzazayyad ]
قوة السمعة:
قديم 31-05-2014, 10:20 PM المشاركة 28   
افتراضي


السلام عليكم
هل يمكن اخي مساعدتنا في حصول على داتا شيت لمحرك سيرفو كما طلب منا اخ hamzazayyad

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

وشكر جزيلا لك ولكم من ساهم معنا في انجاح فكره
تحياتي
اخ حسن يمكنك الاستفاده من موقع الشركه العملاقه baldor motors

http://www.baldor.com/products/default.asp
ولديهم العديد من الانواع فهي الان مملوكه لشركه ABB
فكما هي العاده الشركات الكبرى هي من تمسك بالاسواق فاكبر الشركات للمحركات والدرايفرات الان هما ABB و SEIMINES


بالتوفيق


ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 01-06-2014, 01:50 AM المشاركة 29   
افتراضي


السلام عليكم
هل يمكن اخي مساعدتنا في حصول على داتا شيت لمحرك سيرفو كما طلب منا اخ hamzazayyad

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

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


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


نعم اخي لدي مشروع لاخراج BWM على اي عدد من اقطاب المايكرو او على ال 74595
ولكن استخدمت فيه تايمرين ساحاول ان يكون المشروع بتايمر واحد ان شاء الله
السلام عليكم
انا قد حاولت منذ فتره توليداشاره pwm ولكن لم أحصل على نتائج مرضيه تماما هذا هو الرابط
http://www.qariya.info/vb/showthread.php?t=135593
وانا أنتظرك وأقترح اخي نبني فكرتين (( بعد أذن حضرتك))
1- بناء pwm بدون اعتماد على pwm موجوده ويكون عملها مستقل عن عمل مايكرو وكذلك نستطيع التحكم في duty cycle

2- بناء درايفر لقياده محركات السيرفو

ارجو ان يوفقنا الله في وصول الى افضل فكره

تحياتي الطيبه لكم


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


السلام عليكم
اخواني عندي مقترح لكون عمليه توليد pwm لكل طرف تحتاج بحاجه الى دقه لان سيرفو يتعامل بزوياه دقيقه من 0 الى مثلا 180 بخطوه درجه درجه

اقترح نعمل برنامج فقط للسيرفو اي نستخدم مايكروكنترولر يكون درايفر ويتم وضع برنامج صغير وقليل الاكود (( لان كثره الاكواد يؤثر على زاويه لانه لايمكننا اعطاء انتربت مثلا لكل 10 مايكرو ثانيه لان مايكرو عندها سوف ينتحر لامحاله طبعا امزح ))

اما كيف نتحكم بزاويه فيمكنه ربطه عبر مايكرو اخر تتم فيه عمليه حسابات الزاويه ثم ترسل اما عبر uart او SPI


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

كود:
#define max_angle_servo  360
#define min_pulse_micro_second_servo  100  // 1000us/10=100 us
#define max_pulse_micro_second_servo  200 // 2000us/10=200  us

//*******************************************************************//
unsigned char  m1=0,m2=0,m3=0,m4=0;
unsigned int cont1,cont2,cont3,cont4 ,cont5;
//unsigned int delay_waitting=min_pulse_micro_second_servo  , contm2=0 , contm1;

//*****************************************************************************//
//Timer0
//Prescaler 1:1; TMR0 Preload = 246; Actual Interrupt Time : 10 us

//Place/Copy this part in declaration section
void InitTimer0(){
  OPTION_REG         = 0x88;
  TMR0                 = 246;
  INTCON         = 0xA0;
}

void Interrupt(){
  if (TMR0IF_bit){
    TMR0IF_bit         = 0;
    TMR0                 = 246;
    //Enter your code here
    cont1 +=10;
    cont2 +=10;
    cont3 +=10;
    cont4  +=10;
    cont5  +=10;
    if(cont1==1200){portd.f0=0;}
    if(cont2==1300){portd.f1=0;}
    if(cont3==1500){portd.f2=0;}
    if(cont4==1700){portd.f3=0;}
    if(cont5==20000){portd=255;cont1=0;cont2=0;cont3=0;cont4=0;cont5=0;}
  }
}

//*******************************************************************//
void main() 
{
 adcon1=6;
 InitTimer0() ;
 trisd=0;
 portd=0;
 m1=0;
 while(1)
        {
         // check angle
        }
 
}
مشكله هي لاحصل على ماريده بالضبط فمثلا اريد تشغيل محرك 1 بزاويه 180 درجه (( محرك سيرفو 360 درجه)) هنا اعطيته نبضه 1.5ms ومفروض اطفاء بعد
20-1.5 ولما كان انتربت يحدث كل 10 us
cont1 +=10 يعني كل انتربت اضيف 10 فمن مفروض انه 150 هي تعادل 1500 و 2000 تعادل 20000
فأين مشكله

تحياتي


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 02-06-2014 الساعة 06:13 AM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 03-06-2014, 04:07 PM المشاركة 32   
ha


السلام عليكم
أستخدمت تايمر1 للحصول على PWM لكل بن من اطراف مايكروكنترولر وفعلا أحصلت على نتائج جيده ولكن هناك مشكله ارجو مساعده في حلها وهي يوجد ارتجاف في اشاره خارجه علما انه يمكن تحكم duty cycle بدون مشاكل وتردد ثابت لايتغير اليكم كود بسيط علما انه سوف يتم تطوير مشروع في حاله وصول الى نتيجه مرضيه

http://up.top4top.net/downloadf-top4...44791-rar.html

الكود
كود:
#define max_angle_servo  360
#define min_pulse_micro_second_servo  1000  // 1000us
#define max_pulse_micro_second_servo  2000 // 2000us
const char servo_motor=20;
//*******************************************************************//
unsigned int timer , angle[servo_motor ],cont[servo_motor];

unsigned char update=1,servo , servo_state , cont_no_motor=0 , servo_number[3], angle_number[3] , m[servo_motor];
//*****************************************************************************//
//Timer1
//Prescaler 1:1; TMR1 Preload = 45536; Actual Interrupt Time : 20 ms

//Place/Copy this part in declaration section
void InitTimer1(){
  T1CON         = 0x01;
  TMR1IF_bit         = 0;
  TMR1H         = 0xB1;
  TMR1L         = 0xE0;
  TMR1IE_bit         = 1;
  INTCON         = 0xC0;
}

void Interrupt(){
 char tmp ;
  if (TMR1IF_bit)
                 {
                  TMR1IF_bit = 0;
                  TMR1H         = 0xB1;
                  TMR1L         = 0xE0;
                  //Enter your code here
                 }

}

//*******************************************************************//
void main()
{
 cmcon=7;
 InitTimer1() ;
 trisa=0;
 porta=0;

 portb=0;
 while(1)
        {
         timer=((TMR1H*256)+TMR1L)-45536;

         if(timer<=1125 )porta.f0=1; // 45 degree
         else {porta.f0=0;}

         if(timer<=1250)porta.f1=1; // 90 degree
         else {porta.f1=0;}

         if(timer<=1500)porta.f2=1; // 180 degree
         else {porta.f2=0;}

         if(timer<=2000)porta.f3=1; // 360 degree
         else {porta.f3=0;}



        } ;

}



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