利用Micropython使用舵机SG90(已封装)

一.舵机的分类

  1. 数字舵机

  1. 模拟舵机

其中数字舵机只需要传递一次信号,而模拟舵机则需要不断地传递信号。数字舵机的反应快,角度更为精准,无反应的范围小,但所需要的动力更大(相较于模拟舵机)。

二.sg90的外观及接线方法

这是网上常见的sg90的电机图片,可以看出sg90电机引出了三根线:电源线(红线),GND线(棕线),数据线(黄线)。

三.sg90舵机的相关参数

其中,sg90的转动范围为0°—180°

四.sg90舵机驱动的原理

相较于其他模块,sg90的驱动非常简单,其驱动取决于高电平t在整个周期T(20ms)内所占的时间,即通过不同脉宽的pwm信号,来实现对sg90舵机的驱动。

五.代码编写

microPython内置了Pin模块和PWM模块,这使得我们对代码的编写轻松了许多,代码编写的依据仍是第四点的“舵机输出转角与输入信号脉冲宽度的关系”。

from machine import Pin,PWM
import math
import time
class SERVO:
    
    def __init__(self,pin,freq=50):
        '函数的初始化'
        '参数:引脚,频率'
        self.pwm=PWM(pin,freq=freq,duty=0)
        self.freq=50'pwm引脚的频率,50hz正好对应20ms'
        self.Min_fx=0'设定最小的转动角度'
        self.Max_fx=180'设定最大的转动角度'

    def servo_writefx(self,degrees=None,radians=None,sleep=0):
        '方法函数,使得舵机转过指定角度,需要用关键字的指定来设定参数。'
        '参数:角度,弧度(二者任选一),舵机sleep的时间(单位为ms)'
        if degrees==None:
            degrees=math.degrees(radians)

        if degrees>self.Max_fx or degrees<self.Min_fx:
            return 
        Duty=int((degrees/90+0.5)/20*1023)
        self.pwm.duty(Duty)
        time.sleep_ms(sleep)

项目链接:https://wokwi.com/projects/356203385540533249

六.参考文献

单片机——SG90舵机工作原理》——https://blog.csdn.net/qq_41873236/article/details/116353829理

舵机的基本了解以及数字舵机和模拟舵机的区别》——https://blog.csdn.net/xiantiaoop/article/details/106118817

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值