0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用PT2258构建数字音量控制器

科技观察员 来源:circuitdigest 作者:Debashis Das 2022-08-11 17:12 次阅读

电位器是一种机械装置,使用它可以根据所需值设置电阻,从而改变通过它的电流。电位器有很多应用,但大多数情况下电位器用作音频放大器的音量控制器

电位器不控制信号的增益,但它形成了一个分压器,这就是输入信号衰减的原因。因此,在这个项目中,我将向您展示如何使用 IC PT2258 构建您的数字音量控制器,并将其与 Arduino 接口以控制放大器电路的音量。

集成电路PT2258

poYBAGL0x5iAAsNqAAQ2fA_aIDo141.png

正如我之前提到的,PT2258 是一款用作 6通道电子音量控制器的 IC,该 IC 采用专为多通道音频-视频应用而设计的 CMOS 技术。

该 IC 提供 I2C 控制接口,衰减范围为 0 至 -79dB,1dB/步长,采用 20 引脚 DIP 或 SOP 封装。

一些基本功能包括,

6 个输入和输出通道(适用于 5.1 家庭音频系统)

可选 I2C 地址(用于菊花链应用)

高通道分离(用于低噪声应用)

信噪比 》 100dB

工作电压为 5 至 9V

PT2258 IC 工作原理

pYYBAGL0x5SARv0GAACk6UFoAKU525.png

该 IC 通过 SCL 和 SDA 线从微控制器发送和接收数据。SDA 和 SCL 构成总线接口。这些线必须通过两个 4.7K 电阻拉高,以确保稳定运行。

在我们进入实际的硬件操作之前,这里是IC的详细功能描述。如果你不想知道这一切,你可以跳过这部分,因为所有的功能部分都由 Arduino 库管理。

数据验证

当 SCL 信号为 HIGH 时,SDA 线上的数据被认为是稳定的。

SDA 线的 HIGH 和 LOW 状态仅在 SCL 为 LOW 时改变。

poYBAGL0x5CAZQZyAABfKD69ajY130.png

启动和停止条件

启动条件被激活时

SCL 设置为 HIGH 和

SDA 从 HIGH 状态变为 LOW 状态。

停止条件被激活时

SCL 设置为 HIGH 和

SDA 从低状态转变为高状态

poYBAGL0x4uAZWUYAABHnKtr_JI026.png

笔记!此信息对于调试信号非常有用。

数据格式

传输到 SDA 线的每个字节由 8 位组成,形成一个字节。每个字节后面必须跟一个确认位。

致谢

确认确保稳定和正确的操作。在确认时钟脉冲期间,微控制器将 SDA 引脚拉高,此时外围设备(音频处理器)将 SDA 线拉低(低)。

pYYBAGL0x4eAaxNtAABhRm5m32g852.png

外围设备(PT2258)现在被寻址,它必须在接收到一个字节后产生一个确认,否则,SDA 线将在第九(9)个时钟脉冲期间保持高电平。如果发生这种情况,主发送器将生成 STOP 信息以中止传输。

poYBAGL0x4OAYHsOAABYeEv1tBM786.png

这消除了有效数据传输的必要性。

地址选择

该 IC 的 I2C 地址取决于 CODE1 (Pin No.17) 和 CODE2 (Pin No.4) 的状态。

poYBAGL0x4CAOTchAAANUsL8IBc232.png

逻辑高 = 1

逻辑低 = 0

接口协议

接口协议由以下部分组成:

一个起始位

一个芯片地址字节

ACK=确认位

一个数据字节

停止位

pYYBAGL0x3uAGzAcAACC4K60oWM109.png

IC上电后,需要等待至少200ms才能传输第一个数据位,否则可能会导致数据传输失败。

延迟之后,首先要做的是通过 I2C 线发送“0XC0”来清除寄存器,这样可以确保正常运行。

poYBAGL0x3aAYb_gAABh6k7KiyM607.png

