11816| 12
|
[项目] 【自制无人机】Arduino+无刷电机+PID实现平衡木 |
本帖最后由 云天 于 2020-8-8 22:40 编辑 【前言】 之前,一直用Arduino和无刷电机的电调纠缠。先说正解,【自制无人机】“辛”路历程(六)电调中提到的控制程序是没有问题的。 [mw_shl_code=c,false]#include <Servo.h> // Using servo library to control ESC Servo esc; // Creating a servo class with name as esc int val; // Creating a variable val void setup() { esc.attach(9); // Specify the esc signal pin,Here as D9 esc.writeMicroseconds(1000); // initialize the signal to 1000 Serial.begin(9600); } void loop() { val= analogRead(A0); // Read input from analog pin a0 and store in val val= map(val, 0, 1023,1000,2000); // mapping val to minimum and maximum(Change if needed) Serial.println(val); esc.writeMicroseconds(val); // using val as the signal to esc }[/mw_shl_code] 【Mind+代码】实现控制无刷电机 这个项目中断了很长一段时间,原因是我不明白,1、Arduino有时能通过电调控制电机,有时不能,问题出在哪?2、也在于我只有一个无刷电机和一个电调,用不了替换法,不知是哪个出问题?3、还有就是,有网友说,可以用Arduino程序通过电调调整电机的油门,我一直做不好。 【调整油门】 看过这个帖子“MTO1804无刷电机引发的悲惨经历之二——电调优化”后,我测试出我的电调是没有问题的。我把测试过程简单的陈述一下: 1、下载软件叫做BLHeliSuite 进入下载页面,记住要下载BLHeliSuite16714902。 2、首先使用Arduino Uno(其他大多数Arduino板也行)连接到电脑,识别后选中Arduino的接口,如下图设置: 3、在ESC Setup标签中线选择正确的Interface 4、选择正确的Arduino接口,然后点击Connect,再点Check 5、正确识别 注意:电调的白色Sig线接到Uno的D11,黑色的Gnd接Uno的地线,连接的时候一般先插信号线,后插电源线,断开连接的时候则先拔电源线,再拔信号线。电调由3s锂电池供电,不用和Arduino共地。 至此,我可以调整电机油门了。 【替换法】 我又从DF商城上买了三个MTO1804无刷电机 可我怎么买了三个CW电机,三个!三个!三个!我手里的是一个CCW电机。(CW和CCW都表示旋转的方向,【CW】clockwise 的缩写,表示顺时针旋转【CCW】counter-clockwise的缩写,表示逆时针旋转) 通过电调与电机交替测试,测试出电调是好的,电机是坏的。测试过程中,又一个电机被我玩坏了。怎么坏的?都是螺丝惹的祸。 新坏的 之前弄坏的 热缩管被螺丝穿透 新坏的,用导线连接,并用导电液修补连接处。 之前坏的可直接用焊上。 至此,两电机修好。一,我认为弄坏两电机,我个人责任最大;二,我同时认为设计上出存在缺陷。 【三轴加速】 测试MMA7361三轴加速度传感器,MIND+ X轴接在A0上,测得平衡位置,值为330左右。 【平衡木】 两电机电调分别接在9,10口上。 程序中使用PID算法。 【PID算法】 可参考如下帖子: PID无刷电机控制教程丨Arduino控制丨无人机测试小实验 【演示视频】 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed