66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

发表于 2020-9-21 18:34 | 显示全部楼层
本帖最后由 jacksl528 于 2020-9-21 19:06 编辑

浏览了市面上很多数字型的专用前端IC,从功能强大的DSP到最简单的单一可变电阻型电位器。

让我眼花缭乱,尽管HIFIdiy藏龙卧虎高手云集,但是论坛上有提到过相关话题的帖子,但除了单纯炫技,剩下的就是商业机密。

前段时间购买NJW1194的时候,卖家送了我一片 X9C104,

对于很多没接触过该类型电路的朋友来说,要入门似乎是一件很难的事情。本帖主要以简单粗暴的小白视角介绍一枚“可变电阻型”数字电位器的工作原理和基本使用用法。

下面我将以X9C104为示例,配合功能强大且简单编程的arduino UNO 展开实验,制作。
希望深入浅出,抛砖引玉,提供数字音频的一个方向,由简单的做起一步一步打造自己更加“高大上”的DIY作品!



实际上本文的主角:X9C1034 它是一片应用广泛的可变电阻型数字电位器芯片,虽并非音频专用,但由于其内部电路是 可变型阶梯型电阻阵列,又自带温度补偿,以及低噪声特性,把它用于音频音量调节丝毫没有压力。
(可不要看它仅是一枚8脚芯片,价格才不到1块钱就瞧不起它哦) 我敢肯定的说,用它做一个360°旋转的音量控制电位器 使用感受可以甩掉传统滑臂碳膜电位器几条街。而且没有传统电位器那烦人的咔咔声。


为了完成这个实验,我需要先准备几样东西:

首先一块单片机:arduino家族任何一款都能满足 X9C104的工作需求, 在这里我的实验方案选择的是 arduino UNO,最后可以把它烧写到同样是8脚的arduino -ATtiny13A单片机芯片上固化程序,完成超级迷你的数字电位器方案。

然后:一些杜邦线 (用于连接面包板和 UNO)


最后当然还需要一片 X9C104啦,, 这个东西淘宝有很多,有日本RenesaS原产的当然也会有国产仿制品,虽然我用的是买NJW1194赠送的(估计是国产货)但是在我实际使用过程中真的没发现一点问题,  如果要实际应用当然建议购买 RenesaS原装货!

1.jpg

2.jpg

补充内容 (2020-9-28 13:57):
http://bbs.hifidiy.net/forum.php?mod=redirect&goto=findpost&ptid=1450377&pid=29722876  推荐方法2,无需单片机,用360°旋转电位器直接驱动X9C104

补充内容 (2020-9-28 13:58):
http://bbs.hifidiy.net/forum.php ... 77&pid=29722876
推荐方法2,无需单片机,用360°旋转电位器直接驱动X9C104

评分

参与人数 1经验 +20 魅力 +10 贡献值 +1 收起 理由
mxwmke1 + 20 + 10 + 1 技术好帖

查看全部评分

66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2020-9-21 18:35 | 显示全部楼层
本帖最后由 jacksl528 于 2020-9-21 18:50 编辑

东西准备齐全,我们进入正题,

按照下面的面包板图示,我搭建了与之对应的实际电路。对于新手朋友而言,可能看到这些连线有很多疑问,关于arduino的疑问?如果你想了解 我使用的arduino UNO究竟是个什么样的单片机,我强烈建议你去优酷或者 bilibili(哔哩哔哩)视频观看下它的相关简介~~半个小时你就会有深刻的认识。

如果你不需要了解arduino  不懂C++ 不懂计算机语言,其实也可以简单粗暴的直接购回我所用到的这些东西, 在电脑上简单的操作,用我写好的程序直接就可以使用X9C104,毕竟一次小小的成功也能为你的diy增添不少乐趣~~

搭建好电路之后,arduinoUNO 插上USB连接线 与电脑连接。由于X9C104和arduinoUNO一样都是5V单电源供电,连单独的供电都省去了。哈哈 有没有很方便?





面包板示意图.gif

66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2020-9-21 18:36 | 显示全部楼层
本帖最后由 jacksl528 于 2020-9-21 23:03 编辑

硬件平台搭建完成,并通电,下面来看看 X9C104的工作原理,如图:这个芯片利用1(INC)、2(U/D)、7(CS)与单片机通讯,根据这3条引脚所接收到的有规律的高低电平来实现内部可变电阻的调节功能。

第3脚:Vh/Rh 是内部滑动电阻的上端   (对应传统电位器的音频信号输入脚)
第5脚:Vw/Rw 是内部滑动电阻的可变中端(对应传统电位器的滑臂引脚)
第6脚:Vl/Rl 是内部滑动电阻的下端(对应传统电位器的GND引脚)
   等效电路.png