上述步骤清空了整个寄存器,现在我们需要给寄存器设置一个值,否则,寄存器存储垃圾值,我们得到一个雀斑的输出。

为保证音量调节合适,需要依次发送 10dB 的倍数和 1dB 的代码到衰减器,否则 IC 会出现异常。下图更清楚地说明了这一点。

pYYBAGL0x3KADHhMAACqlh4XBVo871.png

以上两种方法都可以正常工作。

为确保正常运行,请确保 I2C 数据传输速度不超过 100KHz。

这就是您可以向 IC 传输一个字节并衰减输入信号的方式。上面的部分是学习 IC 的功能,但正如我之前所说,我们将使用 Arduino 库与管理所有硬代码的 IC 进行通信,我们只需要进行一些函数调用。

原理图

pYYBAGL0x26AQPjcAAEiv9bYf5g164.png

上图显示了基于 PT2258 的音量控制电路的测试原理图。它取自数据表并根据需要进行修改。

为了演示,电路是在上面显示的示意图的帮助下在无焊面包板上构建的。

所需组件

PT2258 集成电路 – 1

Arduino Nano 控制器 – 1

通用面包板 - 1

螺丝端子 5mm x 3 – 1

按钮 – 1

4.7K 电阻,5% - 2

150K 电阻,5% - 4

10k 电阻,5% - 2

10uF 电容 – 6

0.1uF 电容 – 1

跳线 - 10

Arduino代码

#include

#include 
#include 

接下来,使用您喜欢的文本编辑器打开PT2258.cpp文件,我使用的是 Notepad++。

可以看到wire库的“w”是小写字母,与最新的Arduino版本不兼容,需要换成大写的“W”,就这样。

可在本节末尾找到 PT2258 音量控制器的完整代码。这里解释了程序的重要部分。

我们通过包含所有必需的库文件来开始代码。Wire 库用于在 Arduino 和 PT2258 之间进行通信。PT2258 库包含所有关键的 I2C 时序信息和确认。ezButton库用于与按钮交互。

不要使用下面的代码图像,而是从代码文件中复制所有代码实例,并像我们以前在其他项目中那样将它们格式化

#include 
#include 
#include 

接下来,为两个按钮和 PT2258 库本身制作对象。

PT2258 PT2258;
ezButton button_1(2);
ezButton button_2(4);

接下来,定义音量级别。这是该 IC 启动时的默认音量级别。

国际体积 = 40;

接下来,启动 UART,并设置 I2C 总线的时钟频率。

序列号.开始(9600);
Wire.setClock(100000);

设置I2C时钟非常重要,否则IC将无法工作,因为该IC支持的最大时钟频率为100KHz。

接下来,我们使用if else语句做一些整理工作,以确保 IC 与 I2C 总线正确通信。

如果 (!pt2258.init())
 Serial.printIn("PT2258 启动成功");
别的
 Serial.printIn(“启动 PT2258 失败”);

接下来,我们设置按钮的去抖动延迟。

Button_1.setDebounceTime(50);
Button_2.setDebounceTime(50);

最后,通过设置默认通道音量和引脚号来启动 PT2258 IC。

/* 使用默认音量和 Pin 启动 PT*/
Pt2258.setChannelVolume(音量,4);
Pt2258.setChannelVolume(音量,5);

这标志着Void Setup()部分的结束。

在循环部分,我们需要从按钮类中调用循环函数;这是图书馆的规范。

Button_1.loop(); //库规范
Button_2.loop(); //库规范

下面的if部分是为了降低音量。

/* 如果条件为真,则按下按钮 1 */
如果 (button_1.ispressed())
{
   音量++;// 增加音量计数器。
   // 这个 if 语句确保交易量不超过 79
   如果(音量 >= 79)
   {
   体积 = 79;
   }
   Serial.print(“卷:”); // 打印音量级别
   Serial.printIn(volume);
   /* 设置通道 4 的音量
   在 PT2558 IC 的 PIN 9 中
  */
  Pt2558.setChannelVolume(音量,4);
  /* 设置通道 5 的音量
  PT2558 IC的PIN 10是哪个
  */
  Pt2558.setChannelVolume(音量,5);
}

