这是关于如何更换立体声系统的音量旋钮的相当详细的(希望如此)描述,该旋钮使用带有按钮和蓝牙连接的定制板的旋转编码器。
对于初学者来说,一个重要的注意事项:这个项目是用松下 SA-AK45立体声系统编写的(因为这是我使用的),但也适用于使用旋转编码器进行音量控制的任何其他音响系统(除了系统当然是拆卸说明)。请注意,其他系统使用的编码器可能(但不是必须)具有稍微不同的信号配置文件(这可以通过软件中的小调整轻松处理 - 更多信息请在适当的步骤中进行)。
有了这个,让我们开始正确的介绍。Panasonic SA-AK45 是 90 年代后期的立体声系统,我仍然拥有并主要用作 PC 的音响系统。前面有个大音量旋钮,可惜前段时间坏了。所以我决定修复它并最终使用基于按钮的自定义音量控制和蓝牙访问(更多关于为什么我稍后不修复旋钮)。
该系统来自数字控制席卷市场并取代模拟控制的时代,这里也不例外。旋钮不使用电位器,而是安装在旋转编码器上(旋转时发送数字信号的小型设备)。在这个系统的情况下,这个特殊的部分是非常不正统的,很难找到替代品(更不用说修理它了——这些东西都有很小的部分),所以我决定完全摆脱它,拆下旋钮并安装我们的定制板按钮和蓝牙。
所有这一切都必须以某种方式进行控制,我们将使用Attiny85微控制器,因为它便宜、易于使用、非常小并且拥有足够的资源来完成这项工作。任何熟悉 Arduino 的人都可以毫无问题地使用它。
对于蓝牙通信,我们将使用HC-06 模块——它是无处不在的HC-05的一个非常流行的衍生产品,它与它的不同之处在于更便宜并且只能作为从设备工作(这对我们的场景来说很好)。也可以使用任何其他模块,只需对代码进行最少的更改(请参阅相应的步骤)。
最后注:需要基本的焊接/拆焊技能。
现在,让我们开始吧。
注意:如果您的立体声系统与 SA-AK45 不同,这里的前几个步骤可能对您没有多大帮助,但它们的某些方面可能适用于其他地方,所以至少略读它们是个好主意.
注意 2:在拆卸立体声音响时拍照可能是个好主意。特别是当它与我的模型不同时。特别注意您断开的任何连接或其他棘手的地方。
首先,我们必须找到我们将要更换的编码器。它焊接在一个前面板 PCB 上,在其他 PCB 下挖得很深,但绝对可以触及。最好找一本系统的服务手册作为参考。这些通常很容易在网络上找到。在我们的例子中,我们必须到达“E - 操作 PCB”——这就是编码器所在的位置。
这个非常简单:从系统中拔下所有电缆并拧下顶盖/侧盖。它用螺丝固定在后面板和系统侧面(每侧 3 个螺丝)。请记住,它由 3 个薄金属板条锁在顶部的前面板上 - 您必须将其拉起才能将其分离。
还可以卸下音量旋钮,只需将其从前面拉向您即可。
前面通过从前面板 PCB 到主 PCB (B) 的 3 条带状电缆连接到其余部分。白色薄的需要从主 PCB 上的插座中拔出。在拉出黑色较厚的那块之前,需要将主板上连接器两侧的锁定机构提起,然后将其从连接器中拉出。
将正面连接到背面的另一部分是整个设备顶部的 CD 播放器/转换器。将其从系统的背板上拧下就足够了 - 然后,在断开上述电缆后,可以轻轻地将前部与其余部分分离(通过将其拉开)。
虽然 CD 换碟机仍将连接在前面,这使得东西相当笨重,所以我们想将它完全移除。
CD 换碟机通过 2 条白色带状电缆连接到前面板,这些电缆从前面板连接到换碟机上的 2 个独立 PCB。两条丝带都可以从转换器侧的连接器中拉出(其中一条隐藏在柔性黑色覆盖物下方,拧下一些螺丝后可以将其弯曲到一边)。
从转换器上断开电缆后,您必须将其从位于前面板一侧的 2 个米色柱子上拧下。就是这样 - 我们将前面板完全分开。
我们想用我们的自定义系统替换的编码器位于操作 PCB (E) 上,此时隐藏在面板 PCB (G) 下。为了达到它,我们必须拧下面板 PCB。
有很多螺丝要拆。完成此操作后,您可以小心地提起 Panel PCB。请注意,它仍然通过带状电缆(前面的小 PCB - JOG PCB 和 Deck PCB)和刚性连接器连接到其他 PCB。刚性连接器将通过将 PCB 直接从前面提起(向上,当正面朝下时)断开。
连接到 Deck PCB 的带状电缆几乎是不可断开的,所以我们可以保持原样。如果您希望完全移除面板 PCB 以便更好地接触下面的内容,则必须从甲板 PCB 一侧拆下带状电缆连接器,但这不是强制性的。连接 JOG PCB (D) 的电缆也是如此,但整个 JOG PCB 非常小,可以很容易地从前面板上拆下(拧下并提起部分覆盖 PCB 的塑料按钮元件后)并留给悬挂在面板 PCB 旁边。
方便的是,操作 PCB 通过伸出的刚性连接器连接到面板 PCB,当我们抬起面板 PCB 时断开连接,所以在我们到达编码器之前剩下的唯一步骤就是从前面板拧下操作 PCB。
在第一张图片中,您可以看到拆卸的最终结果 - 前面板正面朝下,操作 PCB 位于左侧。Panel PCB 位于右侧,仍然通过不可拆卸的带状电缆连接到 JOG PCB 和 Deck PCB,但此时这不是什么大问题。
我们的编码器位于操作 PCB 上,靠近米色连接器。
我们需要从操作 PCB 上拆下我们的编码器,首先是因为我们无论如何都想将它移除(并用我们的定制板代替),其次是因为我们想拆解它以查看它发送的信号(这部分不是强制性的 - 更多信息下面这个)。
为此,您需要拆焊 4 个信号引脚(包括未使用的一个)和侧面的 2 个安装引脚。添加一些新鲜焊料,然后用拆焊泵去除所有焊料是对我有用的技术。
要拆卸编码器,您必须拉直 4 个金属翼片,使塑料底座保持在底部。然后一切都会分崩离析。但我已经为你完成了,所以你不必:-)
在图片中,您可以看到我的编码器损坏了 - 一个塑料钻头,通过填充触点之间的空间使旋转触点部分在底部变得光滑,折断了,这损坏了连接在底座上的薄金属触点(连接到信号 A 引脚),旋转部分沿该引脚运行。这反过来又完全弄乱了输出信号参数/形状。
注意:这部分仅供参考 - 如果您有相同的立体声系统,您不必拆开编码器并对其进行分析,因为我已经完成了。但是,如果您有不同的立体声和不同的编码器,那将是有意义的。
旋转编码器的基本特征可以通过简单的旋转来确定。它可以有棘爪(旋转时发出咔哒声)或没有棘爪(不点击)。它可以是增量的(在两个方向上无限旋转),也可以是绝对的(像电位计一样有限旋转)。它具有一定的分辨率(它在一圈内发送的信号数量),通常可以通过点击次数来确定(除非它是无点击的......)。我们还可以检查它有哪些引脚,并从 PCB 上的标记中读取它们的描述。
对我们来说,最重要的是要知道:
第一件事(类型)很容易猜测 - 只需检查它是否无限旋转。
第二个(分辨率)很容易知道我们是否有一个点击,但不幸的是这个没有点击。
信号的类型和连接是相互关联的。通常,这些增量编码器使用 3 个引脚发送所谓的“正交”信号:A、B 和 GND。在我们的情况下也没有什么不同,尽管由于某种原因它还有第 4 个未使用的销(这使得找到合适的替代品真的很困难......)。它的工作方式是在一个循环中将 A、B 或任何内容都连接到 GND。在一个方向是“A,B,没有,A,B,没有”等等,在相反的方向是:“B,A,没有,B,A,没有”等等。因此系统的控制器知道我们在哪个方向旋转它,并且可以记录每个增量/减量(每个“A,B,无”或“B,A,无”循环)。对于大多数编码器,A 和 B 信号重叠一小段时间(在 A 和 B 之间有一段时间都连接到 GND - 请参见随附的信号图)。我不知道这种重叠对这个特定系统的运行有多重要'
那么通过观察和旋转编码器我们知道什么?
我们需要确定信号的分辨率(每转发送多少个“A,B,无”或“B,A,无”循环)和信号的细节(如果 A 和 B 重叠以及有多少)。
该决议对我们来说不是那么重要。知道我们希望循环多长时间很有用,以便连续按下按钮以方便的速度增加/减少音量,但这可以通过在我们的软件中调整时间来通过实验确定。信号的形状(基本上是 A 和 B 之间的重叠量,这是这里唯一未知的)也可能不重要,但让我们尝试正确复制它。要知道这些,我们必须看一下编码器的内部部件,而且,方便的是,此时它已经被拆卸了。
当您查看旋转部分时,您可以计算其底部的触点。您会看到每种类型有 24 个联系人,这意味着分辨率为 24 PPR。不过,最重要的信息是我们可以通过查看旋转部分来推断信号形状。见附图。每个循环有 3 个主要部分,其中一个循环在图中用红线标记。您可以看到 A 和 B 之间几乎没有或没有重叠。这告诉我们如何使用微控制器模拟信号 -如果我们发送“A,B,无”或“B,A,无”的简单周期,具体取决于在方向上,事情应该可以工作(似乎我们不需要在周期内生成一段同时连接到 GND 的 A 和 B)。
让我们从一个简单的解决方案开始,只需 2 个按钮来替代编码器(一个按钮用于“降低音量”,另一个用于“提高音量”)。
让我们尝试确定 Attiny 上需要多少个 GPIO 引脚。2 个用于输出(用于音量控制的 A 和 B“编码器”信号)和 2 个用于输入(每个按钮 1 个) - 总共 4 个。但是我们可以减少这个数字吗?
请记住,我们计划添加一个蓝牙模块,这需要 2 个 GPIO 引脚(1 个用于串行输入,1 个用于串行输出),但我们总共只有 5 个引脚可供使用(我们已经分配了 4 个) )。但有好消息。我们只能将 2 个按钮连接到一个引脚。如何?利用 Attiny 具有模拟输入的事实。如果我们巧妙地通过分压器连接按钮,则输入将为我们感兴趣的 3 种状态记录不同的电压:未按下按钮、按下“音量调低”按钮、“按下音量调高按钮”。好啊,我们现在有 2 个空闲引脚可用于蓝牙模块。
但是我们要如何给这东西供电呢?答案很简单,立体声的 PCB 使用 5V 逻辑,方便地与 Attiny 兼容。我们只需要在系统板上的某处找到 5V 线(通过查看编码器的连接,我们已经知道 GND 在哪里)。所以最后,我们必须连接到立体声系统中的 4 个信号:5V rail, GND, vol A, vol B。
让我们看看附件中的示意图:
操作原则应如下:
这应该可以解决问题并允许我们控制音量。它很简单,所以现在让我们对其进行改进。
第一:蓝牙模块。解释 BT 模块的操作超出了本说明的范围,但它已在许多很棒的教程中进行了介绍,并且非常简单。基本上,我们必须使用 SoftwareSerial Arduino 库(可以将任何 GPIO 引脚设置为串行)通过 2 个充当 UART(串行)连接的引脚来连接它。然后我们必须从模块接收信号(ASCII 字符/字节),并根据我们收到的字符/字节,使用上一步中描述的原理增加或减少音量。
不过,BT 模块还有一个障碍需要克服。它可以由我们的 5V 线供电,但它的信号线是为 3、3V 逻辑设计的。有些人将它与 5V 一起使用,但不建议这样做,从长远来看可能会损坏它。那么我们该怎么办?我们可以使用逻辑电平转换器,但对于我们的简单案例来说,这将非常庞大并且有点过度设计。实际上,我们唯一需要担心的是BT模块上的Rx,因为它接收来自Attiny的信号,并且这些信号不能超过3、3V。Tx 很好,因为 Attiny 会将模块设置为 HIGH 的 3、3V 电平记录下来。
那么我们如何限制 HC-06 的 Rx 上的电压呢?当然使用另一个分压器。让我们在它前面加一个 1, 2k 欧姆电阻,在它和 GND 之间加一个 2, 2k,我们将得到我们想要的大约。3、3V逻辑电平。
但是,如果我们想在此之上添加一些 BLING 怎么办?也许是闪亮的LED?不幸的是,我们没有未使用的 GPIO 引脚,但还有其他方法。一种方法是将一些 LED 并联连接到 A 和 B 信号,但我认为这会很无聊,那么为什么不换一种方式呢?如果我们将按钮分压器基于 LED 而不是电阻器会怎样?这也将起作用,因为 LED 保证了电压降。我们仍然需要添加一个电阻器来限制 LED 上的电流,但是这种分压器仍然可以工作,并且与基于电阻器的分压器非常相似。
所以我们最终得到:
见附图。这是我们完整的增强型自定义音量控制单元。现在是时候对 Attiny 进行编程并构建它了。
为了能够测试我们的解决方案,我们必须能够将我们的原型和最终装置连接到立体声系统。为此,我使用了 4 根公对公杜邦/跳线。我将其中的 3 个焊接到操作 PCB 上用于编码器(A、B、GND)的适当针孔,第 4 个焊接到面板 PCB 上的 5V 电源线。我通过查看服务手册中的一些示意图(在前面的步骤中附上)并通过使用万用表上的连续性模式确定它的连接位置来确定 5V 线。我试图选择一个方便的位置,靠近其余的电线和前面板上的音量旋钮开口。供参考,请参阅随附的图片。
要对 Attiny 进行编程,您需要一个 AVR 编程器或一个可用作编程器的 Arduino Board(例如 Arduino Uno)。您还需要安装了 Attiny 核心/库的 Arduino 软件/IDE。您可能也可以使用其他解决方案,例如 PlatformIO,但我还没有在这个项目中尝试过。
同样,使用 Arduino 进行 Attiny 编程超出了本说明的范围(尽管我正计划针对这个主题创建一个),但让我们快速总结一下我是如何做到的:
请参阅随附的脚本以获取评论。这应该是不言自明的。
注意:代码假定发送到 BT 模块的“1”字符将提高音量,而“2”将降低音量。它与我在下一步中提到的测试移动应用程序的“箭头键部分”兼容。
注 2:BT 模块是使用所谓的 AT 命令配置的。在代码中,只有一个被称为(在初始 BT 设置中),用于设置模块的名称,用于向其他设备宣传自己(“dupa1”)。您可以随意更改名称或使用其他命令来设置更高的连接波特率,或与默认的“1234”不同的密码。请记住,对于其中一些,您必须重置模块才能看到效果!此外,不必在每次启动时都调用它们 - 只要调用它们一次就足够了,AFAIK。您可以在此处找到有关模块配置的 AT 命令的一些说明:https ://www.instructables.com/AT-command-mode-of-HC-05-Bluetooth-module/
在这一点上,我们可能应该制作我们的装置的原型,看看它是否有效。对于最初的原型设计,我使用了一个普通的 Arduino Uno(为了方便)和一个面包板,我在上面放置了原理图中的所有部件和连接。我需要对代码进行的唯一更改是更改引脚编号,如下所示:
//vol
#define VOL_A 2
#define VOL_B 3
#define BTNS A0
//BT
#define RxD 4
#define TxD 5
我还初始化了一个串行连接并使用 Arduino 串行监视器来调试代码的各个部分。但请记住,当您在音量增大/减小例程中添加Serial.print()命令时,您可能会影响信号的时序,从而影响音量按钮的体验(我犯了那个错误)。
注意:使用通过 USB 连接到 PC 和立体声的 Arduino 板进行测试时,请确保在 Arduino 和立体声之间建立共同点。在这种“双电源”系统的情况下,扬声器中可能会有一些额外的噪音 - 忽略它 - 当微控制器独立并仅连接到立体声时,它就会消失。
在随附的图片中,您可以看到一些连接到立体声音响的原型(包括 Arduino Uno 和 Attiny)。
要测试(和使用)蓝牙控件,您需要在手机(或其他设备)上安装一些应用程序。我用过这个。我使用“箭头键”模块(向上和向下箭头)将“1”和“2”字符发送到 BT 模块,这将相应地提高或降低音量。当然,您可以根据需要更改代码以使用任何其他字符或消息。
还有许多其他类似的通用移动应用程序可用于测试连接。您也可以自己制作,但这超出了本说明的范围。
当您在 Arduino 上拥有 100% 工作原型时,您应该相应地对 Attiny 进行编程并对其进行测试,仍然在焊接最终装置之前的面包板上。这一步非常重要——确保它与 Attiny 一起工作,仅在目标系统的电源上工作,完全独立于 Arduino 板。
当您的原型工作到您确定所有 4 根电线都正确连接到立体声系统(您有 5V、GND 并且可以更改音量)时,您可以重新组装系统并将电线悬垂在音量之外前面板上的旋钮孔。这将是其余步骤所需的全部内容。
要重新组装系统,只需将之前的步骤颠倒过来即可。将面板 PCB 放回原位,记住要轻柔并将刚性连接器重新连接到操作 PCB。通过将所有带状电缆推入适当的连接器来重新连接所有带状电缆,并记住连接器上用于通向主 PCB 的黑色带状的锁定机制。还要记住 PCB 和外壳上的所有螺钉。
此时你应该有:
现在你可以开始焊接了。为此,我使用了通用 PCB,但您可以按照自己的方式进行操作 - 如果您有设计技能,您可以自己蚀刻,甚至通过 JLCPCB 或类似工具订购专业制作的 PCB(我只制作了附上的简单原理图,所以可以帮不了你这个)。
在随附的图片中,您可以看到我制作的最终装置。我喜欢我的立体声音响前面板上的原始外观,但如果你喜欢更整洁的东西,你可以在 2 个 PCB 上制作它 - 一个隐藏在机箱内,微控制器、BT 模块和其他位在那里,另一个暴露在前面板上,只有按钮和 LED(甚至可以切割成旋钮孔的形状并推入其中)。将定制的 3D 打印按钮放在它上面将是非常专业的。
请注意,我在电路板周围焊接了一些单针接头,作为将 PCB 放在前面板上的引导/安装点。经过一番修修补补,它们紧紧地挤进音量旋钮孔,并将整个东西牢牢固定在适当的位置。
这就是今天的全部内容,我希望你们喜欢我在这里的第一个项目。干杯!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !