如何判断输入信号是0还是PWM

[复制链接]
5471|23
 楼主| pengf 发表于 2011-7-6 17:32 | 显示全部楼层 |阅读模式
具体就是:

一调光电路中,灯灭的时候,对应一个信号是0;
而灯亮的时候,对应该信号则是PWM(100HZ,占空比5%~95%,仅有1,0电平构成PWM)波,灯的亮度与此PWM占空比成比例;

现欲将此信号作为输入给单片机(C51),单片机只需据此判断出任意时刻时,灯是灭呢?还是开(任意亮度)?
juventus9554 发表于 2011-7-6 17:39 | 显示全部楼层
通过判断0,1
llljh 发表于 2011-7-6 17:47 | 显示全部楼层
一是要引入过零判断,而是比较容易误判,PWM里有0,也有1,视过零点和占空比
 楼主| pengf 发表于 2011-7-6 17:50 | 显示全部楼层
若能计算一个周期内值的总和,则还要引入过零检测,若为0,则是关状态,若不为0,则为开,但应如何设这采样率?尤其占空比较大即1电平时间较短(例如5%)时候,如何设置采样率才不会误判?
栩栩如生 发表于 2011-7-6 17:54 | 显示全部楼层
读到IO口有高不就知道灯亮了吗
juventus9554 发表于 2011-7-6 18:03 | 显示全部楼层
嗯,用中断口可以
renyaq 发表于 2011-7-6 18:15 | 显示全部楼层
根据PWM周期来检验信号是否发生逻辑变化
supernan 发表于 2011-7-6 18:51 | 显示全部楼层
RC滤波为直流电压
 楼主| pengf 发表于 2011-7-6 19:22 | 显示全部楼层
RC滤波为直流电压方案实验:

由于原PWM信号还有别的用途,故用了个或门,另一个输入接地,则输出就等于该PWM,把输出处理,则不改变原PWM信号的波形。

或门输出端焊了个RC滤波回路,RC串联,R取10K,C取100UF电解电容,取电解电容电压作为取样电压,由于该PWM占空比可调,则示波器观察到取样电压随着PWM占空比的改变而变化,最大输出值只有2.5V.

说明:PWM是高电平=3.3V,低电平=0V的方波。

无论PWM占空比是多少,RC滤波均能输出其高电压3.3V吗?如能,请推荐个参数。
司徒老鹰 发表于 2011-7-6 19:46 | 显示全部楼层
用电容隔直后,用三极管转换,再RC滤波
juventus9554 发表于 2011-7-6 20:11 | 显示全部楼层
嗯,当PWM为5%时,直接RC滤波的电压 可能低于 单片机 高电平门槛,导致误读为0
dingy 发表于 2011-7-6 20:42 | 显示全部楼层
只需要判断是否有没PWM而已,有没必要又虑波又比较的?
典型的简单事情复杂化。
只需要简单计数一下20MS内有没脉冲就知道是0还是PWM了。
renyaq 发表于 2011-7-6 20:53 | 显示全部楼层
才两K的信号嘛,开个定时器10K,随便都能扫到它
chuxh 发表于 2011-7-6 21:24 | 显示全部楼层
多统计几次不就玩了? 哈哈

如果都是0,则是关闭状态。。。否则,相反。
llljh 发表于 2011-7-6 21:39 | 显示全部楼层
如果不判断PWM宽度
最简单方式:将PWM直接接51的中断IO,但不打开中断。这样只要检查中断标志有无出现,就知道PWM有无输出。
如果需要判断PWM,5L的可以简单的用非门反向,电压就是从高到低变化。
zwll 发表于 2011-7-6 22:12 | 显示全部楼层
根据PWM周期来检验信号是否发生逻辑变化
只需用到信号外部中断和内部定时器中断即可完成,很简单的
 楼主| pengf 发表于 2011-7-6 22:40 | 显示全部楼层
再次非常感谢各位的建议,先用一或门将该信号引出,因其还要去驱动MOSFET管呢(具体方法见上贴5楼);然后查该IC(51内核)芯片手册,该芯片对输入的信号判断为0还是1不是根据电压(Vil和Vih),而是根据电流(Iil和Iih)大小来定的,大喜,这样即使PWM占空比最大95%(此时1电平5%,0电平95%,以前占空比的定义搞反,特别更正,不好意思,哈哈),RC滤波只有1.6V, 经实验,该51内核的IC依然可以判断为1,问题解决!
 楼主| pengf 发表于 2011-7-6 22:47 | 显示全部楼层
结贴了,再次谢谢大家
tr14571 发表于 2011-7-7 10:36 | 显示全部楼层
来晚了15楼说的很好
bnyuli 发表于 2011-7-7 13:51 | 显示全部楼层
芯片手段感谢的套路和招式有多少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

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