这样一说,有没有感觉找到了点眉目,是的,我们只需要把音频输入接3、输出接5;   6脚接地就行!


再来看看那三条数据通讯脚:

2脚:U/D 它可以看作你调节这个电位器的指令接收脚,当你给他发送高电平时,音量会++ 反之你给它发送低电平音量就--, 但此时的高低电平送过来,芯片并不会识别,因为还需要下面这个1脚:INC来配合,它可以看作芯片接收数据的闸门,接收arduino发过来的脉冲信号,看看下面的时序图(当脉冲信号出现下降沿时,并同时 2脚 UD接收到了高或低电平信号,满足这两个条件的一瞬间 X9C104就完成了 电位器滑动的一个过程)这样说有没有很形象~~哈哈哈
2.png



那么还有个CS是干什么的呢?说明文件上说了这个CS叫:使能控制端。 对于不懂单片机的人要理解似乎有些困难,用我简单粗暴的表达来说就是,让不让这个芯片处于工作状态的开关。 你给他接低电平这个时候它就是工作的表示可以接收 数据,如果你给他接个高电平(5V)那么这个芯片就是锁定状态的,此时你无论做什么操作,它都无视~~


1.png



根据上面的指令发送原理,来做一个小结:

我们如果需要X9C104电位器 音量增加一个阶梯, 那么 我们就需要同时满足3个条件,   1、CS给低电平(让芯片出于工作状态) 2、U/D给高电平(高电平是++音量) 3、INC 给一个从高电平下降到低电平的下降信号(意思就是原本INC是高此时给一个低,让它有个5V-0V的变化)   当这3个条件都满足,那么这条指令就会被X9C104识别,并让内部的滑动电阻有一个向上移动的动作。





有了这个思路,下一步我们就可以来构思程序




228

主题

1

好友

2765

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
803005
帖子
3316
精华
0
经验
2765 点
金钱
2392 ¥
注册时间
2015-10-29
发表于 2020-9-21 19:46 | 显示全部楼层
看楼主的帖子能学挺多的,单片机我只会跑个跑马灯哈哈。小白想问问像cs3310,PGA2310这种芯片也是这样的控制方式么?

250

主题

39

好友

2万

积分

超级版主 当前离线

如果拥有金耳朵,只能花更多金钱 ¥ $去折腾.

Rank: 8Rank: 8

UID
261072
帖子
28676
精华
0
经验
24212 点
金钱
22726 ¥
注册时间
2010-11-14

社区贡献 论坛版主 乐于助人

发表于 2020-9-21 20:03 | 显示全部楼层
赞!关注中。。。建议配上显示屏。

2

主题

0

好友

166

积分
     

论坛游民 当前在线

Rank: 3Rank: 3

UID
7094
帖子
425
精华
0
经验
166 点
金钱
67 ¥
注册时间
2006-1-3

社区贡献

发表于 2020-9-21 20:11 | 显示全部楼层
好久不见!
自带小板凳前排学习!

点评

谢谢关注  发表于 2020-9-21 21:09

127

主题

0

好友

1万

积分
     

版主 当前离线

脑放进行时

Rank: 7Rank: 7Rank: 7

UID
3986
帖子
18063
精华
2
经验
17394 点
金钱
15131 ¥
注册时间
2005-4-20

社区贡献 优秀设计 论坛版主

发表于 2020-9-21 20:20 来自手机端 | 显示全部楼层
用DS1802免编程

12

主题

0

好友

572

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
34308
帖子
566
精华
0
经验
572 点
金钱
556 ¥
注册时间
2008-1-19
发表于 2020-9-21 20:29 | 显示全部楼层
592657820 发表于 2020-9-21 19:46
看楼主的帖子能学挺多的,单片机我只会跑个跑马灯哈哈。小白想问问像cs3310,PGA2310这种芯片也是这样的控 ...

PGA2310是SPI方式:片选、数据、时钟最少三线缺一不可

55

主题

5

好友

1621

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
162187
帖子
1467
精华
1
经验
1621 点
金钱
1312 ¥
注册时间
2010-1-7
发表于 2020-9-21 20:31 | 显示全部楼层
端到端电阻误差是正负20%呀,感觉没达到要求。支持楼主分享!

228

主题

1

好友

2765

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
803005
帖子
3316
精华
0
经验
2765 点
金钱
2392 ¥
注册时间
2015-10-29
发表于 2020-9-21 20:36 | 显示全部楼层
tzya2 发表于 2020-9-21 20:29
PGA2310是SPI方式:片选、数据、时钟最少三线缺一不可

