外观:

接线方法:

棕色----------------GND
红色----------------VCC
橙色----------------信号线

原理:

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

怎么样才能让舵机动起来呢?                                                                                                           既然舵机是靠脉冲驱动的,那我们给舵机一定的脉冲就能够让它动起来。                                    有一个时间周期(20ms),如果高电平占1ms,低电平占19ms,那么占空比就是5%,这里有舵机旋转所需的占比(以180°舵机为例):

0.5ms
  
  0度
  
  1ms
  
  45度
  
  1.5ms
  
  90度
  
  2ms
  
  135度
  
  2.5ms
  
  180度

由次可以知道,高电平占空比越大,舵机旋转角度越大,记住舵机有最大角度限制,占空比最大不能大过可旋转角度所需占空比,不然舵机转不过去,卡在那里,对舵机的寿命也有一定影响。

软件设计:

我们知道想让舵机转动,必须给舵机一个脉冲,脉冲说白了就是高低电平,高低电平的占比不同,转的角度也就不同。
这里使用51的定时器,每过0.1ms计时一次,20ms为一个周期,同时定义一个变量,一个常量,将二者进行比较即可。

程序:

//实际上想让舵机转到指定角度,是需要自己实验的,每个舵机都不一样,原理是参考的。
#include <reg52.h>sbit SEV_PWM = P1^7;                               //设定PWM输出的I/O端口,有个引脚输出unsigned char count = 0;                         //比较值
unsigned char SEV_conut=9;                         //pwm控制值/*延时程序*/
void Delay(unsigned int s)
{unsigned int i;for(i=0; i<s; i++);for(i=0; i<s; i++);
}/*定时器T0初始化*/
void Com_Init()
{TMOD |= 0x01;                       //定时器T0设置成方式1TH0 = 0xff;                         //定时常数 0.1ms 晶振为11.0592MHzTL0 = 0xa4;ET0 = 1;                                                     //中断标志    TR0 = 1;                                                     //定时器开关EA=1;                                                     //总开关
}/*T0中断初始化*/
void Time0_Init() interrupt 1
{TR0 = 0;                                              //定时器开关TH0 = 0xff;                         //重装时间常数 0.1msTL0 = 0xa4;count++;                       //比较值,很关键if(count <= SEV_conut)           //5==0° 10==90°{ SEV_PWM = 1;                //高电平}else { SEV_PWM = 0;             //低电平}if (count >= 200)              //T = 20ms清零  20ms为周期,重新开始{ count = 0; }TR0 = 1;                       //开启T0
}void main()
{Com_Init();                            //中断初始化,打开定时器while(1){   SEV_conut=9;  count=0;                         //重新赋值,重新比较Delay(50000);                    //延时是为了留一些时间给舵机反映。SEV_conut=2;count=0;Delay(50000);SEV_conut=17;count=0;Delay(50000);}
}

总结:

控制舵机其实就是控制输出PWM,而PWM的输出就需要配置51单片机的定时器,总的来说还是要对51单片机的定时器熟悉。

基于51单片机让SG90舵机动起来相关推荐

  1. 51单片机控制SG90舵机、MG90S舵机

    舵机的控制信号为周期是20ms 的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化.也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应 ...

  2. 51单片机控制sg90舵机

    1.PWM PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就 ...

  3. 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)

    + 一.HC-SR04超声波模块 二.SG90舵机 三.总程序编写 一.HC-SR04超声波模块 HC-SR04时序图 触发信号输入端(Trig)输入一个10微秒以上的高电平信号,超声发送口收到信号自 ...

  4. 最简单DIY基于51单片机的舵机控制器

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  5. (含代码)基于51单片机的红外遥控(独立按键)舵机开关灯控制

    硬件说明: 采用STC89C51作为主控芯片,结合SG90舵机模块,红外遥控(独立按键),等电路模块实现远程控制舵机. 应用实例: 在不改变外部电路的情况下,实现远程开灯,关灯. 远程控制机器开关状态 ...

  6. 最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  7. 基于51单片机密码锁-舵机开锁-CXM

    这个项目的起因还是因为每次进出寝室十分的麻烦才有了这个项目 所以我和我的铁子就决定搞个密码锁 我负责软件我的铁子负责硬件 目录 原理图 主要功能函数讲解 硬件 先简单介绍一下整个架构 原理图 主要功能 ...

  8. 基于51单片机智能小车(超声波+舵机)

    基于stc89c52单片机避障+舵机两驱三轮智能小车 前期准备:学会使用Keil4,学好51单片机基本知识,学会控制IO的输入与输出,内容学到外部中断,定时器,(串口通信,可以实现蓝牙控制) 准备材料 ...

  9. 基于51单片机的简易雷达定位装置

    简易超声波雷达 任务: 一. 摘要: 超声波测距广泛运用于各类电子产品精确距离测量,如汽车尾部的倒车雷达对倒车时的障碍物进行精确判断,反馈到驾驶员,使驾驶员能做出准确的判断和操作:各类航模中当即将触地 ...

最新文章

  1. Podman中如何运行一个 Linux 虚拟机?
  2. qt dll 1% 不是有效的win32应用程序
  3. MFC中进度条控件的使用方法
  4. Javaweb学习笔记——(二十二)——————文件上传、下载、Javamail
  5. 云服务器的IT价值与部署分析
  6. HALCON 21.11:深度学习笔记---分类(10)
  7. vc java动态库_Java调用已经写好的VC++动态链接库
  8. Springboot使用Filter以及踩过的坑
  9. 张俊芳电机学18章计算题以及答案
  10. python网易云_使用Python实现下载网易云音乐的高清MV
  11. 运算放大器分析----虚短和虚断简单计算
  12. java计算机毕业设计ssm拼团旅游系统element 前后端分离
  13. 程序员与黑客的故事 程序员应有的工作素质
  14. 2022-05微软漏洞通告
  15. NR TAC Tracking Area Code
  16. python3是什么意思啊_python3指的是什么意思
  17. 测评Mimick模型对词向量重构效果
  18. 【转载】让盐和味精告诉你,「变量」是什么 | 亲子课堂 第 4 课
  19. html5 canvas绘制圆形印章,以及与页面交互
  20. C语言学习2:Hello World!详解

热门文章

  1. session的删除
  2. 寻找终极流量,县镇市场+线下零售+社交零售会是什么?
  3. 【uniapp】微信小程序体验版的下载文件一直显示加载中,开发调试则没有问题
  4. FAT和NTFS文件系统的区别
  5. JavaScript中 with的用法
  6. php结课报告总结,课程总结以及笔记整理
  7. Linux系统占用cpu病毒处理记录
  8. 无代码六月大事件|2022无代码探索者大会即将召开;AI增强型无代码工具推出...
  9. win7资源管理器停止工作或总是重启
  10. 下一代Web图像格式:JPEG、JPEG XR、JPEG2000、WebP、BPG(重要)