• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

用软件PWM怎么样做到恒压充电啊!这是我现在做的,想不出来啊!

用单片机的软件PWM怎么样控制mos的导通频率,即做到定频率,变duty的方波输出,来做到恒压啊,就像3842或者3843一样,当电压升高,就缩duty;当电压下降,就升duty!!!
全部回复(116)
正序查看
倒序查看
2004-10-27 17:57
小弟想了n天,主要是以前没有用软件做过,现在郁闷中,自己顶一下!
0
回复
maychang
LV.6
3
2004-10-27 18:54
@chengkai422
小弟想了n天,主要是以前没有用软件做过,现在郁闷中,自己顶一下!
软件做PWM,你的PWM频率多少?单片机软件做PWM,还有时间做别的事情吗?总要读AD,与基准值比较,运算吧?我恐怕此路不通.
0
回复
2004-10-28 09:30
@maychang
软件做PWM,你的PWM频率多少?单片机软件做PWM,还有时间做别的事情吗?总要读AD,与基准值比较,运算吧?我恐怕此路不通.
我只要1到4k的频率就好了,是定频率,变duty的控制mos的导通时间!
0
回复
飞狐
LV.2
5
2004-11-10 17:08
@chengkai422
我只要1到4k的频率就好了,是定频率,变duty的控制mos的导通时间!
用PIC或Holtek单片机可以开发,但不知道你是怎样做的,好像可以做到5K.有兴趣可与我联系:wwwflyfox@163.com
0
回复
2004-11-13 14:06
@chengkai422
小弟想了n天,主要是以前没有用软件做过,现在郁闷中,自己顶一下!
直接用PWM  IC,那样太麻烦了!!!
0
回复
qiuyy
LV.6
7
2004-11-16 12:55
使用PIC877做吧,,虽然太贵,但对你的学习有帮助.
记得我当初学单片机的时候,也是用这个东东做的.
用51的也行,但你必须去找一人具有PWM,和AD集成的芯片.PHILIPS也有,因为这样做才能够稳定..用软件模拟的话,如果无经验很难做成的..
0
回复
2004-11-16 13:42
@qiuyy
使用PIC877做吧,,虽然太贵,但对你的学习有帮助.记得我当初学单片机的时候,也是用这个东东做的.用51的也行,但你必须去找一人具有PWM,和AD集成的芯片.PHILIPS也有,因为这样做才能够稳定..用软件模拟的话,如果无经验很难做成的..
谢谢了!我会去看看的!
0
回复
2004-11-16 13:49
@qiuyy
使用PIC877做吧,,虽然太贵,但对你的学习有帮助.记得我当初学单片机的时候,也是用这个东东做的.用51的也行,但你必须去找一人具有PWM,和AD集成的芯片.PHILIPS也有,因为这样做才能够稳定..用软件模拟的话,如果无经验很难做成的..
我在21IC上找不到这个IC的DATASHEET啊,您有吗,能传一份给我吗!
ck4221982@yahoo.com.cn
谢谢!
0
回复
zxs2000
LV.1
10
2004-11-19 07:34
输出PWM,并用PID算法控制PWM的占空比!
0
回复
chengkai422
LV.6
11
2004-11-19 07:50
@zxs2000
输出PWM,并用PID算法控制PWM的占空比!
你有这个方面的资料吗???我还听都没有听说过啊,这是用什么品牌的单片机啊!
我是用的SAMSUNG的S3C9454,它有一个专用的PWM输出口,但是我不知道怎么打开.
0
回复
zxs2000
LV.1
12
2004-11-19 07:53
@chengkai422
你有这个方面的资料吗???我还听都没有听说过啊,这是用什么品牌的单片机啊!我是用的SAMSUNG的S3C9454,它有一个专用的PWM输出口,但是我不知道怎么打开.
用PIC的单片机,软件编写要根据硬件来,还有就是pid参数的确定.
0
回复
chengkai422
LV.6
13
2004-11-19 09:38
@zxs2000
用PIC的单片机,软件编写要根据硬件来,还有就是pid参数的确定.
更上传一下PIC这个系列的DATASHEET吗???我在网上找过PIC877的,可是找不到,因为我都不知道这是哪个公司的!
0
回复
qiuyy
LV.6
14
2004-11-22 12:27
@chengkai422
你有这个方面的资料吗???我还听都没有听说过啊,这是用什么品牌的单片机啊!我是用的SAMSUNG的S3C9454,它有一个专用的PWM输出口,但是我不知道怎么打开.
你查一下三星的资料就知道怎么打开了,,打不开不去用,太可惜了
0
回复
vssv
LV.1
15
2004-11-24 23:58
@qiuyy
你查一下三星的资料就知道怎么打开了,,打不开不去用,太可惜了
9454的PWM挺好用,不用外部晶振就可以做到40KHz
PID算法控制,我没使用中断

