黄工无刷电机学习
直播中

吕钢格

7年用户 970经验值
私信 关注
[问答]

用Arduino控制舵机的方法有哪几种啊?

什么是舵机?
用Arduino控制舵机的方法有哪几种啊?分别有什么优点?

Arduino是如何控制无刷电机的?

回帖(1)

王欣

2021-7-21 10:36:42
1.Arduino控制舵机
舵机是一种位置伺服的驱动器,主要是由外壳、威廉希尔官方网站 板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准威廉希尔官方网站 ,产生周期为20ms,宽度为1.5ms的基准信号(给舵机1.5ms脉宽、周期为20ms的PWM信号,舵机应该处在中位),将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由威廉希尔官方网站 板上的IC判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围 是0 度到180 度。
所有的舵机都有外接三根线,一般用棕、红、橙三种颜色进行区分,棕色为接地线,红色为电源正极线,橙色为信号线。
舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms (50Hz),理论上脉宽分布应在1ms到2ms 之间,但是,事实上脉宽 可由0.5ms 到2.5ms 之间,脉宽和舵机的转角0°~180°相对应。有一点值得注意的地方,由于舵机牌子不同,对于同一信号,不同牌子的舵机旋转的角度也会有所不同。
用Arduino 控制舵机的方法有两种,一种是通过Arduino的普通数字传感器接口产生占空比不同的方波,模拟产生PWM信号进行舵机定位,第二种是直接利用Arduino 自带的Servo函数进行舵机的控制, 这种控制方法的优点在于程序编写,缺点是只能控制2路舵机,因为 Arduino 自带函数只能利用数字9、10 接口。Arduino 的驱动能力有限,所以当需要控制1 个以上的舵机时需要外接电源。
1.1 方法一:模拟产生PWM信号
将舵机接数字12接口上(这种方法不是使用analogwrite产生PWM,因此不必使用PWM口)。编写一个程序让舵机转动到用户输入数字所对应的角度数的位置,并将角度打印显示到屏幕上。


1.2 方法二:自带的Servo函数

使用时必须#include 《Servo.h》
Servo也是一个Class,可以创建自己的Servo,例如:Servo myservo;
1、attach(接口)——设定舵机的接口(数字9或10)
2、write(角度)——设定旋转角度(0°~180°)
3、read()读取舵机角度


2. Arduino控制无刷电机
关于电调的控制信号:电调信号是pwm信号,信号频率为50Hz,一个周期为20ms。对于电调来讲,高电平脉宽为1ms表示停转,高电平脉宽为2ms表示满油门运转;对于舵机来说1.5ms是归中,1ms和2ms分别为左右满舵。(因此下面才直接用Servo库来给实现ESC信号的输出)。

关于Servo.write()和Servo.writeMicroseconds()
0.Servo.writeMicroseconds(): Writes a value in microseconds (uS) to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft. On standard servos a parameter value of 1000 is fully counter-clockwise, 2000 is fully clockwise, and 1500 is in the middle.
1.servo.write() allows a maximum of 180 servo positions
servo.writeMicroseconds() allows a maximum of 1000 servo positions
2.The “write” method simply maps the “degrees” to microseconds and calls the “writeMicroseconds” method anyway.
The “degree” of turn is simply a convenient abstraction, and few bother to calibrate it.
控制程序:


补充:电调1ms停转,2ms满油门运转,是指的单向电调,且是方波脉冲。而一般双向电调,1ms反转最大油门,1.5油门中点,2ms满油门正转。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分