×

非光学太阳能追踪器开源分享

消耗积分:0 | 格式:zip | 大小:0.02 MB | 2023-02-07

1123127317

分享资料个

描述

背景

我从小就对太阳能追踪器很着迷,在詹姆斯·邦德的电影《金枪人》中看到过太阳能追踪器。如此快进 35 年,我获得了工程学位,我说:“为什么不建造我多年来一直梦想的东西——也许减去死亡射线?”

所以前两座(双)塔建在那里。就像大多数双胞胎一样,他们有点失误,但一切都是最好的。我自己设计/建造了这些,因为没有针对中小型阵列的现成跟踪器套件。跟踪一个或两个面板是孩子们的游戏,但是 8 个帆面积超过 9 平方米的面板是一个不同的提议,尤其是在风速超过 80 公里/小时的情况下。

这些塔位于一个工作农场,因此阵列位于离地面 5.8 米的位置,以便拖拉机和其他设备不会与跟踪器发生碰撞。如果你是一个精明的园丁,你会发现它们位于鳄梨树之间,鳄梨树在它们下面确实长得更好。大面板连接到电网逆变器,小“小马”面板驱动计算机和电子设备。没有来自电源的寄生电源来驱动定位电机,这主要是因为在您最不可能有电源可用时需要电源在暴风雨中移动阵列。

大约六分之一的塔被埋在地下 1.2 立方米的混凝土中,配置为“礼帽”基础。上部有两层钢筋网,焊接在钢筋上,以防止柱子超过其界面处混凝土的40Mpa 限制。地基的底部是通过恰好位于地表以下 1.2 米处的岩架键控的。

所以快进我们有两个很好的机制(北塔和南塔)。我们如何将它们指向太阳?听起来合乎逻辑且简单的光学。一开始我很高兴,但后来越来越沮丧,因为很明显阴天(SCT20 及以上)对控制器来说是一个真正的问题。他们会疯狂地扫过天空寻找亮点,在此过程中会耗尽电机和电池。

走进我的办公室,灵感就在地板上。在过去的 2 年里,它用毡尖笔装饰了类似日晷的标记,这在古代用来标记季节的流逝。你在太阳正午打开办公室的门,读出离春分/冬至有多远,以及阵列应该设置的确切角度。很明显,您可以计算出太阳的位置,然后简单地使用太阳能电池阵列“在那里”。因此,为了纠正这对双胞胎的错误,我决定着手进行“东塔项目”,该项目将比前两个跟踪器中的任何一个大将近 50%,并且会有一台计算机可以计算并指向太阳。

挑选董事会

刚刚帮助我儿子完成了一个涉及 Arduino 的学校项目,我对它的易用性和大量可用的库感到惊讶,其中应有尽有!与我早期的嵌入式工作相去甚远,用机器代码编写我自己的所有库。所以我选择了 Uno 来完成这项工作,因为它有点挑战,拥有很多东西是件好事,但当你用喇叭将卡车装入一个小包裹时,它真的很“热”。我多次用完空间,这导致我更有效地重新编码并且没有将我懒惰的“windows”习惯带入项目。最后,它全部装入了微型芯片。

传感器

所以很明显,主要传感器是 3 轴加速度计,用于确定哪条路是向上的。当然,这是与带有滞后带的太阳位置的计算值进行比较。然后电机启动移动阵列,使目标角度在实际测量值的公差范围内。继电器块用于切换电机,我玩过使用 PWM 的玩具。但是我想到了简单性和电噪声。整个系统由一个 7AH 12V 电池驱动,带有一个 DC/DC 升压器,用于为 36VDC 电机(大约 20 伏)供电。

太阳的位置

太阳的位置?在这一点上,我承认我不是天文学家,也不仅仅是想出方程式,我是从 NOAA 网站下载算法的。我在 MS windows 中做了一个概念验证程序,它实际上是从 GPS NEMA 流驱动的,一旦成功,我将它移植到 Arduino 平台。在初始试验中,GPS 被一个简单的 RTC 取代,目的是让这个装置能够“自我校准”并指向太阳,而无需在世界任何地方进行设置。

该算法根据 Alt 和 Az 返回值,但是我的跟踪器/安装类型需要偏角和时角。这很容易修复,因为它们是 Alt/Az 计算的自然副产品。这也意味着该程序可用于任何类型的跟踪器,因为所使用的传感器还包括一个 3 轴磁力计,以在必要时测量 Az。有一个模型展示了代码并输出到配置为 Alt/Az 安装的两个伺服系统,这有强制性的“死亡射线激光器”安装在与阵列平面成 90 度的位置,以将太阳的位置投射到阵列的屋顶上房间。我的儿子建议我们增加激光功率,以便在他学校教室的屋顶上留下太阳痕迹,幸运的是妈妈在这一点上介入了。

小型计算机的 GUI

现在有了传感器和方程式,就需要一个 GUI。带有 i2c 背包的 2004 液晶显示器提供了这一点。该程序最终有 25 个屏幕用于设置和诊断,从设置时间到调整跟踪模式和角度等所有内容。对于输入,我选择带有集成按钮的旋转编码器,事后看来这不是最佳选择。我认为带触摸输入的 LCD 屏蔽会更简单,更适合这项任务。陀螺仪外壳中有一个“肉球”显示器,可让您查看阵列偏离目标的距离以及跟踪器是否正在移动以纠正问题。这有点奢侈,进一步证明了我对 Arduino/eBay 的依赖越来越大。

I2C 问题

I2C。在这里坦白,我知道我会在电缆长度上遇到麻烦,但无论如何我还是做了太多的“红脖子”。在车间进行的测试看起来不错,但在真实环境中,有许多电缆会发出所有频率的辐射。我为 I2C 构建了一个有源终结器,但这并没有解决锁定问题,也没有添加铁氧体磁珠或弄乱太阳能充电器上的接地配置。在电机启动并为所有执行器电机安装缓冲器后,有一段时间不在 I2C 总线上说话很累。这个过程的有趣之处在于,我有几个星期的太阳能跟踪计算机,它只能在晚上运行,是的,就像一头长着山雀的公牛一样有用。所以最终的解决方案是德州仪器 (Texas Instruments) 的一些缓冲芯片 (P82B96)。

更多事后显而易见的问题

塔在风中的移动被低估了,因为结果高达 3 度。原来的2度滞后很快调整为4度。在夜间实施了完全停止,因此系统不会在夜间对风等作出反应……在系统停车并进入夜间睡眠后没有理由移动(除非刮风)。更改了程序,以便一次可以移动一个轴并支持 N/S 的 E/W 运动。

实施的低角度和高角度限制,以及不同的跟踪方法和停车组合。两个轴都有可选择的停车角度。以及在“无跟踪”模式下更改目标角度的能力。

所有这些数据都通过存储在 CPU 内部 EEPROM 存储器中以及将空白或老化的 CPU 初始化为安全和合理值的例程来实现非易失性。

鉴于锁定问题,我需要一个硬件看门狗,在芯片中找到一个并以 4 秒的间隔实现它,还编程了一个备用引脚以备不时之需,还有一个外部引脚。部署必须等到我解决了硬件问题之后,否则我冒着掩盖我遇到的 I2C 问题的风险。

该程序包含一个 Modbus 接口,允许您读取和写入所有主要内存位置,这样我就可以通过蓝牙编写智能手机 GUI,并且无需使用外壳中的 GUI 即可访问该装置。令我惊讶的是,如果简单地声明为变量,内存映射会向后工作,但如果在数组中,则会向前工作。很快就解决了这个问题,因此多年来在英特尔和摩托罗拉 CPU 上的努力得到了回报。蓝牙通过 Arduino 串行端口和 HC-05 蓝牙模块。

所以这一切都奏效了吗

是的,在晴天,在补偿面板输出后,该装置产生的能量至少与光学跟踪器一样多。然而,在多云的日子里,它是一个赢家,一直在轨道上,我预计千斤顶的维护工作会减少,因为它们每天移动的绝对最小量是跟随太阳所必需的。因此,接下来将对南北塔楼进行改装。

但在我们走之前 - 停车

所以你白天跟踪太阳,但晚上你应该把阵列停在哪里?

这是“一根绳子有多长”的问题之一。这是一个非常复杂的问题,我观察和记录的问题越多,我就越相信它需要“主动/自适应解决方案”。显然,当阵列是扁平的时,风力可以最小化,但是如果你的涡流大小与阵列的大小差不多,它可能会根据压力中心和重心的相对位置而颤动。这在暴风雨中很糟糕。尽管风荷载增加了,但我宁愿使用古老的水手把戏“将她指向风中”,也不愿让阵列颤振。如果您的电池在夜间耗尽,最好在早上将其指向太阳,这样您就可以尽快行动起来。所以所有说过和做过的事情,比如电池电压和风速以及角度的变化(塔摆动)都应该被考虑在内),

更新(2017 年 8 月)

