打印
[电路/定理]

新人求解,如何得到一个50hz振幅可调的正弦波,非DAC

[复制链接]
3074|43
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
244141084|  楼主 | 2019-10-18 13:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
tianxj01| | 2019-10-18 15:02 | 只看该作者
幅度可调50Hz正弦波,都不需要STM32,用个典型的1T51,用PWM产生再直接低通滤波就很可以了。
由于单片机在16MHz时钟256分辨率的PWM频率=16MHz/256=62500Hz 和50Hz被调制正弦波差了1250倍,所以,简单的2级100Hz低通,可以实现对载波的百万倍衰减,信噪比、失真度都已经非常理想了。
最简单的只需要一个128个8位数据的半周期SIN表格。然后用一个统一是衰减系数来乘以这个数据,并叠加上128的中心直流数据,就可以获得满范围可调,全数控正弦波了。由于实际分辨率就256,所以这个方法产生的正弦波,在幅度小的时候,失真度会变大,如果全程对失真度要求很高的,则可以采用一个数字电位器芯片,有单片机最高幅度正弦波输入,数字电位器实现幅度控制,这样出来的信号,指标最高。

使用特权

评论回复
评论
雪山飞狐D 2019-10-18 17:53 回复TA
不错,有理有据 
板凳
244141084|  楼主 | 2019-10-18 16:44 | 只看该作者
tianxj01 发表于 2019-10-18 15:02
幅度可调50Hz正弦波,都不需要STM32,用个典型的1T51,用PWM产生再直接低通滤波就很可以了。
由于单片机在1 ...

这位大神,能不能实现振幅12位可调啊,现在需要幅度精细可调

使用特权

评论回复
地板
tianxj01| | 2019-10-18 17:51 | 只看该作者
244141084 发表于 2019-10-18 16:44
这位大神,能不能实现振幅12位可调啊,现在需要幅度精细可调

振幅12位可调是可以的,不过PWM的基频就下降16倍,滤波器要求高了而已。基频是3.9K,同样2级低通的话,就只有几千倍的衰减了。以基频5Vp-p计算,则2级衰减后,基频幅度还有mV级别,如果mV级别基频成分不是问题,则只需要把SIN表扩展到16位(实际用12位),多一倍的存储量,你就可以获得12位精度的调整能力。

使用特权

评论回复
5
yuanzhoulu| | 2019-10-18 18:36 | 只看该作者
也可以输出两路信号,叠加在一起,靠相位差调节幅度。

使用特权

评论回复
6
244141084|  楼主 | 2019-10-18 19:01 | 只看该作者
tianxj01 发表于 2019-10-18 17:51
振幅12位可调是可以的,不过PWM的基频就下降16倍,滤波器要求高了而已。基频是3.9K,同样2级低通的话,就 ...

大神啊,水平这么高啊,貌似还有些看不懂

使用特权

评论回复
7
244141084|  楼主 | 2019-10-18 19:26 | 只看该作者
yuanzhoulu 发表于 2019-10-18 18:36
也可以输出两路信号,叠加在一起,靠相位差调节幅度。

请大神给个草图我来研究研究

使用特权

评论回复
8
Diyer123| | 2019-10-18 20:04 | 只看该作者
想要简单……还记得初中物理课本上见过的那个自耦变压器么?

使用特权

评论回复
9
yuanzhoulu| | 2019-10-19 07:56 | 只看该作者
244141084 发表于 2019-10-18 19:26
请大神给个草图我来研究研究

用单片机产生两路信号,调节两路的相位差

使用特权

评论回复
10
244141084|  楼主 | 2019-10-19 08:36 | 只看该作者
yuanzhoulu 发表于 2019-10-19 07:56
用单片机产生两路信号,调节两路的相位差

这两句话都懂,然后呢

使用特权

评论回复
11
tianxj01| | 2019-10-19 09:33 | 只看该作者
yuanzhoulu 发表于 2019-10-18 18:36
也可以输出两路信号,叠加在一起,靠相位差调节幅度。

2路50Hz相位差调幅,通过加法器输出,一个很不错的方法,对于12位幅度精度要求而言,PWM频率虽然还是3.9K,但低幅度时候的失真度、信噪比等指标就都和最高幅度时候一模一样,还省去了单片机乘除法计算,只需要2PWM按中断和固定相位差读SIN表格就好了。资源都是现成的,1T51一般至少有3路(6路互补)PWM能力。
而且个人感觉进行适当优化,是不是考虑做2个相位差180度的SIN表格,让2路基频相差180°,加法时候应该能进一步抑制PWM调制载波。
进一步优化,是不是可以考虑2路sin表格取合适的相位差,是不是有可能用11bit的角度分辨率实现12bit的精度呢?这样的话,PWM频率可以增加一倍?只是非常初步的构思,没有列数据计算。

使用特权

评论回复
12
tianxj01| | 2019-10-19 09:49 | 只看该作者
yuanzhoulu 发表于 2019-10-18 18:36
也可以输出两路信号,叠加在一起,靠相位差调节幅度。

进一步优化完全可行。以空间换速度,其中一路PWM还是1/256时间轴采样的SIN表格单元,PWM频率设置还是16MHz/256=62.5KHz。另一路SIN表格相位分辨率提高16倍,表格长度变成原先SIN表格的16倍,幅度控制,就按位移动这个表格的指针就成了,然后就是指针+中断计数*16读取表格数据。
这样就实现了2路PWN的50Hz信号加法实现调幅,由于PWM还是用的62.5KHz,2级低通可以完美解决高频残余。

使用特权

评论回复
13
244141084|  楼主 | 2019-10-19 10:02 | 只看该作者
本帖最后由 244141084 于 2019-10-19 10:07 编辑
tianxj01 发表于 2019-10-19 09:49
进一步优化完全可行。以空间换速度,其中一路PWM还是1/256时间轴采样的SIN表格单元,PWM频率设置还是16MH ...

这位大神,你说的太高级了,有点不太理解,现在项目要求要用stm32f4,我就想直接用两路dac直接输出,有没有简单的方法,顺便解决一下,0到3V@max幅度可调正弦波平移到正负1.5V

使用特权

评论回复
14
zyj9490| | 2019-10-19 10:45 | 只看该作者
本帖最后由 zyj9490 于 2019-10-19 10:57 编辑
244141084 发表于 2019-10-19 10:02
这位大神,你说的太高级了,有点不太理解,现在项目要求要用stm32f4,我就想直接用两路dac直接输出,有没 ...

合成的信号,2SIN(WT+Q/2)*COS(Q/2),14位的DAC,12位的正弦波数据,二路信号在数字哉相加,只要一路DAC滤波器隔直输出就能成功,当相位是0时,幅度为2,当相位是180时,0,相位与幅度单调区间为【0,180】(不考量信号的相位转向)。就可以改变幅度了。输出DAC时,要考量负数的时,还是要加一个常量值,使DAC数值不要出现负,最后隔直,变成常规的正弦信号。

使用特权

评论回复
15
244141084|  楼主 | 2019-10-19 11:00 | 只看该作者
zyj9490 发表于 2019-10-19 10:45
合成的信号,2SIN(WT+Q/2)*COS(Q/2),14位的DAC,12位的正弦波数据,二路信号在数字哉相加,只要一路DAC滤波 ...

看见数学公式就晕了,我是不是不该干这个,要不要转行啊

使用特权

评论回复
16
zyj9490| | 2019-10-19 11:11 | 只看该作者
244141084 发表于 2019-10-19 11:00
看见数学公式就晕了,我是不是不该干这个,要不要转行啊

进IT行业,搞技术的,对数学要求是挺高的。

使用特权

评论回复
17
zxq6| | 2019-10-19 21:13 | 只看该作者
dac可以调节幅值啊

使用特权

评论回复
18
yuanzhoulu| | 2019-10-20 07:53 | 只看该作者
幅度调节也可以这样,精度不知道。一个PWM产生50Hz正弦波,另一个PWM对50Hz进行幅度控制。

使用特权

评论回复
19
gx_huang| | 2019-10-20 08:00 | 只看该作者
现在的很多MCU都支持16bit的PWM,输出正弦波的失真已经很小了。
无非是幅度调整,靠SPWM产生幅度可调,范围不可能达到12bit的,否则失真太大。
可以一路产生SPWM,一路PWM调整幅度,兼顾失真和幅度调节精度。

使用特权

评论回复
20
tianxj01| | 2019-10-20 10:36 | 只看该作者
本帖最后由 tianxj01 于 2019-10-20 10:39 编辑
yuanzhoulu 发表于 2019-10-20 07:53
幅度调节也可以这样,精度不知道。一个PWM产生50Hz正弦波,另一个PWM对50Hz进行幅度控制。

...

这样也是可行的,当MOS管寄生参数足够小,比如用BS138,在4.5V栅极驱动电压条件下,0.2A电流导通电阻1欧姆(TYPE),且呈现稳定的电阻性,PWM再次衰减公式里面代入串联电阻就成,关键是可以设置更大的串联电阻,让信号源内阻远高于导通电阻,则误差可以忽略,稳定性取决于导通电阻变化,和室温有关,100℃变化内阻变化大概1倍,而当信号源内阻远高于导通电阻时,0-45℃导通电阻变化率就1/2导通电阻,把这个折合到幅度计算精度要求即可。意味着在12bit精度4096条件下,采用4K串联电阻就满足精度要求。只是这样做,斩波频率又变成3.9KHz,给后面滤波还是增加了困难,所以选择起来,还是用62.5KHzPWM 加12位时间分辨率的第2 sin表格,移相做软硬件要求可能最低。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

27

帖子

0

粉丝