大佬们上午好:请问有什么好的方法检测IO口是否一直处于高电平?
<p>是这样的:外部电路有四路1KHz的方波输入到stm32的IO口,但是需要监测这些方波什么时候会没有?没有的时候就一直处于高电平状态,有没什么好的方法来进行监测?</p>已经采用单片机检测了,是需要再额外监测显示?那就在端口并联上拉电阻和LED beyond_笑谈 发表于 2024-12-23 11:30
已经采用单片机检测了,是需要再额外监测显示?那就在端口并联上拉电阻和LED
<p>是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转速,但是我发现在风扇不转时,转速值还是有的不是0。</p>
<p>但是实际风扇不转时,FG信号一直处于低电平,我就想通过监测不转时的低电平信号,来修改显示的转速值为0。</p>
<p>这样还可以监测风扇的好坏,风扇坏了不转时可以实时发现。</p>
<p>感谢您的回复!</p>
Tacking 发表于 2024-12-23 11:36
是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...
<p>那就增加一个RC,将PWM滤波成直流量,用ADC进行采集,通过ADC的值来判断</p>
dige 发表于 2024-12-23 13:15
那就增加一个RC,将PWM滤波成直流量,用ADC进行采集,通过ADC的值来判断
<p>感谢指导,我用这种方式来试试!</p>
Tacking 发表于 2024-12-23 11:36
是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...
<p>在MCU的信号输入捕捉通道接反相器,采用MCU另一个引脚读取这个信号状态,同时反相器也能驱动LED</p>
<p> </p>
<p></p>
<p> </p>
<div class='shownolgin' data-isdigest='yes'>Tacking 发表于 2024-12-23 13:23
感谢指导,我用这种方式来试试!
<p>如果不够精确,加一个频率电压转换电路,比如用LM331等器件制作。如果价格因素,可以采用你之前的捕获比较+ADC检测等结合。</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <div class='shownolgin' data-isdigest='yes'>中断?</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'><p>低电平捕获 获取这个脚不是低电平的状态吧 应该可以吧</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>beyond_笑谈 发表于 2024-12-23 13:24
在MCU的信号输入捕捉通道接反相器,采用MCU另一个引脚读取这个信号状态,同时反相器也能驱动LED
  ...
<p>您的意思是不是用另一个引脚去轮询这个输入捕获引脚的状态?如果轮循到状态长时间不变,就是风扇不转了。</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>dige 发表于 2024-12-23 13:34
如果不够精确,加一个频率电压转换电路,比如用LM331等器件制作。如果价格因素,可以采用你之前的捕获比 ...
<p>好的,非常感谢</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>令狐大侠 发表于 2024-12-23 13:50
中断?
<p>我尝试了下中断,没搞定!设定了有中断标志位置1,没有置0,然后测试发现这个标志位一直为1。刚接触编程,还很多不懂<img height="47" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/shy.gif" width="48" /></p>
<p>void EXTI9_5_IRQHandler(void)<br />
{<br />
if (EXTI_GetITStatus(EXTI_Line7) == SET) //判断是否是外部中断7号线触发的中断<br />
{<br />
TIM3CH_CAPTURE_Flag = 1; //置接收标志位变量为1<br />
EXTI_ClearITPendingBit(EXTI_Line7); //清除外部中断7号线的中断标志位<br />
}<br />
else if (EXTI_GetITStatus(EXTI_Line7) != SET) //判断是否是外部中断7号线触发的中断<br />
{<br />
TIM3CH_CAPTURE_Flag = 0; //置接收标志位变量为1<br />
}<br />
}</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>常见泽1 发表于 2024-12-23 13:59
低电平捕获 获取这个脚不是低电平的状态吧 应该可以吧
<p>我也想着实在不行就采用轮询的方式来读取引脚电平是不是一直低电平状态。谢谢</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>Tacking 发表于 2024-12-23 11:36
是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...
<p>引脚设置成输入捕获,可能还是可以直接读引脚的状态,因为直接读的是寄存器,对捕获模式没有什么影响。</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>Tacking 发表于 2024-12-23 14:24
您的意思是不是用另一个引脚去轮询这个输入捕获引脚的状态?如果轮循到状态长时间不变,就是风扇不转了。 ...
<p>对,就是这个意思。而且反相器的驱动能力大一点,可以直接驱动LED显示状态。</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>wangerxian 发表于 2024-12-23 15:13
引脚设置成输入捕获,可能还是可以直接读引脚的状态,因为直接读的是寄存器,对捕获模式没有什么影响。
<p>感谢指导!</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>beyond_笑谈 发表于 2024-12-23 15:25
对,就是这个意思。而且反相器的驱动能力大一点,可以直接驱动LED显示状态。
<p>谢谢!</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>Tacking 发表于 2024-12-23 11:36
是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...
<p>【但是实际风扇不转时,FG信号一直处于低电平,我就想通过监测不转时的低电平信号,来修改显示的转速值为0。】</p>
<p>如果你的方波信号源内阻不是很大,可以考虑使用倍压整流电路。如果方波信号无变化,倍压整流电路就没有输出,方波信号在变化,倍压整流输出将接近你的方波幅度。</p>
<p> </p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'>Tacking 发表于 2024-12-23 11:36
是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...
<p>当年在另一个论坛,有位网友提出单片机的一个I/O口控制一个设备。但是该I/O口并不是联接到这个设备,而是通过一个倍压整流电路接到这个设备。这位网友问为什么要这么麻烦。我回复他说:这是为了单片机程序“跑飞”时,该I/O口电平就会保持不变,那么该设备的状态是确定的。如果I/O口直接联接到设备,则程序“跑飞”时设备状态是不确定的。</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='yes'><p>没有的时候就一直处于高电平状态,这个是外部电路的的状态吗?如果是的话其实可以用外部中断进行实时检测,只要一定周期没有来外部中断就说明方波不正常或者停止了,来了外部中断就请检测周期</p>
</div><script>showreplylogin();</script>
页:
[1]
2