| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 微型小乐器 : MicroSynth 小巧而优美 -> 正文阅读 |
|
[嵌入式]微型小乐器 : MicroSynth 小巧而优美 |
??本文介绍了 David Levi 在 MicroSynth: Part Biz Card, Part Synth, All Analog 中给出的一款低成本、简洁、迷你的音乐合成器,适合学习、娱乐。?
|
序号 | 器件名称 | 规格 | 数量 |
---|---|---|---|
1 | 喇叭 | FS-2308 | 1 |
2 | USB接口插座 | Micro-USB | 1 |
3 | 双运放芯片 | MCP6002T-I/SN | 2 |
4 | 喇叭驱动 | PAM8302AADCR | 1 |
5 | MOS管 | N-沟道MOSFET | 11 |
6 | 电容 | 1uF,100nF,4.7nF | 1uf:2; 100nF:6; 4.7nF:10 |
7 | 电阻 | 1M,200k,100k,37.4k,10k,2k | 1M:18; 200k:4:,100k:14; 37.4k::1; 10k:6; 2k:9 |
8 | 电位器 | 10k | 2 |
??下面这个电路则使用了两个运放来产生指数(等比)分布的电压。其中包括了键盘电路、指数电压电路、高八度电路、微调电路等。
▲ 图2.1 MicroSynth电路图原理图
??按键电路本质上是由12个1kΩ电阻串联起来,通过按键开关将指数电压运放电路负极性输入端接地。为了简单起见,使用了普通开关表示串联电阻接入地,实际上这些开关将来都是有MOS管来代替。
??十二个按钮可以产生一个八度音高中的十二个半音阶。当多个按键被按下时,该电路不会产生和弦,只有最高音节输出。
??电路图中标志有“Fine Tune”的电位器用于对输出电压进行微调,一边产生准确的音节频率。
??微调输出电压由右面单位增益,或者倍压电路缓冲之后送到指数电压电路。当“Octave”对应开关打开时,缓冲运放为单位增益,如果Octave开关闭合,则缓冲运放增益为2。利用这个开关可以产生两个八度的音节。
??指数电压电路是这个电路的核心,它将串联的线性变化的电阻转换成指数变化的电压。了解它的原理需要一些数学推导。
??决定输出电压是有三部分电路组成:
??根据运放在放大状态下,输入端“虚短”特性,输出运放的“-”极电压也应该为 U r e f / 3 U_{ref} /3 Uref?/3。这个电压与输出电压在200k电阻上产生的电流为: I 1 = U r e f 3 ? U o u t 200 k I_1 = {{{{U_{ref} } \over 3} - U_{out} } \over {200k}} I1?=200k3Uref???Uout??
??由37.4k(假设称为
R
1
R_1
R1?)与键盘电阻
R
k
e
y
R_{key}
Rkey?组成的对
U
r
e
f
U_{ref}
Uref?分压电路,根据戴维南定理,可以看成由电压
U
k
e
y
U_{key}
Ukey?,内阻
R
0
R_0
R0?组成的电压源。
U
k
e
y
=
R
k
e
y
?
U
r
e
f
R
k
e
y
+
R
1
,
??
R
0
=
R
k
e
y
?
R
1
R
k
e
y
+
R
1
U_{key} = {{R_{key} \cdot U_{ref} } \over {R_{key} + R_1 }},\,\,R_0 = {{R_{key} \cdot R_1 } \over {R_{key} + R_1 }}
Ukey?=Rkey?+R1?Rkey??Uref??,R0?=Rkey?+R1?Rkey??R1??
??那么它在输出运放的输入电阻(100k)上产生的电流为:
??再根据放大状态下运放的“虚断”特性, I 1 = I 2 I_1 = I_2 I1?=I2?,所以
??下面,假设:
??那么可以计算出对于不同的按键电阻 n n n,所对应的输出电压。下图同时显示了根据公式“计算值”以及对应12音律的音节值。可以看到它们之间非常接近。
▲ 图2.2 不同按键n对应的输出电压
from headm import *
R1=37.4e3
Uref=2.44
def keyU(n):
Rkey=n*1e3
Uout = 1/3+(200e3*((Rkey+R1)/3-Rkey))/(Rkey*R1+100e3*(Rkey+R1))
Uout = Uout * Uref
return Uout
Uout = [keyU(nn) for nn in list(range(12))]
Uth = [Uref*exp(-n/12*log(2)) for n in list(range(12))]
printf(Uout)
plt.plot(list(range(12)), Uout, label='计算值')
plt.plot(list(range(12)), Uth, label='音节值')
plt.xlabel("n")
plt.ylabel("Uout")
plt.scatter(list(range(12)), Uout)
plt.scatter(list(range(12)), Uth)
plt.legend(loc='upper right')
plt.grid(True)
plt.tight_layout()
plt.show()
??下图给出了按键实际电路,它是将手指触碰电极所产生的微弱电流通过1M欧姆的下拉电阻驱动MOS管导通,相当于一个对地的开关,驱动前面核心电路中1k欧姆电阻网络。
▲ 图2.3 按键电路图
??人体触碰电路过程中,不仅会等效成贯彻导通电阻,另外还会引入空间的交流电压信号。所以在按键电路中还有1M欧姆与4n7电容组成的滤波电路。
??下图是作者对于这个电路进行的电路仿真,可以看出它可以有效的导通。
▲ 图2.4 利用人工等效模型进行电路仿真
??下面是按键实际电路,指尖触碰按键焊盘后,便可以触发电路工作。
▲ 图2.5 电路板上实际的按键
?
??在 David 的BLOG 的网页中并没有找到完整的电路图。对于这个电路中振荡电路的工作原理以及如果判断是否有按键被按下等,作者并没有进行详细的说明。
■ 相关文献链接:
● 相关图表链接:
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:55:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |