点击上方“大鱼机器人”,选择“置顶/星标公众号”

福利干货,第一时间送达!

作者:稚晖

上一次做磁悬浮还是大二的时候,参加全国电子设计竞赛,做控制组的题目,就是下推式的磁悬浮装置,结果做的还不错拿了特等奖。

最近很多网友在询问毕业设计做什么?刚好这个项目很适合参考。

下推式的磁悬浮的运动原理:

霍尔传感器在浮子的正下方,当检测到浮子向左运动时,两边的线圈一个吸一个拉,把它推向右;反之如果浮子想右运动,那么两个线圈的电流都反向,总共两组共四个这样的线圈,就可以把浮子限制在二维平面之内了。

但是,线圈产生的力是比较小的,因此只能够推动浮子在水平面移动,要克服浮子的重力让它悬浮起来,就要在四个线圈下面再加一个大的环形磁铁提供斥力。

与常见的磁悬浮装置的差异:

如上图(来自TB),可能有人在淘宝上见过类似的磁悬浮玩具,原理图大同小异,比如这个蓝色的里面其实就是一个大的磁铁提供斥力,但是浮子放上去是不稳定的,所以这种玩具需要借助陀螺高速旋转产生的陀螺仪效应维持平衡。

而我设计的装置是不需要浮子旋转的,放上去就能悬浮,对浮子的限制是靠线圈调节的。

接下来,分享设计中的几个要点:

提前需要准备哪些材料?最重要的几样:

  • Arduino主控板

  • 线圈

  • 大磁铁

  • 霍尔传感器

这几个材料中,重点介绍一下霍尔传感器及线圈:

霍尔传感器,是一种测量磁场强度的元件,可以把通过它垂直面的磁力线强度转化为不同的电压值,这样用单片机ADC读取之后就可以得到浮子的位置信息了。霍尔传感器的安装位置很有讲究,前面说了它是测量通过其垂直面的磁力线,也就是浮子发出的磁力线,而我们电磁线圈在调节的同时磁力线也在变,如果这个变化被霍尔感应到了结果就很不可靠了,所以霍尔的安装位置应该是位于四个线圈的中间高度,这里的磁力线刚好是与霍尔平行,不产生影响。用前后左右共四个线圈,两个霍尔传感器配合,就可以把浮子稳定的悬浮住。

霍尔元件一般需要放大电路放大,但是考虑到对一些初学者比较复杂,大家可以考虑直接到网上买那种线性霍尔元件模块,内置放大的直接接到arduino上就能用,注意一定要线性的!还有一种是开关式的只能输出0和1两个值,我们需要的是输出模拟电压的模块。

线圈,这个东西买不到,得自己绕制,去网上买一大卷漆包线就可以了,用支架自己绕上2,3百圈基本就够用。这是我绕的样子:

线圈要产生足够的磁力需要更大一点的电压电流,只用Arduino的5v电压是肯定不够的,我使用的是电脑显示器的电源适配器,最大有12V4A,大家可以自己去网上找找相关的电源适配器,应该不难买的。

如何增加装置稳定性?PID算法或不可缺

为了让悬浮更加稳定,采用了PID控制的平衡算法,对PID算法的了解有助于我们对整个实验原理的理解。

在工程实际中,PID控制是应用最为广泛的调节器控制机制。PID控制中的P代表比例,即proportion;I代表积分,即integral;D代表微分,即differential;因此,PID控制即比例-积分-微分控制。

当被控对象的结构和参数不能完全掌握,或者得不到精确的数学模型时,其他的控制方法难以采用,那么控制器的结构和参数必须结合经验和现场调试来决定,在这种情况下采用PID调节最为方便——

首先,比例控制是一种最简单的控制方式,就像胡克公式中的比例系数一样,当控制器的输出与输入信号成比例关系,那么就可以得到一个比例系数。

其次,积分控制是指控制器的输出与输入的误差信号的积分有关。就如同电路中的电感元件,某个时刻的电压与电流的积分有关。类似的,有时候信号的输出必须综合之前信号的输入,而这种综合往往是求和关系,因此使用积分控制简单易行。

最后,微分控制是指控制器的输出与输入信号的微分有关。最简单的微分关系就是速度是位矢的微分。

我们在控制悬浮物的平衡时,光知道悬浮物偏离平衡位置的位移从而采用比例控制是不够的,对于同样的偏离位移,悬浮物可能有不同的速度,那么要求我们对悬浮物有不同的处理方法,而恰恰速度是位矢的微分。

于是我们可以通过对位移输入数据进行微分操作,来实现对悬浮物的精确实时控制。可见,PID控制器是一种那个动态的控制机制。

以上就是实现下推式磁悬浮的基本原理,借助这些基本原理,结合一定的软件算法实现,我们就可以对悬浮物进行动态控制。

看不懂的可以不管那些废话...总之就是我们把霍尔元件度数也就是浮子的位置作为输入变量输入PID函数,设定一个目标值也就是浮子在中间位置时的读数值,然后把输出赋值给PWM驱动线圈,剩下的就是调整PID参数让它自己控制浮子去啦。

电路难不难?其实电路并不复杂,给一个简化的版本:

这是电源和线圈连接的方式,网上也有很多例程,霍尔用analogRead()读取,PID有arduino的相关库。

当时我是采用Arduino来做的这个项目,用过Arduino的都知道,它是没有定时器中断的,所以在控制项目中,哪怕是很简单的PID算法,都是无法做到精确地固定周期运行。

当然Arduino也有它的好处,就是利用各种方便的库函数进行快速的原型验证。整个装置其实并不复杂,不过是需要控制几个ADC读取霍尔传感器,输出几个PWM控制线圈,中间加点控制算法而已。

