丰年好大雪 发表于 2025-7-14 14:14

开源64档继电器音量,可替换ALPS蓝壳27型

本帖最后由 丰年好大雪 于 2025-7-14 16:43 编辑

音量这个东西只要是对信号进行被动衰减,基本上没有特别完美的解决方案,为了解决这个问题,我大概5年前就开始用自制的6bit 64档继电器式音量,来代替掉绝大多数自己日常使用的音响电位器。设计初衷是来自于实际使用中的许多问题:

碳膜型电位器的缺点:
        1·寿命,氧化后会吱嘎作响的磨损问题。这个不展开了。
        2·声道平衡问题。音量电位器无论是常见的27型,还是更贵的RK50型金属屏蔽电位器,其音量衰减都是使用碳膜+电刷,由于制造工艺的限制,碳膜电位器不论档次,出厂就有20%的允许误差!而继电器型电位器,最差最差也可以选用5%精度的贴片电阻。这个精度对于单端信号衰减的电路基本没什么问题,但对于今天很常见的平衡电路来说,自身就能造成相当比例的差模失真,平衡不平衡了,这不是要了命了?



        3·狭窄的阻抗适配。成品音量电位器阻抗只有10K、20K、50K、100K等几个常用阻抗,而且基本都是输出固定阻抗设计。当你想把它用在类似唱放、话放这种阻抗适配灵活度要求极高的设备时,比如我给纽曼U87做的旁路滤波话放。需要输入固定阻抗,输出阻抗变化的设计(下一级电路是JFET),成品电位器是没有的。

那么继电器型电位器,问世也有相当的年头,淘宝套件也有很多,它又有哪些问题呢?
        1·音量指示。由于继电器型音量很多使用旋转编码器来调节音量大小,因此音量级数需要额外的指示。无论是数码管,还是LCD/OLED屏直显数字,对于DIY来说,前面板CNC开槽都是一笔成本负担。而通用型带指示窗的机壳前面板,基本市面上没有。
        2·体积。出于许多因素考虑,继电器电位器的PCB板总是被设计得非常庞大,个别设计者大概为了显得“厉害”,能“堆料”,把电位器档位设计成一位一组继电器的,就是说立体声双声道的单端信号如果是24位,就需要24x2=48个单脚继电器。而且PCB板过大,还会带来机壳内接线过远、距离变压器过近、跨度太大难以定位等问题,有点莫名其妙。如果要把这种电位器扩展成4路平衡电位器,体积上升一倍,成为了没必要的负担。
        3·机壳内定位。这个问题是上述体积问题的一个延伸,理论上说电位器应该尽量靠近输入端,但实际上很困难。27型电位器这样设计就需要非常长的延伸杆,大PCB型继电器式电位器就需要靠近机壳后部打孔固定,再把音量指示问题解决掉。

针对以上各种问题,我的解决方案如下:
        1·体积缩小,尽量支持原位替换ALPS 27型电位器。
        2·尽量不使用外置电源,从板子上找个5-12v直流供电引过来就行。
        3·摆脱音量指示,直接使用单片机的ADC引脚,从传统电位器上读取7-5点320度位置数字,再体现在继电器通断上。
        4·做成PCB板串联结构,只要长排针够长,想串联多少个声道的继电器都可以。
        5·可以灵活布置,如果遇到类似胆机、唱放那种继电器需要尽可能靠近信号输入端的,能够直接把这个电位器拆开安装,电位器板焊接到PCB上,单片机/音量控制板安装到音量旋钮位置,控制信号通过长排线连接——不让模拟信号走长距离。

出来的就是这么个玩意:

背面:


其中两个带有音量电位器焊盘的板子,一个是兼容传统RK097型电位器(焊盘稍小),还有一个是兼容RV09型电位器的。其中RV09型,纯粹是因为这种电位器的阻尼感强,手感比较精确,而RK097手感过于轻盈,十分垃圾。继电器板安装的是6组国产宏发HF4型微型信号继电器,其导通电流非常小,且焊盘微小,可以将0603型电阻在其背面安装(0805型基本没戏)。
阻值计算设计,可以参考: https://www.vaneijndhoven.net/jos/attenuator-calculator/index.html

使用这个电位器,千万要注意输入、输出端要尽量使用高指标低噪音运放进行驱动/缓冲,这是衰减式电位器面对阻抗必须解决的问题,否则小音量时缺高音、窜入噪声问题会像魔鬼一样伴随你存在。

目前未解决的问题:
        1·遥控。未搞这个功能纯粹因为懒,因为最早设计这个东西是给手边用的话放/耳机放大器/混响器用的,不需要考虑音响的遥控音量问题,这个功能可以重新加上设计,只需要增加一路红外接收管,但调试程序需要时间。
        2·屏蔽。最早的设计曾经想过用某款淘宝爆款的金属瓶盖,来制作简易的继电器屏蔽罩,但实际使用中发现并未窜入干扰(47k阻抗,窜入个屁的干扰),而且电路板设计成了方形,不易找到屏蔽壳,有兴趣的人恐怕需要自己做一个,或者用易拉罐皮剪一个出来(当心手被划伤),或者用硬纸板折成屏蔽壳,再贴上铜箔胶带入地实现屏蔽。
        3·误触码。ADC读出的值是存在一个跳跃的,即在某些档位,读出数值存在011111到100000的瞬间读不准,使用线性电源减低纹波,和代码中使用抗混叠算法,能够一定程度上减弱这个问题,但实际使用中仍然有可能在电位器转到特定位置时,继电器出现“嘎嘎嘎嘎……”连续跳动的问题。





如果大家有兴趣,我可以按照大家希望的一些合理需求,修改设计,然后放到嘉立创开源计划中由大家自行修改、下载、制作。

更新1:电路图。
因为我一贯是无原理图做图,因此画了会儿电路图,把这个东西的电路画了出来,可以看到主控MCU是STC的STC8G1K08 20脚TSSOP,淘宝价格0.89元。继电器驱动芯片是PCA9554,这是一个I2C引脚扩展芯片,淘宝价格1.4元一个。稳压器用的78L05直插,用这个因为我手里有的是直插封装,您可以自由选择SOT89贴片件。



这一组设计的亮点是什么呢?是使用STC8自带的USB烧写功能,实现不用烧写器,直连电脑USB口在线调试!
将STC8两个引脚同USB母口的D-、D+相连,将P3.2(INT0)引脚串联常开按键,再串300欧电阻接地,将STC8的总供电引脚串联一个常闭按键或跳线帽接电,即可组成自带USB烧写驱动的基本形。
使用时打开STC官网下载的ISP软件,USB线连接MCU板子,按住常开按键接地,再点动一下常闭按键,或者拔插一下供电跳线帽,ISP软件即识别STC8,进入烧写调试功能,这样我们就省了一个MCU烧写器,实现了应用板在线调试。一边开着Keil改程序,一边插着板子调试看功能,方便得很。

另外,引出了I2C引脚和一个GPIO(带中断)引脚,如果需要,可以将I2C引脚接入LCD屏/DAC芯片/其他I2C设备实现软控制,而GPIO引脚可以自定义配置,比如设计成输入,可以接按键(一个可能有点少)、串口遥控芯片或者其他触发信号。如果设计成输出,可以做成串口通讯脚、电源LED灯……好多功能。

傲世飞鱼 发表于 2025-7-14 14:40

大手笔、大制作

uikyhuang 发表于 2025-7-14 14:44

万分感谢楼主,年轻不懂事开了太多坑,现在都不够时间填,单片机想学很久了的。

丹尼fish 发表于 2025-7-14 14:54

我去及时雨啊,只要体积合适就好

网上风雨68 发表于 2025-7-14 15:24

楼主能搞个模块式控制多声道的音量电位器就好了,可以2声道和多声道控制,一个模块2声道,5个模块10声道。

丰年好大雪 发表于 2025-7-14 15:51

网上风雨68 发表于 2025-7-14 15:24
楼主能搞个模块式控制多声道的音量电位器就好了,可以2声道和多声道控制,一个模块2声道,5个模块10声道。

控制核心是不变的,就是一个单片机+电位器,单片机拉动电流有限,因此需要用一个可以驱动大电流的芯片去控制继电器,这个芯片可以无限扩展,要多少有多少。

网上风雨68 发表于 2025-7-14 16:31

丰年好大雪 发表于 2025-7-14 15:51
控制核心是不变的,就是一个单片机+电位器,单片机拉动电流有限,因此需要用一个可以驱动大电流的芯片去 ...

哦,好,楼主牛逼搞出来到时也搞一套试试,谢谢!

勇往直前 发表于 2025-7-14 16:47

这种要多少一个

A0A888 发表于 2025-7-14 16:49

啥时有套件 要几套

uikyhuang 发表于 2025-7-14 18:12

