You are on page 1of 2

/ * boost conver t er gui de at r ei bot .

or g
f eedback connect ed t o anal og 1.
pwmpi n i s on di gi t al 11
V 1 f or t he ar dui no pi d l i br ar y
*/
#i ncl ude <PI D_v1. h>
/ / Def i ne Var i abl es we' l l be connect i ng t o
doubl e Set poi nt , I nput , Out put ;
/ / Speci f y t he l i nks and i ni t i al t uni ng par amet er s
PI D myPI D( &I nput , &Out put , &Set poi nt , . 8 , . 1 , . 01 , DI RECT) ;
i nt t ar get Vol t age = 100; / / up t o 200v i f you used same par t s f r omt he gui de
voi d set up( ) {
Ser i al . begi n( 115200) ;
pwmSet up( ) ; / / set t he pwmt o 31khz
myPI D. Set Mode( AUTOMATI C) ;
myPI D. Set Out put Li mi t s( 0, 100) ;
/ / how of t en you want t he pi d t o updat e i n ms
myPI D. Set Sampl eTi me( 10) ; / / changi ng t hi s wi l l r equi r e pi d t o be r et uned
}
voi d l oop( ) {
Pi dUpdat e( ) ;
del ay( 10) ;
/ / cal l Pi dUpdat e( ) ; at l east ever y 10ms.
/ / Ot her wi se set OCR2A = 0; whi l e t he ar dui no i s doi ng somet hi ng t i me consumi ng
}
voi d Pi dUpdat e( ) {
/ / usi ng r esi st i ve vol t age di vi der , same R1 and R2 on wi ki pedi a " vol t age di vi der "
/ / R1 i s connect ed t o hi gh vol t age
/ / R2 i s connect ed t o gr ound
doubl e R2 = 200000;
doubl e R1 = 10000000;
doubl e vol t age = ( anal ogRead( A1) / 1023. ) *4. 9*( R2+R1) / R2;
I nput = vol t age;
Set poi nt = t ar get Vol t age;
myPI D. Comput e( ) ;
i f ( vol t age > t ar get Vol t age + 10) {
OCR2A = 0;
}el se i f ( vol t age <= t ar get Vol t age) {
OCR2A = Out put ;
}
/ / have i t out put t he vol t age
/ *
Ser i al . pr i nt ( " V: " ) ;
Ser i al . pr i nt ( vol t age) ;
Ser i al . pr i nt ( " \ t ADC vol t age: " ) ;
Ser i al . pr i nt ( ( anal ogRead( A1) / 1023. ) *4. 9) ;
Ser i al . pr i nt ( " \ t dut y: " ) ;
Ser i al . pr i nt l n( ( i nt ) OCR2A) ;
del ay( 10) ;
*/
}
voi d pwmSet up( ) {/ / j ust r un once at set up
pi nMode( 3, OUTPUT) ; / / OCR2B 3 and 11 ar e pwmchannel s
pi nMode( 11, OUTPUT) ; / / OCR2A
TCCR2A = _BV( COM2A1) | _BV( COM2B1) | _BV( WGM20) ; / / phase cor r ect pwm31250hz
TCCR2B = _BV( CS20) ; / / change t hi s as dat asheet says t o mai nl y get di f f er ent pwmf r equenci es
OCR2A = 0;
OCR2B = 0;
}

You might also like