gpt4 book ai didi

c++ - Arduino 从单个数字输入读取脉宽频率和占空比

转载 作者:行者123 更新时间:2023-11-28 07:08:58 24 4
gpt4 key购买 nike

我是 Arduino 和编码的新手,但已经完成了所有教程,我认为我已经掌握了它的工作原理。

我有一个现实世界的问题,我想用 arduino 解决。

我有一个来自汽油发动机喷油器的 PWM 信号,我需要从 arduino 内部导出两个独立的逻辑函数。

确定每个上升沿之间的延迟(以推导引擎转速)上升沿之间的范围在 6ms - 120ms 之间和读取脉冲宽度占空比(以确定喷油器的占空比)脉冲宽度范围从 0.02ms 到超过 10ms 的脉冲长度。

这些需要在逻辑中独立表示为“RPM”和“脉冲宽度”

我已阅读 this关于“Arduino PWM 的 secret ”的博客,发现它提供了有关如何写入不同频率和占空比的脉冲宽度输出的信息,但我正在尝试读取不同频率和占空比的脉冲宽度以创建可变字节或 int 到用于每个。

最佳答案

正确的是,定时脉冲输入或类似内容并不多。 Arduino 的 ATmega 可以通过以下方法捕获占空比每一侧的时间。将它们放在一起并根据您的需要将它们视为 PWM 将取决于代码。

有几种方法和例子。

  1. 定时事件的紧密循环轮询。例如 PulseIn

  2. 更好的方法是创建一个 timer1 溢出中断并在该 ISR 期间拉动引脚。这是肯的原始方法Shirriff 的红外线图书馆作品 - 50 毫秒拉动 shirriff IR Library它的分辨率仅与溢出一样好。

  3. 使用引脚变化中断 ISR 获取时间。哪里会稍微潜伏。在哪里microtherion's Ken 的 IR 库的分支将溢出转换为 PinChangeInt。 MicroTherion 的代码在库中离散地执行此操作。 PinChangeInt在哪里库使它更简单。

  4. 使用定时器输入捕获。总之当对应输入引脚改变系统时钟被捕获和中断发布。因此 ISR 可以潜在地获得它发生的确切时间。 InputCapture.ino

关于c++ - Arduino 从单个数字输入读取脉宽频率和占空比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com