本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

自制Microbit 函数发生器

发布时间:2021-10-24
分享到:

自制Microbit 函数发生器

发布时间:2021-10-24
分享到:

关于 Microbit 的波形生成可能不会立即浮现在脑海中,因为它是一种数字设备。但是,通过添加一些外部逻辑,可以生成脉冲以外的波形。

这将通过函数发生器实现,函数发生器是一种产生不同类型波形的信号发生器。在这种情况下,这些波形将是正弦波、锯齿波和脉冲波,脉冲频率可在 0 到 1MHz 范围内调节。

该项目是对先前发布的早期项目的增强:

Microbit 脉冲发生器 - 可变范围

增强功能是定制设计的 PCB,用于对正弦和锯齿波形进行 D2A 转换,并具有独立的输出和独立的幅度控制。

增加了 OLED 显示屏以指示范围、频率和输出状态。

全部安装在定制的 3D 打印外壳中。

补给品

  • MicroBit V1 或 V2
  • Kitronik 视图显示
  • SPST 瞬时开关- 数量 2
  • 双 4 毫米香蕉插头插座- 3 个
  • 电位器 5k - 数量 2
  • 电位器 100k
  • 电位计旋钮 6.4 毫米轴- 3 个
  • Microbit 分线板
  • 跳线 M/F - 数量 23
  • 15k 电阻器* - 数量 3
  • 27k 电阻器* - 3 个(最接近 30K 的可用值)
  • 57k 电阻器* - 3 个(最接近 60k 的可用值)
  • 120k 电阻器* - 3 个
  • 100k 电阻
  • 200R 电阻器 - 2 个
  • 150R电阻
  • 330R电阻

*电阻器的容差为 1% 或更好。

  • 100nF 电容器- 6 个
  • 100uF/10V 电容
  • CD4024 (7 级二进制计数器)
  • CD4015(双4位移位寄存器)
  • CD4030(四路 2 输入 EXOR)或CD4070,具有相同的引脚排列和功能。
  • MCP602(双运放)
  • 2pin PCB 端子排- 6 个
  • 8Pin DIL 插座
  • 14Pin DIL 插座- 2 个
  • 16Pin DIL 插座
  • M3 x 8mm(螺钉/螺栓) - 32 个
  • M3 x 10mm(螺钉/螺栓)
  • M3 x 30mm(螺钉/螺栓)- 2 个
  • 透明/透明有机玻璃 - 52mm x 52mm x 5mm
  • 用于文字镶嵌的 2 部分环氧树脂或油漆(可选)

工具

  • 尖嘴钳
  • 刀具
  • 烙铁
  • 焊接
  • 螺丝刀
  • 锥形钻头 2mm -12mm
  • 针锉
  • 3mm钻头
  • 3D打印机
  • 精细造型刀片
  • 鸡尾酒棒或串

第 1 步:什么是 D2A 转换

D2A是将数字信号转换为模拟信号的过程

数字信号本质上是二进制的,占据高和低两种不同的逻辑状态,或者参考 Microbit 的最坏情况电压为 ~3V* 和 0V。

*(电源电压容差意味着 Microbit 之间的电压会有所不同,准确的电压应使用数字万用表测量,并在计算中使用此替代品。)

其他逻辑系统具有代表逻辑高或低的不同等效电压电平。

实际上,不是使用特定电压来定义逻辑输入状态,而是根据阈值定义它。

A 高 (1) 电平 >=VIH(3V 的 70%)和低 (0) 电平 <=VIL(3V 的 30%)

其中 VIH = 电压输入高,VIL = 电压输入低

相比之下,真正的模拟信号可以有无数个值并且随时间不断变化。

模拟信号将是正弦和锯齿波形。

但是如何完成这些波形中的每一个的转换。

第 2 步:数字锯齿

可以使用带有加权输出的二进制计数器生成数字锯齿波形。

使用 4 位二进制计数器,我们可以生成 16 个离散步骤

通过 Q0 上的电阻器 R,当 Q0 为高电平时,电流会流动。

如果我们在 Q1 上放置一个 R/2 的电阻器,那么当 Q1 为高电平时,将流过两倍的电流。

因此,如果我们在 Q2 上安装 R/4 的电阻器,在 Q3 上安装 R/8 的电阻器,那么每个二进制步骤都有一个二进制加权电流。

理想加权后的电阻值为 120k、60k*、30k 和 15k。

