单片机PWM舵机控制

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

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

 文章来源地址https://www.toymoban.com/news/detail-424826.html

文章目录

  • 一、PWM是什么?
  • 二、如何控制舵机?

 

 

一、PWM是什么?

PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进
行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通
过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的
时间占据整个信号周期的百分比,例如方波的占空比就是50%.

脉冲宽度调制
通过占空比编码模拟信号
占空比 一个周期内,高电平占据时长的百分比

 

二、如何控制舵机?

1. 什么是舵机
如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制
用处:垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等
常见的有0-90°、0-180°、0-360°

 2. 怎么控制舵机
向黄色信号线“灌入”PWM信号,通过控制高电平的时间,来控制舵机的角度
PWM波的频率不能太高,大约50HZ,即周期=1/频率=1/50=0.02s,20ms左右
数据:
0.5ms-------------0度; 2.5% 对应函数中占空比为250
1.0ms------------45度; 5.0% 对应函数中占空比为500
1.5ms------------90度; 7.5% 对应函数中占空比为750
2.0ms-----------135度; 10.0% 对应函数中占空比为1000
2.5ms-----------180度; 12.5% 对应函数中占空比为1250

3、定时器定时

定时器需要定时20ms, 关心的单位0.5ms, 40个的0.5ms,初值0.5ms,定时器看晶振频率。

加1经过了多少时间
当晶振频率(时钟频率)是11.0592MHz的时候,等于11059.2KHz = 11059200Hz
机器周期 = 12 x 时钟周期 =12 x (1/时钟频率) 秒 = 12 / 时钟频率 秒 = 12 / 11059200 秒 = 12 000 000/ 11059200 微秒 = 1.085 微秒
 

代码如下(示例):

