Bldc pwm

Başlatan barut, 27 Haziran 2014, 21:56:41

barut

1 ms ve 1.9 ms deki aralıklardaki değerlerde çalışan bldc motoru pwm ile nasıl çalıştırabilirim.

output_high(pin_b0);
delay_us(1000);
output_low(pin_b0);
delay_ms(20);

bu kodlardan sonra 1000 us den büyük değer verince motor çalışıyor.500-600 hz lik bir pwm denedim çalışmadı.



admittance

#1
Anladığım kadarıyla elinizde bir adet ESC tarafından sürülen BLDC var ve siz ESC kontrol sinyalini oluşturmakta sorun yaşıyorsunuz.
Bu mudur ?

Kodlarınız hatalı, Ton süresi 1ms iken Toff süresi 20ms yapmışsınız.

Bayramsumbul

Kontrol şekli rc servo ile benzer.50 hz'lik pwm sinyali ile kontrol edebilirsiniz.
Motoru orta hızda kontrol etmek için 1.5 milisaniye Lojik 1,18.5 milisaniye lojik 0 vermeniz gerek.
İyi çalışmalar.
Bir Elektronik Meraklısının Serüveni...

barut

#3
hocam sağolun verdiğiniz bilgiler için.şöyle bişey denedim çalışmadı.
unsigned int periyod;
char gorev=0;
void main() {

          GPIO_Digital_Input(&GPIOA_BASE,_GPIO_PINMASK_0|_GPIO_PINMASK_1);
          periyod=PWM_TIM12_Init(50); //20 ms pwm
          PWM_TIM12_SET_DUTY((periyod/100)*0,_PWM_NON_INVERTED,_PWM_CHANNEL1);
          PWM_TIM12_START(_PWM_CHANNEL1,&_GPIO_MODULE_TIM12_CH1_PB14);

          while(1)
          {

          if(GPIOA_IDR.B0)
          {
          gorev+=10;
          if(gorev>100)gorev=0;
          PWM_TIM12_SET_DUTY((periyod/100)*gorev,_PWM_NON_INVERTED,_PWM_CHANNEL1);
          }

          } 
}

barut

konuya yardımcı olabilecek var mı?

magic_gun

umarımm işinizi gorur ::)

         LIST P=12F675, F=INHX8M

          include "p12f675.inc"


   
   
   
   
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON  & _MCLRE_OFF & _BODEN_ON & _CP_ON & _CPD_OFF      
;========================================================;      
;used regs :)
   
   cblock   0x020
   flash
        port_shadow
        delay1
   pwm_period
        on_duty
        t1
        t2
        t3
        temp
        lim_reg
        sw_dir

        SAY3
        SAY2
        SAY1
   ENDC   


#DEFINE   out_data      5  ; servo out pin,, P#2
#DEFINE   rel_r      4  ; direction relays P#3
#DEFINE en_p86          3  ; enable signal from p86 P#4

#DEFINE   rel_l      5





#DEFINE   li_up      7
#DEFINE   li_dn      6


safe     equ            0
status   equ            03h    ; status flags
c        equ            0

   ORG   0x00
   GOTO   start
      
start      
   BCF   STATUS,RP0
        clrf    INTCON
        CLRF    PIR1
        CLRF    GPIO   
        MOVLW   07h
   MOVWF   CMCON

        bsf     STATUS,RP0

        CLRF    PIE1
   MOVLW   b'01010111' 
   MOVWF   ANSEL
        MOVLW   b'00001111'
   MOVWF   TRISIO
        MOVLW   b'11111100'
        MOVWF   OSCCAL
       
   BCF   STATUS,RP0
   MOVLW   b'00000001'
   MOVWF   ADCON0
        clrf lim_reg
        clrf port_shadow
        movlw .128
        movwf sw_dir




     


dene_start

     
     
     

      movlw .128
      movwf on_duty
     
     

      bsf port_shadow,out_data  ; ccc
      movf port_shadow,w
      movwf GPIO
      call ms501us
     


      movf on_duty,W
      movwf delay1
      call dvm

      bcf port_shadow,out_data ;  sss
      movf port_shadow,w
      movwf GPIO

      call _2m5
      call _2m5

      call _2m5

      call _2m5
   
      call _2m5

      call _2m5

      clrwdt

        call convert_line
        btfsc t3,6

        goto dene_start
        call convert_sw
        goto dene

