评论
呃……看看马林的架构……除了破解基于计时器的功能外,没有什么好的方法可以解决这个问题。这个断言是否遗漏了什么? |
提交补丁。或者做一个硬件保护。(恒温器与加热器串联) 在启动期间检查连接中有一些东西。不是在打印期间。 |
我可以看看是否可以检查电源是否处于最大功率 x 分钟。但这可能会在启动期间产生错误触发(从低温加热到 200C)。如果 x 需要很高,那么保护就不够好。 为了获得良好的保护,需要一个热模型。但是谁会为所有不同的热端制作呢?也许它可以从 PID 常数中提取出来。 如果这很容易,我很久以前就实现了它。 |
最简单的方法是使用功率不足以破坏 2012 年 10 月 3 日 20:04,ErikZalm notifications@github.com写道:
|
我真的很喜欢那个硬件创意。我刚刚和 Kliment 就此开了一个长长的玩笑。花了一段时间,但我们终于开始谈论代码实现。就像 nophead 指出的那样,有一个手表计时器应该可以解决这个问题,但显然它对某些未指定的硬件群体不起作用(错误触发)。我很高兴你们没有以“关闭 – 不是问题”来回应。现在有了很大的不同,我们至少有社区评论,作者可以反驳像我这样的用户。 在我看来,应该有一种方法来参数化触发器,这样,如果它给我错误的触发器,我可以调整它以消除它,并具有安全功能。这就是我正在考虑寻找补丁的原因。硬件的想法可能更酷我也会从几个人身上反弹。 |
实际上这听起来可能很愚蠢 b/c 我认为手表计时器的配置已经与我刚才描述的相似。我知道这个功能是“火车停靠站”。我看到参数化已经在手表时间范围内。手表计时器算法对我来说看起来很不稳定。它总是在检查手表计时器并且它在检查是否增加了 1?也许我读错了。我想要一个它设置的状态变量,这样 loop() 就不会做任何其他事情。我想让火车停下来,直到操作员重置它。 |
使用中断(如果还有的话)可能会成功,如果火车停下来,我可能会启用它……或者可以禁用它。我的意思是,如果在固件中正确理解此事件,那么它就是一个关机事件。只是大声思考… |
好的 – 该功能确实完全损坏了。在 setwatch 的条件中有一个错字,因此 1) setWatch 被破坏了。2) 多个挤出机的 setWatch 损坏。3) manage_heaters 处理 watchperiod 的检查——它对于多个挤出机来说是坏的。4) Marlin.c 只检查 M104 或 M109——一旦达到目标,manage_heaters 就会停止检查。看…这种关注点分离的缺失贯穿于 Marlin 和 Sprinter。添加一个 PrinterState 类将在很大程度上提供帮助——并且可能促进公众做出更强有力的贡献。我离题了……我在#4上的观点是——如果我打开它,该功能需要持续运行——我认为它应该默认打开。我不明白这个关于错误触发的讨论是什么……这是什么胡说八道?默认的监视周期是 20 秒——所以我遗漏了什么关于这个功能的错误触发是如何报告的?会不会是……打错了? |
该补丁正在印刷部件上进行测试。然而…我怎样才能将补丁提交给你?Github 好像不让我给你发消息,还是他们隐藏了?我的叉子在 Bitbucket 上,那是我操作的地方 b/c 免费管理的私人 git 回购比那些花钱的要好。 此功能将节省 50-100 美元/pc 热端,并可能防止一两次火灾风险。不幸的是,HBP 没有手表计时器的实现。我没有添加 PrinterState 类 b/c,它可能会阻碍补丁的接受。与缺少(长)演员表的计时器比较中似乎存在另一个错误。 修复基本上是这样工作的:“如果加热器打开并且 X 秒已经过去,那么温度是否上升了 Y?如果是,将温度设置为 0;如果没有再次检查 X 毫秒”,其中 X 和 Y 被配置在configuration_adv.h。 我更多地考虑了恒温器的概念……但我错了,它不是很酷。这里的问题是测量温度的速率。一段时间内的变化 – 并期待关于该测量的一些事情。恒温器不是非常适合此任务的组件。许多数字恒温器不是围绕热敏电阻或数字电阻构建的吗?该解决方案是否引入了更多可能会失败的组件?该解决方案是否仍需要固件备份? 我如何将此补丁发送给您 – 或从 Bitbucket 中提取? |
为什么要使用私有存储库?我有兴趣查看补丁,但我首先需要在 bitbucket 上创建一个帐户,然后被告知“访问被拒绝”。你不能只在 gitup 上克隆项目并将你的补丁推送给公众,或者使用一些 pastebin 站点并以明文形式粘贴“git format-patch”的输出吗?任何人都可以查看而无需在任何地方注册的任何内容… |
好的,我的代码工作了一段时间然后就坏了。从观察中收集整个算法。需要更聪明和重写。这并不是我们想说的,“如果时间过去了,温度应该在这个增量范围内”。我们想说,“如果时间流逝,温度的变化率应该具有一定的特性”。具体来说,如果我们通电时温度正在下降,则下降速度应该减慢、停止,然后变为负值(温度升高)。如果当我们通电时温度在上升,我们希望看到变化率是恒定的——这取决于所施加的功率。我将需要对 PID 实现有更多的了解,并需要处理更多的事情。 |
@martinxyz我指的是 Bitbucket 以 0 美元的价格提供私人回购。你以为我的意思是我的补丁在私人仓库中吗?Github 想要对同样的东西收取月费。我认为我在 Bitbucket 上 90% 的回购都是公开的,但我喜欢 100% 免费的概念……对我来说似乎更开源。 我正在重写补丁。没有不会工作的傻傻瓜。从此处 2560 的数据点获取二阶导数应该很有趣。 |
Github 对开源项目是免费的 2012 年 10 月 5 日 15:18,Free notifications@github.com写道:
|
b/c 我怀疑这在 MEGA 上是否可行并驱动 5 个步进电机… |
@tenaciousRas我了解您是否更喜欢 Bitbucket。但是我不能看你的补丁。您发布的链接似乎指向一个私人场所。请问可以公开吗? 关于从热端滑出的热电偶,我认为您需要的是加热器如何耦合到测量点的基本物理模型(假设最差的合理耦合)。我将尝试为我的热端建模(这是一个有趣的挑战)并告诉你我是否得出任何结论。傅里叶变换对我来说听起来太复杂了。这种问题通常用一个或两个有泄漏的积分器来建模,这只是一些加法和乘法来实现。 |
好的,根据我的模型(我已将其安装到实际功率和温度输出),我的 ultimaker hotend 可以达到大约 650 度。Eek 初始加热(从冷启动)期间的故障似乎是最容易检测到的,我们可以在这里做出一些合理的假设:如果在全功率运行一分钟后它没有达到 50 度,那么热端不仅仅是低于-通电但坏了 – 停止尝试。我认为从冷启动到 UM 热端过热至少需要 3 分钟。 仍在考虑打印过程中更奇特的解决方案,我认为功率限制可能是可行的方法(但动态的,在设定点更改期间增加限制)。如果需要,最重要的模型参数并不难估计:初始加热期间的加热器功率,以及在保持固定温度一段时间的情况下向室温的隔离(但是在打开/关闭风扇时可能会发生显着变化)。 |
我的坏私人是 BB 上的默认设置,我认为我设置正确。 I agree FFT is probably out of scope for this MCU. I did at least a couple/few more hours of research after that post. There is certainly evidence for signal analysis of thermistor data to handle similar (or the same) problem in other machines. Unfortunately I couldn’t find anything that was shared or open. My investigations led me to look at Thiel-Sen approximations and how to opimize them for 8-bit MCUs. The journal article I found that describes an algorithm to do this in O(n log n) contains some advanced |
预期:如果热敏电阻在打印时从热端物理移除(由于事故),Sprinter 应该能够识别即使正在通电,温度读数也不会正常工作,因为存在硬件故障。换句话说,Sprinter 无法避免或检测到这种致命情况。一旦发生此事件,热端很可能会因过热而损坏,或者更糟的情况可能会发生在用户身上。
实际情况:Sprinter 会让您从马车上烧掉热端,如果您真的疏忽大意,它可能会对您、您的家人和/或财产造成火灾隐患。
由于 Marlin 基于 Sprinter,这两个固件都暴露了这个关键问题。请修复此问题或要求社区提交补丁。