اطلاعیه

Collapse
No announcement yet.

brushless motor with hall sensor

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    brushless motor with hall sensor

    با سلام
    یه موتور براشلس دارم که یه جور دمنده است میخاستم با ccs براش کد بنویسم هر چی این مطالبه سایتای مختلغ میخونم هیچی سر در نمیارم (از بس خنگم) :cry2: یه مقاله توی سایت میکروچیپ هست به اسم AN857 از روی اون یه سخت افزار بستم ولی هیچ ایده ای توی ذهنم نیست چطوری و از کجا باید کد نویسیشو شروع کنم اگر کسی بتونه یه برنامه مثال برام بذاره و راهنماییم کنه ممنون میشم
    بد جور به کمک احتیاج دارم :angry:

    اضافه شده در تاریخ :
    ای بابا یه جون مرد نیست جواب بده

    #2
    پاسخ : brushless motor with hall sensor

    توی این عکس دقیقا مشخصه که به چه شکل دیتا بدی و از سنسور ها بخونی
    سر راه سنسور های هال آی سی اشمیت تریگر بزار که شکل موج خروجی اونو دقیقا مربعی کنه مثل آی سی 40106


    خوب تا اینجا وقتی کد بهش دادی بسته به موتورت چنان آمپری میکشه از درایور که دود از کلت بلند میشه

    حالا طبق این عکس شما در زمان های 1 بودنش باید pwm بدی


    از توی برنامه که قبلا نوشتم یه مقدار از کد کپی میکنم

    [code=c]
    #define VL_ON PORTB.4=0
    #define VL_OFF PORTB.4=1

    #define UL_ON PORTE.4=0
    #define UL_OFF PORTE.4=1

    #define WL_ON PORTB.6=0
    #define WL_OFF PORTB.6=1

    bit VH=0,UH=0,WH=0;
    unsigned char MOTOR=STOP;

    #define VH_ON VH=1
    #define VH_OFF VH=0,PORTB.7=1

    #define UH_ON UH=1
    #define UH_OFF UH=0,PORTE.3=1

    #define WH_ON WH=1
    #define WH_OFF WH=0,PORTB.5=1

    #define HALLU PIND.0
    #define HALLV PIND.1
    #define HALLW PIND.2



    interrupt [TIM1_OVF] void timer1_ovf_isr(void) // TIMER 1 BARAYE DRIVE MOTOR BLDC VH VA WH
    {
    if(VH==1)OCR1CL=~PWM;
    else OCR1CL=0XFF;
    if(WH==1)OCR1AL=~PWM;
    else OCR1AL=0XFF;
    }
    //-------------------------------------------------------------------------------

    // Timer3 overflow interrupt service routine
    interrupt [TIM3_OVF] void timer3_ovf_isr(void) // TIMER 3 BARAYE DRIVE MOTOR BLDC UH
    {
    if(UH==1)OCR3AL=~PWM;
    else OCR3AL=0XFF;
    }
    //-------------------------------------------------------------------------------

    void BLDC_READ_SENS(){ // KHANDAN SENSOR HAYE MOTOR BLDC
    if(HALLU==0 && HALLV==1 && HALLW==0)I_BLDC=5;
    else if(HALLU==0 && HALLV==1 && HALLW==1)I_BLDC=4;
    else if(HALLU==0 && HALLV==0 && HALLW==1)I_BLDC=3;
    else if(HALLU==1 && HALLV==0 && HALLW==1)I_BLDC=2;
    else if(HALLU==1 && HALLV==0 && HALLW==0)I_BLDC=1;
    else if(HALLU==1 && HALLV==1 && HALLW==0)I_BLDC=0;

    DATA_DISPLAY=I_BLDC;

    }
    //-------------------------------------------------------------------------------



    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    PORTG=0XFF;
    ////////////////////////////////BLDC MOTOR DRIVE////////////////////////////////////
    //VH_OFF , VL_OFF , UH_OFF , UL_OFF , WH_OFF , WL_OFF;
    //delay_us(2);
    if(MOTOR==OPEN){
    if(HALLU==1 && HALLV==0 && HALLW==1 && INCODER>0)INCODER--; //TEST

    if(I_BLDC==0)I_BLDC=1,VL_OFF,UH_OFF,WH_OFF,WL_OFF, delay_us(10),VH_ON,UL_ON; // 1
    else if(I_BLDC==1)I_BLDC=2,VL_OFF,UH_OFF,UL_OFF,WH_OFF, delay_us(10),WL_ON,VH_ON; // 2
    else if(I_BLDC==2)I_BLDC=3,VH_OFF,VL_OFF,UL_OFF,WH_OFF, delay_us(10),UH_ON,WL_ON; // 3
    else if(I_BLDC==3)I_BLDC=4,VH_OFF,UL_OFF,WH_OFF,WL_OFF, delay_us(10),VL_ON,UH_ON; // 4
    else if(I_BLDC==4)I_BLDC=5,VH_OFF,UH_OFF,UL_OFF,WL_OFF, delay_us(10),WH_ON,VL_ON; // 5
    else if(I_BLDC==5)I_BLDC=0,VH_OFF,VL_OFF,UH_OFF,WL_OFF, delay_us(10),UL_ON,WH_ON; // 6

    }
    else if(MOTOR==CLOSE){
    if(HALLU==1 && HALLV==0 && HALLW==1)INCODER++; // TEST

    if(I_BLDC==0)I_BLDC=1,VH_OFF , VL_OFF , UH_OFF, UL_ON , WH_ON , WL_OFF; // 6
    else if(I_BLDC==1)I_BLDC=2,VH_OFF , VL_ON , UH_OFF, UL_OFF , WH_ON , WL_OFF; // 5
    else if(I_BLDC==2)I_BLDC=3,VH_OFF , VL_ON , UH_ON, UL_OFF , WH_OFF , WL_OFF; // 4
    else if(I_BLDC==3)I_BLDC=4,VH_OFF , VL_OFF , UH_ON, UL_OFF , WH_OFF , WL_ON ; // 3
    else if(I_BLDC==4)I_BLDC=5,VH_ON , VL_OFF , UH_OFF, UL_OFF , WH_OFF , WL_ON ; // 2
    else if(I_BLDC==5)I_BLDC=0,VH_ON , VL_OFF , UH_OFF, UL_ON , WH_OFF , WL_OFF; // 1
    }
    }

    [/code]

    با تغییر متغیر pwm قدرت BLDC کم یا زیاد میشه و با کم و زیاد کردن سرعت تایمر سرعت موتور تغییر میکنه

    دیدگاه


      #3
      پاسخ : brushless motor with hall sensor

      نوشته اصلی توسط ali fard
      واقعا ممنون خیلی از کمکت ممنونم
      خواهش میکنم فقط دقت کن به گیت درایور هات
      not هستند به خاطر همینه که من برای خاموش کردن گیت از 1 استفاده کردم و برای روشن کردن از 0
      وقتی 1 میدی گیت درایور not میکنه اونور میشه 0 :mrgreen:

      دیدگاه

      لطفا صبر کنید...
      X