失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > arduino uno模拟遥控器控制无刷电机

arduino uno模拟遥控器控制无刷电机

时间:2022-05-05 05:03:59

相关推荐

arduino uno模拟遥控器控制无刷电机

原理:arduino模拟遥控器

以无人机的无刷电机为例,遥控器与无刷电机进行校准:

1.遥控器将油门打到最大

2.接收机油门输出端口的pwm输出最大,(一般在2000左右)

3.pwm输出到电调

4.给电调上电

5.因为输出到电调的pwm比较大,电调进行校对,设定现在的值为最大值,并发出滴滴声

6.遥控器将油门打到最小

7.接收机油门油门输出端口的pwm输出最小,(一般在1000左右)

8.pwm输出到电调

9.电调设定现在的值为最小值,并发出滴滴滴声

10.慢慢把遥控器往上掰,无刷电机开始转动。

我们用arduino代替遥控器和接收机,只需要arduino去模拟遥控器的pwm输出给电调就好了,不用纠结接收机的pwm具体是多少,因为电调会和arduino的pwm重新校对最大值和最小值。

接线

电调与无刷电机的线接好,不用考虑接线顺序,随便调转接的2根线就能实现正反转。

电调的白线是数据端口接arduion 9号端口。(arduino输出pwm给电调)

电调的红色是电源端口接arduion 的vin端口。(给arduino供电)

电调的黑线是共地端口接arduion 的GND端口。(共地)

假如电调没有红色的电源线,可以不接。但是要而外给arduino供电。

程序

#include <Servo.h>Servo myservo1;//int Max=2000; //转速最大时候的pwmint Min=1000; //转速最小时候的pwmint pos=Min; //初始转速赋值int sign=0; //标志位,用于切换转速增大还是减小void setup() {myservo1.attach(9); //pwm输出口为9号端口myservo1.write(Max); //输出定义的pwm最大值,模拟遥控器油门打到最大delay(5000); //等待电机设定最大值,会滴滴的发出声音myservo1.write(Min); //输出定义的pwm最小值,模拟遥控器油门打到最小delay(5000); //等待电机设定最小值,会滴滴滴的发出声音Serial.begin(9600); }void loop() //电机转速从小变大再变小,反复循环. pwm数值会从串口输出。{delay(10);if(sign==0) //让转速逐渐增大,增大到最大速度的一半{Serial.println(pos); myservo1.write(pos); //输出pwm到9号端口pos++;if(pos==(Max+Min)/2)sign=1; }if(sign==1) //让转速逐渐减小,减小到电机停止转动{Serial.println(pos);myservo1.write(pos); //输出pwm到9号端口pos--;if(pos==Min)sign=0;}}

如果觉得《arduino uno模拟遥控器控制无刷电机》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。