搜索
bottom↓
回复: 76
打印 上一主题 下一主题

做电源时发现一种提高DA分辨率的方法!

  [复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2014-11-23 21:01:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 youlongam 于 2014-11-23 21:36 编辑

        在用STM32F10X做数控电源时发现12位的DA分辨率不够用,开始想把两个DA的电压通过一个硬件
加法器合起来,发现那样很麻烦,后来想到一种方法比较简单,就是通过软件用DA输出一个具有PWM特性
的波形,1、通过改变DA的值可以快速的改变DA的输出电压,具有12位分辨率。
            2、调节PWM的占空比可以实现比12位更高的分辨率!

电路图如下:


具体使用效果怎么样呢?举个例子,我的电源直接用12位分辨率的DA很难把输出电压刚好定在10.000V,
用了这种方法后可以做到定在10.000V!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

2
发表于 2014-11-23 21:09:15 | 只看该作者
本来精度只受制于参考电压,现在又受制358的温度 失调特性了

出0入0汤圆

3
 楼主| 发表于 2014-11-23 21:11:46 | 只看该作者
NJ8888 发表于 2014-11-23 21:09
本来精度只受制于参考电压,现在又受制358的温度 失调特性了

为了好玩!

出0入0汤圆

4
发表于 2014-11-23 21:12:20 | 只看该作者
NJ8888 发表于 2014-11-23 21:09
本来精度只受制于参考电压,现在又受制358的温度 失调特性了

不能这么说。这里的358只是原理。 是个buffer。   

lz的思法很好。 原来的DA相加用个变相的方法在单片机内部实现了。

出0入0汤圆

5
 楼主| 发表于 2014-11-23 21:16:57 | 只看该作者
babysnail 发表于 2014-11-23 21:12
不能这么说。这里的358只是原理。 是个buffer。   

lz的思法很好。 原来的DA相加用个变相的方法在单片 ...

是啊,原来很难把电压搞好调到10.000V,现在就可以了!

出0入0汤圆

6
发表于 2014-11-23 21:17:55 | 只看该作者
pwm由后面的电容变成模拟?

出0入26汤圆

7
发表于 2014-11-23 21:19:11 | 只看该作者
精度不够? 反馈补偿直流增益太小,也可能导致这个现象。

出0入0汤圆

8
发表于 2014-11-23 21:20:20 | 只看该作者
通过软件用DA输出一个具有PWM特性的波形?请问楼主是怎么实现的呢?

出0入0汤圆

9
发表于 2014-11-23 21:23:36 | 只看该作者
本帖最后由 babysnail 于 2014-11-23 21:26 编辑
youlongam 发表于 2014-11-23 21:16
是啊,原来很难把电压搞好调到10.000V,现在就可以了!


2^12=4096, 如果是24V的话, 一档就是 24/4096=0.005859375 。 如果增加个4位,2^16=65536,24/65536=0.0003662109375。 自然很轻松。

出0入0汤圆

10
发表于 2014-11-23 21:24:57 | 只看该作者
RudeBoy 发表于 2014-11-23 21:17
pwm由后面的电容变成模拟?

滤波啊! 其实根据需要,可以用有源低通的。

出0入0汤圆

11
 楼主| 发表于 2014-11-23 21:27:31 | 只看该作者
孤独_求败 发表于 2014-11-23 21:20
通过软件用DA输出一个具有PWM特性的波形?请问楼主是怎么实现的呢?

用DA模拟上图的波形,最好用定时器,频率最好高点,大于100HZ。

出0入0汤圆

12
 楼主| 发表于 2014-11-23 21:28:54 | 只看该作者
babysnail 发表于 2014-11-23 21:23
2^12=4096, 如果是24V的话, 一档就是 24/4096=0.005859375 。 如果增加个4位,2^16=65536,24/65536=0.0 ...

是啊,看来你是高手!

出0入0汤圆

13
发表于 2014-11-23 21:36:32 | 只看该作者
提高了输出精度,降低了输出稳定性,输出值会飘。不过这想法真不错

出20入25汤圆

14
发表于 2014-11-23 21:50:34 | 只看该作者
思路不错,比如要输出3000 3001 中间的数,那么就通过占空比去分这两个数,得到分辨率更高的值

出0入0汤圆

15
发表于 2014-11-23 21:55:48 | 只看该作者
思路不错,很强大哈!

出0入0汤圆

16
发表于 2014-11-23 21:58:15 | 只看该作者
好能折腾,赞!

出0入85汤圆

17
发表于 2014-11-23 22:18:15 | 只看该作者
你这个纹波肯定不会太小,你拿啥给DAC比?初略算了下如果真想拿PWM来做12bit的DA,光纹波抑制就需要80db,看你这电路恐怕难以胜任

出0入0汤圆

18
发表于 2014-11-23 22:27:51 | 只看该作者
思路不错,不过要是12bit不够的话,不知楼主需要那么高的精度干什么

出0入0汤圆

19
 楼主| 发表于 2014-11-23 22:32:00 | 只看该作者
marshallemon 发表于 2014-11-23 22:18
你这个纹波肯定不会太小,你拿啥给DAC比?初略算了下如果真想拿PWM来做12bit的DA,光纹波抑制就需要80db, ...

DAC输出的参考是2.5V,我只在DA输出值的+/- 1幅度 做PWM调节,其他的问题就没考虑那么多了!

出0入0汤圆

20
发表于 2014-11-23 23:05:43 | 只看该作者
用两片 DA 做加法是个很不错的方式

不过接缝处会有点小麻烦

出0入17汤圆

21
发表于 2014-11-23 23:22:03 | 只看该作者
楼主,PWM是很常用的DA,你这个图做不到高精度,有很多工程因素要考虑的

出0入0汤圆

22
发表于 2014-11-23 23:24:40 | 只看该作者
抖动
低位有效,譬如8位da能“抖动到”10位
高位抖动意义不大唉,受制于模拟电路的精度

出0入0汤圆

23
发表于 2014-11-23 23:55:33 | 只看该作者
我是用2个通道12BIT DAC 然后用运放加法器合成一个高BIT DAC的,轻松实现16BIT以上的分辨率,不过设定输出的值的确非常伤脑筋,得多点矫正曲线拟合,而且廉价的DAC 非线性很差,并且噪声大。楼主的思路不错,不过也是担心滤波后噪音到底能降到什么程度

出0入0汤圆

24
发表于 2014-11-24 00:03:48 | 只看该作者
zhaoxucsu 发表于 2014-11-23 23:24
抖动
低位有效,譬如8位da能“抖动到”10位
高位抖动意义不大唉,受制于模拟电路的精度 ...

你说持抖动指的是“插值”吧?  提转换频率,采样频率每提高一倍,则系统的信噪比提高 3dB,相当于量化比特数增加了 0.5bit.

出0入0汤圆

25
发表于 2014-11-24 00:11:13 | 只看该作者
JackFrost 发表于 2014-11-23 23:55
我是用2个通道12BIT DAC 然后用运放加法器合成一个高BIT DAC的,轻松实现16BIT以上的分辨率,不过设定输出 ...

这样加法器的比例电阻精度是个问题。 连选择都是个问题,假设为高8位和低8位。 差256倍,那么必需这么选电阻。R1=R2=1k,  R3=256k, 256K 这怎么选啊!

随手上个标准电阻的阻值表:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

26
发表于 2014-11-24 00:26:16 | 只看该作者
yuhang 发表于 2014-11-23 23:05
用两片 DA 做加法是个很不错的方式

不过接缝处会有点小麻烦

用两片DA怎么做加法,求指教

出0入0汤圆

27
发表于 2014-11-24 00:29:33 来自手机 | 只看该作者
楼主想法很创新,不过我也在担心着噪声问题。学习了,多谢分享~

出0入79汤圆

28
发表于 2014-11-24 00:38:17 | 只看该作者
没看懂楼主的方法。。如果想用PWM 输出 模拟电压, 为什么不直接用 PWM 功能 做DAC 呢? 还要用DAC 模拟PWM ?

出0入0汤圆

29
发表于 2014-11-24 00:45:15 | 只看该作者
办法是想出来的。

出0入0汤圆

30
发表于 2014-11-24 00:49:11 来自手机 | 只看该作者
这个方法就叫抖动。楼主用的是2值的抖动,如果用多值抖动,输出纹波可以更小。

出0入0汤圆

31
发表于 2014-11-24 05:53:42 | 只看该作者
楼主想法很创新,学习了,多谢分享

出0入0汤圆

32
发表于 2014-11-24 09:29:12 | 只看该作者
楼主的思路是不是以DA 输出为基准,再叠加PWM ?   谢谢!

出0入0汤圆

33
发表于 2014-11-24 09:54:05 | 只看该作者
  明白楼主的方法了,起始用GPIO也可以通过PWM的方法当作DA使用,楼主相当于在单片机DA上面增加了一个DA,位数自然上去了。

出0入0汤圆

34
发表于 2014-11-24 09:55:49 | 只看该作者
收藏到影响笔记了,很不错的想法。

出300入477汤圆

35
发表于 2014-11-24 10:15:21 | 只看该作者
yuhang 发表于 2014-11-23 23:05
用两片 DA 做加法是个很不错的方式

不过接缝处会有点小麻烦

用一个高级AD做反馈吧!
不然线性度一定不够
例如,低分辨率DA的DNL是自身的2LSB,换算到整个合成DA的范围(假如合成结果多了4bit),就是2*16=32个LSB
高分辨率的DA虽然可以轻松的分辨到合成结果的1个LSB,但你怎么叠加也躲不过前级这个32LSB的DNL
最终你等效出的这个DA,虽然分辨率很高,但是DNL仍然是低分辨率DA的DNL值。INL其实也同样。
要这种分辨率有何用??
用它的唯一方法是增加一个高位AD来反馈,用高位AD的测量结果来修正两个DA的输出。这样只要DA分辨率够,其它什么参数都不用考虑。
可惜这样一来,系统输出速度就降为了这个AD的转换速度。高位AD远远慢于两个中低位的DA



出0入0汤圆

36
 楼主| 发表于 2014-11-24 10:17:30 | 只看该作者
bbbbbv 发表于 2014-11-24 09:29
楼主的思路是不是以DA 输出为基准,再叠加PWM ?   谢谢!

是的啊,不过需要软件来完成!

出300入477汤圆

37
发表于 2014-11-24 10:40:03 | 只看该作者
youlongam 发表于 2014-11-24 10:17
是的啊,不过需要软件来完成!

这样从精度上来说比两个DA叠加要好一些,至少DNL确实降低了同等的倍数。
当然INL没办法,仍然是你DA原始的INL,完全没有变化。
就是说,如果你用一个DNL=2,INL=4的DA来做16细分,那么得到的结果的DNL还是2,INL变成了4*16=64 LSB

出0入0汤圆

38
发表于 2014-11-24 10:55:34 | 只看该作者
学习了,很不错的方法

出0入0汤圆

39
发表于 2014-11-24 12:01:34 | 只看该作者
这样做,对时间要求严格的不适合,可以用在低速的场合吧

出0入0汤圆

40
发表于 2014-11-24 12:16:21 | 只看该作者
很不错的办法,抖动+-1LSB达到目的,100Hz的抖动上来说,达到稳定目标值的时间就会增加了吧?用作软件闭环控制的输出就有点受限了,倒不如干脆用STM32F3系列开几个DAC做加法了

出0入0汤圆

41
发表于 2014-11-24 12:28:51 | 只看该作者
多一种思路多一种启发

出0入0汤圆

42
发表于 2014-11-24 12:31:33 | 只看该作者
youlongam 发表于 2014-11-24 10:17
是的啊,不过需要软件来完成!

也可以通过硬件做
1个DA,1个PWM开关控制DA

出0入0汤圆

43
发表于 2014-11-24 12:44:57 | 只看该作者
楼主的思路非常好

出0入0汤圆

44
发表于 2014-11-24 12:47:26 | 只看该作者
本帖最后由 haistart 于 2014-11-24 12:49 编辑

不能这样简单地拼起来的。继电器做开关分段检测比这个靠谱。

出0入0汤圆

45
发表于 2014-11-24 12:58:50 | 只看该作者
噪音肯定會很大。
如果你有高位數表測量的話,會發現輸出會有較大的抖動,普通萬用表的速度不夠。

出300入477汤圆

46
发表于 2014-11-24 13:42:37 来自手机 | 只看该作者
wz18th 发表于 2014-11-24 12:16
很不错的办法,抖动+-1LSB达到目的,100Hz的抖动上来说,达到稳定目标值的时间就会增加了吧?用作软件闭环 ...

请首先自己算DNL和INL

出300入477汤圆

47
发表于 2014-11-24 13:45:04 来自手机 | 只看该作者
farfar 发表于 2014-11-24 12:58
噪音肯定會很大。
如果你有高位數表測量的話,會發現輸出會有較大的抖動,普通萬用表的速度不夠。 ...

狠点滤波,可降低噪声,但也降低速度

出0入0汤圆

48
发表于 2014-11-24 14:14:32 | 只看该作者
marshallemon 发表于 2014-11-23 22:18
你这个纹波肯定不会太小,你拿啥给DAC比?初略算了下如果真想拿PWM来做12bit的DA,光纹波抑制就需要80db, ...

这个是DA基础上结合PWM,,,不是纯PWM

出0入0汤圆

49
发表于 2014-11-24 14:20:01 | 只看该作者
就是高低电平可以软件设置的PWM  ,普通的PWM是定死的,比如低电平0V,高电平5V     这个高低电平可以任意设置。

出0入0汤圆

50
发表于 2014-11-24 14:37:08 | 只看该作者
redroof 发表于 2014-11-24 13:45
狠点滤波,可降低噪声,但也降低速度

降低一個級別的噪音的代價已經購買一顆更高指標的DA了。
用這種方法,DAC的INL和DNL指標可定會惡化,這個你的擔心是對的。

出0入0汤圆

51
发表于 2014-11-24 14:47:13 | 只看该作者
PWM很容易做出高精度的,而且不要DA只要PWM

出0入0汤圆

52
发表于 2014-11-24 14:51:22 | 只看该作者
这就是很多控制器没有带DAC的原因 (PWM--DC)    可以使用IO口产生PWM波经 N级RC    成DC   但是动态性的损失  和后级电路的 线性化值得考虑      

楼主不错    这个有基于   三端集成稳压器的 思想在里面    异曲同工啊。

出0入0汤圆

53
发表于 2014-11-24 15:16:45 | 只看该作者
是个好办法,一看就是遇到问题之后经过深思熟虑找到的好方法,多谢分享~~也许以后就会用到了!

出0入4汤圆

54
发表于 2014-11-24 15:20:01 | 只看该作者
这个和PWM方式有什么区别呢?

出0入0汤圆

55
发表于 2014-11-24 20:50:49 | 只看该作者
学习了,不错的方法。
貌似PWM还可以用DMA的循环模式实现。

出0入0汤圆

56
发表于 2014-11-24 21:50:15 来自手机 | 只看该作者
真是一个好方法。记下了。

出0入0汤圆

57
发表于 2014-11-25 23:49:35 | 只看该作者
楼主的意思是高于零伏特的那段波形,不仅占空比是变化的,而且幅值也是变化的?如果是这样的话,想法和创意真的很好!

出0入0汤圆

58
发表于 2014-11-26 00:23:41 | 只看该作者
楼主创新不错

出0入0汤圆

59
发表于 2014-11-26 00:27:21 | 只看该作者
1.我觉得你的驱动能力是一个问题;2.你这样得出来的应该是一个有效值吧

出0入0汤圆

60
发表于 2014-11-26 00:30:11 | 只看该作者
BOERLBH 发表于 2014-11-24 00:38
没看懂楼主的方法。。如果想用PWM 输出 模拟电压, 为什么不直接用 PWM 功能 做DAC 呢? 还要用DAC 模拟PW ...

直接使用PWM可能抖动有问题吧,没有DA输出的电压准确,我只是觉得这样得到的不是真实的电压,二仅仅是一个电压的有效值,也不能保证它的驱动能力,DA本身就分电压型和电流型

出0入24汤圆

61
发表于 2014-11-26 13:04:03 | 只看该作者
这个方法不错,使用定时器+模拟开关会不会更好,减轻CPU的负担

出0入0汤圆

62
发表于 2014-11-26 15:22:38 | 只看该作者
很好的方法,不常规做法,不走寻常路。

出0入0汤圆

63
发表于 2014-11-26 23:05:49 | 只看该作者
其实就是把da信号和pwm占空比想与后rc滤波输出。我早就想到过。有两个缺陷,一是输出频率很低,快速切换时比较坑,因为你rc少了虽然切换快,但是有扰动,多了呢延迟又比较大。还有一个就是它总是有点跳,不适合太高精度使用。 我想法是双da加乘法器,但是苦于不会用运放搭一个单象限乘法器,有哪位大师知道能给个图看看。
有哥们说用adc来跟进调整?您算算需要多长时间?你知道那些做移动电源的早就想这么干了。无奈adc跟进太慢,过冲难以解决

出300入477汤圆

64
发表于 2014-11-27 08:23:51 来自手机 | 只看该作者
雨雪随行 发表于 2014-11-26 23:05
其实就是把da信号和pwm占空比想与后rc滤波输出。我早就想到过。有两个缺陷,一是输出频率很低,快速切换时 ...

低速情况下可以用ad反馈,精度完全可以保证,但严重降低速度。
单个da自己做pwm并没有提高INL,意义很小。
两个da缩放后相加,INL和DNL都没提高,纯属装样子。两da乘起来也一样。
高速没有好办法。
哪有又让马儿跑又让马儿不吃草的

出300入477汤圆

65
发表于 2014-11-27 08:31:43 来自手机 | 只看该作者
雨雪随行 发表于 2014-11-26 23:05
其实就是把da信号和pwm占空比想与后rc滤波输出。我早就想到过。有两个缺陷,一是输出频率很低,快速切换时 ...

如果速度不重要,过冲很好对付:你每次只改变计算值的90%,然后等ad采样,采回来再算出修正值,再改变修正值的90%,反复几次就行了
你的da再差,总不会差过10%吧,那么输出就肯定是单调的

出0入24汤圆

66
发表于 2014-12-1 14:10:26 | 只看该作者
雨雪随行 发表于 2014-11-26 23:05
其实就是把da信号和pwm占空比想与后rc滤波输出。我早就想到过。有两个缺陷,一是输出频率很低,快速切换时 ...

为什么要用运放做乘法器,用乘法DAC不就得了

出0入0汤圆

67
发表于 2014-12-2 00:05:56 来自手机 | 只看该作者
我说的是在运用stm32 的da
头像被屏蔽

出0入0汤圆

68
发表于 2014-12-2 11:32:56 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

69
发表于 2014-12-2 12:49:37 | 只看该作者
这个我做过,输出用2阶有源滤波基本把噪声控制到uv以下。但是stm32本身da指标差,这样只能提高分辨率,精度没什么改善

出0入0汤圆

70
发表于 2014-12-2 16:07:35 来自手机 | 只看该作者
有一个项目我用12位dac控制ocxo,将低两位固定为0,目的是改善非线性误差。数字信号为18位,简单地截为10位的话,信噪比会恶化48db,为此采用噪声整形算法,将量化噪声驱赶到通带之外,0~5k通带内的量化噪声抑制达到50db,模拟域用简单的一阶rc滤波器即可。用频谱仪测量ocxo相噪并无恶化,分辨率也确实能够达到18位

出0入0汤圆

71
发表于 2014-12-2 16:25:03 | 只看该作者
用两个DA输出,然后用一个IO口输出交变脉冲,控制三极管和电容(具体电路可以搜一下电容倍压电路)把两个电压加起来。,但这个方法估计DA的变化速度会受影响,从而影响电源的纹波

出0入0汤圆

72
发表于 2014-12-2 16:46:24 | 只看该作者
多谢分享

出0入0汤圆

73
发表于 2014-12-2 23:46:36 来自手机 | 只看该作者
这个方法在官方文档中看到过

出0入0汤圆

74
发表于 2014-12-3 00:17:41 | 只看该作者
确实值得一试。找个机会试一下。谢谢楼主分享!

出0入0汤圆

75
发表于 2014-12-15 14:47:20 | 只看该作者
是积分的原理么?会不会有迟滞现象呢?

出0入0汤圆

76
发表于 2014-12-15 16:01:47 | 只看该作者
+-1LSB抖动              显示器上早就实现了                  

出0入0汤圆

77
发表于 2023-6-5 09:31:50 | 只看该作者
如果我用数字电位器或者模拟开关,分几档来调节PWM DAC的Vref,感觉也能达到这个目标,至于速度,PWM DAC 本来就慢,也无所谓吧。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 16:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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