PWM_Init
; fosc/1, reload from 8bit counter, Disable interrupt,
ld PWMCON, #11001001b
ld PWMDATA, #04h
ret
0
回复
vssv
LV.1
16
2004-11-25 00:00
@vssv
9454的PWM挺好用,不用外部晶振就可以做到40KHzPID算法控制,我没使用中断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
0
回复
chengkai422
LV.6
17
2004-11-25 15:51
@vssv
;-------------------------------------------------------------;PWM_TurnOnandP0CONH,#11001111borP0CONH,#00010000borPWMCON,#(PWMCON_CLEAR|PWMCON_START)ret;-------------------------------------------------------------;PWM_TurnOffandPWMCON,#~(PWMCON_START)andP0CONH,#11001111borP0CONH,#00100000bandP0DATA,#10111111bldP0,P0DATAret
如果你不开中断的话,你把这个程序放在什么地方???
不开中断的意思就是说在RESET的时候不对PWMCON和PWMDATA赋值吗???
你能解释一下你括号里面是什么意思吗???那我怎么根据电压的变化来调整占空比的大小啊?
0
回复
chengkai422
LV.6
18
2004-11-25 15:54
@vssv
;-------------------------------------------------------------;PWM_TurnOnandP0CONH,#11001111borP0CONH,#00010000borPWMCON,#(PWMCON_CLEAR|PWMCON_START)ret;-------------------------------------------------------------;PWM_TurnOffandPWMCON,#~(PWMCON_START)andP0CONH,#11001111borP0CONH,#00100000bandP0DATA,#10111111bldP0,P0DATAret
不管怎么样,对你的无私帮助我表示深深的感谢!希望以后能更好的交流,我的邮箱是ck4221982@yahoo.com.cn!
0
回复
chengkai422
LV.6
19
2004-11-25 16:10
@vssv
;-------------------------------------------------------------;PWM_TurnOnandP0CONH,#11001111borP0CONH,#00010000borPWMCON,#(PWMCON_CLEAR|PWMCON_START)ret;-------------------------------------------------------------;PWM_TurnOffandPWMCON,#~(PWMCON_START)andP0CONH,#11001111borP0CONH,#00100000bandP0DATA,#10111111bldP0,P0DATAret
40khz是指频率还是精度(粒度)??
0
回复
yu_zdws
LV.3
20
2004-12-06 12:49
我这儿正好有这么一个我们公司以前给别人做的,现成的,我整理一下给你.
0
回复
yu_zdws
LV.3
21
2004-12-06 12:52
@yu_zdws
我这儿正好有这么一个我们公司以前给别人做的,现成的,我整理一下给你.
顺便问一下,你做的是那种充电器,如果是镍氢镍镉的话很好办,整个设计方案都可给你,电路图、源程序等,我们现在不用了.
0
回复
yu_zdws
LV.3
22
2004-12-06 12:55
@yu_zdws
顺便问一下,你做的是那种充电器,如果是镍氢镍镉的话很好办,整个设计方案都可给你,电路图、源程序等,我们现在不用了.
我的QQ:410899759,电话:021-54262183-122,我姓贾.如果真的要打电话或QQ留言都可的.
0
回复
chengkai422
LV.6
23
2004-12-06 13:19
@yu_zdws
我的QQ:410899759,电话:021-54262183-122,我姓贾.如果真的要打电话或QQ留言都可的.
我做的是铅酸的啊!不过你可以给我看看!谢谢先!
0
回复
chengkai422
LV.6
24
2004-12-14 14:12
@vssv
;-------------------------------------------------------------;PWM_TurnOnandP0CONH,#11001111borP0CONH,#00010000borPWMCON,#(PWMCON_CLEAR|PWMCON_START)ret;-------------------------------------------------------------;PWM_TurnOffandPWMCON,#~(PWMCON_START)andP0CONH,#11001111borP0CONH,#00100000bandP0DATA,#10111111bldP0,P0DATAret
我想将两个A/D口的电压相减,用得到的值的大小作为一个条件!当条件为真时,即FLAG为51h时,才执行另外程序,否则不执行!但是加上这个程序后,不管任何情况下,另外一个程序都会执行!不知道这个条件程序执行了没有,谢谢帮我看看!
            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
