Arduino对Flexinol精确位置控制

62 篇文章 7 订阅

Flexinol,也称为肌肉线,是一种由镍钛诺制成的结实轻巧的电线,可以在导电时收缩。 在本文中,我将基于控制Flexinol电路中的电压,提出一种精确控制这种效果的方法。 此外,利用Flexinol的电阻随着收缩而可预测地下降的事实,此处描述的机制将导线本身用作反馈控制回路中的传感器,优点是减少了零件数量并降低了机械复杂性。

围绕一个Arduino Uno构建,我将它们组合在一起进行实验的设置非常简单,希望可以轻松重复。 为了驱动Flexinol,它使用可以由通用零件组装而成的自制数模转换器(DAC)。 为了计算电阻,使用Arduino的本地模拟到数字(ADC)外设来测量Flexinol两端的电压降。 电路的控制代码首先进行自我校准,然后逐步执行一组目标,尝试在从完全放松到完全收缩的整个范围内保持位置。 在整个运行过程中,数据被发送到Arduino串行监视器进行观察和研究。

事实证明,实现Flexinol机构的精确,低抖动位置控制非常困难。 尽管在机器人项目中,Flexinol的收缩通常是由电驱动的,但导致收缩的形状记忆效应实际上是温度的函数。 在一种叫做电阻加热的恰当命名的现象中,电流使电线变热并收缩。 仅凭其本身,很难控制细线中的电阻加热,其中涉及诸如环境温度,空气流量,海拔高度甚至湿度之类的变量。 但是,除了这些环境基本知识以外,控制Flexinol还需要对金属丝如何实际响应温度变化有充分透彻的了解。

在大多数业余项目中使用的Flexinol控制开关模型中,我们通常会给电线提供足够多的电流来加热它,并完全过渡到收缩奥氏体相。 然后,我们完全去除电,以使电线冷却并过渡到松弛的马氏体相。 幸运的是,对于手头的努力,Flexinol不仅可以在特定温度下转变,而且在相当宽的温度范围内效果会逐渐提高。 整个温度跨度因配方而异,但通常在40-70摄氏度之间。

上图是从Flexinol规格文件改编而来的,上面的图表显示了摄氏温度与高温Flexinol的收缩百分比之间的关系。 显而易见的是,Flexinol的温度响应是非线性的。 它逐渐开始,加速到大部分有用的物理转变都发生在温度变化约10度时,然后逐渐减小。 第二个观察结果是,与将Flexinol加热至奥氏体相时相比,将Flexinol加热至奥氏体相时的相变温度存在显着差异。 加热时,完全收缩和完全放松之间的中点约为100度; 冷却时,中点约为70度。 该30度的间隙被称为相变温度滞后。

还需要考虑的事实是,当更改提供给Flexinol的电流时,温度不会立即变化,因此需要时间来加热或冷却。 因此,更改电流后,Flexinol不会立即移动到新位置,而是会持续收缩或放松几秒钟。 如果在Flexinol仍稳定下来的情况下继续更改电流,则我们会超出目标,并且该机制最终会在目标上来回摆动,而不是保持稳定。 转换滞后和散热问题使过冲进一步复杂化。 在当前情况下,电流按比例增加或减小直到到达所需位置的典型反馈控制方法无法很好地工作。

在此处介绍的解决方案中,通过校准来考虑相变温度滞后,以便在给定位置既有预定的加热电压值又有预定的冷却电压值。 如果Flexinol太放松而无法保持目标位置,则将预热值输入DAC。 如果Flexinol对于该位置而言过于收缩,则将冷却值输入DAC。

每次运行程序时,在校准过程中确定加热和冷却值。 校准的第一步是通过测量Flexinol完全松弛和完全收缩时的电阻来建立基线。 在第二步中,向Flexinol施加的电压将稳定增加,然后稳定降低,同时计算Flexinol的电阻。 当达到某些目标电阻值时,DAC值存储在查找表中。 在进行校准时,电流以适度的速度变化,这是在给Flexinol时间安定到新位置的同时又保持足够快的移动速度以供使用之间的折衷。 尽管此方法不能完全消除过冲,但可以通过在高分辨率下相对连续地进行采样并根据需要在加热和冷却电流之间进行切换,可以将机制中的抖动降低到微不足道的水平。

设置

计算电阻

结果

代码

详情参阅 - 亚图跨际

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值