2690| 2
|
【自制无人机】“辛”路历程(二)电机转动 |
【自制无人机】“辛”路历程(二) 【前言】 继续昨天的学习,昨天知道了无人机需要飞控 dfrobot说的接收机应该就是飞控。之前我也用Microbit接上,但我用的是数字口发高低电平,也听到了电机发出的声音,但不启动,当时不知是什么原因。 【网络查询】 1、飞控到无刷电调的信号是什么类型的信号 是pwm ,50hz的信号,周期20ms,高电平1ms~2ms就是油门的最小油门和最大油门 电调驱动电机转动需要两个步骤: (1)先给电调最大油门,你会听到“哔哔”; (2)“哔哔”后你再给电调最小油门,会听到”哔哔毕“,然后是一声较长的”毕“; (3)这时电调就准备好了,给一个1~2ms范围内的油门就可以转动了 PWM的介绍: PWM是一种调制方式,那么为什么会有这种方式存在?大家可能知道Arduino有模拟输入引脚,这些引脚是通过A/D转换操作的,而一般的数字引脚却只能输入HIGH或LOW电平,那么中间电平可否输出呢?比如2v的电平如何输出?于是PWM应运而生。PWM的高明之处在于:它输出的仍然是HIGH或者LOW电平,但可以间歇性周期性输出,则利用取平均值的方法,可以达到满意的输出效果。一个简单的例子:在0~5s内输出5v的电平,那么0~5s的平均电压就是5v,而倘若我在0~2.5s输出5v,在2.5~5s输出0v(占空比50%),那么这5s内平均电平就是2.5v,显然可以达到我们想要的效果。但仍有问题:倘若你的周期很长,就像上面例子所说,周期5s,点亮一个LED灯(LOW亮,HIGH灭),那么LED灯显然是前2.5s灭,后2.5s亮,显然达不到调灯暗亮的效果。但当周期被缩小之后比如20ms,这时候亮与灭只是很短时间内的事,肉眼根本看不到亮灭的变化,因而LED灯表现的就是亮度变暗。于是我们知道:PWM调制的周期一般比较短。PWM只是用数字输出替代模拟量输出,因此单方面还是不行的,这就要求我们的设备还要支持PWM的调制。(比如舵机等)。因而PWM的周期也不能任意短,还需要满足我们设备的调制要求。 【个人测试】 使用Microbit向电调发pwm信号。 到这不知怎么设置了,再查资料,多数是介绍Arduino控制电调。好,换Arduino。 【Arduino测试】 [应用教程]Arduino控制电调 按上面的说法,“电调可以进入编程模式。而且电调首次使用,没调制好油门行程,也是不能驱动电机的。”此作者手头上并没有遥控器,于是改了一下代码,模拟设置油门行程。他的电机动了。但他使用的是好盈电调,我的电调是不是也是这样? 我试了一下他的代码,没有反应,不知是不是这段程序只是设置。电机不动,后面再研究。 接下来,这段代码让电机动起来了。 是这个帖子里的用Arduino控制无刷电机电调的最简方法 【程序代码】 [mw_shl_code=java,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,1390,1600); // mapping val to minimum and maximum(Change if needed)//这里我进行了调整,我发现角度传感器映射后,调到1410后电机开始启动,到1600以上后停转。这里是不是和我之前的设置有关? Serial.println(val); esc.writeMicroseconds(val);// using val as the signal to esc }[/mw_shl_code] 【连接图】 连接方式和上图一致,我用的主板是dfrobot“LEONARDO”。 【演示视频】 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed