PDA

View Full Version : Push Pull to Half Bridged Sinewave Inverter



Fidelis
- 10th November 2016, 14:11
Here is my first attempt at Sinewave inverter.
This is the Proteus simulation and code:

8344



'OPTION_REG =%00111111
PORTA=0:TRISA=%00000001
PORTB=0:TRISB=%00000000
PORTC=0:TRISC=%00000000
'PORTD=0:TRISD=%00000000
ADCON1= %10001110 '
T2CON = %00000101
PR2=249
'-------------------------------------------------------------

----
@ DEVICE PIC16F876


@ DEVICE PIC16F876, WDT_OFF
@ DEVICE PIC16F876, PWRT_OFF
@ DEVICE PIC16F876, PROTECT_OFF
@ DEVICE PIC16F876, XT_OSC
'-------------------------------------------------------------

----
DEFINE OSC 4
'**************** ADC channel setting ************************


DEFINE ADC_BITS 10 ' ADCIN
DEFINE ADC_CLOCK 1 ' ADC clock
DEFINE ADC_SAMPLEUS 3 ' AD
'****************HPWM PRESET*********************
DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bit
'******************* VARIABLES ********************
HAM var word
X VAR WORD
DUTY VAR BYTE
P0 VAR BYTE
P1 VAR BYTE
'-------------------------------------------------------------

--------------

START:

GOsub PWORK

GOTO START

PWORK:
DUTY=100
ADCIN 0,HAM
P0= HAM-1
LOOKUP P0 ,

[128,132,136,139,143,147,150,154,158,161,165,169,17 2,176,179,18

2,186,189,192,195,199,202,204,207,210,213,215,218, 220,223,225,2

27,229,231,233,235,237,238,240,241,242,243,244,245 ,246,247,247,

247,248,248,248,248,248,247,247,247,246,245,244,24 3,242,241,240

,238,237,235,233,231,229,227,225,223,220,218,215,2 13,210,207,20

4,202,199,195,192,189,186,182,179,176,172,169,165, 161,158,154,1

50,147,143,139,136,132,128,124,120,117,113,109,106 ,102,98,95,91

,87,84,80,77,74,70,67,64,61,57,54,52,49,46,43,41,3 8,36,33,31,29

,27,25,23,21,19,18,16,15,14,13,12,11,10,9,9,9,8,8, 8,8,8,9,9,9,1

0,11,12,13,14,15,16,18,19,21,23,25,27,29,31,33,36, 38,41,43,46,4

9,52,54,57,61,64,67,70,74,77,80,84,87,91,95,98,102 ,106,109,113,

117,120,124] , P1
CCP1CON.2=1
CCP1CON.3=1
CCP1CON.4=X.0
CCP1CON.5=X.1

pause 10
CCP1CON.2=0
CCP1CON.3=0

CCP2CON.2=1
CCP2CON.3=1
CCP2CON.4=X.0
CCP2CON.5=X.1

pause 10
CCP2CON.2=0
CCP2CON.3=0

CCPR1L = P1
CCPR2L = P1


RETURN
end