矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: yjmwxwx

【参赛】简易电容表

  [复制链接]
     
发表于 2019-12-5 21:35:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-12-5 21:38:19 | 显示全部楼层
书到用时 发表于 2019-12-5 21:35
楼主头像是三把锄头吗?

镢头,下地干活经常用最小的那种

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-12-5 22:01:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-12-5 22:07:27 | 显示全部楼层
书到用时 发表于 2019-12-5 22:01
镢头是干什么活用的,和镐是同一种东西吗?

挖坑、挖沟、刨根用途很多,冷兵器时代还能当武器。
回复 支持 反对

使用道具 举报

     
发表于 2019-12-10 11:14:06 | 显示全部楼层
LZ,您的图纸显示,从信号输出,到ADC采集,竟然都是直流耦合。应该影响不小吧。
当初设计时,没有考虑过交流耦合,是不是更稳定一些?XJW01老师的也是交流耦合。请参考。

请教下:DFT ,FFT 算法,能给讲讲吗?比如,我采集了200个数据,怎么转换?

谢谢!
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-12-10 15:32:58 | 显示全部楼层
本帖最后由 yjmwxwx 于 2019-12-10 15:35 编辑
peiguoqing 发表于 2019-12-10 11:14
LZ,您的图纸显示,从信号输出,到ADC采集,竟然都是直流耦合。应该影响不小吧。
当初设计时,没有考虑过 ...


电路我也不懂,仪表放大器一开始前面也加过104瓷片电容,后来拆掉也没影响就去掉了,不知道是不是电容质量不行加和不加没区别。

DFT很简单,就是采集到的数据乘正弦和余弦,用主帖里面那个生成正弦表和余弦表的C程序生成200点正弦表和200点余弦表,200点数据分别和余弦表相乘结果再累加就是实部,分别和正弦表相乘累加结果是虚部。

FFT比较麻烦,一开始需要位反转,语言描述比较麻烦,我这有个基-2的模拟程序,不过这个只能计算8、16、32等数据,不能计算200点的,你先用16点的数据看每一步怎么计算的就知道原理了。

就是复数乘法和加减法,只是定点数计算容易益出。

模拟程序

fft.zip (15.22 KB, 下载次数: 249)


截图_2019-12-10_15-34-37.png

截图_2019-12-10_15-33-54.png

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-12-10 15:50:29 | 显示全部楼层
peiguoqing 发表于 2019-12-10 11:14
LZ,您的图纸显示,从信号输出,到ADC采集,竟然都是直流耦合。应该影响不小吧。
当初设计时,没有考虑过 ...
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. void main() {
  5.   float m,pi,sr,si;

  6.   int rr,ii, n,i;
  7.   n=100;
  8.   m=2;
  9.   pi=3.141592;   
  10.         for(i=0;i<n;i++){
  11.            sr=cos(2*pi*i*m/n);
  12.            si=-sin(2*pi*i*m/n);
  13.            rr=sr*0x8000;
  14.            ii=si*0x8000;
  15.            printf("0x%04X,0x%04X,",rr,ii);
  16. }
  17.         printf("\n");
  18. }
  19.       
复制代码


就是这个程序生成正弦和余弦表,我C语言不熟悉,不知道这个程序有没有问题,n是点数,m是代表需要哪个点的频率,本来我做的这个表ADC是1M采样率,除100=10K,每个点10K,我这个表应该在第1个点上,而第1个点上发现数很小,所以就取了第2个,这地方可能有问题,我也不熟悉数字信号处理,不知道到底是哪里问题,网上问也没人解答,也没仪器测正弦波的频率到地是多少,或者采样率不准确,这地方最后我也没搞懂。

我这程序都是自己写的,不是官方的库函数,库函数我还不会用,可能我写的程序有问题,要是能对比下就好了。
回复 支持 反对

使用道具 举报

     
发表于 2019-12-10 20:02:33 | 显示全部楼层
yjmwxwx 发表于 2019-12-10 15:50
就是这个程序生成正弦和余弦表,我C语言不熟悉,不知道这个程序有没有问题,n是点数,m是代表需要哪 ...

上面这个程序,由于m=2;推算出,这是计算出了0---4π范围的数据吧。
把m去掉,就是2π范围啊,2*π*  i/100;   i取值(0---100);是吧?

回复 支持 反对

使用道具 举报

     
发表于 2019-12-10 20:30:46 | 显示全部楼层
本帖最后由 peiguoqing 于 2019-12-10 20:32 编辑

采集数据是不是应该采集0--π,100个点;再采集π/2-----3π/2,100个点。因为相差90°;您怎么采集2π范围的数据呢?

