1 Attachment(s)
i need a help here to accomplish my tasks
I am doing my final year project on designing constant current pic controlled boost converter, boost converter which as the load resistance changed the output current still remained constant. - Also Up to now i have a boost converter circuit and i managed to use pwm module to produce varying duty cycle, i managed to use this varying duty cycle to produce varying output voltage.
My problems until now
- Earlier i adviced to use adc to read feedback signal i managed to do that but i failed to continue
- I don't know how to do so that to have a constant current at the load, i lack a technique here on how to link this code so that to accomplish my task
i attached my circuit and code so that you can help me
Code:
DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
duty VAR WORD ' Duty cycle value (CCPR1L:CCP1CON<5:4>)
Feedback var word
Result var word
Reference var word
Value var word
ADCON1=%00000010
TRISA = %11111111
TRISB = %11111111
TRISC = %11111011 ' Set PORTC.2 (CCP1) to output
CCP1CON = %00001100 ' Set CCP1 to PWM
T2CON = %00000101 ' Turn on Timer2, Prescale=4
' Use formula to determine PR2 value for a 1KHz signal,
' 4MHz clock, and prescale=4. (4E6/(4*4*1E3))-1=249
PR2 = 249 ' Set PR2 to get 1KHz out
' Use formula to determine CCPR1L:CCP1CON<5:4> value for
' ends of range 0% to 100%. (249+1)*4*0.2=0 (0% value)
' (249+1)*4*1=1000 (100% value)
duty = 0 ' Set duty cycle to 0%
LED1 VAR PORTB.1
mainloop:
adcin 0, feedback
adcin 1, reference
CCP1CON.4 = duty.0 ' Store duty to registers as
CCP1CON.5 = duty.1 ' a 10-bit word
CCPR1L = DUTY >> 2
duty = duty + 10 ' Increase duty cycle
' Since the total sweep of duty is 600 (1000-0) and
' we are adding 10 for each loop, that results in 100
' steps min to max. 1 second divided by 60 = 10mS
Pause 10
TOGGLE LED1 ' Pause 1/60 of second
IF (duty < 1000) Then mainloop ' Do it again unless 80% duty cycle
duty = 0 ' Reset to 0% duty cycle
GoTo mainloop ' Do it forever
End
Attachment 6458