回复
censtar
LV.6
25
2004-12-14 14:59
@maychang
软件做PWM,你的PWM频率多少?单片机软件做PWM,还有时间做别的事情吗?总要读AD,与基准值比较,运算吧?我恐怕此路不通.
谁说不行?只不过真正平率比较低一些而已罢了.
做出来不难.
不信随便到网站上找一下“软件 实现 PWM”肯定很好找的.
0
回复
powersmt
LV.4
26
2004-12-15 22:29
@chengkai422
我做的是铅酸的啊!不过你可以给我看看!谢谢先!
用877有点太贵了,用PIC16F716就可以了,带一路PWM可以用来驱动这个MOSFET!
0
回复
gunking
LV.4
27
2004-12-16 09:15
@chengkai422
我只要1到4k的频率就好了,是定频率,变duty的控制mos的导通时间!
我用PIC18F458作一个buck,到了50khz,12V输出.呵呵
0
回复
chengkai422
LV.6
28
2004-12-16 10:14
@gunking
我用PIC18F458作一个buck,到了50khz,12V输出.呵呵
咳!怎么都在说PIC啊,我却对PIC一无所知,有没有高人可以给一个基础的PIC教程给我啊!小弟谢过了,ck4221982@yahoo.com.cn
0
回复
gunking
LV.4
29
2004-12-16 10:32
@chengkai422
咳!怎么都在说PIC啊,我却对PIC一无所知,有没有高人可以给一个基础的PIC教程给我啊!小弟谢过了,ck4221982@yahoo.com.cn
靠,国内书多便宜呀,
PIC的教程多了去了.北航出版社就有很多.你洋文好不好?我可以给一个连接,PIC的application note. 不过它没有用什么复杂的算法
只是电压高,减duty, 电压低,加duty. 动态性能不好.
美办法,如果用了PID或者PI时间就不够了,不过你的频率不高,PIC肯定可以用.
0
回复
chengkai422
LV.6
30
2004-12-16 11:55
@gunking
靠,国内书多便宜呀,PIC的教程多了去了.北航出版社就有很多.你洋文好不好?我可以给一个连接,PIC的applicationnote.不过它没有用什么复杂的算法只是电压高,减duty,电压低,加duty.动态性能不好.美办法,如果用了PID或者PI时间就不够了,不过你的频率不高,PIC肯定可以用.
ok,我还是去看看资料吧!对于我不了解的pic,我怎么去用它做呢!
你可以吧那个application note给我,e文不行还不是要看!
不知道你有没有关于PIC的一些资料,可以共享一下吗???
0
回复
gunking
LV.4
31
2004-12-16 12:06
@chengkai422
ok,我还是去看看资料吧!对于我不了解的pic,我怎么去用它做呢!你可以吧那个applicationnote给我,e文不行还不是要看!不知道你有没有关于PIC的一些资料,可以共享一下吗???
去福州高奇那里买开发板,在到它的论坛上down一个CCS开发工具,用C语言,很方便,连汇编都不用学.
很快可以学会的.
我的硕士论文虽然写得烂,倒是很好的数控开关电源入门材料,呵呵.我还在整理,里面有原程序,其实真的很简单好学.
那个材料我明天发给你吧
0
回复