请教一个占空比的问题?

[复制链接]
 楼主| lake198664 发表于 2008-7-17 16:32 | 显示全部楼层 |阅读模式
请问各位大虾,我要产生一个500KHZ占空比可变的方波,我想了两个方案:第一个是先用AT89C51产生500KHZ方波,然后用一块PWM芯片使其占空比可调。(不知道是否有这种芯片)第二个方案是直接用带PWM输出的MCU产生占空比可调的500KHZ方波,只是我没用过这类MCU,而且不知道确切的型号。请各位大虾帮我权衡一下哪种方案比较合适一些,并且帮我推荐几款PWM芯片或者带PWM输出的MCU好吗?谢谢了! 
zhaoyu2005 发表于 2008-7-17 16:41 | 显示全部楼层

拿AT89C51产生500K的方波有点难度

你还干别的不了?即使用36M的晶振,指令周期1/3uS,500K的方波周期2uS,50%的占空比高低电平各1uS,你的调整范围有多大?
 楼主| lake198664 发表于 2008-7-17 16:57 | 显示全部楼层

RE

什么也不干了,就产生一个500KHZ方波,占空比10%-90%
ccf_2006 发表于 2008-7-17 17:36 | 显示全部楼层

直接用单片机

什么都不做的话,用单片机了,实现简单
 楼主| lake198664 发表于 2008-7-17 18:04 | 显示全部楼层

直接用单片机?

4L能具体点说吗?因为我不是很会啊!
huangqi412 发表于 2008-7-17 20:45 | 显示全部楼层

51话,换单周期之类的吧

lyjian 发表于 2008-7-17 20:46 | 显示全部楼层

4楼错了

即使什么也不做,用单片机实现也不简单
除非你要实现的是一个1bit精度的500KHz PWM,也就是一个500KHz的50%占空比的方波输出。
只需要执行两条指令就行了:
LOOP:
    CPL     PWM_OUT
    SJMP    LOOP
即使是光执行这两条指令,要输出500KHz,如果要用标准12时钟的51来实现的话,这个51也要工作在XTAL=36MHz才行。

假如要实现1个2bit精度的500KHz PWM,要输出25%占空比的PWM时,需要执行下面三条指令就行了:
LOOP:
    CLR     PWM_OUT
    SETB    PWM_OUT
    SJMP    LOOP
要输出500KHz,如果要用标准12时钟的51来实现的话,这个51也要工作在XTAL=24MHz才行。

假如要实现1个4bit精度的500KHz PWM,要输出6.25%占空比的PWM时,需要执行下面指令就行了:
LOOP:
    CLR     PWM_OUT
    SETB    PWM_OUT
    NOP
    .
    .        ;(共12条NOP指令)
    .
    NOP
    SJMP    LOOP
要输出500KHz,如果要用标准12时钟的51来实现的话,这个51也要工作在XTAL=96MHz才行。

假如要实现1个8bit精度的500KHz PWM,要输出0.390625%占空比的PWM时,需要执行下面指令就行了:
LOOP:
    CLR     PWM_OUT
    SETB    PWM_OUT
    NOP
    .
    .        ;(共252条NOP指令)
    .
    NOP
    AJMP    LOOP
要输出500KHz,如果要用标准12时钟的51来实现的话,这个51也要工作在XTAL=1536MHz才行。
这样实现还简单吗?
acmilann 发表于 2008-7-18 21:49 | 显示全部楼层

随便找一块arm7的都行

lyjian 发表于 2008-7-18 23:18 | 显示全部楼层

楼上说得倒是很轻巧

楼上知不知道要实现一个500K的8BIT精度的PWM信号需要多高的时钟频率才行?
soso 发表于 2008-7-19 04:20 | 显示全部楼层

这么高频率,用硬件做比较方便

用电路产生 500KHz 锯齿波信号,单片机用DA输出模拟信号,用比较器比较这两个信号结果就是 PWM 输出了

 楼主| lake198664 发表于 2008-7-19 08:59 | 显示全部楼层

RE8L

我没有计算过一个8BIT精度的PWM输出要多高的频率,不过我知道51肯定很难实现。其实也不一定非得51系列做,只是本人对其他型号单片机不熟悉,如果各位有比较好的提议的话不妨告诉我。
 楼主| lake198664 发表于 2008-7-19 09:01 | 显示全部楼层

RE10L

我觉得10L提议不错,我再想想实现方案,谢谢!不过还是想请大家给我更多意见和建议!
lyjian 发表于 2008-7-19 12:11 | 显示全部楼层

用Microchip的PIC18可以实现

PIC的MCU在40MHz时可以实现500K/6bit的PWM输出。
PIC的PWM功能可以控制PWM的精度。
这样6bit精度500K的PWM需要的时钟是:
500KHz*2(Power 6)=500KHz*64=32MHz。
占空比0%-100%,step=1.5625%。

王紫豪 发表于 2008-7-19 20:51 | 显示全部楼层

EPM240+TLC7528

这个方案也不贵!
mxinfa 发表于 2008-7-20 11:51 | 显示全部楼层

51产生500k没问题

52以上的单片机P1.0口有个自动翻转的功能,可以产生50%占空比的方波,不占用软件资源,产生500K的方波非常方便,12M晶振最高可产生到3M方波,但不是连续可调的,是这种关系(Fclk/4*n),n为定时器初值
10楼的方法我在去年的电子竞赛中就用到了,我不是用的锯齿波是用的正弦波
云痕 发表于 2008-7-20 17:25 | 显示全部楼层

at89c51晶振才多大啊

要是和8051一样的频率,难度有点大啊,要是再外挂个PWM芯片,成本应该不划算了
51定时器产生PWM一般这么做:占时长折算为指令周期数T1,空折算为T2,先以255-T1为初始生成占,溢出中断时做个标志位,端口翻转并加载空初始255-T2,如此循环
linfeng133 发表于 2008-7-20 21:48 | 显示全部楼层

用一片NE555便可

用一片NE555便可
 楼主| lake198664 发表于 2008-7-23 16:07 | 显示全部楼层

re17

NE555的占空比虽可调,但是不能准确调到我想要的占空比。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

113

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

44

主题

113

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部