顺便问一下楼主有keil注册码或工具吗?我下的2024年过期了。

333ESJJ 发表于 2025-7-14 20:20

楼主技术派。

楼主能否仿一下金嗓子AAVA音量电路,多片音量控制芯片并联电路

丰年好大雪 发表于 2025-7-14 20:26

uikyhuang 发表于 2025-7-14 18:12
顺便问一下楼主有keil注册码或工具吗?我下的2024年过期了。

Keil V5 C51已经全免费了,可以自己免费注册一下。

HuBin168 发表于 2025-7-14 21:26

本帖最后由 HuBin168 于 2025-7-14 21:42 编辑

继电器电位器绝对是个好东西,没磨损,寿命长,失真低,声道又平衡。
去年研究过,对于没有多少功底的人来说还是太复杂了,不怕您笑话,单单MCU这一块,我就摸了将近1个月。

NA12WA-K继电器+ULN2803APG+ADC0804
不知道是我用的继电器不行还是哪里的问题,不放音乐调音的时候听见继电器“哒哒哒”的响,虽然不大,总感觉哪里不对。
而且调的时候扬声器里时不时来有点像接触不良一样的爆音,之前用普通电阻式的电位器没有底噪,用这个隔着半米远就听到扬声器里有隐约的“嗡嗡”声。
费劲巴拉,结果不尽人意,最后放弃了:'(
没那个技术,也没经验,希望能够看到楼主开源的信息,我再接起来捣鼓捣鼓。


丰年好大雪 发表于 2025-7-14 21:38

本帖最后由 丰年好大雪 于 2025-7-14 21:53 编辑

333ESJJ 发表于 2025-7-14 20:20
楼主技术派。

楼主能否仿一下金嗓子AAVA音量电路,多片音量控制芯片并联电路

AAVA我在很久……很久以前曾经在论坛里提过一嘴,后来自己搭了个板做了个实验。



结论是不怎么地。

AAVA是一种典型的有源音量,和无源衰减(哪怕是先放大再衰减再放大也是无源衰减)。其原理是这样,它将输入的信号,做一下VI量化,是的,电压转电流,转换成不同响度的2^16次方,即65535级电流信号。
接收端用IV跨阻转换电路(其实就一个IV运放),用R2R的模式去选通这65535级信号,做累加,然后转换成电压信号,送往下一级。

理论上,AAVA解决了电压衰减式音量的几个问题:
        1·阻抗匹配问题。
        电位器式电路或者输入阻抗恒定,或者输出阻抗恒定,对于信号源,或者下一级的放大器输入,是不可忽视的负担。
        当输入阻抗恒定,输出阻抗不固定时(最常见的电位器结构),输出阻抗从0到1/2个总阻抗之间滑动,这个阻抗得不到良好补偿,高频会受损。还记得前年论坛吵架吵了几层楼的弱智贴“音量电位器阻值对音质的影响(实测结果)”么?他们吵了几层楼,最后发展到互相问候父母,其实楼主的测试结果,就是电位器阻抗和电容之间形成了滤波器,在小音量时电位器成为了低通滤波器,滤除了一部分信号高频的结果。只是楼里混战的双方已经冲昏了头脑,没人在意科学原理了,只关注于对方的爹娘是否健在。
        当输入阻抗不固定,输出阻抗固定时,输入阻抗从2R到1000R之间滑动,虽然对于输入端来说,高阻抗容易驱动,但毫无疑问会窜入可观的噪音。参考一下如果你的电位器是10K,则输入阻抗从20K-20M之间滑动。20M电阻如果是场效应、电子管的栅极,是可以直接当天线用的……。
        而AAVA,由于其压-流-压的工作特性,输入输出信号都是有源的,整体输出输入阻抗等于运放,内部的运放有源VI电路,可以看作没有交流电压信号流过,因此没有阻抗匹配问题。
        没有交流信号,木有想起什么哦?功放里常见的Cascode共基共射串叠电路,人们叫它什么啊?电流传输电路。理论上Cascode非常完美,现实中用这个电路的功放不扑街的很少。:lol

        2·精度问题。其实这个问题是阻抗匹配问题的延伸,在电阻型电位器中,由于交流信号经过电阻,而电压变化是需要时间的。所以即便我们用多路继电器去导通信号,由于导通电阻的存在(即便小到mΩ),在特定的音量衰减幅度下,导通电阻也会造成失真的恶化。更不要说经过正负供电的模拟开关芯片了(这恰恰是PGA2311这种电子音量芯片的工艺),截止2025年,世界上导通失真最低的模拟开关芯片,其THD级别仍在0.0005%以上。
        但模拟开关走的是电流信号,哈哈,导通电阻完全不起作用了。
        3·寿命问题。不使用机械接触、跳变的元件,AAVA仅使用电信号控制的模拟开关、运放,毫无疑问寿命会非常非常长。事实上10多年前金嗓子前级,流通了2-3手,盖没开过,灰没清过的充新品在二手市场有的是。
        4·精细得多得多的音量级别。这样可以灵活的通过调整每一级音量的步长,甚至设计成为非线性步长,做出符合人耳听力习惯的对数型电位器。

