当前位置:   article > 正文

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

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供电。

程序

  1. #include <Servo.h>
  2. Servo myservo1;//
  3. int Max=2000; //转速最大时候的pwm
  4. int Min=1000; //转速最小时候的pwm
  5. int pos=Min; //初始转速赋值
  6. int sign=0; //标志位,用于切换转速增大还是减小
  7. void setup() {
  8. myservo1.attach(9); //pwm输出口为9号端口
  9. myservo1.write(Max); //输出定义的pwm最大值,模拟遥控器油门打到最大
  10. delay(5000); //等待电机设定最大值,会滴滴的发出声音
  11. myservo1.write(Min); //输出定义的pwm最小值,模拟遥控器油门打到最小
  12. delay(5000); //等待电机设定最小值,会滴滴滴的发出声音
  13. Serial.begin(9600);
  14. }
  15. void loop() //电机转速从小变大再变小,反复循环. pwm数值会从串口输出。
  16. {
  17. delay(10);
  18. if(sign==0) //让转速逐渐增大,增大到最大速度的一半
  19. {
  20. Serial.println(pos);
  21. myservo1.write(pos); //输出pwm到9号端口
  22. pos++;
  23. if(pos==(Max+Min)/2)
  24. sign=1;
  25. }
  26. if(sign==1) //让转速逐渐减小,减小到电机停止转动
  27. {
  28. Serial.println(pos);
  29. myservo1.write(pos); //输出pwm到9号端口
  30. pos--;
  31. if(pos==Min)
  32. sign=0;
  33. }
  34. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/608362
推荐阅读
相关标签
  

闽ICP备14008679号