Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Three phase induction Motor control with SPWM from PIC16F1936 and IGBT three phase full bridge

Status
Not open for further replies.

jean120

New Member
Hello,I am implementing a three phase induction motor control with SPWM,here below are my codes whith which I am requesting a help for handling the controlling task, here are my codes giving three variable PWM signals on CCP1CCP2 and CCP3 of PIC16F1936,but could anyone help me to implement a phase shift of 120 degrees and also configure the frequency of operation between 0-35Hz,please help.

Code:
    LIST P=P16F1936
    #include <P16F1936.INC>


    ERRORLEVEL  -302 ;Warning destination register
    ERRORLEVEL  -207 ;Warning label after column 1



    __CONFIG H'8007',H'3FAA'
    __CONFIG H'8008',H'3FBC'
;    UDATA_SHR   

    ;///////////////////////////////////////////////////////////////
    ;PROGRAM ASSIGNATIONS
    ;///////////////////////////////////////////////////////////////
    ;CNT15 EQU h'25'


LOCALES    UDATA 0X20

FLAGS        RES    1    ;FLAGS REGISTERS USED TO INDICATE DIFFERENT STATUS
tmp1        RES 1
tmp2        RES 1



GLOBALES UDATA_SHR;Starting of zone 0x71 to 0x7F
    W_TEMP        RES    1    ;LOCATION FOR SAVING 'WREG' DURING INTERRUPT
   STATUS_TEMP    RES    1    ;LOCATION FOR SAVING 'STATUS' DURING INTERRUPT
CNT15       RES 1
CNT16       RES 1
CNT17       RES 1

    ORG 0XF000
            DE D'123'
            DE D'127'
            DE D'129'
            DE D'133'
            DE D'135'
            DE D'139'
            DE D'141'
            DE D'145'
            DE D'146'
            DE D'150'
            DE D'152'
            DE D'156'
            DE D'158'
            DE D'162'
            DE D'164'
            DE D'167'
            DE D'169'
            DE D'173'
            DE D'174'
            DE D'177'
            DE D'179'
            DE D'182'
            DE D'184'
            DE D'187'
            DE D'189'
            DE D'192'
            DE D'194'
            DE D'197'
            DE D'198'
            DE D'201'
            DE D'203'
            DE D'205'
            DE D'207'
            DE D'209'
            DE D'210'
            DE D'213'
            DE D'214'
            DE D'216'
            DE D'218'
            DE D'219'
            DE D'221'
            DE D'222'
            DE D'223'
            DE D'225'
            DE D'226'
            DE D'227'
            DE D'228'
            DE D'229'
            DE D'230'
            DE D'231'
            DE D'231'
            DE D'233'
            DE D'233'
            DE D'234'
            DE D'234'
            DE D'235'
            DE D'235'
            DE D'235'
            DE D'236'
            DE D'236'
            DE D'236'
            DE D'236'
            DE D'236'
            DE D'235'
            DE D'235'
            DE D'235'
            DE D'234'
            DE D'233'
            DE D'233'
            DE D'232'
            DE D'231'
            DE D'231'
            DE D'230'
            DE D'229'
            DE D'228'
            DE D'227'
            DE D'226'
            DE D'224'
            DE D'223'
            DE D'222'
            DE D'221'
            DE D'218'
            DE D'218'
            DE D'215'
            DE D'214'
            DE D'212'
            DE D'210'
            DE D'208'
            DE D'207'
            DE D'204'
            DE D'203'
            DE D'200'
            DE D'198'
            DE D'195'
            DE D'194'
            DE D'191'
            DE D'189'
            DE D'186'
            DE D'184'
            DE D'181'
            DE D'179'
            DE D'176'
            DE D'174'
            DE D'171'
            DE D'169'
            DE D'165'
            DE D'164'
            DE D'159'
            DE D'158'
            DE D'154'
            DE D'152'
            DE D'148'
            DE D'146'
            DE D'142'
            DE D'141'
            DE D'137'
            DE D'135'
            DE D'131'
            DE D'129'
            DE D'125'
            DE D'123'
           