我仍然遇到很多“随机”重启的问题,这会使 I2C 崩溃。更糟糕的是,它永远不会在晴朗的晴天这样做。它是电池并且似乎依赖于风。无论如何,6 周前我幸运地发现它真的重置了。可能会踢自己,这绝对是太阳能调节器出了问题。我假设电机逆风启动或电池没电时会短暂地将设备推入关机/掉电状态,但时间不足以完全重置所有电子设备。因此,一个新的 30A 太阳能调节器单元取代了 10A,我还没有看到它在过去 4 周内重置过一次,包括暴风雨天气。由于电池电量耗尽,它已经离线了几次,但当太阳回来时(外壳关闭)似乎总是能正常启动。

您知道他们怎么说“每个问题的内部都有另一个等待解决的问题”。好吧,一旦主计算机 100% 可靠,您就会开始注意到其他事情。机械卡住继电器 arrhhh,可怕的小坏蛋!我买的板子上肯定只有“John West Rejected”焊接的继电器。它们看起来与真正的优质品牌一样,但与 Ebay 上所有便宜的东西一样“买家当心”。唯一真正的解决方案,买一个 H 开关板(我知道它会变成这样)。所以我已经完成了 Uno 的编程,以实现普通的旧式开/关 H 开关,该程序甚至适合相同数量的字节。我只是在等待董事会的到来。

但是我怎么能把它留在那里呢?我的意思是我有一个 H 开关和天真的 PWM 的 arduino。我怎么能不对电机进行软启动?

好吧……太棒了,我不敢相信所有这些都安装在 UNO 中……我们现在有了软启动和回收计数器。马达现在全速滑行,甜蜜...

计算机和软件运行良好,RTC 以令人讨厌的速度损失时间。只是还不足以让我费心去修复它:)

PWM 软启动很棒,确实消除了机械上的污点。上次检查时钢结构没有裂纹,对此非常满意。

杰克可能很灵活,杰克可能很快,但杰克不够强壮!

这个问题似乎是许多事情的组合。然而,最明显的是远离强风中的“可飞行”角度(0 到 16 度)。前几周多次看到夹子滑落,但我从未在行动中发现它。我想到这是一个限位开关故障,但这意味着硬限位和软限位都失败了。故障千斤顶中心之间的距离比硬限制距离小很多,所以我认为这只是简单的过载。它现在已替换为与东/西轴相同的重型千斤顶。一切似乎都很好,夹子还没有滑落。

关于 GUI 的一点文档

通常旋转编码器更改菜单.. 按下并旋转以更改设置值。当您在保存菜单(8 和 18)上时,按住直到系统显示它已保存数据

如果您希望将新设置闪存到 eeprom(菜单 18 - 按下按钮),所有菜单项都需要您进行保存。这样您就可以测试...如果您喜欢,就保存...如果您不喜欢' 然后重新启动。

时间设置是菜单 1->7 菜单 8 是时间设置/更新 - 按下以保存回 RTC 和 arduino。当您进入菜单 1 或 7 时,显示屏将拍摄当前时间的快照以进行编辑。这样您就可以设置时间并在菜单 8 等待按下和同步的确切时刻,如果您愿意的话。

X 和 Y 最小/最大角度即软限位开关(4 个菜单 19->22)

X 和 Y 滞后,即您跟踪的准确程度。( 2 菜单 16->17)

跟踪模式 ( 1 菜单 13 )

X 和 Y 停车角度(2 个菜单 11->12)

X 和 Y 角度偏移(2 个菜单 14->15)如果需要,这些是为了消除威廉希尔官方网站 板与最终安装的未对准。

X 和 Y 设置角度(2 个菜单 9->10)如果您将跟踪切换为关闭,您可以在此处调高角度(有助于维护)否则这将显示来自计算的目标角度并且实际上是只读的。

三个菜单屏幕仅供显示。

菜单 23 - GPS 坐标/区域 - 需要在代码中设置这些或通过 Modbus 更改,然后通过 modbus 或菜单 18 保存

菜单 24 - 角度 - 传感器、目标和差异

菜单 0 - 时间日期、日出、日落、Dec/AH 和 Alt/AZ

显然,您将时钟设置为您所在时区的标准时间。或者您可以将其设置为格林威治标准时间并使用时区 0 ...无论您喜欢什么。

更新(2018 年 9 月)

故事的第 2 部分

更新(2020 年 7 月)

风荷载问题更多。如果对之前的插孔故障有任何疑问,那么这张照片说明了一切。

我会将此与南北轴线上的问题很少的南北塔进行对比。东跟踪器的太阳能面积为 16 平方米左右,而南北塔只有 9 个。因此,随着尺寸的增加,风力确实会迅速失控。


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

评论(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.obk20.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.obk20.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);