• stm32控制舵机sg90


    一、sg90简介

    首先介绍说一下什么是舵机。舵机是一种位置(角度)伺服的驱动器。适用于一些需要角度不断变化的,可以保持的控制系统。sg90就是舵机的一种。

    sg90

    舵机的工作原理比较简单。舵机内部有一个基准电压,单片机产生的PWM信号通过信号线进入舵机,与舵机内部的基准电压作比较,获得电压差输出。电压差的正负输出到电机驱动芯片上,从而决定正反转。开始旋转的时候,舵机内部通过级联减速齿轮带动电位器旋转,使得电压差为零,电机停止转动。

    二、引脚连接

    sg90有三个引脚,分别是红线(VCC),棕线(GND)和橙线(信号线)。通常使用5V供电,信号线接单片机引脚,用老来接收单片机发送的PWM。

    三、控制方法

    控制sg90舵机旋转也比较简单,只需要给它输出PWM波,修改占空比就可以调整角度。sg90的控制一般需要一个20ms 左右的时基脉冲,脉冲的高电平部分一般在0.5ms~2.5ms。高电平持续时间与旋转角度的对应关系如下

    高电平持续时间/ms舵机角度/°
    0.50
    1.045
    1.590
    2.0135
    2.5180

    四、程序设计

    这里以180°的sg90,来展示一下程序设计

    4.2 编写控制程序

    根据高电平持续时间与角度关系对应表格来编写sg90的控制程序

    1. while(1)
    2. {
    3. TIM_SetCompare1(TIM3,195); // 旋转到0°
    4. delay_ms(500);
    5. TIM_SetCompare1(TIM3,190); // 旋转到45°
    6. delay_ms(500);
    7. TIM_SetCompare1(TIM3,185); // 旋转到90°
    8. delay_ms(500);
    9. TIM_SetCompare1(TIM3,180); // 旋转到135°
    10. delay_ms(500);
    11. TIM_SetCompare1(TIM3,175); // 旋转到180°
    12. delay_ms(500);
    13. }

    文部分内容转载自:STM32外设系列—sg90(舵机) (jnnr.cn)感谢分享

    看上面这个代码就是采用调用函数的方式来控制旋转角度,所以这个函数就是一个产生PWM的函数

  • 相关阅读:
    2.mysql--备份恢复
    Git操作指南:子模块、用户名修改和Subtree
    Java线程stop,sleep,yield,join
    【基于MAX78000的智能边缘应用设计大赛】
    创新的营销模式与线上商城的完美结合
    shell_56.Linux永久重定向
    网络扫描程序设计
    全局唯一ID
    猿创征文|Redis的知识总结与项目应用
    【Java实现】合并两个有序链表
  • 原文地址:https://blog.csdn.net/geniusChinaHN/article/details/134362999