Micropython RP2040 驱动MG90S

MG90S是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其驱动原理如下:

  1. 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。
  2. 它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号(为舵机转动时的中间位置),将获得的直流偏置电压与电位器的电压比较,获得电压差输出。
  3. 最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

标准的舵机有3条导线,分别是:电源线(红色)、地线 (棕色)、控制线(黄色)
其工作原理:PWM信号由接收通道进入信号解调电路进行解调,获得一个直流偏置电压。直流偏置电压与电位器的电压比较,获得电压差并输出。该输出送入电机驱动集成电路以驱动电机正反转。当电机转动时,通过级联减速齿轮带动电位器旋转,直到电压差为0,电机停止转动。
舵机的控制信号是PWM信号,利用占空比的变化,改变舵机的位置。
 

舵机控制 

舵机一般用单片机或者数字电路控制。舵机工作主要跟控制线的高电平持续时间有关系,一般按0.5ms(毫秒)划分,如果持续时间为0.5ms,1ms,1.5ms,2ms,2.5ms时,舵机会转过不同的角度。

180°舵机高电平时长对应角度转动

高电平持续时间转动角度        
0.5ms      0°       
1ms45°
1.5ms90°
2ms135°
2.5ms180°

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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值