不懂,能讲解下细节么

66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2020-9-21 21:00 | 显示全部楼层
592657820 发表于 2020-9-21 20:36
不懂,能讲解下细节么

I2C是 时钟和数据两根线通讯, SPI是单片机最常用的串口通信方式,可以简单的理解为在I2C基础上多了一条用于锁存数据的时钟线

66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2020-9-21 21:01 | 显示全部楼层

索德寺内, 不知道 DS1802 使用起来怎么样。

66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2020-9-21 21:05 | 显示全部楼层
mxwmke1 发表于 2020-9-21 20:03
赞!关注中。。。建议配上显示屏。

这块芯片 搞屏显有点拖沓了,毕竟它的变量不能返回给 arduino 不过可以在arduino虚拟一个同步的变量来显示,,哈哈哈哈  所以有点牵强,,


用两片 这个X9C104可以 组成立体声超小型 数字电位器,完全替换掉传统的 碳膜触臂普通电位器。 很实在,任何机箱都可以用

66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2020-9-21 21:06 | 显示全部楼层
本帖最后由 jacksl528 于 2020-9-22 00:23 编辑
naturey2000 发表于 2020-9-21 20:31
端到端电阻误差是正负20%呀,感觉没达到要求。支持楼主分享!


但是 经过我两天的调试过程,发现    1、没有任何多余的噪音      2、没有任何可闻的电阻误差感 ,

传统的普通的双联电位器,仔细感觉 就有这类毛病,而且确实很明显。。

66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2020-9-21 21:07 | 显示全部楼层
592657820 发表于 2020-9-21 19:46
看楼主的帖子能学挺多的,单片机我只会跑个跑马灯哈哈。小白想问问像cs3310,PGA2310这种芯片也是这样的控 ...


CS3310、 PGA2310   都不复杂,, 比起NJW1194 它们在功能上更简化,

用arduino 都能实现

12

主题

0

好友

572

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
34308
帖子
566
精华
0
经验
572 点
金钱
556 ¥
注册时间
2008-1-19
发表于 2020-9-21 21:16 | 显示全部楼层
jacksl528 发表于 2020-9-21 21:05
这块芯片 搞屏显有点拖沓了,毕竟它的变量不能返回给 arduino 不过可以在arduino虚拟一个同步的变量来显 ...

数字电位器用来做音响音量控制的话我还是看好AD5290

36

主题

0

好友

1217

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
116538
帖子
1577
精华
0
经验
1217 点
金钱
1161 ¥
注册时间
2009-7-7
发表于 2020-9-21 21:27 | 显示全部楼层
至少能看懂楼主说的,简单易理解。
可是还是害怕,提到单片机就害怕,对数字电路总是理解不了。

点评

万丈高楼平地起,由简入繁。  发表于 2020-9-21 21:40

66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2020-9-21 21:38 | 显示全部楼层
本帖最后由 jacksl528 于 2020-9-21 21:39 编辑
tzya2 发表于 2020-9-21 21:16
数字电位器用来做音响音量控制的话我还是看好AD5290


AD5290 确实不错,我本人也一直比较喜欢 诺亚半导体的东西.

其实就目前的数字音频IC来说 好用的太多了,无论是实际使用还是指标参数 都是非常理想的器件。

比如 NJW1194  带4路音频输入选择, 高低音调节, PASS直通    -95db-31db音量增益可调   超低失真,超高的信噪比

X9C1034这个是我订购NJW1194送的, 功能单一小巧,用它来做入门 很适合刚接触 数字电位器的朋友

0

主题

0

好友

227

积分

业余侠客 当前离线

Rank: 4

UID
238797
帖子
234
精华
0
经验
227 点
金钱
225 ¥
注册时间
2010-9-9
发表于 2020-9-21 21:51 | 显示全部楼层
和mcu有关的好帖该顶,对新手和老烧都有帮助。

比较好奇中点电位如何,需要隔离电容吗?

66

主题

44

好友

1万

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
111707
帖子
12394
精华
3
经验
12805 点
金钱
12265 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2020-9-21 21:59 | 显示全部楼层
Leolabs 发表于 2020-9-21 21:51
和mcu有关的好帖该顶,对新手和老烧都有帮助。

比较好奇中点电位如何,需要隔离电容吗?

这种数字电位器 可以简单的就看作  传统的电位器,它的输入和输出端 没有任何交直流电压。  它中间的滑臂依靠指令控制,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部