;POWER ON RESET VECTOR LOCATION
;**************************************************************************************
STARTUP    CODE    0X0000            ;RESET VECTOR ADDRESS 
        GOTO    START               
    CODE    0X04            ;INTERRUPT VECTOR LOCATION
        GOTO    readadc            ;GOTO INTERRUPT SERVICE ROUTINE

;**************************************************************************************
;PROG0    CODE 
;**************************************************************************************
;INITIALIZATION OF THE PORTS AND TIMERS
START

        BANKSEL    WDTCON
        CLRF    WDTCON       
        MOVLW 0x0F
        BANKSEL TRISA
        MOVWF TRISA

        BANKSEL PORTB
        CLRF PORTB
        BANKSEL TRISB
        MOVLW 0xB7
        MOVWF TRISB
        BANKSEL T2CON
        CLRF T2CON       
        MOVLW    0X0C
        BANKSEL CCP1CON   
        MOVWF CCP1CON
        BANKSEL CCP2CON
        MOVWF CCP2CON
        BANKSEL CCP3CON
        MOVWF CCP3CON

        BANKSEL    PR2
        MOVLW    d'74'        ;LOAD PR2 VALUE TO PR2 REGISTER  For 10KHZ generated signal
        MOVWF    PR2           
        MOVLW 0XFF
        BANKSEL APFCON
        MOVWF APFCON
        MOVLW 0x10
        BANKSEL PWM1CON
        MOVWF PWM1CON
        BANKSEL PWM2CON
        MOVWF PWM2CON
        BANKSEL PWM3CON
        MOVWF PWM3CON

        MOVLW 0X0F
        BANKSEL CCP1AS
        MOVWF CCP1AS
        BANKSEL CCP2AS
        MOVWF CCP2AS
        BANKSEL CCP3AS
        MOVWF CCP3AS
        MOVLW 0X1F
        BANKSEL PSTR1CON
        MOVWF PSTR1CON
        BANKSEL PSTR2CON
        MOVWF PSTR2CON
        BANKSEL PSTR3CON
        MOVWF PSTR3CON
   
        MOVLW 0x00
        BANKSEL CCPTMRS0
        MOVWF CCPTMRS0
        BANKSEL TRISC
        BCF TRISC,2
        BANKSEL TRISB
        BCF TRISB,3
        BCF TRISB,6
        BANKSEL T2CON
        MOVLW 0x05
        MOVWF T2CON   

        ;BANKSEL CCPR1L       
        ;CLRF CCPR1L   
        ;BANKSEL CCPR2L
        ;CLRF CCPR2L
        ;BANKSEL CCPR3L
        ;CLRF CCPR3L
        ;BANKSEL EEDATL
        ;CLRF EEDATL   
        ;BANKSEL EECON1
        ;BCF EECON1,RD
    ;    CALL 
;///////////////////////////////////////////////////////////////////////////////////////
;                        PROGRAMME PRINCIPAL
;///////////////////////////////////////////////////////////////////////////////////////
        MOVLW d'121'
        MOVWF CNT15  
PROG

    DECFSZ CNT15,F
    GOTO next
    RETURN
    ;nop
next
    MOVF CNT15,W
    BANKSEL EEADRL ;Switch to Bank1
    MOVWF EEADRL ;Put counter to EEADR
    BANKSEL EECON1
    BCF EECON1,CFGS
    BCF EECON1,EEPGD
    BSF EECON1,RD
    BANKSEL EEDATL
    MOVF EEDATL,W
    DECF CNT15,1
adcplace
    CALL readadc
    BANKSEL ADRESH
    MOVF ADRESH,W
    BANKSEL CCPR1L
    MOVWF CCPR1L
    BANKSEL CCPR2L
    MOVWF CCPR2L
    BANKSEL CCPR3L
    MOVWF CCPR3L
    BANKSEL EEDATL
    MOVF EEDATL,W
    BANKSEL CCPR1L   
    MOVWF CCPR1L
    CALL UPDATE_SPWM2
    CALL UPDATE_SPWM3
    GOTO PROG
    RETURN

