赞
踩
以无人机的无刷电机为例,遥控器与无刷电机进行校准:
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; //转速最大时候的pwm
- int Min=1000; //转速最小时候的pwm
- int 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;
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。