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

   

الصورة الرمزية hussien1995
hussien1995
:: عضو فضي ::
تاريخ التسجيل: Nov 2012
الدولة: syria
المشاركات: 764
نشاط [ hussien1995 ]
قوة السمعة:
قديم 30-09-2014, 04:25 PM المشاركة 65   
Smile شكراً جزيلاً على المساعدة



بالخدمه أخي الكريم وكل عام انتم وأهلكم وبلادكم بألف ألف خير
تسلم يارب وكل عام وأنتَ وأهلكَ وبلدك العزيز بألف خير.
أخي حسن أنا أعرف أنني أثقلت عليك ولكن هل يمكنك كتابة هذا الكود ولكن لغير أيسية,أنظر الصور.

هذا التصميم لثلاث محركات وهوَ كافي للمكنة وبأيسية واحدة,وهذه.

تكفي لمحركين وسأضع منها إثنتين لتكفي المكنة.
المطلوب(فضلاً لاأمراً).
كتابة الكود المناسب للصورة الأولى أو الصورة الثانية بنفس الكود الأخير الذي كتبته وملف البرمجة لأحمله وألف شكر سلف.
ملاحظة:أخي حسن عندما أضع الكود الأخير وأضع build بالبرنامج يكتب لي خطئ فما المشكلة؟؟؟

اعلانات

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


تسلم يارب وكل عام وأنتَ وأهلكَ وبلدك العزيز بألف خير.
أخي حسن أنا أعرف أنني أثقلت عليك ولكن هل يمكنك كتابة هذا الكود ولكن لغير أيسية,أنظر الصور.

هذا التصميم لثلاث محركات وهوَ كافي للمكنة وبأيسية واحدة,وهذه.

تكفي لمحركين وسأضع منها إثنتين لتكفي المكنة.
المطلوب(فضلاً لاأمراً).
كتابة الكود المناسب للصورة الأولى أو الصورة الثانية بنفس الكود الأخير الذي كتبته وملف البرمجة لأحمله وألف شكر سلف.
ملاحظة:أخي حسن عندما أضع الكود الأخير وأضع build بالبرنامج يكتب لي خطئ فما المشكلة؟؟؟
أن شالله أكتب الكود للصوره الثانيه ثم بعد ذلك للصوره الاولى
بالنسبه للمشكله ارجو أظهار الي صوره مشكله

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

الصورة الرمزية hussien1995
hussien1995
:: عضو فضي ::
تاريخ التسجيل: Nov 2012
الدولة: syria
المشاركات: 764
نشاط [ hussien1995 ]
قوة السمعة:
قديم 30-09-2014, 04:56 PM المشاركة 67   
افتراضي


أن شالله أكتب الكود للصوره الثانيه ثم بعد ذلك للصوره الاولى
بالنسبه للمشكله ارجو أظهار الي صوره مشكله
شكراً جزيلاً سلف أخي الكريم حسن وجعله الله في ميزان حسناتك.
هذه الصورة أخي.


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


شكراً جزيلاً سلف أخي الكريم حسن وجعله الله في ميزان حسناتك.
هذه الصورة أخي.
أخي هذا مشروع كامل
http://up.top4top.net/downloadf-top4...5ee81-rar.html

في حاله وجود مشكله أخبرني بها لنجد لها حل ان شالله

تحياتي


الصورة الرمزية hussien1995
hussien1995
:: عضو فضي ::
تاريخ التسجيل: Nov 2012
الدولة: syria
المشاركات: 764
نشاط [ hussien1995 ]
قوة السمعة:
قديم 30-09-2014, 07:12 PM المشاركة 69   
افتراضي


أخي هذا مشروع كامل
http://up.top4top.net/downloadf-top4...5ee81-rar.html

في حاله وجود مشكله أخبرني بها لنجد لها حل ان شالله

تحياتي
شكراً لرفع الملف أخي حسن,عندما أجرب الملف على بروتوس لايعمل,وصلت سويتش وعند ضغطها لايحدث شيء,لاأعرف ماالسبب.


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


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


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


