51单片机实现SG90舵机任意角度转动

这篇具有很好参考价值的文章主要介绍了51单片机实现SG90舵机任意角度转动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考单片机——SG90舵机工作原理_掏一淘哆啦A梦的奇妙口袋的博客-CSDN博客​​​​​​

这位博主做的代码,在此基础上进行简单修改成可以用51单片机的定时器和中断实现SG90舵机任意角度转动

完整代码如下:

#include <REGX52.H>
 
sbit PWM=P0^0;      //对应舵机的PWM引脚,自己修改
int count=0;        //全局变量count用于定时器计数
int c=0;	        //这个值为高低电平的临界值,可以改变,
                    //这里初始化为0表示开始让舵机复位到0度位置(输出0.5ms的高电平)

int th;
int tl;
int co;

			
void angle_Init(int angle)    //这里定义一个函数,根据不同角度进行定时器初值的修改
{
	th=(65536-(11.0592/12)*(500+angle/0.09));
	tl=(65536-(11.0592/12)*(500+angle/0.09));
	co=((20000*11.0592/12)/(500+angle/0.09));
}



void Timer_Init()
{
  TMOD=0X01;      
  TH0=th/256;
  TL0=tl%256;       
  ET0=1;          
  TR0=1;          
  EA=1;           
}


void main()
{
	angle_Init(0);
	Timer_Init();
	
	while(1);
}


void Timer() interrupt 1     
{
  TH0=th/256;
  TL0=tl%256;       
  
  if(count<=c)	
  {
    PWM=1;		
  }
  else
  {
    PWM=0;
  }
  count++;
	
  if(count>=co)		
  {
    count=0;
  }
}

 这里对主要的内容进行解释。

	th=(65536-(11.0592/12)*(500+angle/0.09));
	tl=(65536-(11.0592/12)*(500+angle/0.09));

根据51单片机定时器计数初值的计算方法,这里采用模式1,最大计数为2^16,晶振为11.0592MHz,所以计数初值为

注意这里计时时间单位应该为us。按照所参考的SG90舵机的资料,我们可以得到高电平时间和转角之间的关系

51单片机实现SG90舵机任意角度转动,51单片机,嵌入式硬件

代入上式即可。

51单片机实现SG90舵机任意角度转动,51单片机,嵌入式硬件

co=((20000*11.0592/12)/(500+angle/0.09));

 这里主要是考虑一个周期20ms时要清零进行下一周期。主要就是根据count参数,当count大于co时进行清零。所以co的计算就是在20ms内count++了几次。20ms共需要计数20000*11.0592/12次,除以一次定时计数次数(500+angle/0.09)。

本文章是在自己学习51单片机时总结的,由于需要控制舵机旋转任意角度,网上也找不到相关内容,所以自己摸索出来,本人知识水平有限,难免出现错误,欢迎指出。文章来源地址https://www.toymoban.com/news/detail-596911.html

到了这里,关于51单片机实现SG90舵机任意角度转动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32单片机】STM32控制SG90舵机的PWM部分参数的设置解答

    我们要知道,SG90舵机接收的PWM信号的参数:f=50Hz,T=1/f,所以周期为20ms。 当高电平的脉宽在0.5ms-2.5ms之间时舵机就可以对应旋转到不同的角度。 换句话说,我们要用单片机产生一个 周期(20ms) 的PWM波,然后获得对应这些时长(分别是 0.5ms 、 1ms 、 1.5ms 、 2ms 、 2.5ms )的 高电

    2024年02月13日
    浏览(53)
  • STM32F103RCT6驱动SG90舵机-完成正反转角度控制

    SG90是一种微型舵机,也被称为伺服电机。它是一种小型、低成本的直流电机,通常用于模型和机器人控制等应用中。SG90舵机可以通过电子信号来控制其精确的位置和速度。它具有体积小、重量轻、响应快等特点,因此在各种小型机械设备上得到了广泛应用。 SG90舵机通常用于

    2024年02月03日
    浏览(62)
  • 基于51单片机的舵机控制(PWM)

    舵机是一种位置伺服的驱动器,常被用于遥控汽车、机器人等领域,结构主要包括小型直流电机、变速齿轮组、可调电位器和控制电路板四个部分,如下图,舵机的外部一般接有三根线,分别是黑(接地线)、红(电源线)、棕(白或者黄,信号线)三种颜色进行区分。 2.

    2024年02月16日
    浏览(42)
  • 51单片机步进电机角度控制详解(免费提供代码+仿真)

    我个人认为,步进电机的基本原理和介绍看看其他博主的介绍就好了。我比较希望讲一下我对步进电机的关于自己一种理解方式,可能与真正步进电机的原理差的有点大。下面还是给一下我推荐的一些博主对步进电机的介绍文章。 百度步进电机链接 步进电机驱动及原理—s

    2023年04月18日
    浏览(42)
  • 51单片机的串口实验之数码管显示与按键实验(8位数字任意传输)

    目标效果: 1、电脑发送任意小于=8位数字( SUBF只有8位最大只能发送255,但是可以通过数组进行临时存储来实现传输多字节 )数字,在数码管上显示对应的数字且同时满足高位是0可以不显示  2、矩阵按键按下后,电脑接收所按下的按钮 实验器材: 1、普中51单片机。2、ST

    2024年02月02日
    浏览(48)
  • 【51单片机-数码管】:用51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s

             用普中51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s。         随机数码管 00-99  循环0.5s  显示。        数码管是一种数字显示器件,它由多个发光二极管(LED)组成,可以显示数字、字母、符号等

    2024年02月07日
    浏览(53)
  • 摇杆按键+SG90 实现舵机云台(STM32F103C8T6)

    STM32F103C8T6最小系统板*1 SG90舵机(180°)*2 摇杆按键*1 舵机支架*1 面包板*1(非必须) 杜邦线若干 类似这种的支架,不过需要自己裁切嵌入的部分 代码很简单,主要使用ADC双通道读取两个电位器的值(实际上就是电压),通过获取到的值的范围来确定上下左右,从而来改变两

    2024年02月14日
    浏览(50)
  • SG90舵机介绍

    SG90舵机简介        SG90舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片

    2024年02月02日
    浏览(39)
  • SG90舵机使用介绍

    型号:SG90 接线 黄线:信号线 红线:电源线 棕线:地线 PWM周期 需要通过信号线往舵机输入PWM波,才能驱动舵机转动 PWM波的频率不能太高,大约50HZ,即周期=1/频率=1/50=0.02s,20ms左右 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角

    2024年02月13日
    浏览(33)
  • 【STM32】 SG90舵机

    目录 一:介绍 二:传感器参数 三:接口说明 四:SG90舵机模块接口原理图 五:SG90舵机模块实物图 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。 目前,在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用

    2024年02月06日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包