×

基于Arduino Due的任意波形发生器

消耗积分:0 | 格式:rar | 大小:0.07 MB | 2022-12-21

香香技术员

分享资料个

本方案是一个基于 Arduino Due 的任意波形发生器,可以绘制、编辑、保存、打开任意波并通过 USB 上传到 Due,或者 Due 可以由锅和开关控制单独运行。

一般说明
这现在可以在 Linux 和 Windows 上运行。
模拟波最大频率:100kHz。方波最大频率:42MHz。

占空比从几乎 0% 到 100% 可调

这是一个由两部分组成的项目:Arduino Due 板本身,以及要在您的 PC 上使用的控制器 GUI,尽管 Arduino 板也可以使用电位器、开关和 LED 单独使用。

不需要任何电路,尽管提供了一个可选的输出保护电路,它应该可以保护 Arduino 板不会意外地将输出连接到高达正负 30V 左右的电压。(也许更多)

通过使用 PC 上的控制器 GUI,可以绘制、编辑、保存、打开和上传任意波形到 Arduino Due,通过 USB 端口自动连接。包括一个全面的帮助文件。

如果需要,“阶梯”波特征允许在波中轻松产生任意数量的尖锐(一个样本)阶梯。此外,输出可以切换为正弦波或三角/锯齿波。

此外,同时产生方波,它可以是同步的,也可以是完全独立的。可以通过频率或周期来控制波。占空比可以设置为几乎从 0% 到 100%。或者脉冲宽度可以设置为常数。(当然,在期间的范围内)

可以通过 PC 的键盘或程序的小键盘直接键入新设置。或者,按“MODE”允许滑动调整。

模拟波可使用精确模式,避免了通常与直接数字合成 (DDS) 波形发生器相关的“频率步长”。通过允许访问这些“频率步长”之间的频率,这使得更精确的频率成为可能,因为当精确模式打开时,输出不是 Arduino 时钟频率的分频。

包括一个或两个波的(对数)频率扫描功能,还有一个带有正或负 Arduino 输出的计时器。

规格
模拟波:

分辨率为 12 位,最多 4096 个航路点。

频率范围为:0.05mHz(20,000 秒)至 100kHz。

采样率:(使用 DMA 时高于 1kHz)高达 1.6MHz。

采样率:(高达 1kHz)400kHz。

精确模式下的采样率:(任何频率)400kHz。

最小脉冲宽度:(半波周期)

在 0% 占空比时:在任何频率下为 350 纳秒(大约)。

在 0.01% 占空比时:高达 2.5 - 25 微秒。(大约)

- 如果频率超过 1kHz 且精确模式或同步开启,

- 否则为 350 纳秒。

方波:

频率范围为:0.05mHz(20,000 秒)至 42MHz。

最小脉冲宽度:

同步:[频率:0.05mHz(20,000 秒)至 100kHz]

在 0% 占空比时:任何频率下为 48 纳秒。

在 0.01% 占空比时:2.5 - 25 微秒。(大约)

未同步:[0.093mHz(10,737 秒)至 42MHz]

从 1.3kHz 到 42MHz 为 12nS。(使用脉宽调制)

从 650Hz 到 1.29999kHz 为 24ns。(使用脉宽调制)

48nS 从 325Hz 到 649.99999Hz。(使用脉宽调制)

从 163Hz 到 324.99999Hz 为 96ns。(使用脉宽调制)

低于 163Hz:(使用中断)

在 0% 占空比时:96 纳秒。

在 0.01% 占空比时:5 微秒。

安装
您的 PC的 GUI 程序是“便携式的”,因此不需要安装。

对于 Windows 用户,只需将 .zip 文件解压缩到您选择的文件夹中,然后创建 .exe 文件的快捷方式。注意:“DueAWGController-Win64.zip”文件适用于 64 位系统,但 32.zip 文件通常更可靠,因为它嵌入了 Java。

对于 Linux 用户,将 DueAWGController-LinuxXX.zip 文件解压缩到一个文件夹中,然后双击 DueAWGControllerLinux 文件或将其添加到系统菜单中。

您可能需要为 Debian、Ubuntu 等安装 OpenJDK 8 (java 8):在命令行(在终端中),键入:sudo apt-get install openjdk-8-jre(较新的版本可能不起作用。)

在连接到 Arduino 之前,您可能还需要获得访问 USB 的权限。类型:sudo usermod -a -G dialout $USER

还包括两个用于 Raspberry Pi 等的“arm”文件,但它们尚未经过测试。请让我知道它们是否有效。

Arduino 草图不需要特殊的库,因此您只需要在 PC 上安装普通的 Arduino IDE,即可将草图上传到 Due。如果您的 PC 已识别 Arduino Due,(如果已上传草图,则必须这样做)GUI 程序应在启动时自动查找并连接到 Arduino,因此无需设置 COM 端口。但是,如果自动选择失败,则启用手动 COM 端口选择。

Arbitrary Waves 文件夹中有一些示例波形文件(只是为了好玩)来帮助您入门。除了 GUI 程序,Arduino 波形发生器还可以由 Arduino 的串口监视器控制,设置为 115200 波特。类型 ?求助。

或者,如果您更喜欢使用电位器、开关和 LED 进行控制,Arduino 草图的开头列出了引脚连接。

那里还列出了波输出引脚连接,或者简单地将 Arduino 引脚 3 和 7 与链接连接在一起,或者如果您非常谨慎,请使用低值电阻器(47 - 100 欧姆)。取引脚 7 的方波输出和 DAC0 的模拟输出。

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

评论(0)
发评论

下载排行榜

全部0条评论

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

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.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:'基于Arduino Due的任意波形发生器',//标题 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.lene-v.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);