السلام عليكم
هذا الكود للتحكم بمحرك الخطوه عدد 2
كود:
sbit sw_dir1 at         Ra4_bit;
sbit sw_dir1_dir at     TRISA4_bit;
sbit sw_puls1 at         RB4_bit;
sbit sw_puls1_dir at     TRISB4_bit;

sbit sw_dir2 at         Ra5_bit;
sbit sw_dir2_dir at     TRISA5_bit;
sbit sw_puls2 at         RB5_bit;
sbit sw_puls2_dir at     TRISB5_bit;

bit kk1 , kk2  ;
char state1=0 , state2=0 ,puls1=0 , puls2=0 , negative1=0 , negative2=0 ;
unsigned int time_stop1 , time_stop2;
short value1=0 , value2=0;
char *motor_stepper;

void stepper_motor_lift(char *motor_stepper,char no_motor );
void stepper_motor_right(char *motor_stepper,char no_motor);

//Timer0
//Prescaler 1:256; TMR0 Preload = 61; Actual Interrupt Time : 24.96 ms

//Place/Copy this part in declaration section
void InitTimer0()
{
   TMR0  = 61;
}


void interrupt()
{
  if(RBIF_bit==1)
     {
      RBIF_bit=0;
      if(sw_puls1==1)kk1=1;
      if(sw_puls2==1)kk2=1;
     }
  if (TMR0IF_bit)
  {
    TMR0IF_bit         = 0;
    TMR0                 = 61;
    //Enter your code here
    time_stop1++;
    time_stop2++;
  }

}
void main()
{
  cmcon=7;
  sw_dir1_dir=1;
  sw_dir2_dir=1;
  sw_puls1_dir=1;
  sw_puls2_dir=1;
  trisb=0xF0;
  portb &=0xF0;
  trisa=0xF0;
  porta &=0xF0;

  InitTimer0();
  OPTION_REG = 0x87;

  INTCON    = 0xA8;
  while(1)
         {
            if(sw_dir1==1)value1=-1;
            else value1=1;

            if(sw_dir2==1)value2=-1;
            else value2=1;

          if(  kk1==1 )
                         {
                            kk1=0;
                            GIE_bit=0;
                            time_stop1=0;
                            if(value1==1)
                                         {
                                          if(puls1>0 && negative1==2){puls1--;state1=2;}
                                          else {puls1++;state1=1; negative1=1;}

                                         }
                            else if(value1==-1)
                                              {
                                               if(puls1>0 && negative1==1){puls1--;state1=1;}
                                               else {puls1++;state1=2; negative1=2;}
                                              }

                                   if(puls1>=8)puls1=0;

                               GIE_bit=1;
                           }

          if(  kk2==1 )
                         {
                            kk2=0;
                            GIE_bit=0;
                            time_stop2=0;
                            if(value2==1)
                                         {
                                          if(puls2>0 && negative2==2){puls2--;state2=2;}
                                          else {puls2++;state2=1; negative2=1;}

                                         }
                                   else if(value2==-1)
                                              {
                                               if(puls2>0 && negative2==1){puls2--;state2=1;}
                                               else {puls2++;state2=2; negative2=2;}
                                              }

                                   if(puls2>=8)puls2=0;

                               GIE_bit=1;
                           }


          if( state1==1)
               {
                state1=0;
                 stepper_motor_lift(&porta,1);
               }
            else if(  state1==2)
               {
                state1=0;
                stepper_motor_right(&porta,1);
               }


           if( state2==1)
               {
                state2=0;
                stepper_motor_lift(&portb,2);
               }
            else if(  state2==2)
               {
                state2=0;
                stepper_motor_right(&portb,2);
               }

           if(time_stop1> 20 ) // 1sec=1000ms ==> 1000/50=20
                 {
                  porta &=0xF0 ;// OFF motor
                 }

            if(time_stop2> 20 ) // 1sec=1000ms ==> 1000/50=20
                 {
                   portb &=0xF0 ;// OFF motor
                 }
         }
}

