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

   

abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:
قديم 12-03-2015, 02:33 AM المشاركة 25   
افتراضي



شكرا اخي العزيز
عند الرفع من الزر تبقى مشتعلة لمدة 3 تواني ثم تنطفئ

اعلانات

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


تمام أخي حسن الكود عمل بشكل رائع وعلى الواقع بإستخدام ليد والأن سوف أجربه على المحركات وأخبرك النتيجة ولكن هناك شيء ينقص الكود وهوَ ليد بيان لكي يبين أن الدارة تعمل فتومض الليدة عدت مرات قبل أن تعمل الدارة,أنا حاولت إذافة هذا الأمر ولكن لايعمل وأجهل السبب؟؟
شكراً جزيلاً أخي حسن على مساعدتي وجعل الله هذا العمل في ميزان حسناتك
تمام حمدلله
تمت اضافه ليد على RB0
كود:
sbit motor1 at RA0_bit;
sbit motor1_dir at TRISA0_bit;
sbit motor2 at RA1_bit;
sbit motor2_dir at TRISA1_bit;
sbit motor3 at RA2_bit;
sbit motor3_dir at TRISA2_bit;

sbit led at RB0_bit;
sbit led_dir at TRISB0_bit;

unsigned int time1_stop , time2_stop,time3_stop;
unsigned char flag1_run, flag2_run=0 ,flag3_run=0 , x;

#define OFF  1
#define ON  0
//Timer0
//Prescaler 1:256; TMR0 Preload = 61; Actual Interrupt Time : 24.96 ms

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

void Interrupt()
{
  if(RBIF_bit==1 )
    {
     RBIF_bit=0;
     if(RB4_bit==1)
       {
        motor1=ON; // Run motor
        time1_stop=0;// reset time
        flag1_run=1;
       }

       if(RB5_bit==1)
       {
        motor2=ON; // Run motor
        time2_stop=0;// reset time
        flag2_run=1;
       }

       if(RB6_bit==1)
       {
        motor3=ON; // Run motor
        time3_stop=0;// reset time
        flag3_run=1;
       }
    }
  if (TMR0IF_bit){
    TMR0IF_bit         = 0;
    TMR0                 = 61;
    //Enter your code here
    //Enter your code here
      if(flag1_run==1) time1_stop++;
      if(flag2_run==1) time2_stop++;
      if(flag3_run==1) time3_stop++;
  }
}


void main()
{
 led_dir=0;
 for(x=0;x<10;x++)
      {
      led=~led;
      delay_ms(500);
      }
 led=1;
 InitTimer0();
 TRISB4_bit=1;
 TRISB5_bit=1;
 TRISB6_bit=1;
 motor1_dir=0;
 motor2_dir=0;
 motor3_dir=0;
 motor1=OFF;
 motor2=OFF;
 motor3=OFF;
 RBIE_bit=1;//Enables the RB port change Interrupt
 RBIF_bit=0;//When at least one of the RB<7:4> pins changes state (must be cleared in software)
 

 while(1)
       {
        if(flag1_run==1 && time1_stop>=60)// mean time>=3000ms=3s
            {
             flag1_run=0;
             time1_stop=0;
             motor1=OFF;
            }
        if(flag2_run==1 && time2_stop>=60)// mean time>=3000ms=3s
            {
             flag2_run=0;
             time2_stop=0;
             motor2=OFF;
            }
            
         if(flag3_run==1 && time3_stop>=60)// mean time>=3000ms=3s
            {
             flag3_run=0;
             time3_stop=0;
             motor3=OFF;
            }
       }

}

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

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


شكرا اخي العزيز
عند الرفع من الزر تبقى مشتعلة لمدة 3 تواني ثم تنطفئ
عفوا اعطيني الكود لان لاأستطيع الاجابه بدون الكود


الصورة الرمزية hussien1995
hussien1995
:: عضو فضي ::
تاريخ التسجيل: Nov 2012
الدولة: syria
المشاركات: 764
نشاط [ hussien1995 ]
قوة السمعة:
قديم 12-03-2015, 08:47 PM المشاركة 28   
افتراضي


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


mohamedamie
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2015
المشاركات: 109
نشاط [ mohamedamie ]
قوة السمعة:
قديم 12-03-2015, 10:08 PM المشاركة 29   
Post


السلام عليكم
أخي صاحب الموضوع لقد كنت بحاجة فقط إلي مقاومة تضعها بالتسلسل مع المحرك ولست بحاجة إلي كل هذه التعقيدات المقاومة التي يجب إستعمالها هي مقاومة ضعيفة مثلا 1 أوم وتكون 5 وات وهي تكفي


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:
قديم 13-03-2015, 02:20 AM المشاركة 30   
افتراضي