但AAVA,在解决了一些问题之余,又创造了几个问题出来!如下:
        1·并非纯电流耦合。是的,AAVA无法解决真正的VI转换电路的诸多问题,比如空载时的0电位精度。因此在每一级的VI运放后边,仍然可以看到一个对地的负载电阻,这个电阻,把AAVA事实上仍然变成了电压衰减式有源音量,只是其交流信号的振幅极低而已。
        2·已经触碰到天花板的谐波。FFT的测试表明,AAVA从最早的一代产品到今天最新的C3900,其总谐波失真指标是基本未变的,基本稳定在-110dB@0dB这么个指标下,其中谐波成分主要供应者是电源噪音。而最新一代的NJR的音量芯片,已经突破了这个指标。
        3·难以匹配的电阻阵列。AAVA需要16组IV/VI电阻组合,每一组需要特定的6只电阻,其中许多阻值是市面上难以买到的,计算出来却难以得到,可能只能以串并联方式得到一个特定的值,值不准就会对总体音量的精度有影响。
        4·混叠问题。楼上有个网友说他的电位器音量会咔咔作响,这个就是ADC采样的混叠问题,特别碰到某些挡位时,单片机对音量的控制会处于011111-100000之间跳变的状态,金嗓子的AAVA也存在这个问题,事实上更大——AAVA没有一个音量的绝对值,或者说,它的音量大小是不准的,可能时时在跳动。只是因为导通的是模拟开关,金嗓子面板显示的音量又不是那么精确,你听不出来而已。

综上,AAVA是一个优点很多,缺点也明显的设计,特别是当音响系统中最大的失真来源并非来自音量部分时。因此我不会把这个东西装进我的设备,特别是要顶着抄袭头衔时。

丰年好大雪 发表于 2025-7-14 21:50

HuBin168 发表于 2025-7-14 21:26
继电器电位器绝对是个好东西,没磨损,寿命长,失真低,声道又平衡。
去年研究过,对于没有多少功底的人来 ...

0804采样导通继电器的设计么?这个就是混叠问题,我的设计也无法全部避免,只能减弱。

845pp 发表于 2025-7-15 09:32

感谢大佬的分享!

6p14 发表于 2025-7-15 09:35

丰年好大雪 发表于 2025-7-14 21:38
AAVA我在很久……很久以前曾经在论坛里提过一嘴,后来自己搭了个板做了个实验。




发烧求败吗那种简化版呢

caotion0212 发表于 2025-7-15 09:36

水油青年车好 发表于 2025-7-15 08:08
一掐翻白眼的中国制造臭大街了,人民币已成废纸

脑子有病吧?!

forsli@163.com 发表于 2025-7-15 12:20

10位ADC取6位结果,程序上做平滑滤波+滞后处理(类似于电压比较器的正反馈,就是你说的抗混叠吧)还是能够很好的稳定输出,另外继电器跳变速度个人感觉不宜过快,加上一个0.1秒或0.2秒的时基采样输出可能会好一些。另外还有一点,MCU的ADC输入,一般来说会在MCU的ADC引脚近端串一个RC滤波,一般取1K+0.1UF

ls0001 发表于 2025-7-15 16:34

几年前就想做个音量控制,PCB都画好了,但到现在没有手动,一是音量显示问题没想好,二是当快速转动音量时,是直接跳到目标音量还是继电器不停的响一路响到放手,也没想好,但抖动问题倒是想好了:适当迟延反应,标记最近的三个状态,当状态来回摆动时,忽略掉。



----------------
楼这个更简洁,实用。
希望楼主开源不要烂尾:lol
页: [1] 2 3
查看完整版本: 开源64档继电器音量,可替换ALPS蓝壳27型