* 60k 没有首选电阻值作为单个值,最接近的是 59.7K(E96/E192 系列),但可以简单地将两个 30K 串联。

如果求和点连接到负载电阻器,则每个电流阶跃都会产生相应的电压阶跃。

输出波形的频率 = Fin/2^n 其中 n = 加权输出。

因此,如果 Fin = 1KHz,则锯齿频率将为 1000/16 = 62.5Hz

第 3 步:数字正弦波

使用带有加权输出的移位电阻器可以生成数字正弦波波形。

使用两个 4 位移位寄存器,我们可以为对称生成 8 个离散的向上步进和 8 个离散的向下步进。

为第一个移位寄存器。

使用 Q0 上的电阻器 R,当 QO 为高时,电流会流动。如果我们在 Q1 上放置一个电阻为 R./2,那么当 Q1 为高电平时,电流将增加两倍。因此,如果我们在 Q2 上安装了 R/4 的电阻器,在 Q3 上安装了 R/8 的电阻器,那么我们就会为每个向上计数的步长增加一个加权电流。

对于第二个移位寄存器。

通过 Q3 上的电阻器 R,当 Q3 为高电平时,电流会流动。如果我们在 Q2 上放置一个 R./2 的电阻,那么当 Q2 为高电平时,电流将增加两倍。因此,如果我们在 Q1 上安装 R/4 的电阻器,在 Q0 上安装 R/8 的电阻器,那么每个步骤的加权电流都会随着计数的增加而减小。

如果两个计数器的求和点都连接到负载电阻器,则每个电流阶跃都会产生相应的电压阶跃。

输出波形的频率 = Fin/2^(n/2) 其中 n = 加权输出。

因此,如果 Fin = 1KHz 那么正弦波频率将为 1000/16 = ~62.5Hz

第 4 步:电路设计

该电路采用低压逻辑 IC(移位寄存器、二进制计数器、EXOR 和运算放大器)设计,采用 DIL 封装,易于组装。

锯齿波是使用 CD4024、7 位二进制计数器生成的,二进制加权电阻器连接到 4 个 LSB 输出。

时钟输入来自输出 P0 处的 MicrobIt。

时钟频率的控制由一个 100k、10 圈电位器提供,主电阻连接在 0V 和 3V 之间,雨刷连接到 Microbit 的 P1,以提供用于改变频率的可变电压(Vv)。

Vv = Rx/100k*3V 其中 Rx 是雨刷器和 0V 连接之间的电阻

POR(上电复位)由连接到复位引脚的 CR* 网络提供,以确保计数器和寄存器在低电平状态下上电。

*(CR 网络在上电时将复位引脚拉高约 1 毫秒,直到电容器充电,然后通过电阻器将其保持在低电平)。

二进制计数器在时钟的每次负转换时递增,从 0 到 15 增加一个计数,然后重置为 0 以重复循环。

结果是重复的数字锯齿波。

求和点处的电压被馈送到配置为同相放大器的双运放的一半的同相输入端。

一个 5k (Rf) 电位器与一个 220R (Rp) 连接在反馈路径中,以控制波形输出幅度。Vgain = 1+Rf/Rp,Vgain 从 1 到 24,可以将输出电压控制在 ~0 到 3V。

移位寄存器在时钟的每次正跳变时传输数据,寄存器 1 的最后一级 (Q3) 连接到寄存器 2 的数据输入,其最后一级 (Q3) 反馈到寄存器 1 的数据输入。

在打开时,所有寄存器都复位为零,但连接到寄存器 1 数据输入端的反相器在每次时钟转换时将每一级设置为逻辑 1。逐渐增加电压。

一旦寄存器 2 的最后一级设置为 1,反相器将数据输入设置为 0,并且每一级都连续设置为 0。使电压逐渐降低。

结果是重复的数字正弦波。

求和点处的电压被馈送到配置为同相放大器的双运放的一半的同相输入端。

一个 5k (Rf) 电位器与一个 220R (Rp) 连接在反馈路径中,以控制波形输出幅度。Vgain = 1+Rf/Rp,Vgain 从 1 到 24,可以将输出电压控制在 ~0 到 3V。

第 5 步:编码

在该项目的最初版本中,Microbit 显示器用于指示状态。

但是,由于 Microbit 的信息量有限,无需滚动即可一次性显示,因此升级为 OLED 显示器。

