81

主题

2

好友

1491

积分

侠之大者 当前在线

Rank: 6Rank: 6

UID
897598
帖子
1384
精华
0
经验
1491 点
金钱
1290 ¥
注册时间
2021-2-4
发表于 2024-1-4 20:44 | 显示全部楼层
丰年好大雪 发表于 2024-1-4 16:16
https://www.vaneijndhoven.net/jos/attenuator-calculator/index.html
这个
另外注意一点,他的图示逻 ...

多谢大师,原来有这好东西,太感谢了~  

仔细看了理解了,我打算画电路时,所有继电器未通电状态设为最小音量,6个继电器64档每当2db,能达到衰减127db正好,哈哈~

5

主题

0

好友

77

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
85950
帖子
80
精华
0
经验
77 点
金钱
67 ¥
注册时间
2009-3-6
发表于 2024-1-5 17:04 | 显示全部楼层
y1974 发表于 2022-9-24 21:02
谢谢楼主的分享!不知道与使用pga2310效果有什么大的区别?似乎使用IC的要简单点。

如果步进2db,每通道6个信号继电器,也许音量控制器体积过于庞大,与PAG2310的区别至少有这个.......。

44

主题

0

好友

1071

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
9015
帖子
936
精华
0
经验
1071 点
金钱
559 ¥
注册时间
2006-4-29
发表于 2024-1-6 21:17 | 显示全部楼层
点阵屏代码有吗?我试试STM32F104能否跑起来

27

主题

1

好友

484

积分

业余侠客 当前离线

Rank: 4

UID
787724
帖子
422
精华
0
经验
484 点
金钱
394 ¥
注册时间
2015-3-20
 楼主| 发表于 2024-1-8 17:38 | 显示全部楼层
沙漠王子 发表于 2024-1-6 21:17
点阵屏代码有吗?我试试STM32F104能否跑起来

STM32如果跑单色点阵屏当游戏一样容易,彩色屏才需要稍微计算一下资源。

1

主题

0

好友

7

积分

注册会员 当前离线

Rank: 2

UID
1087847
帖子
6
精华
0
经验
7 点
金钱
5 ¥
注册时间
2024-1-8
发表于 2024-1-8 21:04 | 显示全部楼层
来学习一下,谢谢

5

主题

0

好友

77

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
85950
帖子
80
精华
0
经验
77 点
金钱
67 ¥
注册时间
2009-3-6
发表于 2024-1-10 21:36 | 显示全部楼层
本帖最后由 ouco 于 2024-1-10 21:37 编辑

     没有细节,果然无人追捧。本坛大多数坛友没有楼主那么高水平,通晓数字知识,看了半天,一知半解,又无细节,不知从哪里下手。看本贴如同看B站的大神表演,张扬一番,略过细节,货色不错,但无法模仿。
     对比之下,@jacksl528真心不错,细节要点逐一交待,重点之处反复提醒,不懂单片机的坛友都能仿做成功PGA231X数字电位器,HIFI最终会数模结合成为潮流,有能人在前带领,今后本坛会热闹非凡。

44

主题

0

好友

1071

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
9015
帖子
936
精华
0
经验
1071 点
金钱
559 ¥
注册时间
2006-4-29
发表于 2024-1-11 00:15 | 显示全部楼层
硬件I2C没成功,改成模拟I2C方案了,等待EC11到货调试EC11部分!

27

主题

1

好友

484

积分

业余侠客 当前离线

Rank: 4

UID
787724
帖子
422
精华
0
经验
484 点
金钱
394 ¥
注册时间
2015-3-20
 楼主| 发表于 2024-1-12 13:35 | 显示全部楼层
沙漠王子 发表于 2024-1-11 00:15
硬件I2C没成功,改成模拟I2C方案了,等待EC11到货调试EC11部分!

模拟i2c有个好处,不用官方库能节约不少空间,直接写寄存器配置大概能省下1k多。

44

主题

0

好友

1071

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
9015
帖子
936
精华
0
经验
1071 点
金钱
559 ¥
注册时间
2006-4-29
发表于 2024-1-30 16:22 | 显示全部楼层
这个EC11快速旋转有丢步现象,慢点就不会,不知是否正常?

下步准备打板验证

27

主题

1

好友

484

积分

业余侠客 当前离线

Rank: 4

UID
787724
帖子
422
精华
0
经验
484 点
金钱
394 ¥
注册时间
2015-3-20
 楼主| 发表于 2024-2-2 17:12 | 显示全部楼层
沙漠王子 发表于 2024-1-30 16:22
这个EC11快速旋转有丢步现象,慢点就不会,不知是否正常?

下步准备打板验证

延时设置非常讲究,这玩意其实是去抖。

44

主题

0

好友

1071

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
9015
帖子
936
精华
0
经验
1071 点
金钱
559 ¥
注册时间
2006-4-29
发表于 2024-2-2 17:33 | 显示全部楼层
丰年好大雪 发表于 2024-2-2 17:12
延时设置非常讲究,这玩意其实是去抖。

是的,目前设置在1ms,相对来说比较稳定,但快速旋转还是会丢一点

27

主题

1

好友

484

积分

业余侠客 当前离线

Rank: 4

