DIY 简单频率计高达 6.5MHz
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
|
应用和在线服务
|
关于这个项目
视频中展示的设备是使用 Arduino Nano 微控制器制作的频率计。可测量矩形、正弦和三角形信号的频率。
它的测量范围从几赫兹到 6.5 兆赫兹。还提供三个测量时间间隔 - 0.1、1 和 10 秒。如果我们只测量矩形信号,那么就不需要整形放大器,信号直接从 Arduino 馈送到数字引脚 5。
由于“FreqCount”库,您也可以在下面下载,代码非常简单。
该设备非常简单,由几个组件组成:
- Arduino Nano 微控制器
- 整形功放板
- 液晶显示
- 输入信号形状选择器
- 输入插孔
- 和时间间隔开关:我们可以选择三个间隔0.1 -1 - 和10秒。
正如您在视频中看到的那样,该仪器在整个范围内都非常精确,我们还可以通过以下描述的简单程序校准频率计:
在 Arduino 库文件夹中找到 FreqCount 库,
在 FreqCount.cpp 文件中找到以下几行:
#if 已定义 (TIMER_USE_TIMER2) &&F_CPU ==12000000L
浮点正确 =count_output * 0.996155;
并将它们替换为:
#if 已定义 (TIMER_USE_TIMER2) &&F_CPU ==16000000L
浮点正确 =count_output * 1.000000;
其中 1.000000 是您的校正因子,
必须在频率计的输入端施加 1 MHz 进行校正。
更改文件后,将新草图上传到 Arduino 板。
最后,将频率计装入合适的塑料盒中,成为电子实验室中的又一实用仪器。
代码
- 代码
- FreqCount-master
代码C/C++
#include//https://github.com/PaulStoffregen/FreqCount/archive/master.zip#include LiquidCrystal lcd(12, 11, 6, 4, 3, 2 );// RS,E,D4,D5,D6,D7void setup() { lcd.begin(16, 2);// LCD 16X2 pinMode(7,INPUT); FreqCount.begin(1000);}unsigned long f;float f0;int x,n=3,r;void loop() { if(digitalRead(7)==HIGH){n++;x=0;delay(100);} lcd.setCursor(0,1); if(n==1){x++;if(x==1){FreqCount.begin(100);}r=-1;lcd.print("T =0.1 s ");} if(n==2 ){x++;if(x==1){FreqCount.begin(10000);}r=1;lcd.print("T =10 s ");} if(n==3){x++;if(x ==1){FreqCount.begin(1000);}r=0;lcd.print("T =1 s ");} if(n>3){n=1;} lcd.setCursor(0,0); lcd.print("F ="); if(f>=1000000 &&n==3){f0=f/1000000.0;lcd.print(f0,6+r);lcd.print("MHz");} if(f<1000000 &&n==3 ){f0=f/1000.0;lcd.print(f0,3+r);lcd.print("kHz");} if(f>=100000 &&n==1){f0=f/100000.0;lcd. print(f0,6+r);lcd.print("MHz");} if(f<100000 &&n==1){f0=f/100.0;lcd.print(f0,3+r);lcd.打印(" kHz");} if(f>=10000000 &&n==2){f0=f/10000000.0;lcd.print(f0,6+r);lcd.print("MHz");} if( f<10000000 &&n==2){f0=f/10000.0;lcd.print(f0,3+r);lcd.print("kHz");} if (FreqCount.available()) { f =FreqCount.读(); lcd.setCursor(10,1);lcd.print("***"); } 延迟(200); lcd.clear();}
FreqCount-masterC/C++
无预览(仅限下载)。
示意图
制造工艺