30997| 10
|
[项目] Arduino控制磁悬浮演示 |
本帖最后由 金轮法王 于 2015-9-2 02:35 编辑 Arduino控制磁悬浮演示 磁悬浮演示装置:是一个可以通过磁力悬浮的装置,在这个装置中我们可以悬浮物件。通过pid算法得出一组可以使物件平稳悬浮的参数。这次做得磁悬浮演示主要参照了动力老男孩博客盗梦陀螺的方案 Step1:所需硬件
制作过程 Step2:硬件准备 a. 线圈的选择: 线圈我这里是淘宝直接买到的成品,有兴趣的大家可以自己买漆包线和线圈骨架自己绕线圈(一个线圈大概是八百匝左右)制作线圈的时候不能选有铁芯的漆包线 b. 关于浮子: 浮子一定要选择磁性强的钕铁硼强磁,浮子在测试的时候最好包上一圈保护塑料袋减少浮子和底盘磁铁碰撞产生的损坏。 c. 线性霍尔传感器在测试的时候比较容易损坏,需要多准备几个有备无患。 Step3:电路连接 下推式电路示意图 连线图 焊接过程中主控板与放大电路的连接应该没有问题,比较关键的是线圈部分的安装: 1) 两个线圈的同名端相接,构成一对线圈。另一对也一样。也就是说对应的两组线圈要头尾串联连接。(产生一斥一拉的效果) 2) 霍尔传感器的位置尽量在线圈中轴线上,高度上也尽量放在中心的高度。 3) 一对线圈接L298的OUT1,OUT2,另一对接L298n的OUT3,OUT4。刚开始这个不是很严格,你只要一对线圈接一组输出就可以。但是如果你成功后,你就要记住你哪对线圈接OUT1,2;哪对线圈接OUT3,4;一对线圈中哪根线接了OUT1,哪根线接了OUT2。不然你拆了下来,在接上去和上次的接法不同,那你就悲剧了,要在调了。(可以在线圈上标记出对应的数字以免接错) 标记的对应两组线圈 Step4 Mega168的应用 这边引用一段老男孩博客里Android Mega的介绍: Android Mega一共有四种IO接口:模拟输入输出和数字输入输出。其中模拟输入标记为“ANALOG IN”,可以测量0~5V的电压,对应在代码中的读数范围是0~1023,示例代码如下:
模拟输出实际上输出的是一串方波,通过高低电压的占空比来产生“平均电压”。在板上对应的标记是PWM,输出电压同样是0~5V,但是请注意设置的数值范围却是0~255。示例代码如下:
数字输入输出需要先设置管脚的模式,直接看示例代码吧:
其中0~53所有的接口都可以作为数字输入输出接口,而其中只有2~13可以用作PWM模拟输出。模拟输入的接口编号是0~15,和刚才的编号是互相独立的,不会冲突。对于盗梦陀螺来说,传感器和电位器的读数显然要用模拟输入,而线圈电流的控制也显然要用模拟输出。强烈建议把接线的编号集中写在程序的最前面,这样可以一目了然的看出是怎么接的线:
细心的朋友一定看到上面代码中,有I1到I4四个接口,我将会把它们设置成数字输出。这里再顺便介绍下L298N的用法。 L298N直接连接了20V的电源,通过板内取电的方式提供5V电压给电路使用。板上包含了对称的两组电流驱动电路,以I1,I2,EA为例:
我们可以用数字输出I1和I2控制线圈的电压方向,用模拟输出EA控制电压的大小。I3,I4和EB是完全一样的,这里就不多说啦。友情提醒一下,Arduino的地线,L298N的地线,还有焊接电路的地线,这些地线一定要都连在一起。的地线,这些地线一定要都连在一起。 附完整代码PID.rar Step5 PID参数调整关于PID控制简单来说就是通过比例(P)积分(I)微分(D)控制的调节器控制。 调节过程中调P的话,会左右的抖动,而且幅度会越来越大。可以开始加上一些Kd,Kd偏小的时候表现就是震荡,Kd偏大的时候表现是无法稳定,从侧面滑走。原理虽然并不算特别复杂,但是在实际测试的时候PID参数的调整还是一个非常耗时的过程。(在接近正确参数的时候可以适当增加浮子的负重,增加的稳定性相当可观) |
阿斯蒂芬a 发表于 2017-2-9 21:15 霍尔元件与arduino怎么连的啊,小白一个,求各位大佬帮帮忙 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed