登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] [舵机相关]SG90解析及控制方法

[复制链接]
发表于 2019-2-13 20:10:36 | 显示全部楼层 |阅读模式
学习笔记
学习科目: SG90舵机相关的知识
学习安排: 熟悉舵机真格器件
开始时间: 2019-02-13
结束时间: 2019-02-14
舵机原理及控制方法(基于SG90舵机)[size=10.5000pt]这次想要与大家分享交流的是小舵机相关的内容,就是那种很经典的蓝色舵机——SG90舵机。话说舵机,它到底是一种什么样的东西呢?其实呀,它从它的名字就可以知道,大家想,与舵有关的词,“舵手”掌握航行方向的人,“总舵主”,一个帮派掌握全局把握发展方向的人,哈哈,扯的有点远了,但是很形象,其实舵机呢,它就是我们用来控制方向的一种机械子装置。这是我们通俗的叫法,其实它的名字叫做伺服电机,它的组成如下:
舵机组成部件.jpg
Driveshaft 驱动轮轴(作用显而易见)
Gear train 齿轮传动链(有扩大力距的作用)
Poten tiometer 电位计(比较模拟输入电压与基准电压)
Control electronics 控制电路(根据比较结果控制转角)
Motor 马达(动力源)   
它的应用也很广泛:比如,机器人关节,跳一跳物理外挂的点按臂,航模方向控制等。 qq_pic_merged_1550055801660.jpg 物理外挂.gif
接下来是最重要的就是关于他的工作控制原理。关于它的控制呢,先告诉大家,他其实非常容易控制,就是有一点需要大家注意,它比较“娇气”,在没有程序时最好不要把它接在板子上,否则他可能会卡住,因为它会一直朝一个方向转,但是舵机,他只能转固定的角度,不能够连轴转,不像我们的直流电机那样。控制所用到的主要知识就是PWM的知识。他一共有三根线,棕色的是GND橙色的是VCC,黄色的是PWM信号线,对于控制呢,我根据我的理解简单的总结为这样:信号线输入一个可变的PWM信号,此时PWM信号可以理解为一种模拟电压,电压的高低由脉宽的宽度所决定,内部的电路把这个电压与内部的基准电压作比较,根据比较的结果控制电路会做出相应的动作。比如向左转一定角度,向右转一定角度转的角度,具体由PWM的宽度所决定,根据厂家所给的参数控制的细节摘要如下:p wm的频率是50赫兹,脉冲宽度要在0.5毫秒到2.5毫秒之间,如果这样规定的话那么每一个脉冲宽度所对应的控制的角度如下:0.5毫秒,对应负90度,1.5毫秒对应0度,2.5毫秒对应正90度,(或者你是按0~180分的话,那么对应的分别是0.5毫秒,2.5毫秒)下面是一个具体的程序,就是说输出脉宽为1.5毫秒的PWM波,也就是说让这个舵机归中(转0度)。先看效果: 归中效果.gif
程序思路:程序如下:具体思路是定时0.1ms,再定义一个变量,0200,那么转0度,需要1.5ms的脉宽,也就是15*0.1ms左右(具体看你自己的舵机,会有误差,你自己调试,我的是13),我晶振11.0592MHz,其他不变,还是12的单片机:[mw_shl_code=c,true]
#include <STC12C5A60S2.H>

unsigned char count = 0;
unsigned char Ang_Control = 0;


void Init_Servo();

sbit PWM = P1^3;


void main ()
{
        Init_Servo();
       
       
        EA = 1;

       
        Ang_Control = 12;
        while (1);
       
               
                       
       
}

void Init_Servo()
{
        PWM = 0;
        TMOD = 0x01;
    TL0 = 0xa4;                //设置定时初值
        TH0 = 0xFF;                //设置定时初值
        ET0 = 1;
        TR0 = 1;
}

void Interrupt_0 () interrupt 1
{
       
    TL0 = 0xa4;                //设置定时初值
        TH0 = 0xFF;                //设置定时初值
        count++;

        if (count >= 200)
        {
                count = 0;
               
        }
       
        if (count <= Ang_Control)
        {
                PWM = 1;
        }
        else
        {
                PWM = 0;
        }
       

       
}
[/mw_shl_code]
归中.jpg
舵机接线定义.jpg

评分

参与人数 1铜板 +10 收起 理由
如果让他嘎斯 + 10 很给力!

查看全部评分

好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表