×

arduino项目PH计

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

李星童

分享资料个

描述

PH计

对于我们的游泳池,我正在寻找一种方法来轻松确定 PH 值,以便盐能很好地作用于藻类,使它们远离水。

在对一些测试设备进行了一些令人失望的经历之后,我决定四处看看 arduino 项目。

在那里我找到了几个例子并想出了 diymore 的 PH 测试笔

PH板的引脚分配如下:

PH Sensorprint 引出线:

TO - 温度输出

DO - 3.3V 输出(来自 pot pot pot POT2 - 见下文)

PO - PH 模拟输出 ==> Arduino A0

Gnd - Arduino GND

Gnd - 同上(在我的印刷品上已经连接

VCC - 5V 直流(Arduino 5V)

POT 1 - 模拟偏移读数(最靠近 BNC 连接器)

POT 2 - PH 限值设置 - 与“DO”结合使用,例如,您可以控制 LED 指示何时达到某个 PH 值;不适用于我。

可以按如下方式调整偏移量:将电源连接到 PCB 并用电线(中间有套管)短暂关闭 bnc 连接器。这对应于测试仪的中性 PH 值 7.0。

然后转动电位器 (POT1) 使“电压输入”值达到 2.5。

我还找到了更多信息,但此站点已无法访问。我将在 zip 文件中附加文档。

在此信息中,我还找到了我的项目所基于的 arduino 代码。

为了避免在测量时进行大量计算,我想校准测试仪,以便在显示屏上显示正确的 PH 值。

在代码中,PH 接口板的测量电压被转换为正确的 PH 值。但是,对于每个测量传感器和提供的电源,此 PH 值似乎不同。

对于校准,我有 3 种不同的 PH 测试溶液:PH 4.01、PH 6.86 和 PH 9.18。袋子的内容物溶解在自己的 250 毫升蒸馏水中,然后可以开始校准。

确保在更换液体时用“干净”的水冲洗测量传感器并拍干,以尽可能减少测试液体的污染。

当所有组件连接好且仪表正常工作时,即可开始校准。

- 首先用 PCB 上的电位器设置 PH 7.0 值(见上文)。

冲洗传感器并将其放在 PH 4.01 的液体中超过 1 分钟。读数现在应该(大约)稳定。然后记下“Volt in”下的数字。

对其他两种测试液以相同的方式执行此操作。

电压到 PH 值的转换在第 60 行的代码中完成(float phValue = x * pHVol + y; // calibrate PH-Value)。

项目文件包括一个 Microsoft Excel 文件,用于将刚刚找到的值转换为用于计算的 x 和 y 值。

计算过程如下:

x = (4, 01-9, 18)/(“PH4.01 处的电压”-“PH9.18 处的电压”)。我们需要这个 x 值用于程序(第 20 行)和计算 y 值:

y = 9, 18 - “PH9.18 处的电压”。* X; 然后我们在代码中输入这个 y 值(第 21 行)。

最后,编译代码并将其上传到 PH 计。现在正确时,当我们再次将测量传感器放在单独的测试液体中时,测试仪会指示正确的 PH 值(想想各种测试液体之间的清洁!!)。

由于我的情况在 PH 6.86 测试液附近出现了小偏差,因此我添加了第二次计算。这是因为我想要池的值应该在 PH 7.2 和 7.4 之间。

我使用 PH 6.86 和 PH 9.19 测量的发现电压。那么计算是:

x = (6.86-9.18)/(“PH6.86 处的电压”-“PH9.18 处的电压”)。我们的程序(第 20 行)再次需要这个 x 值,并且计算 y 值是相同的计算:

y = 9.18 - “PH9.18 处的电压”* x;然后我们在代码中输入这个 y 值(第 21 行)。

这使得我需要的测量范围更加准确......

整个东西是用一个 3D 打印的盒子完成的,我将其中的 STL 文件添加到项目文件中。

不幸的是,显示的 PH 值似乎取决于所提供的电源电压。我有两个可以使用的 USB 电池,它们发出的电压略有不同,因此每个电池的 PH 值不同......

与此同时,我订购了一个升压转换器,我将使用它来将 Arduino Nano 的 3.3 伏电压转换为 PH 传感器板的 5 伏电压。

我希望以此解决问题。我将在这个项目中回到这一点。

 


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

评论(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项目PH计',//标题 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);