用軟件PWM怎么樣做到恒壓充電啊!這是我現(xiàn)在做的,想不出來(lái)啊!
用單片機(jī)的軟件PWM怎么樣控制mos的導(dǎo)通頻率,即做到定頻率,變duty的方波輸出,來(lái)做到恒壓啊,就像3842或者3843一樣,當(dāng)電壓升高,就縮duty;當(dāng)電壓下降,就升duty!!!
全部回復(fù)(116)
正序查看
倒序查看
@vssv
9454的PWM挺好用,不用外部晶振就可以做到40KHzPID算法控制,我沒(méi)使用中斷PWM_Init;fosc/1,reloadfrom8bitcounter,Disableinterrupt,ldPWMCON,#11001001bldPWMDATA,#04hret
;-------------------------------------------------------------
;
PWM_TurnOn
and P0CONH, #11001111b
or P0CONH, #00010000b
or PWMCON, #(PWMCON_CLEAR | PWMCON_START)
ret
;-------------------------------------------------------------
;
PWM_TurnOff
and PWMCON, #~(PWMCON_START)
and P0CONH, #11001111b
or P0CONH, #00100000b
and P0DATA, #10111111b
ld P0, P0DATA
ret
;
PWM_TurnOn
and P0CONH, #11001111b
or P0CONH, #00010000b
or PWMCON, #(PWMCON_CLEAR | PWMCON_START)
ret
;-------------------------------------------------------------
;
PWM_TurnOff
and PWMCON, #~(PWMCON_START)
and P0CONH, #11001111b
or P0CONH, #00100000b
and P0DATA, #10111111b
ld P0, P0DATA
ret
0
回復(fù)
@vssv
;-------------------------------------------------------------;PWM_TurnOnandP0CONH,#11001111borP0CONH,#00010000borPWMCON,#(PWMCON_CLEAR|PWMCON_START)ret;-------------------------------------------------------------;PWM_TurnOffandPWMCON,#~(PWMCON_START)andP0CONH,#11001111borP0CONH,#00100000bandP0DATA,#10111111bldP0,P0DATAret
如果你不開(kāi)中斷的話,你把這個(gè)程序放在什么地方???
不開(kāi)中斷的意思就是說(shuō)在RESET的時(shí)候不對(duì)PWMCON和PWMDATA賦值嗎???
你能解釋一下你括號(hào)里面是什么意思嗎???那我怎么根據(jù)電壓的變化來(lái)調(diào)整占空比的大小啊?
不開(kāi)中斷的意思就是說(shuō)在RESET的時(shí)候不對(duì)PWMCON和PWMDATA賦值嗎???
你能解釋一下你括號(hào)里面是什么意思嗎???那我怎么根據(jù)電壓的變化來(lái)調(diào)整占空比的大小啊?
0
回復(fù)
@vssv
;-------------------------------------------------------------;PWM_TurnOnandP0CONH,#11001111borP0CONH,#00010000borPWMCON,#(PWMCON_CLEAR|PWMCON_START)ret;-------------------------------------------------------------;PWM_TurnOffandPWMCON,#~(PWMCON_START)andP0CONH,#11001111borP0CONH,#00100000bandP0DATA,#10111111bldP0,P0DATAret
不管怎么樣,對(duì)你的無(wú)私幫助我表示深深的感謝!希望以后能更好的交流,我的郵箱是ck4221982@yahoo.com.cn!
0
回復(fù)
@vssv
;-------------------------------------------------------------;PWM_TurnOnandP0CONH,#11001111borP0CONH,#00010000borPWMCON,#(PWMCON_CLEAR|PWMCON_START)ret;-------------------------------------------------------------;PWM_TurnOffandPWMCON,#~(PWMCON_START)andP0CONH,#11001111borP0CONH,#00100000bandP0DATA,#10111111bldP0,P0DATAret
40khz是指頻率還是精度(粒度)??
0
回復(fù)
@vssv
;-------------------------------------------------------------;PWM_TurnOnandP0CONH,#11001111borP0CONH,#00010000borPWMCON,#(PWMCON_CLEAR|PWMCON_START)ret;-------------------------------------------------------------;PWM_TurnOffandPWMCON,#~(PWMCON_START)andP0CONH,#11001111borP0CONH,#00100000bandP0DATA,#10111111bldP0,P0DATAret
我想將兩個(gè)A/D口的電壓相減,用得到的值的大小作為一個(gè)條件!當(dāng)條件為真時(shí),即FLAG為51h時(shí),才執(zhí)行另外程序,否則不執(zhí)行!但是加上這個(gè)程序后,不管任何情況下,另外一個(gè)程序都會(huì)執(zhí)行!不知道這個(gè)條件程序執(zhí)行了沒(méi)有,謝謝幫我看看!
LD Acc1, #1 ; 1th channel
LD Acc0, #6 ; 6 sample times
CALL AdcConvert
LD Acc0, #6 ; 6 adjust number
CALL AdcDataAdjust
CALL AverageValue
LD CellVoltageL, AverageValueL
LD CellVoltageH, AverageValueH
LD Acc9, CellVoltageL
LD Acc10, CellVoltageH
;---------------
LD Acc1, #0 ; 0th channel
LD Acc0, #6 ; 6 sample times
CALL AdcConvert
LD Acc0, #6 ; 6 adjust number
CALL AdcDataAdjust
CALL AverageValue
LD CellVoltageL, AverageValueL
LD CellVoltageH, AverageValueH
LD Acc7, CellVoltageL
LD Acc8, CellVoltageH
SUB Acc9, Acc7
SBC Acc10, Acc8
SUB Acc9, #>41 ; 0.2v
SBC Acc10, #<41
JR ULT, CJV_Down_0v2
INC Counter_Up_0v2
CP Counter_Up_0v2,#2 ;2*0.5s
JR ULT, DCC_Exit
LD Counter_OutputUp, #51h
JR CJV_Exit
CJV_Down_0v2:
CLR Counter_OutputUp
CLR Counter_Up_0v2
CJV_Exit:
RET
LD Acc1, #1 ; 1th channel
LD Acc0, #6 ; 6 sample times
CALL AdcConvert
LD Acc0, #6 ; 6 adjust number
CALL AdcDataAdjust
CALL AverageValue
LD CellVoltageL, AverageValueL
LD CellVoltageH, AverageValueH
LD Acc9, CellVoltageL
LD Acc10, CellVoltageH
;---------------
LD Acc1, #0 ; 0th channel
LD Acc0, #6 ; 6 sample times
CALL AdcConvert
LD Acc0, #6 ; 6 adjust number
CALL AdcDataAdjust
CALL AverageValue
LD CellVoltageL, AverageValueL
LD CellVoltageH, AverageValueH
LD Acc7, CellVoltageL
LD Acc8, CellVoltageH
SUB Acc9, Acc7
SBC Acc10, Acc8
SUB Acc9, #>41 ; 0.2v
SBC Acc10, #<41
JR ULT, CJV_Down_0v2
INC Counter_Up_0v2
CP Counter_Up_0v2,#2 ;2*0.5s
JR ULT, DCC_Exit
LD Counter_OutputUp, #51h
JR CJV_Exit
CJV_Down_0v2:
CLR Counter_OutputUp
CLR Counter_Up_0v2
CJV_Exit:
RET
0
回復(fù)
@chengkai422
咳!怎么都在說(shuō)PIC啊,我卻對(duì)PIC一無(wú)所知,有沒(méi)有高人可以給一個(gè)基礎(chǔ)的PIC教程給我啊!小弟謝過(guò)了,ck4221982@yahoo.com.cn
靠,國(guó)內(nèi)書多便宜呀,
PIC的教程多了去了.北航出版社就有很多.你洋文好不好?我可以給一個(gè)連接,PIC的application note. 不過(guò)它沒(méi)有用什么復(fù)雜的算法
只是電壓高,減duty, 電壓低,加duty. 動(dòng)態(tài)性能不好.
美辦法,如果用了PID或者PI時(shí)間就不夠了,不過(guò)你的頻率不高,PIC肯定可以用.
PIC的教程多了去了.北航出版社就有很多.你洋文好不好?我可以給一個(gè)連接,PIC的application note. 不過(guò)它沒(méi)有用什么復(fù)雜的算法
只是電壓高,減duty, 電壓低,加duty. 動(dòng)態(tài)性能不好.
美辦法,如果用了PID或者PI時(shí)間就不夠了,不過(guò)你的頻率不高,PIC肯定可以用.
0
回復(fù)
@gunking
靠,國(guó)內(nèi)書多便宜呀,PIC的教程多了去了.北航出版社就有很多.你洋文好不好?我可以給一個(gè)連接,PIC的applicationnote.不過(guò)它沒(méi)有用什么復(fù)雜的算法只是電壓高,減duty,電壓低,加duty.動(dòng)態(tài)性能不好.美辦法,如果用了PID或者PI時(shí)間就不夠了,不過(guò)你的頻率不高,PIC肯定可以用.
ok,我還是去看看資料吧!對(duì)于我不了解的pic,我怎么去用它做呢!
你可以吧那個(gè)application note給我,e文不行還不是要看!
不知道你有沒(méi)有關(guān)于PIC的一些資料,可以共享一下嗎???
你可以吧那個(gè)application note給我,e文不行還不是要看!
不知道你有沒(méi)有關(guān)于PIC的一些資料,可以共享一下嗎???
0
回復(fù)
@chengkai422
ok,我還是去看看資料吧!對(duì)于我不了解的pic,我怎么去用它做呢!你可以吧那個(gè)applicationnote給我,e文不行還不是要看!不知道你有沒(méi)有關(guān)于PIC的一些資料,可以共享一下嗎???
去福州高奇那里買開(kāi)發(fā)板,在到它的論壇上down一個(gè)CCS開(kāi)發(fā)工具,用C語(yǔ)言,很方便,連匯編都不用學(xué).
很快可以學(xué)會(huì)的.
我的碩士論文雖然寫得爛,倒是很好的數(shù)控開(kāi)關(guān)電源入門材料,呵呵.我還在整理,里面有原程序,其實(shí)真的很簡(jiǎn)單好學(xué).
那個(gè)材料我明天發(fā)給你吧
很快可以學(xué)會(huì)的.
我的碩士論文雖然寫得爛,倒是很好的數(shù)控開(kāi)關(guān)電源入門材料,呵呵.我還在整理,里面有原程序,其實(shí)真的很簡(jiǎn)單好學(xué).
那個(gè)材料我明天發(fā)給你吧
0
回復(fù)