下面的if部分是为了增加音量。

// 按钮 2 也是如此
如果 (button_2.isPressed())
{
体积 - ;
// 这个 if 语句确保音量不低于零。
如果(音量 <= 0)
音量 = 0;
Serial.print(“卷:”);
Serial.printIn(volume);
Pt2258.setChannelVolume(音量,4);
Pt2558.setChannelVolume(音量,5);
}

测试数字音频音量控制电路

poYBAGL0x2aAfUXDAAdSIoxTai8104.png

为了测试电路,使用了以下设备

具有 13-0-13 分接头的变压器

2 4Ω 20W 扬声器作为负载。

音源(电话)

我弄乱了机械电位器,并用两条小跨接电缆短接了两条引线。现在,借助两个按钮,可以控制放大器的音量。
#include
#include
#include
PT2258 PT2258;// PT2258 对象
ezButton button_1(2); //Button_1 对象
ezButton button_2(4); //Button_2 对象
整数体积 = 40;// 默认音量/起始音量
无效设置(){
序列号.开始(9600);//UART开始
Wire.setClock(100000); // 将 I2C 时钟设置为 100KHz
/* 检查 MCU 是否可以与 PT 通话 */
如果(!pt2258.init())
Serial.println("PT2258 启动成功");
别的
Serial.println("启动 PT2258 失败");
/* 设置按钮去抖动延迟*/
button_1.setDebounceTime(50);
button_2.setDebounceTime(50);
/* 使用默认音量和 Pin 启动 PT*/
pt2258.setChannelVolume(音量, 4);
pt2258.setChannelVolume(音量, 5);
}
无效循环(){
button_1.loop(); //库规范
button_2.loop(); //库规范
/* 如果条件为真,则按下按钮 1*/
if (button_1.isPressed())
{
音量++;// 增加音量计数器。
// 这个 if 语句确保交易量不超过 79
如果(音量 >= 79)
{
体积 = 79;
}
Serial.print("音量:"); // 打印音量级别
Serial.println(卷);
/*设置通道4的音量
在 PT2258 IC 的 PIN 9 中
*/
pt2258.setChannelVolume(音量, 4);
/*设置通道5的音量
PT2258 IC的10脚是哪个
*/
pt2258.setChannelVolume(音量, 5);
}
//按钮2也是如此
如果 (button_2.isPressed())
{
体积 - ;
// 这个 if 语句确保音量不低于零。
如果(音量 <= 0)
体积 = 0;
Serial.print("音量:");
Serial.println(卷);
pt2258.setChannelVolume(音量, 4);
pt2258.setChannelVolume(音量, 5);
}
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电位器
    +关注

    关注

    14

    文章

    1012

    浏览量

    66766
  • 音量控制器
    +关注

    关注

    0

    文章

    9

    浏览量

    8745
  • PT2258
    +关注

    关注

    0

    文章

    2

    浏览量

    5634
收藏 人收藏

    评论

    相关推荐

    PT2258 2323

    本帖最后由 eehome 于 2013-1-5 10:04 编辑 用PT2258 2323电子音量控制,一个声道声音大一个声道声音小是什么原因
    发表于 11-18 09:43

    求助,想用一个at89c2051控制前置扳的pt2258音量控制器

    这是一款杰士ProMedia5.1音响,音量控制器不见了,前置是由三块TL074CN和两块LM837N组成的运放大器,还有一PT2258音量控制IC。有I2C总线插口,那个2258是6
    发表于 12-10 22:39

    音量控制器和对数电位计

    ,来控制电子电位计的衰减值。除了音频应用,这些器件也能应用于信号通路中。下面是一些相关器件:PGA2500麦克风前置数字增益可控放大器PGA2320立体声音频音量控制器LM1971 具有静音功能
    发表于 09-20 16:30

    6通道电子音量控制器ICPT2258电子资料

    概述:PT2258是Princeton生产的一款6通道电子音量控制器IC,利用CMOS技术专为新一***声道音频系统。 PT2258提供一个I2C控制接口,为0到-79分贝在1 dB/
    发表于 04-21 07:46

    一种数控5.1声道音频前置放大器系统

    前置放大器的输入级由六个TL074 / TL072缓冲级组成。PIC16F886微控制器管理PT2258电子音量控制 IC。所有音量和菜单选项都显示在HD44780 16×2 字符 L
    发表于 07-06 06:31

    触摸音量控制器

        一般的触摸式音量控制器电路较复杂,这里介绍的控制器只用两个元件,而体积小
    发表于 04-16 23:20 1906次阅读

    基于USB控制器设计的Windows音量控制器

    基于USB控制器设计的Windows音量控制器 介绍一种使用MAX3420作为USB控制器、ATtiny 13作为微处理设计的Windows音量
    发表于 03-29 15:12 3211次阅读
    基于USB<b class='flag-5'>控制器</b>设计的Windows<b class='flag-5'>音量控制器</b>

    数字音量控制器电路 (Digital Volume Cont

    数字音量控制器电路 (Digital Volume Control)
    发表于 12-24 08:30 7328次阅读

    用旋转电位驱动半导体音量控制器

    目前,在音量控制器的电路设计中,广泛应用的是用数字电位代替旋转音量控制器。为模仿控制过程,大多数电路中采用上/下按钮、开关或微处理
    发表于 06-23 16:56 135次下载
    用旋转电位<b class='flag-5'>器</b>驱动半导体<b class='flag-5'>音量控制器</b>

    全遥控数字音量控制的D类功率放大器资料

    全遥控数字音量控制的D类功率放大器资料,有兴趣的同学可以下载学习
    发表于 04-28 13:59 21次下载

    全遥控数字音量控制的D类功率放大器

    全遥控数字音量控制的D类功率放大器
    发表于 03-05 15:25 11次下载

    基于PICl6C56微控制器PT2258芯片实现AV功放音响控制系统的设计

    本设计以Microchip公司的PICl6C56为主控IC,系统硬件电路框图如图1所示。通过模拟开关选择音频信号源,输入至声道音量控制芯片PT2258中,由主控IC接收、分析键盘模块或红外遥控的数据,控制
    发表于 05-03 17:54 3223次阅读
    基于PICl6C56微<b class='flag-5'>控制器</b>和<b class='flag-5'>PT2258</b>芯片实现AV功放音响<b class='flag-5'>控制</b>系统的设计

    音量控制器如何设置_音量控制器的作用

    音量控制器,顾名思义就是说它是一种控制音量的输出的一种设备,主要是应用在一些声音的处理和对音频的音量控制。它的使用就是把会伤害到听力的那些音频转换成为一些信号,再通过
    发表于 05-29 09:45 6978次阅读

    分享一个不错的立体声数字音量控制的电路图

    这是立体声数字音量控制的电路图。该电路可用于升级立体声放大器电路中的手动音量管理。在这个特定的电路中,按下开关 S1 控制两个通道的正向(音量增强)操作,而相同的开关 S2
    的头像 发表于 06-29 16:35 7241次阅读
    分享一个不错的立体声<b class='flag-5'>数字音量控制</b>的电路图

    基于MAX5486的双通道数字音量控制电路

    图中显示了基于IC MAX5486的双通道数字音量控制电路。MAX5486为40K双通道数字音量/平衡控制器,具有按钮接口。该 IC 具有内置偏置电压源,无需外部电路即可用于相同目的,从而减少了外部
    的头像 发表于 04-02 14:40 2068次阅读
    基于MAX5486的双通道<b class='flag-5'>数字音量控制</b>电路