#include <reg52.h>
int jd;
sbit sg90_c = P1^1;
int cnt =0;
void Delay300ms()		//@11.0592MHz
{
	unsigned char i, j, k;
	
	i = 3;
	j = 26;
	k = 223;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void Time0init() 		//定时器0初始化
{
	//1.配置定时器0工作模式位16位计时
	TMOD=0x01;  //TL0,TH0全用 0 1
	//2.给初值,定一个10ms出来
	TL0= 0x33;
	TH0= 0xFE;  //TL0存放低八位00,TH0存放高8位DC
	
	//3.开始计时
	TR0=1;
	//4.打开定时器0中断
	ET0=1;
	//5.打开总中断EA
	EA=1;
}

void main()
{
	Delay300ms();
	Time0init();
	jd =1;  		//角度为1,即只有一个0.5ms的高电平,为0°
	cnt = 0;
	sg90_c = 1;  //先让舵机一开始处于高电平
	//4.爆表了
	
	while(1)
	{
		jd=4;		//舵机转135°时,高电平时间是2ms,需要4个0.5ms
		cnt =0;
		Delay300ms();
		jd = 1;
		cnt=0;
		Delay300ms();
	}
}

//TF0爆表时,硬件自动调用中断函数
void Time0Handler() interrupt 1  //定时器0的中断号
{
		
		
	cnt++;
	//重新赋初值
	TL0=0x33;
	TH0=0xFE;
	if(cnt<jd) 		//舵机转135°时,高电平时间是2ms,需要4个0.5ms
	{
		sg90_c=1;  
	}
	else
	{
		sg90_c = 0;  //一直保持低电平到结束
	}
	if(cnt==40)  //爆表40次,经过20ms,结束第一次PWM周期,PWM为50HZ
	{
		cnt=0;    //重新让cnt从0开始,计算下一次的20ms
		sg90_c=1; //每次cnt为0时(即初始状态)处于高电平,等待PWM
	}
		
}

 


 

 

 

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

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

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

相关文章

  • C51单片机定时器2实现SG90舵机控制

    谈起舵机最初的了解应用于航模,偶然的机会在网上看到有牛人使用多个舵机做人形机器人的关节,感觉这小东西很有趣,蒙发了买来学习学习的想法,这已经是多年前的事了,后来由于某些原因,这个想法直到今年才落地。小东西到手后,把玩了解后,本人把学习过程记录

    2023年04月24日
    浏览(41)
  • 如何使用单片机 pwm 控制 mos 管?

    目录 选择适合的硬件 连接电路 编写代码 参考示例 程序一 程序二 测试与调试 注意事项         使用单片机(如常见的Arduino、STM32等)通过PWM(脉冲宽度调制)控制MOS管(金属氧化物半导体场效应管)是一种常见的电路控制方法。以下是一个基本的设计步骤指南: 选择

    2024年04月15日
    浏览(31)
  • 单片机控制PWM的直流电机调速系统的设计

    单片机控制PWM的直流电机调速系统的设计  摘 要:在国民生产中,随着现代技术的发展,电力电子技术已得到了全面的发展,其技术已应用到各个领域。在各类机电系统中,由于直流电机具有良好的启动、制动和调速性能,直流电机调速系统已广泛运用于工业、航天领域的各个

    2024年02月04日
    浏览(30)
  • 基于51单片机的三轴机械臂控制系统(PWM)

    2021年参加校内电子竞赛所做的课题,发出来留作纪念,也希望能对大家有所帮助。 此项目获得了校电赛三等奖: ) 方案一:使用纯模拟电路控制,利用三极管的通断,一些模拟集成电路(电压比较器、RC延时电路、NE555芯片等)来实现对电机的延时控制,从而达到机械手的各方

    2024年02月02日
    浏览(68)
  • stm32F103单片机pwm控制伺服驱动器进而控制步进电机

    1.需要一台步进电机,私服驱动器,stm32单片机;先按照说明文档,连接好硬件相关线路,对应好sign+,sign-,puls+,puls-线路,其中sign只是个io口拉高拉低操作,puls是pwm波形输出口,虽然有两根线,但只是需要控制一个IO口输出波形即可; 采用主从模式,TIM1为主定时器,tim3未从定

    2024年02月04日
    浏览(40)
  • 81、基于STM32单片机智能台灯 PWM调光坐姿矫正 灯光控制定时台灯设计

    毕设帮助、开题指导、技术解答(有偿)见文末。 目录 摘要 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图  六、硬件框图 七、流程图 八、程序源码 九、资料包括 随着社会在不断进步,高科技含量决定着产品发展的新趋势和前景,智能化技术在电子产品领

    2024年02月02日
    浏览(44)
  • 基于51单片机的PWM控制直流电机设计( proteus仿真+程序+报告+讲解视频)

    仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0031 基于51单片机的PWM控制直流电机设计 1.设计要求 采用51单片机作为核心控制器,控制直流电机的正转,反转,制动,停止。 2.功能要求 1)数码管显示当前转动方向和当前的PWM占空比0~100%。 2)电机

    2023年04月25日
    浏览(39)
  • Proteus基于51单片机通过PWM脉冲调制控制电机转速_按键与串口控制转速_电机转速可测

    临近期末,学校的单片机课程需要做课程设计,主要内容是基于51单片机的可调速电机,具体要求如下,在此记录一下具体的一个解题方案。 要求利用单片机输出PWM波形,通过改变占空比,改变电枢两端电压的平均值,从而改变电动机的转速 通过按键进行手动速度调整(速度

    2023年04月14日
    浏览(53)
  • 单片机中的PWM(脉宽调制)的工作原理以及它在电机控制中的应用。

    目录 工作原理 在电机控制中的应用 脉宽调制(PWM)是一种在单片机中常用的控制技术,它通过调整信号的脉冲宽度来控制输出信号的平均电平。PWM常用于模拟输出一个可调电平的数字信号,用于控制电机速度、亮度、电压等。   产生PWM信号: 单片机内部的定时器/计数器通

    2024年01月23日
    浏览(50)
  • 电力电子课设|数控产生PWM波|使用51单片机输出占空比可调PWM波(按钮控制、数码管显示)速成教程

    我们学校电气专业开始做电力电子的课设了,小组选了一项制作硬件电路的任务,里面有要求采用 数控方式 实现DC-DC电压变换的输出电压调节,数控在电路中的体现就是用单片机输出可调占空比的PWM波作用于IRF520模块,实现电压的变化,作用于SG3525芯片的2引脚。考虑到可能

    2024年02月16日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包