经典如PID,对于这种低阶系统其实完全够用了,所以当时经过参数的优化之后,整体的运行效果也还可以接受。

只是追求完美主义的我,在去年又再次改进了这个装置,做了上拉式功能,主控换成了性能强很多的STM32F103C8T6,采用了更复杂的控制算法,最终的悬浮效果非常理想。如果感兴趣,可以下次接着跟大家分享。

资料获取:更新后的磁悬浮原理图开源给大家参考,关注“大鱼机器人”微信公众号,并回复“磁悬浮”获得。

大家好,我是张巧龙,一名电子技术爱好者,会写一些关于硬件与软件结合的技术文章,若觉得文章对你有帮助,转发分享,也是我们继续更新的动力。

长按识别图中二维码关注

这一套磁悬浮PID训练装置,你不能错过。相关推荐

  1. 电子实训与毕业设计开放式训练装置

    ZN-01ABY电子实训与毕业设计开放式训练装置 一.概述 ZN-01ABY电子实训与毕业设计开放式训练装置为开放式结构,积木式组合方式.学生根据自己的要求选择一个实用课题做为课程设计选题,通过抄板. ...

  2. 三年级竖式计算机应用题,小学三年级数学下册计算+应用题专项练习4套,提升训练!...

    原标题:小学三年级数学下册计算+应用题专项练习4套,提升训练! 今天王老师给同学们整理了三年级数学下册计算+应用题专项练习4套,无答案,打印给孩子提升训练! 计算+应用题练习1 一.竖式计算. 27× ...

  3. 下推式磁悬浮PID调节

    PS:看到这么多同学一起学磁悬浮我觉得很高兴,这里我把我自己的代码贴上,希望对各位有帮助 https://download.csdn.net/download/qq_39200996/11159104 ...

  4. 现场总线过程控制系统实验装置

    ZN-68EGC现场总线过程控制系统实验装置 过程控制实验室今后的工作方向是:进一步加强管理体制建设,提高实验室的管理水平和运行效率:以现有实验室硬件为基础,与多的企事业单位.科研机构.大专院校联合, ...

  5. 基于matlab的磁悬浮控制系统,基于MatLab的磁悬浮球控制系统的设计

    基于MatLab的磁悬浮球控制系统的设计 对磁悬浮球系统的构成.控制器的设计.软硬件的实现进行了介绍.采用M (本文共4页) 阅读全文>> 磁悬浮技术是集电磁学.电子技术.控制工程.信号处 ...

  6. 新记录诞生,腾讯云2分31秒打破ImageNet训练记录

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 8月21日,腾讯云正式对外宣布成功创造了128卡训练ImageNet业界新记录,以2分31秒的成 ...

  7. 南韩开创AI训练 可自产深度学习数据集

    对许多公司而言,机器学习虽然可以省下不少时间,但光是产出训练数据就要先砸下不少资源.硅谷新创公司「超・AI」(Superb AI)看准这一点,推出能够帮忙标记数据集的 AI,大幅减少人工的麻烦. AI ...

  8. PyTorch-混合精度训练

    简介 自动混合精度训练(auto Mixed Precision,amp)是深度学习比较流行的一个训练技巧,它可以大幅度降低训练的成本并提高训练的速度,因此在竞赛中受到了较多的关注.此前,比较流行的混 ...

  9. 为传递函数自动设定PID参数——pidtune学习笔记

    装置模型和PID控制器的基本模型 在命令行里设计PID控制器 装置模型为一个传递函数: sys=1(s+1)3s y s=\frac{1}{(s+1)^{3}} sys=(s+1)31​ 首先创建一个 ...

最新文章

  1. dmol3给定关键字不在字典中_python中的数据结构与算法(2):字典与集合
  2. 兄弟俩都是院士!哥哥在南大,弟弟在复旦
  3. 第一天开通博客,记录自己在编程道路上的点点滴滴
  4. js进阶 11-22/23 js如何实现选项卡
  5. 图解TCP协议中的三次握手和四次挥手
  6. 代码质量的几点新思考
  7. The Closest M Points BZOJ 3053
  8. 阿里云服务器(windows2012)
  9. Abp vnext Web应用程序开发教程 8 —— 作者:应用程序层
  10. 为RedHat系统安装发布版的PostgreSQL数据库
  11. 矿区无人机影像地物提取(语义分割)
  12. python定时器毫秒_Python实现定时精度可调节的定时器
  13. Android应用开发提高系列(5)——Android动态加载(下)——加载已安装APK中的类和资源...
  14. pchunter驱动加载失败_电脑开机显示自动修复失败无法进入系统,解决方法
  15. PDF文档无法注释或高亮的解决办法
  16. 如何由网址查找IP地址
  17. 大学生活_网络营销实验
  18. R语言——矩阵中删除缺省值可用的函数
  19. java 音乐识别_使用java获取歌曲的属性
  20. 卸载cuda,以及N卡驱动

热门文章

  1. SAP UI5 事件通知技术的实现之Eventbus.subscribe
  2. SAP UI5 intent supported
  3. 处理ABAP Netweaver gateway service使用过程中遇到的400 error - invalid key predicate type for guid
  4. CRM WebClient UI里标准configuration和custom configuration区别
  5. IBASE search
  6. 用SAP BSP应用实现图片灰度效果
  7. 使用pscp命令将windows系统里的文件传送到远程服务器
  8. SAP CRM产品主数据重要函数COM_PRODUCT_UI_GETDETAIL的调试
  9. oracle求部门请假类别合计_【大话IT】求oracle sql 写法,找出同类的合计,所有的总计...
  10. 模块降额设计_模块电源需要注意的四个点