1 微位函数发生器开源分享-德赢Vwin官网 网
×

微位函数发生器开源分享

消耗积分:2 | 格式:zip | 大小:0.13 MB | 2022-11-01

分享资料个

描述

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

微位脉冲发生器 - 可变范围

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

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

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

数字波形

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

使用两个 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

电路设计

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

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

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

时钟频率的控制由一个 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。

编码

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

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

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

显示的信息是:

应用程序名称和版本。

输出状态。

频率范围

频率

代码说明

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

按钮 A - 输出启用

显示输出启用或输出禁用

启动时默认为禁用输出。

按钮 B - 范围

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

启动时的默认值为 1kHz。

Pot_Adjust

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

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

永远

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

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

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

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

外壳设计

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

外壳是在 TinkerCAD 中设计的:Function_generator_box

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

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

附件印刷

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

层高:0.15mm

填充密度:25%

填充图案:三六边形

基础附着力:边缘

PCB组装

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

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

电阻器。

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

焊接电线以固定到位。

插座

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

陶瓷电容器

如果适用,请用尖嘴钳弯曲电线以安装在孔之间,并防止对元件主体施加过大的压力并焊接到位。

电解电容器

如果适用,请用尖嘴钳弯曲电线以安装在孔之间,并防止对元件主体施加过大的压力并焊接到位。

接线端子

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

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

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

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

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

盒子组装

盒子组件涉及许多元素。

从底座开始,分线板被拧到最短的柱子上。这些已经印有通孔,允许从顶部插入自攻螺钉(最大 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 自攻螺钉固定的预印孔完全组装。

文字镶嵌

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

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

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

一旦树脂混合,就加入环氧树脂颜料,对于这个项目,环氧树脂颜料是一种白色颜料。

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

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

将采用使用扦子或鸡尾酒棒的滴管技术,将棒浸入树脂中,然后将小滴树脂转移到凹陷处,一旦干燥,树脂就会固定在适当的位置。

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

由于空隙减少,填充百分比越大,字符周围的任何渗出就越小。这流血了我的结果,树脂被从被填充的角色中吸出。

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

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

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

手术

通过 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 最大值。

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

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

 

 

 

 


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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//www.hzfubeitong.com/m/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="https://m.elecfans.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'微位函数发生器开源分享',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.hzfubeitong.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);