UID
787724
帖子
422
精华
0
经验
484 点
金钱
394 ¥
注册时间
2015-3-20
 楼主| 发表于 2024-2-2 18:28 | 显示全部楼层
沙漠王子 发表于 2024-2-2 17:33
是的,目前设置在1ms,相对来说比较稳定,但快速旋转还是会丢一点

不要太快,旋转编码器需要的是优雅,如果动手能力够强,建议淘宝一眼药水瓶的“电位器阻尼油”,拆开EC11后加在转轴上,可以增加旋转的阻尼感,瞬间手感看齐金嗓子了呢!

44

主题

0

好友

1071

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
9015
帖子
936
精华
0
经验
1071 点
金钱
559 ¥
注册时间
2006-4-29
发表于 2024-2-3 00:30 | 显示全部楼层
丰年好大雪 发表于 2024-2-2 18:28
不要太快,旋转编码器需要的是优雅,如果动手能力够强,建议淘宝一眼药水瓶的“电位器阻尼油”,拆开EC11 ...

59

主题

0

好友

1191

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
4805
帖子
1420
精华
0
经验
1191 点
金钱
1060 ¥
注册时间
2005-7-2
发表于 2024-2-15 20:55 | 显示全部楼层
我用8继电器256档,1db步进,在多继电器断开向前进位时有爆音

2

主题

0

好友

52

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
1087252
帖子
55
精华
0
经验
52 点
金钱
48 ¥
注册时间
2024-1-1
发表于 2024-2-16 11:32 | 显示全部楼层

谢谢楼主的分享

44

主题

0

好友

1071

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
9015
帖子
936
精华
0
经验
1071 点
金钱
559 ¥
注册时间
2006-4-29
发表于 2024-2-27 00:06 | 显示全部楼层
本帖最后由 沙漠王子 于 2024-2-27 00:09 编辑

011111进位到100000,示波器的确捕捉到了瞬变,不知是否有好的解决办法
1.jpg
2.jpg

27

主题

1

好友

484

积分

业余侠客 当前离线

Rank: 4

UID
787724
帖子
422
精华
0
经验
484 点
金钱
394 ¥
注册时间
2015-3-20
 楼主| 发表于 2024-3-1 15:40 | 显示全部楼层
本帖最后由 丰年好大雪 于 2024-3-1 15:48 编辑
沙漠王子 发表于 2024-2-27 00:06
011111进位到100000,示波器的确捕捉到了瞬变,不知是否有好的解决办法


这个就是瞬间的混叠,和R2R那个毛病完全一样。解决方案是在代码里加延时,论坛上很多人并没有实践的想法,所以很难发现这个需要具体调参的问题。

比如:
这个就是瞬间的混叠,和R2R那个毛病完全一样。解决方案是在代码里加延时。
比如:

               I2C_Write(TCA9554_ADDR1,0x01,VALUE_1);  //先把继电器都给跳喽
                delay_ms(10);   //没啥用,就是延时一下

                switch(VALUE_1)  //将真值变量送入switch语句转换成LED字符显示,我这里用了笨办法预设值查表,没有用更高级的枚举类型加指针,就是为了让初学者能看明白
           

这个地方。

先把继电器都给跳了就是先把音量衰减到最大,然后再接通,这就是许多模拟的手动波段开关强调自己是“先通后断”或者“先断后通”的原因,你可以通过调节这个delay_ms后边括号里的数字,来控制这个音量衰减的时间,只要做得恰好,听不出瞬间断了一下。实测100us没问题,欧姆龙、国产宏发的HF4小型信号继电器的跳开时间都是15us上下,比较精确,可以慢慢调试着弄。

如果再“高级”一点,可以在switch(VALUE_1)之前,做一个2-3级的“假平滑”,就是把VALUE_1的数字先暂时存到一个变量里,比如叫A,然后对这个A进行“移位操作”,比如先左移一位,这样,二进制1000代表8,移位一次后变成了10,然后把这个10送进switch(VALUE_1)先做一下“不到位的衰减”,然后再移一位,再衰减,直移到MSB为1停止,再把真正的VALUE_1送进去衰减。这样音量会在几个ms内实现类似平滑的效果,而且由于特有的二进制移位计算,这个曲线是类似对数曲线一样的东西……。

不过上述的玩法有点复杂,我没舍得在音频上使用,而是在用Arduino设计新的项目时作为抗混叠用了。

44

主题

0

好友

1071

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
9015
帖子
936
精华
0
经验
1071 点
金钱
559 ¥
注册时间
2006-4-29
发表于 2024-3-1 22:50 | 显示全部楼层
理解了,就是插入一个100us的0x00

44

主题

0

好友

1071

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
9015
帖子
936
精华
0
经验
1071 点
金钱
559 ¥
注册时间
2006-4-29
发表于 2024-3-5 00:00 | 显示全部楼层
插入10us的0X00,基本完美解决
03.jpg

81

主题

5

好友

2449

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
2459
帖子
2764
精华
0
经验
2449 点
金钱
2047 ¥
注册时间
2004-12-20
发表于 2024-3-11 22:14 | 显示全部楼层
沙漠王子 发表于 2024-2-27 00:06
011111进位到100000,示波器的确捕捉到了瞬变,不知是否有好的解决办法

大神还有板子嘛
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部