如果这个思路是对的话,C语言编写的正弦余弦函数表,应该每个表采集200个吧?对吗?

,m是代表需要哪个点的频率?   什么意思?

一共才运算2π范围,哪里的频率呢?
回复 支持 反对

使用道具 举报

     
发表于 2019-12-10 20:52:26 | 显示全部楼层
yjmwxwx 发表于 2019-12-10 15:32
电路我也不懂,仪表放大器一开始前面也加过104瓷片电容,后来拆掉也没影响就去掉了,不知道是不是电容 ...

请教下,这个图怎么看呢?

前一个数据+后一个数据=d1;

前一个数据-后一个数据=d2;

就是这样作加减法吗?
360截图20191210204801597.jpg
16-Point-FFT-Butterfly-Javascript-Demo.png
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-12-10 21:53:08 | 显示全部楼层
本帖最后由 yjmwxwx 于 2019-12-10 22:25 编辑
peiguoqing 发表于 2019-12-10 20:30
采集数据是不是应该采集0--π,100个点;再采集π/2-----3π/2,100个点。因为相差90°;您怎么采集2π范围 ...


这个是计算旋转因子的,我也是在书上看的,不懂为什么这么算。m是频域,n是时域
就是下面这本书
https://yadi.sk/i/ZOUfF96f3QkNMT

截图_2019-12-10_21-17-50.png

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-12-10 22:02:38 | 显示全部楼层
本帖最后由 yjmwxwx 于 2019-12-10 22:32 编辑
peiguoqing 发表于 2019-12-10 20:52
请教下,这个图怎么看呢?

前一个数据+后一个数据=d1;


这个要用复数计算器,其实不想要自己写FFT程序没必要了解细节。

比如下面这个

截图_2019-12-10_21-24-30.png

先用蝴蝶左下乘法旋转因子


(&#8722;52078.4160+6222.384i)×(0.8819&#8722;0.4714i)=&#8722;42994.7232528+30037.285752i

蝴蝶左上 加 第一个式子的结果  等于  蝴蝶右上

(&#8722;37232.3232+41095.1136i)+(&#8722;42994.7232528+30037.285752i)=&#8722;80227.0464528+71132.399352i

蝴蝶左上  减 第一个式子的结果  等于  蝴蝶右下

(&#8722;37232.3232+41095.1136i)&#8722;(&#8722;42994.7232528+30037.285752i)=5762.4000528+11057.827848i



很简单的,就是乘法、加法、减法

截图_2019-12-10_22-16-58.png

截图_2019-12-10_22-17-12.png

截图_2019-12-10_22-18-05.png

截图_2019-12-10_22-18-18.png

截图_2019-12-10_22-18-52.png

截图_2019-12-10_22-19-06.png



复数计算方法

截图_2017-12-29_16-35-16.png











回复 支持 反对

使用道具 举报

     
发表于 2019-12-11 07:25:11 | 显示全部楼层
yjmwxwx 发表于 2019-12-10 22:02
这个要用复数计算器,其实不想要自己写FFT程序没必要了解细节。

比如下面这个

蝴蝶左下乘法旋转因子是什么?

就是您用c语言编写的那个程序吗?   里面那个m=2;怎么不变化呢?真心想知道。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-12-11 08:27:00 | 显示全部楼层
比如我采样率1M,M=2就是20K频率正弦波和余弦波,那个C程序就是计算这个频率的正弦表和余弦表,这个我也是在书上看的,按理说我这个是10K的不知道为啥跑到了20K上面,可能是泄漏,也可能是采样率不准或者正弦波频率不准。
截图_2019-12-11_08-13-39.png


FFT计算旋转因子的是下面这个C程序,n表示采样点数,上面给的那本书里面都有,介绍比较详细,我说的不如书里面详细。

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. void main() {
  5.   float pi,sr,si;

  6.   int rr,ii, n,i;
  7.   n=8;
  8.   pi=3.141592;   
  9.         for(i=0;i<n/2;i++){
  10.            sr=cos(2*pi*i/n);
  11.            si=-sin(2*pi*i/n);
  12.         rr=sr*0x8000;
  13.         ii=si*0x8000;
  14.        printf("0x%04X,0x%04X,",rr,ii);
  15. }
  16.         printf("\n");
  17. }
复制代码


乘0x8000是Q15定点数
回复 支持 反对

使用道具 举报

     
发表于 2019-12-11 09:40:53 | 显示全部楼层
看着楼主搭电路的风格,顷刻间觉得您可爱,这技术用到胆机上美美的。相当于独创迷踪拳,可自成一派。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-19 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表