Arduino与Proteus仿真实例简单信号频率计数仿真
Arduino与Proteus仿真实例-简单信号频率计数仿真
简单信号频率计数仿真
Arduino 可用于测量电量(如电压、电流、功率等)或物理量(如温度、湿度、光强、湿度等)或电子元件值等。
本文将演示演示了如何使用 Arduino 测量脉冲的频率和占空比。
在通信领域,频率测量至多是必不可少的。占空比也是一个重要的测量参数,因为它给出了脉冲宽度的百分比——意味着脉冲的开启时间。在直流电机速度控制和伺服电机角度控制中,需要测量脉冲宽度。此外,还测量了脉冲宽度以检查某些应用(如数字信号接收器、中继器等)中的脉冲对称性。
本文通过Arduino实现简单测量脉冲的频率、开启时间、关闭时间和占空比,并将它们显示在 16x4 LCD 上。
在前面的文章中,我们介绍了如何驱动LCD1602,请参考:
- Ardunio开发实例-驱动LCD1602液晶显示屏(I2C)
- Ardunio开发实例-驱动LCD1602液晶显示屏(并口接线)
- Arduino与Proteus仿真实例-LCD1602液晶屏4线驱动仿真
- Arduino与Proteus仿真实例-LCD1602液晶屏I2C(PCF8574)驱动仿真
1、仿真电路原理图

在仿真电路中,通过PCF8574驱动LCD1604,信号发生器信号输出端连接引脚7。
2、仿真代码实现
1 | #include <Wire.h> |
本次实例中,通过pulseIn函数对输入信号的开启和关闭(即,高低电平)进行计数。计数步骤如下:
- 当开始仿真时,信号发生器将脉冲信号发送到引脚7,Arduino首先等待脉冲变为高电平。当脉冲信号变高电平时,它会计算脉冲保持高电平的时间长度(以微秒为单位)。
1 | ontime = pulseIn(pulse_ip,HIGH); |
- 然后计算脉冲保持低电平的时间长度(微秒为单位)。
1 | offtime = pulseIn(pulse_ip,LOW); |
- 然后,将这两个时间间隔相加得到总时间,即周期。
1 | period = ontime+offtime; |
- 频率计算公式为:频率 = 1 / 时间
1 | freq = 1000000.0/period; |
- 然后,计算占空比
1 | duty = (ontime/period)\*100; |
- 最后将计算结果显示到LCD1604上。
仿真结果如下:

文章来源: https://iotsmart.blog.csdn.net/article/details/127816984
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 秋意寒!
评论