frily 发表于 2022-6-22 15:40:52

请问如何用STM32输出32路0-5V可调的直流信号?

希望用STM32输出32路独立0-5V可调的直流信号

输出精度要求不高,±0.2V以内,尽量低成本和小体积

请问各位有什么好的方案?谢谢!

keshipt 发表于 2022-6-22 16:02:06

用PWM来做应该是成本最低的

keshipt 发表于 2022-6-22 16:06:37

一片STM32 可以输出30个PWM{:titter:}

keshipt 发表于 2022-6-22 16:11:41

还有2个通道用IO来模拟PWM ,加起来够32路了{:lol:}

pulan 发表于 2022-6-22 16:19:52

GP8201               

xly 发表于 2022-6-22 16:38:16

频率要求不高,两路DAC分时复用就行了。320路都没问题。{:lol:}

zhcj66 发表于 2022-6-22 16:56:39

xly 发表于 2022-6-22 16:38
频率要求不高,两路DAC分时复用就行了。320路都没问题。
(引用自6楼)

没有理解怎么用的 出来挨320路?

亽亼 发表于 2022-6-22 17:06:32

我感觉这个应该写个电流参数要求吧

xly 发表于 2022-6-22 22:24:35

zhcj66 发表于 2022-6-22 16:56
没有理解怎么用的 出来挨320路?
(引用自7楼)

你参考这个,安捷伦的电源,看DA那部分,用模拟开关+运放,一路DA分时复用出来了6路。如果你的DAC够快,而你又不要求DA更新的速度,就可以参照这种方法扩展出N路出来。


tomzbj 发表于 2022-6-23 10:13:44

用32个普通gpio搭成Delta-Sigma就行了, 不需要硬件PWM
单个pin的Delta-Sigma程序如下, 改改就行, 15位精度

DSDAC_Poll放到定时器中断之类场合调用

#include "misc.h"

static struct {
    unsigned short acc;
    unsigned short val;
} g;

void DSDAC_Poll(void)
{
    g.acc += g.val;
    if(g.acc & 0x8000)
      gpio_bit_set(GPIOB, GPIO_PIN_14);
    else
      gpio_bit_reset(GPIOB, GPIO_PIN_14);
    g.acc &= 0x7fff;
}

void DSDAC_Set(unsigned short val)
{
    if(val > 0x7fff)
      val = 0x7fff;
    g.val = val;
}

frily 发表于 2022-6-23 10:45:14

keshipt 发表于 2022-6-22 16:02
用PWM来做应该是成本最低的
(引用自2楼)

谢谢!                  

frily 发表于 2022-6-23 10:46:09

keshipt 发表于 2022-6-22 16:06
一片STM32 可以输出30个PWM
(引用自3楼)

谢谢回复!准备先用PWM方案试试

frily 发表于 2022-6-23 10:47:09

pulan 发表于 2022-6-22 16:19
GP8201
(引用自5楼)

谢谢回复,刚刚查了一下数据手册,这个芯片是单路DAC,可能比较占PCB面积,成本也不低。

frily 发表于 2022-6-23 10:47:32

亽亼 发表于 2022-6-22 17:06
我感觉这个应该写个电流参数要求吧
(引用自8楼)

电流要求不高 几个mA就可以,后面还可以加运放跟随

frily 发表于 2022-6-23 10:48:35

xly 发表于 2022-6-22 16:38
频率要求不高,两路DAC分时复用就行了。320路都没问题。
(引用自6楼)

谢谢9楼的详细解释!很有参考价值

frily 发表于 2022-6-23 10:49:55

tomzbj 发表于 2022-6-23 10:13
用32个普通gpio搭成Delta-Sigma就行了, 不需要硬件PWM
单个pin的Delta-Sigma程序如下, 改改就行, 15位精度
...
(引用自10楼)

非常感谢

zhcj66 发表于 2022-6-24 08:09:25

xly 发表于 2022-6-22 22:24
你参考这个,安捷伦的电源,看DA那部分,用模拟开关+运放,一路DA分时复用出来了6路。如果你的DAC够快, ...
(引用自9楼)

好吧这个确实可以用1个DAC扩展无限多个

zhcj66 发表于 2022-6-24 08:10:05

tomzbj 发表于 2022-6-23 10:13
用32个普通gpio搭成Delta-Sigma就行了, 不需要硬件PWM
单个pin的Delta-Sigma程序如下, 改改就行, 15位精度
...
(引用自10楼)

原理图出一个

tomzbj 发表于 2022-6-24 09:11:44

zhcj66 发表于 2022-6-24 08:10
原理图出一个
(引用自18楼)

这还要啥原理图? 出3.3V的话, GPIO后面加RC滤波就行了
5V的话, 先加HC244,HC573之类把电平提到5V, 后面再RC滤波。

zhcj66 发表于 2022-6-24 10:41:55

tomzbj 发表于 2022-6-23 10:13
用32个普通gpio搭成Delta-Sigma就行了, 不需要硬件PWM
单个pin的Delta-Sigma程序如下, 改改就行, 15位精度
...
(引用自10楼)

哦这是搞了一个普通io口的pwm啊

tomzbj 发表于 2022-6-24 11:31:20

zhcj66 发表于 2022-6-24 10:41
哦这是搞了一个普通io口的pwm啊
(引用自20楼)

和pwm类似, 不太一样

bblythe2019 发表于 2022-6-27 15:26:12

tomzbj 发表于 2022-6-24 11:31
和pwm类似, 不太一样
(引用自21楼)

能具体讲下吗?

tomzbj 发表于 2022-6-27 19:22:19

bblythe2019 发表于 2022-6-27 15:26
能具体讲下吗?
(引用自22楼)

https://www.kechuang.org/t/56295

yuyu87 发表于 2022-6-27 20:59:33

一片CPLD,有几个引脚就有几路PWM,不过最近CPLD涨价了。

ZXF_CUG 发表于 2022-6-28 20:29:22

我做过16路的,PWM做的,精度完全没问题
https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.621e3d0drKjB0w&ft=t&id=609979257526
页: [1]
查看完整版本: 请问如何用STM32输出32路0-5V可调的直流信号?