UPDATE_SPWM2

    MOVLW D'121'
    MOVWF CNT15   
next2
    DECFSZ CNT15,f
    GOTO next21
    RETURN
next21
    MOVF CNT15,W
    BANKSEL EEADRL ;Switch to Bank1
    MOVWF EEADRL ;Put counter to EEADR
    BANKSEL EECON1
    BCF EECON1,CFGS
    BCF EECON1,EEPGD
    BSF EECON1,RD
    BANKSEL EEDATL
    MOVF EEDATL,W
    DECF CNT15,1
adcplace2
;    CALL readadc
    ;BANKSEL ADRESH
    ;MOVF ADRESH,W
    ;BANKSEL CCPR2L
    ;MOVWF CCPR2L
    BANKSEL EEDATL
    MOVF EEDATL,W
    BANKSEL CCPR2L   
    MOVWF CCPR2L
    ;call delay_1us
    RETURN

UPDATE_SPWM3
    MOVLW D'121'
    MOVWF CNT15   
next3
    DECFSZ CNT15,f
    GOTO next31
    RETURN
next31
    MOVF CNT15,W
    BANKSEL EEADRL ;Switch to Bank1
    MOVWF EEADRL ;Put counter to EEADR
    BANKSEL EECON1
    BCF EECON1,CFGS
    BCF EECON1,EEPGD
    BSF EECON1,RD
    BANKSEL EEDATL
    MOVF EEDATL,W
    DECF CNT15,1
adcplace3
    CALL readadc
    BANKSEL ADRESH
    MOVF ADRESH,W
    BANKSEL CCPR3L
    MOVWF CCPR3L
    BANKSEL EEDATL
    MOVF EEDATL,W
    BANKSEL CCPR3L   
    MOVWF CCPR3L
    ;call delay_1us
    RETURN
readadc  
        BSF PIE1,ADIE
        BSF INTCON,GIE
        BSF INTCON,PEIE
        BTFSS PIE1,ADIE
        return
        BTFSS PIR1,ADIF
        RETURN       
        CALL bosco
        BCF PIR1,ADIF
        return
bosco
        BANKSEL ANSELA
        MOVLW 0X01
        MOVWF ANSELA
        MOVLW 0x01
        BANKSEL ADCON0
        MOVWF ADCON0
        MOVLW 0x20
        BANKSEL ADCON1
        MOVWF ADCON1       
        BANKSEL ADCON0
        BSF ADCON0,GO
        BSF ADCON0,CHS0
        call delay1
        BANKSEL ADRESH   
       MOVF ADRESH,W
        BANKSEL CCPR1L
        MOVWF CCPR1L
        BANKSEL CCPR2L
        MOVWF CCPR2L
        BANKSEL CCPR3L
        MOVWF CCPR3L
        return       
readvoltage
        MOVLW 0X20
        BANKSEL ADCON1
        MOVWF ADCON1
        MOVLW 0X02
        BANKSEL ADCON0
        MOVWF ADCON0       
        BSF ADCON0,CHS0
        BCF ADCON1,CHS1
        ;MOVF ADRESH,W
        ;MOVWF voltage
        ;XORLW 0XFF
        ;BTFSC STATUS,Z
        RETURN   

INIT_PARAMETERS
        BANKSEL EECON1
        BCF EECON1,RD  ;Stop EEPROM reading process
        BANKSEL CCPR1L  
        CLRF CCPR1L ;clear duty cycle of CCPR3L
        CLRF CCPR2L ;clear duty cycle of CCPR2L
        BANKSEL CCPR3L
        CLRF CCPR3L ;clear duty cycle of CCPR3L
        RETURN
       
delay1
    MOVLW d'2'
    MOVWF tmp2
delay2
    DECFSZ tmp2,f
    GOTO delay2
    RETURN


delay_1us

        MOVLW d'5'
        MOVWF tmp2
delay4
        DECFSZ tmp2,f
        GOTO delay4
        RETURN 
    END

Thank you
 
Status
Not open for further replies.

New Articles From Microcontroller Tips

Back
Top