//*******************************************//
void stepper_motor_lift(char *motor_stepper,char no_motor )
{
 char pluses1=0;
 *motor_stepper &=0xF0;
 if(no_motor==1)pluses1=puls1;
 else if(no_motor==2)pluses1=puls2;
 switch(pluses1)
             {
              case 0  :*motor_stepper  |=9; break;
              case 1  :*motor_stepper |=1;break; //-45
              case 2  :*motor_stepper |=3;break; //-90
              case 3  :*motor_stepper |=2;break;  //-135
              case 4  :*motor_stepper |=6;break; //-180
              case 5  :*motor_stepper |=4;break; //-225
              case 6  :*motor_stepper |=12;break;//-270
              case 7  :*motor_stepper |=8;break;//-315

              default:break;
             }

}

//*********************************************//
void stepper_motor_right(char *motor_stepper,char no_motor)
{
  char Pulses2=0;
  *motor_stepper &=0xF0;
  if(no_motor==1)Pulses2=puls1;
  else if(no_motor==2)Pulses2=puls2;
   switch(Pulses2)
                 {
                             case 0:*motor_stepper |=9;break; //0
                             case 1:*motor_stepper |=8;break; //45
                             case 2:*motor_stepper |=12;break; //90
                             case 3:*motor_stepper |=4;break;  //135
                             case 4:*motor_stepper |=6;break; //180
                             case 5:*motor_stepper |=2;break; //225
                             case 6:*motor_stepper |=3;break; //270
                             case 7:*motor_stepper |=1;break;//315

                             default:break;
                 }

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


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 30-09-2014 الساعة 07:44 PM

الصورة الرمزية hussien1995
hussien1995
:: عضو فضي ::
تاريخ التسجيل: Nov 2012
الدولة: syria
المشاركات: 764
نشاط [ hussien1995 ]
قوة السمعة:
قديم 30-09-2014, 09:27 PM المشاركة 72   
Thumbs up


السلام عليكم
هذا الكود للتحكم بمحرك الخطوه عدد 2
كود:
sbit sw_dir1 at         Ra4_bit;
sbit sw_dir1_dir at     TRISA4_bit;
sbit sw_puls1 at         RB4_bit;
sbit sw_puls1_dir at     TRISB4_bit;

sbit sw_dir2 at         Ra5_bit;
sbit sw_dir2_dir at     TRISA5_bit;
sbit sw_puls2 at         RB5_bit;
sbit sw_puls2_dir at     TRISB5_bit;

bit kk1 , kk2  ;
char state1=0 , state2=0 ,puls1=0 , puls2=0 , negative1=0 , negative2=0 ;
unsigned int time_stop1 , time_stop2;
short value1=0 , value2=0;
char *motor_stepper;

void stepper_motor_lift(char *motor_stepper,char no_motor );
void stepper_motor_right(char *motor_stepper,char no_motor);

//Timer0
//Prescaler 1:256; TMR0 Preload = 61; Actual Interrupt Time : 24.96 ms

//Place/Copy this part in declaration section
void InitTimer0()
{
   TMR0  = 61;
}


void interrupt()
{
  if(RBIF_bit==1)
     {
      RBIF_bit=0;
      if(sw_puls1==1)kk1=1;
      if(sw_puls2==1)kk2=1;
     }
  if (TMR0IF_bit)
  {
    TMR0IF_bit         = 0;
    TMR0                 = 61;
    //Enter your code here
    time_stop1++;
    time_stop2++;
  }

}
void main()
{
  cmcon=7;
  sw_dir1_dir=1;
  sw_dir2_dir=1;
  sw_puls1_dir=1;
  sw_puls2_dir=1;
  trisb=0xF0;
  portb &=0xF0;
  trisa=0xF0;
  porta &=0xF0;

  InitTimer0();
  OPTION_REG = 0x87;

  INTCON    = 0xA8;
  while(1)
         {
            if(sw_dir1==1)value1=-1;
            else value1=1;

            if(sw_dir2==1)value2=-1;
            else value2=1;

          if(  kk1==1 )
                         {
                            kk1=0;
                            GIE_bit=0;
                            time_stop1=0;
                            if(value1==1)
                                         {
                                          if(puls1>0 && negative1==2){puls1--;state1=2;}
                                          else {puls1++;state1=1; negative1=1;}

                                         }
                            else if(value1==-1)
                                              {
                                               if(puls1>0 && negative1==1){puls1--;state1=1;}
                                               else {puls1++;state1=2; negative1=2;}
                                              }

                                   if(puls1>=8)puls1=0;

                               GIE_bit=1;
                           }

          if(  kk2==1 )
                         {
                            kk2=0;
                            GIE_bit=0;
                            time_stop2=0;
                            if(value2==1)
                                         {
                                          if(puls2>0 && negative2==2){puls2--;state2=2;}
                                          else {puls2++;state2=1; negative2=1;}

                                         }
                                   else if(value2==-1)
                                              {
                                               if(puls2>0 && negative2==1){puls2--;state2=1;}
                                               else {puls2++;state2=2; negative2=2;}
                                              }

                                   if(puls2>=8)puls2=0;

                               GIE_bit=1;
                           }


          if( state1==1)
               {
                state1=0;
                 stepper_motor_lift(&porta,1);
               }
            else if(  state1==2)
               {
                state1=0;
                stepper_motor_right(&porta,1);
               }


           if( state2==1)
               {
                state2=0;
                stepper_motor_lift(&portb,2);
               }
            else if(  state2==2)
               {
                state2=0;
                stepper_motor_right(&portb,2);
               }

           if(time_stop1> 20 ) // 1sec=1000ms ==> 1000/50=20
                 {
                  porta &=0xF0 ;// OFF motor
                 }

            if(time_stop2> 20 ) // 1sec=1000ms ==> 1000/50=20
                 {
                   portb &=0xF0 ;// OFF motor
                 }
         }
}

//*******************************************//
void stepper_motor_lift(char *motor_stepper,char no_motor )
{
 char pluses1=0;
 *motor_stepper &=0xF0;
 if(no_motor==1)pluses1=puls1;
 else if(no_motor==2)pluses1=puls2;
 switch(pluses1)
             {
              case 0  :*motor_stepper  |=9; break;
              case 1  :*motor_stepper |=1;break; //-45
              case 2  :*motor_stepper |=3;break; //-90
              case 3  :*motor_stepper |=2;break;  //-135
              case 4  :*motor_stepper |=6;break; //-180
              case 5  :*motor_stepper |=4;break; //-225
              case 6  :*motor_stepper |=12;break;//-270
              case 7  :*motor_stepper |=8;break;//-315

              default:break;
             }

}

//*********************************************//
void stepper_motor_right(char *motor_stepper,char no_motor)
{
  char Pulses2=0;
  *motor_stepper &=0xF0;
  if(no_motor==1)Pulses2=puls1;
  else if(no_motor==2)Pulses2=puls2;
   switch(Pulses2)
                 {
                             case 0:*motor_stepper |=9;break; //0
                             case 1:*motor_stepper |=8;break; //45
                             case 2:*motor_stepper |=12;break; //90
                             case 3:*motor_stepper |=4;break;  //135
                             case 4:*motor_stepper |=6;break; //180
                             case 5:*motor_stepper |=2;break; //225
                             case 6:*motor_stepper |=3;break; //270
                             case 7:*motor_stepper |=1;break;//315

                             default:break;
                 }

 }
http://up.top4top.net/downloadf-top4...da321-rar.html
ألف شكر لك أخي حسن على سرعة تعاونك معي.
هذا الكود يعمل بكفاءة ولكنهُ لايقوم بعكس إتجاه المحرك.
هل من الممكن أن يكون برنامج بروتوس به خلل ما,أنا استخدم النسخة 8.1,ما النسخة التي تستخدمها أنت؟؟؟؟
ألف شكر لكَ مرة أخرى على هذا العمل الجبار وبميزان حسناتك بإذن الله.



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