عفوا اعطيني الكود لان لاأستطيع الاجابه بدون الكود
تعلم اخي اني ان وضعت delay فلن تعمل اليدات الاخرى حتى ينتي من الاولى
كود:
sbit sw1 at RA2_bit;
sbit sw1_dir at TRISA2_bit;
sbit sw2 at RA3_bit;
sbit sw2_dir at TRISA3_bit;
sbit sw3 at RA4_bit;
sbit sw3_dir at TRISA4_bit;

char sw1_flag=0,sw2_flag=0,sw3_flag=0 ;
char sw1_time=0,sw2_time=0,sw3_time=0 ;
 int x=0;
//Timer1

//Prescaler 1:2; TMR1 Preload = 15536; Actual Interrupt Time : 50 ms

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

void Interrupt(){
  if (TMR1IF_bit){
    TMR1IF_bit = 0;
    TMR1H         = 0x3C;
    TMR1L         = 0xB0;
    //Enter your code here
    if(sw1_flag==1)sw1_time++;
    if(sw2_flag==1)sw2_time++;
    x++;
  }
}

void main()
{
cmcon=7;
InitTimer1();
 sw1_dir=1;
 sw2_dir=1;
 sw3_dir=1;
trisb=0;
portb=0;
while(1){
         if(sw1==0 ) sw1_flag=1;
         if(sw2==0 ) sw2_flag=1;
        if(sw1_flag==1 && sw1_time>=10)// this mean time >= 500
          {
           sw1_flag=0;
           sw1_time=0;
           PORTB.F0=1;
          }

          if(sw2_flag==1 && sw2_time>=10)// this mean time >= 500
          {
           sw2_flag=0;
           sw2_time=0;
           PORTB.F1=1;
          }
 if(sw1==1 && portb.f0 ==1){
 x=0;
 while(x>60){
  portb.f0=1;
  }
  portb.f0=0;
       }
}


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 13-03-2015, 07:34 AM المشاركة 31   
افتراضي


تعلم اخي اني ان وضعت delay فلن تعمل اليدات الاخرى حتى ينتي من الاولى
كود:
sbit sw1 at RA2_bit;
sbit sw1_dir at TRISA2_bit;
sbit sw2 at RA3_bit;
sbit sw2_dir at TRISA3_bit;
sbit sw3 at RA4_bit;
sbit sw3_dir at TRISA4_bit;

char sw1_flag=0,sw2_flag=0,sw3_flag=0 ;
char sw1_time=0,sw2_time=0,sw3_time=0 ;
 int x=0;
//Timer1

//Prescaler 1:2; TMR1 Preload = 15536; Actual Interrupt Time : 50 ms

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

void Interrupt(){
  if (TMR1IF_bit){
    TMR1IF_bit = 0;
    TMR1H         = 0x3C;
    TMR1L         = 0xB0;
    //Enter your code here
    if(sw1_flag==1)sw1_time++;
    if(sw2_flag==1)sw2_time++;
    x++;
  }
}

void main()
{
cmcon=7;
InitTimer1();
 sw1_dir=1;
 sw2_dir=1;
 sw3_dir=1;
trisb=0;
portb=0;
while(1){
         if(sw1==0 ) sw1_flag=1;
         if(sw2==0 ) sw2_flag=1;
        if(sw1_flag==1 && sw1_time>=10)// this mean time >= 500
          {
           sw1_flag=0;
           sw1_time=0;
           PORTB.F0=1;
          }

          if(sw2_flag==1 && sw2_time>=10)// this mean time >= 500
          {
           sw2_flag=0;
           sw2_time=0;
           PORTB.F1=1;
          }
 if(sw1==1 && portb.f0 ==1){
 x=0;
 while(x>60){
  portb.f0=1;
  }
  portb.f0=0;
       }
}
أخي هذا الكود خاطئ
كود:
 if(sw1==1 && portb.f0 ==1){
 x=0;
 while(x>60){
  portb.f0=1;
  }
  portb.f0=0;
       }
ما غايتك من هذا الكود؟


الصورة الرمزية hussien1995
hussien1995
:: عضو فضي ::
تاريخ التسجيل: Nov 2012
الدولة: syria
المشاركات: 764
نشاط [ hussien1995 ]
قوة السمعة:
قديم 13-03-2015, 04:18 PM المشاركة 32   
افتراضي


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



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