ms10u
        nop
        nop
        nop
        nop
        nop
        nop
       
        return


ms501us

       movlw .27
       movwf delay1
       goto dvm


ms500us

       movlw .50
       movwf delay1
       goto dvm
_2m5

       movlw .250
       movwf delay1
       
dvm

       call ms10u
       decfsz delay1,1
       goto dvm
       return


dene
      call convert_line

x_dene

      bsf port_shadow,out_data  ; ccc
      movf port_shadow,w
      movwf GPIO
      call ms501us
     


      movf on_duty,W
      movwf delay1
      call dvm

      bcf port_shadow,out_data ;  sss
      movf port_shadow,w
      movwf GPIO

      call _2m5
      call _2m5

      call _2m5

      call _2m5
   
      call _2m5

      call _2m5

      clrwdt



     

        movlw .128
        addwf t3,0
        btfss status,c
        goto sw_read

 
       

        goto dene
no_run

      movlw .128
      movwf   on_duty 
      goto x_dene

sw_read

        call convert_sw

        btfsc lim_reg,safe
        goto no_run
        goto dene




sample_delay
   
    movlw b'00111111'
    movwf temp
sample   
    nop
    decfsz temp,1
    goto sample
    return

convert_line




   
        MOVLW   b'00001001' ;0001 an2 pin 5

   MOVWF   ADCON0
     
        call sample_delay

       
        bcf     ADCON0,GO
   NOP
        nop
        nop
        nop
   NOP
        nop
        nop
        nop
      
   BSF   ADCON0,GO
test_ad      
   BTFSC   ADCON0,GO
   GOTO   test_ad
   BCF   ADCON0,GO



   MOVF   ADRESH,W
   
        movwf   on_duty               

        movwf t1
        movwf t2
        movwf t3
       
       


       

        movlw .206
        subwf t2,1
        btfsc STATUS,C
        goto up_lim
       
   
        movlw .127  ;   ,,,,135
        subwf t1,1
        btfss STATUS,C
        goto dn_lim
       



         
        return


up_lim
        movlw .205
        movwf on_duty
        bsf lim_reg,li_up
        return


dn_lim
        movlw .128
        movwf on_duty
        bsf lim_reg,li_dn

        return


convert_sw





   
        MOVLW   b'00000101' ; 1001  pin 6  an1

   MOVWF   ADCON0
        call sample_delay

   bcf     ADCON0,GO
   NOP
        nop
        NOP
        nop
        NOP
        nop
        nop
        nop

        NOP   
   

        NOP   
      
   BSF   ADCON0,GO
ad_w      
   BTFSC   ADCON0,GO
   GOTO   ad_w
   BCF   ADCON0,GO



   MOVF   ADRESH,W
   
        movwf   sw_dir               

       

; ___________________________________________
        movlw .75
        subwf sw_dir,0
        btfss status,c
        goto left_turn                 

        movlw .100
        addwf sw_dir,0
        btfsc status,c
        goto right_turn               





; ---------------------------------




        bsf lim_reg,safe

       




         
        return


right_turn
;        bcf port_shadow,rel_l
        bsf port_shadow,rel_r
        bcf lim_reg,safe
        return


left_turn
        bcf port_shadow,rel_r
;        bsf port_shadow,rel_l
        bcf lim_reg,safe
        return

     


_125us_bekle                   
       movlw   .42             
       movwf   SAY1           
Gec1    decfsz  SAY1,f         
       goto    Gec1           
       return                 

_5ms_bekle
       movlw   .40             
       movwf   SAY2           
Gec2    call    _125us_bekle     
       clrwdt
       decfsz  SAY2,f         
       goto    Gec2           
       return         

;------------------------------------------------------------------------------



wai_40us
   movlw   .4               ;4MHz
   movwf   SAY2             ;1 microsec
pass2   clrwdt
   decfsz  SAY2,f           ;42  0x2A SAY1
   goto    pass2            ;
   return                   ;
     





        end
hayal etmeden basaramazsınız www.atariturkiye.com