打印

请教一个占空比的问题?

[复制链接]
4261|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者

直接用单片机

什么都不做的话,用单片机了,实现简单

使用特权

评论回复
5
lake198664|  楼主 | 2008-7-17 18:04 | 只看该作者

直接用单片机?

4L能具体点说吗?因为我不是很会啊!

使用特权

评论回复
6
huangqi412| | 2008-7-17 20:45 | 只看该作者

51话,换单周期之类的吧

使用特权

评论回复
7
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才行。
这样实现还简单吗?

使用特权

评论回复
8
acmilann| | 2008-7-18 21:49 | 只看该作者

随便找一块arm7的都行

使用特权

评论回复
9
lyjian| | 2008-7-18 23:18 | 只看该作者

楼上说得倒是很轻巧

楼上知不知道要实现一个500K的8BIT精度的PWM信号需要多高的时钟频率才行?

使用特权

评论回复
10
soso| | 2008-7-19 04:20 | 只看该作者

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

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

使用特权

评论回复
11
lake198664|  楼主 | 2008-7-19 08:59 | 只看该作者

RE8L

我没有计算过一个8BIT精度的PWM输出要多高的频率,不过我知道51肯定很难实现。其实也不一定非得51系列做,只是本人对其他型号单片机不熟悉,如果各位有比较好的提议的话不妨告诉我。

使用特权

评论回复
12
lake198664|  楼主 | 2008-7-19 09:01 | 只看该作者

RE10L

我觉得10L提议不错,我再想想实现方案,谢谢!不过还是想请大家给我更多意见和建议!

使用特权

评论回复
13
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%。

使用特权

评论回复
14
王紫豪| | 2008-7-19 20:51 | 只看该作者

EPM240+TLC7528

这个方案也不贵!

使用特权

评论回复
15
mxinfa| | 2008-7-20 11:51 | 只看该作者

51产生500k没问题

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

使用特权

评论回复
16
云痕| | 2008-7-20 17:25 | 只看该作者

at89c51晶振才多大啊

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

使用特权

评论回复
17
linfeng133| | 2008-7-20 21:48 | 只看该作者

用一片NE555便可

用一片NE555便可

使用特权

评论回复
18
lake198664|  楼主 | 2008-7-23 16:07 | 只看该作者

re17

NE555的占空比虽可调,但是不能准确调到我想要的占空比。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

113

帖子

0

粉丝