因此包含了额外的代码来使用这个显示。

显示的信息是:

应用程序名称和版本。

输出状态。

频率范围

频率

代码说明

开始时
这会调用重置(分配变量和设置初始值)。如果使用带有内置发声器的 Microbit V2,这将需要关闭,如果使用 V1,则忽略。

按钮 A - 输出启用

显示输出已启用或输出已禁用

启动时默认禁用输出。

按钮 B - 范围

将每次按钮按下时的 max_range 设置为 1k、10k、100k、250k 和 500kHz max_range。

启动时的默认值为 1kHz。

Pot_Adjust

读取 P1 上的模拟输入 将其转换为最大位数的百分比和基于最大范围的频率。频率 = max_Range *(位值/1023)

更新相对于所选 max_range 的显示值

永远

以所需频率应用铃声的地方。

此处应用输出使能,根据其状态输出所需频率或零频率。

在代码中,Microbit 显示的大部分活动被禁用,因为它将被封闭在框内。

但是,只需重新插入 Plot 代码块即可重新启用此功能。

microbit-V_PGEN_VIEW.hex

第 6 步:外壳设计

对于以前的项目,我制作了盒子,这些盒子分为两部分(一个打开的盒子和一个盖子),但是对于这个项目,这种方法与以前的构建大得多,我决定制作六个面以启用它们单独进行 3D 打印。

外壳是在 TinkerCAD 中设计的:Function_generator_box

所有固定孔、切口、支架和图例都将作为印刷过程的一部分创建。

完成后的盒子尺寸为 132 毫米(宽)x 93 毫米(高)x 104 毫米(深),由顶部、底部、左侧、右侧、后部、前部和显示器​​支架组成。

func_gen_box_back.stl
func_gen_box_front.stl
func_gen_box_leftside.stl
func_gen_box_rightside.stl
func_gen_box_lid.stl
func_gen_box_bottom.stl
func_gen_box_slots.stl

第 7 步:附件打印

外壳的各个元素是使用以下设置进行 3D 打印的。

层高:0.15mm

填充密度:25%

填充图案:三六边形

基础附着力:边缘

第 8 步:PCB 组装

为便于组装,首先安装轮廓最低的组件,最后安装轮廓最高的组件。

因为这使您能够将组件焊接在有助于将它们固定到位的平坦表面上。

电阻器。

用尖嘴钳将两端电阻的引线弯折,在板孔之间插入正确值。这些值印在板上以减少装配错误。

焊接电线以固定到位。

插座

插入 IC 插座,注意引脚 1 标识并焊接到位。

陶瓷电容器

如果适用,用尖嘴钳弯曲电线以安装在孔之间并防止组件主体上的过度应力和焊接到位。

电解电容器

如果适用,用尖嘴钳弯曲电线以安装在孔之间并防止组件主体上的过度应力和焊接到位。

接线端子

将引脚插入电路板并焊接到位。

在插入 IC 之前,目视检查电路板以确保所有连接均已焊接且不存在焊桥和/或使用 DMM(在二极管或电阻上),检查电源端子上的 + 和 - 之间以确保没有短路.

一旦您确信不存在短路或开路,并且所有无源元件都已正确放置,就可以再次插入 IC,确保它们的方向正确并插入正确的插座。

名称印在板上以减少组装错误。

确保遵循 ESD 保护预防措施,以防止在处理和插入过程中损坏 IC。

可以在此处找到用于 PCB 创建的 Gerber 文件:

Microbit 函数生成器 - Hackster.io

第 9 步:盒子组装

盒子装配涉及许多元素。

从底座开始,分线板用螺丝固定在最短的柱子上。这些已经印有通孔,允许自攻螺钉(M3 x 8mm 最大)从顶部插入或螺栓(M3 x 9mm 最小)从底部插入并在顶部安装螺母。

M/F 115mm 跳线将分线板连接到 PCB 接线端子和显示板。

从分线板到 PCB 的连接是:

P0 到 CLK IP

P1 到 FCTRL IP

3V 至 + & 0V 至 -

在安装 PCB 之前,需要连接 OLED 显示器。

然而,对于这个项目,主边缘连接器被绕过,直角端子引脚焊接到 I2C 扩展端口。

从分线板到显示板的连接是:

SCL (19) 至 SCL

SDA (20) 至 SDA

3V 至 3V

0V 至 0V

与交换机的连接是:

启用(按钮 A-P5)

范围(按钮 B -P11)

这两个开关的其余连接以 0V 连接在一起。

PCB 使用自攻螺钉 (M3 x 8mm) 或螺栓 (M3 x 30mm) 安装到 27mm 支柱上。

继续将接线柱、开关和电位计连接到前面板。

如果使用不同的元素,预先存在的孔可能需要去毛刺或调整尺寸,这可以根据需要使用锉刀或钻头完成。

前接线柱通过接线端子连接到 PCB。

电位器连接到 PCB 上的端子引脚,可能需要在前面板后部钻一个防转孔,因为这不是预印的。

安装适合电位计的旋钮。

安装好前面板元件后,需要将显示器安装到位。

盒子元件中包括两个显示插槽,它们连接到前面板的背面并将显示器固定到位。

插槽中的上部孔仅位于 M3 x 8mm 螺母和螺栓的突出边缘之上,而下部孔则由一直穿过前面板和插槽的螺母和螺栓固定到位。

然而,由于连接器的位置横跨显示板的顶部,显示器从前面板的开口向后放置,从而产生了间隙。这个间隙被一块尺寸为 52mm x 52mm x 5mm 的透明有机玻璃占据。

在有机玻璃块底部 26 毫米 x 5 毫米处,在有机玻璃中并与前面板重合处制作了一个 3 毫米的孔,并用 M3 x 10 毫米螺栓固定在一起。

右侧面板有一个 8 毫米孔以容纳 USB 插头,但这可能需要根据插头主体的尺寸加宽。

可以使用与相邻边缘对齐的预印孔完全组装盒子,并用 M3 x 8mm 自攻螺钉固定。

第 10 步:文字镶嵌

文本作为永久性 3D 打印过程的一部分包含在内,目的是填充每个字符以创建嵌体。

在填充字符之前,可能需要进行一些准备以去除由于过度挤压而导致的多余材料,这可能会在字符中形成孤岛或障碍。使用手术刀或采摘工具去除这些。

字符可以用多种材料填充,油漆、修正液、指甲油或液态环氧树脂。在这种情况下,将使用环氧树脂,它是 2 部分 1:1 的混合物。

环氧树脂颜料在树脂混合后加入,在本项目中为白色颜料。

根据粘度、面积和细节水平、干燥时间和清洁表面的难易程度以及材料,可以采用不同的应用技术。

这些可能包括注射器、油漆刷、撒布器或滴管。

将使用使用串棒或鸡尾酒棒的滴管技术将棒浸入树脂中,并将小滴树脂转移到凹陷处,一旦干燥,该凹陷将固定树脂。

如果您过度填充,请少量涂抹并增加填充物;多余的可以用纸巾、棉签刷或扦子去除。

由于空隙减少,填充百分比越大,字符周围的渗漏越小。这导致树脂被从填充的角色中吸出。

您可以重复填充字符,或者在树脂凝固后重新填充以防止进一步流血的局部空隙。

填写完所有字母后,水平放置直到树脂固化。

这种技术的另一个例子可以在以前的项目中找到:微型二进制时钟

第 11 步:操作

通过 USB 使用合适的电源为函数发生器供电,连接器开口位于右侧。

它将初始化并显示状态。

这将禁用输出,最大频率范围:1000Hz,频率 0Hz。

显示器周围的电源指示灯也会发出绿光。

按启用按钮打开输出,将显示脉冲频率。

按 Range 按钮更改最大频率范围。

转动频率旋钮调整频率值。

频率的调整会影响正弦、锯齿和脉冲波形。

但是,由于 D2A 转换过程,正弦和锯齿波的频率将比脉冲输出的频率低 16 倍。

正弦波和锯齿波具有从 ~100mV 到 3V 的独立幅度控制。

脉冲输出电压最大固定为 3V。

但是,输出上的分压器将允许使用该公式设置不同的电压。

Vout = 3V*Rout/Rtotal 其中 Rtotal = Rin+ Rout 从输出串联到 0V,输出取自两个电阻器的中心抽头。

如果 Rin = 10K 且 Rout = 5K,则 3V*5K/15K = 1V 最大值。

可以使用 4 毫米香蕉插头、铲形连接器或松散的电线连接到输出端子。

此外,输出接线柱之间的间距与 BNC 至 2x 4mm 香蕉插头适配器兼容,允许在需要时使用同轴电缆。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论