MG90S是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其驱动原理如下:
- 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。
- 它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号(为舵机转动时的中间位置),将获得的直流偏置电压与电位器的电压比较,获得电压差输出。
- 最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。
标准的舵机有3条导线,分别是:电源线(红色)、地线 (棕色)、控制线(黄色)
其工作原理:PWM信号由接收通道进入信号解调电路进行解调,获得一个直流偏置电压。直流偏置电压与电位器的电压比较,获得电压差并输出。该输出送入电机驱动集成电路以驱动电机正反转。当电机转动时,通过级联减速齿轮带动电位器旋转,直到电压差为0,电机停止转动。
舵机的控制信号是PWM信号,利用占空比的变化,改变舵机的位置。
舵机控制
舵机一般用单片机或者数字电路控制。舵机工作主要跟控制线的高电平持续时间有关系,一般按0.5ms(毫秒)划分,如果持续时间为0.5ms,1ms,1.5ms,2ms,2.5ms时,舵机会转过不同的角度。
高电平持续时间 | 转动角度 |
0.5ms | 0° |
1ms | 45° |
1.5ms | 90° |
2ms | 135° |
2.5ms | 180° |
python代码说明
在RP2040中,PWM波的数值区间为0-65535,而舵机的控制信号的周期为20ms,这里换算一下:
0.5/20*65535 ≈ 1638
当信号值给到1638时,高电平持续时长为0.5ms,舵机的转动角度为0°,同理可以换算出转动90°、180°时所需要的数值,通过生成不同占空比的PWM并连接到舵机的信号线上就可以实现控制舵机转动的角度。
from machine import PWM,Pin
import time
def tutor_180(PIN,angle):
duty = float(6554)/float(180)*angle+1638
print(angle)
p = PWM(PIN)
p.freq(50)
p.duty_u16(int(duty))
def tutor_270(angle,PIN):
duty = float(6554)/float(270)*angle+1638#将角度换算成模拟值
print(angle)
p = PWM(PIN)#生成PWM波
p.freq(50)
p.duty_u16(int(duty))
# while True:
# for i in range(1,11):
# tutor_180(14,i*5)
# time.sleep(0.1)
tutor_180(14,180)