矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 闻太师

浅析俄版mini LCR原理

  [复制链接]
     
发表于 2022-8-12 19:21:57 | 显示全部楼层
闻太师 发表于 2022-6-15 21:41
你提到单边频谱和双边频谱,使我受到启发,会不会和输入信号的类型有关呢?
又翻了一下楼上截图的那本 ...

你现在做的硬件用的三阶低通滤波吗?我也想自己画一版本,过来问一下,硬件还有那些修改可以稳定性和测量精度,谢谢!
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-8-13 11:35:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2022-8-14 21:49:11 来自手机 | 显示全部楼层
一階梯rc濾波用8位機的那種方式擴展成32位會不會速度跟上來
回复 支持 反对

使用道具 举报

     
发表于 2022-8-31 09:52:49 | 显示全部楼层
yjmwxwx 发表于 2021-8-4 13:42
以前做的时候发过帖子,不知道这样算对不对

在学习时不小心点到反对上了,请不要介意哦。
回复 支持 反对

使用道具 举报

     
发表于 2022-8-31 10:37:00 | 显示全部楼层
sxsxsxh 发表于 2022-8-31 09:52
在学习时不小心点到反对上了,请不要介意哦。

没关系。

我发的这个帖子搞不懂为啥出现乱码了,发的在线计算电容电感的网站也被墙无法访问了,只能把网页保存到本地用了,感觉这基础知识网页做的蛮好的搞不懂为啥被墙

电感电容计算.zip (303.37 KB, 下载次数: 43)
回复 支持 反对

使用道具 举报

     
发表于 2022-9-2 22:40:22 | 显示全部楼层
太有意思了,,,好好的做一个吧
回复 支持 反对

使用道具 举报

     
发表于 2022-9-8 14:35:37 | 显示全部楼层
这个帖子不错,可以学到很多知识,
不过,我好像没有找到对应的原始代码文件,
我也比较爱好STM32系列的,
有兴趣也学习自己来做,
能不能给个链接呢?或者直接发我一份,谢谢。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-9-8 15:10:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2022-9-8 20:00:06 | 显示全部楼层
闻太师 发表于 2022-9-8 15:10
radiokot.ru/circuit/digital/measure/108/
加上https://www.

谢谢,下了一个6.03的源代码,
回头对照您的帖子研习一下。
回复 支持 反对

使用道具 举报

     
发表于 2022-9-18 21:19:29 | 显示全部楼层
本帖最后由 abbey_tom 于 2022-9-18 21:21 编辑
闻太师 发表于 2022-9-8 15:10
radiokot.ru/circuit/digital/measure/108/
加上https://www.


最近抽空学习了一下6.03版,代码和电路大致跑通了,
就是这段正弦激励的ISR有些困惑,

void  __attribute__((optimize("-O3")))  DMA1_Channel4_IRQHandler(void){
        int j;
        static int max=(N/DAC_N);
        static uint32_t * dptr = dac_buf;
        static int sptr = 0;
        const uint32_t k = (SINE_OFFSET|(SINE_OFFSET<<16));

        //GPIOB->BSRR = GPIO_Pin_13; // set

        if(DMA1->ISR & DMA_ISR_HTIF4 ){
                dptr = dac_buf;max--;
                if(max <= 0 ){
                        max = (N/DAC_N);
                        sptr = 0;
                }

        }
        DMA1->IFCR = DMA1_IT_GL4;

        j = DAC_N/2;

        while(j-- > 0)        {
                uint32_t sig =   (( sine[sptr])>>7)&0xffff;
                *dptr++ = k + sig -  (sig<<16)  ;sptr++;
        }
        //GPIOB->BRR = GPIO_Pin_13; // reset
}

sine表是625个数据,一个周期是500
半传送中断一次进入这个ISR,max=5,
每次更新50个数据,加上全传送中断,
每轮更新100个数据,看起来没错,每周期是500。
但这个程序中第5次半中断进入时
sptr = 400; 因max=0,故sptr由400马上被赋值为0,
好像没有机会大于400呀,
这样岂不是取不完整个周期的数据(0-499)?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-9-18 21:35:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-9-18 21:36:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2022-9-18 21:47:34 | 显示全部楼层
本帖最后由 abbey_tom 于 2022-9-18 21:52 编辑
闻太师 发表于 2022-9-18 21:35
正弦表做激励源只用前500个数据,后125个给DFT查余弦表用,类似sin(θ+90)=cos(θ)。我共享的文档里有 ...

625只用500,
这个我看到了。
我说的是到不了500,
只能到400哦,
您能否仔细看看。
               if(max <= 0 ){
                         max = (N/DAC_N);
                         sptr = 0;
                 }
第5次进入时,sptr就从0开始了。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-9-18 22:37:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2022-9-18 23:09:20 | 显示全部楼层
本帖最后由 abbey_tom 于 2022-9-18 23:14 编辑
闻太师 发表于 2022-9-18 22:37
正弦表长500,DAC buffer长100。每传50个数中断一次,奇数次中断时Buffer中的前一半50个数已经用完了,后 ...


您说的这些我都仔细品了,
说得都没错。
但您可以人工模拟一下,
sine[sptr]从表中取数这个是死的,
sptr从0开始,
第10次进入ISP的时候,
5次Max--, Max=0,
导致sptr由400到0,
sptr的值序列是:
初始值0
1半50
1全100
2半150
2全200
3半250
3全300
4半350
4全400
5半Max=0,sptr=0;
5全sptr=50

max=(N/DAC_N)
不会等于6吧?




补充内容 (2022-9-26 16:01):
这个问题我后来看了,
从程序代码上看,的确如此。
在第5次半完成时,sptr会从400变为0,导致波形缺少1/4
但以此为起点,
后续的中断就会正常了,
因此,
前面这10次中断出现错误的这一段,
可以看作预热。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

蒙公网安备 15040402000005号

GMT+8, 2025-4-27 23:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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