51单片机STC89C52RC——14.1 直流电机调速

目录

目的/效果

1:电机转速同步LED呼吸灯

2 通过独立按键 控制直流电机转速。

一,STC单片机模块

二,直流电机 

2.1 简介

2.2 驱动电路

2.2.1 大功率器件直接驱动

2.2.2 H桥驱动

正转

反转

2.2.3 ULN2003D 引脚、电路

2.3 PWM(脉冲宽度调制)

 2.3.1 什么是PWM

2.3.2 PWM的频率

2.3.3 PWM的周期

2.3.4 占空比

2.3.5 PWM的主要用途 

2.4 控制流程

2.4.1 模拟LED呼吸灯控制电机转速

2.4.2 独立按键控制电机转速(类似于电风扇档位切换)

三,创建Keil项目

四,代码 

4.1 电机转速同步LED呼吸灯

4.2 独立按键对电机调速 

五,代码编译、下载到51单片机


目的/效果

1:电机转速同步LED呼吸灯

2 通过独立按键 控制直流电机转速。

K1:降低速度

K2:增大速度

一,STC单片机模块

二,直流电机 

2.1 简介

直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 。直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 。除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等。

2.2 驱动电路

2.2.1 大功率器件直接驱动

电路图

这种只能朝一个方向转。

电路导通图

这里为什么有个续流二极管,因为电机、继电器 都是电感(物理惯性导致电路电压超过电源电压)元件 。

在断开电路瞬间,会产生很高的电压。对晶体管有击穿损伤。我们来看断开瞬间的电流方向。

有了这个续流二极管,可以形成回路,降低对晶体管的击穿损害

2.2.2 H桥驱动

形状像“H”所以称为H桥,可以实现程序控制电机正传和反转

正转

反转

2.2.3 ULN2003D 引脚、电路

这里我们将VCC接电机一个引脚,P10引脚对应OUT1,

将P10引脚输出0  (高电平)电机转动

将P10引脚输出1  (低电平)电机停止转动

断开瞬间电流方向

其内部基本电路是达林顿管 

 

2.3 PWM(脉冲宽度调制)

 本节与《51单片机STC89C52RC——10.1 LED呼吸灯-CSDN博客》保持一致。

 2.3.1 什么是PWM

​脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 ​

2.3.2 PWM的频率

是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期);

也就是说一秒钟PWM有多少个周期
单位: Hz
表示方式: 50Hz 100Hz

2.3.3 PWM的周期

T=1/f
周期=1/频率
50Hz = 20ms 一个周期

如果频率为50Hz ,也就是说一个周期是20ms 那么一秒钟就有 50次PWM周期

2.3.4 占空比


是一个脉冲周期内,高电平的时间与整个周期时间的比例
单位: % (0%-100%)
表示方式:20% 

周期为T
T1为高电平时间
T2 为低电平时间

假设周期T为 1s 那么频率就是 1Hz 那么高电平时间0.5s ,低电平时间0.5s 总的占空比就是 0.5 /1 =50%

 控制LED的通断时间比例,占空比。如下图

2.3.5 PWM的主要用途 

PWM对电机转速的控制
占空比可以实现对电机转速的调节,我们知道,占空比是高电平在一个周期之中的比值,高电平的所占的比值越大,占空比就越大,对于直流电机来讲,电机输出端引脚是高电平电机就可以转动,当输出端高电平时,电机会转动,但是是一点一点的提速,在高电平突然转向低电平时,电机由于电感有防止电流突变的作用是不会停止的,会保持这原有的转速,以此往复,电机的转速就是周期内输出的平均电压值,所以实质上我们调速是将电机处于一种,似停非停,似全速转动又非全速转动的状态,那么在一个周期的平均速度就是我们占空比调出来的速度了,

在电机控制中,电压越大,电机转速越快,而通过PWM输出不同的模拟电压,便可以使电机达到不同的输出转速

当然,在电机控制中,不同的电机都有其适应的频率 频率太低会导致运动不稳定,如果频率刚好在人耳听觉范围,有时还会听到呼啸声。频率太高的电机可能反应不过来

正常的电机频率在 6-16kHZ之间为好

PWM对舵机的控制
舵机的控制就是通过一个固定的频率,给其不同的占空比的,来控制舵机不同的转角

舵机的频率一般为频率为50HZ,也就是一个20ms左右的时基脉冲,而脉冲的高电平部分一般为0.5ms-2.5ms范围。来控制舵机不同的转角

500-2500us的PWM高电平部分对应控制180度舵机的0-180度

以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;

2.4 控制流程

2.4.1 模拟LED呼吸灯控制电机转速

与LED呼吸灯控制方式相同,分为两个阶段:
第一阶段:由暗到亮。就是输出占空比由0%到100%以1%为间隔递增,共100个周期。
第二阶段:由亮到暗。就是输出占空比由100%到0%以1%为间隔递减,共100个周期。

这里我们直接复用LED呼吸灯的代码。加一个电机供电引脚的输出。

        for(Time=0;Time<100;Time++)		//改变亮灭时间,由暗到亮
		{
			for(i=0;i<20;i++)			//计次延时
			{
				LED=0;					//LED亮
				Motor=1;				//电机转
				Delay(Time);			//延时Time
				LED=1;					//LED灭
				Motor=0;				//电机停
				Delay(100-Time);		//延时100-Time
			}
		}
		for(Time=100;Time>0;Time--)		//改变亮灭时间,由亮到暗
		{
			for(i=0;i<20;i++)			//计次延时
			{
				LED=0;					//LED亮
				Motor=1;				//电机转
				Delay(Time);			//延时Time
				LED=1;					//LED灭
				Motor=0;				//电机停
				Delay(100-Time);		//延时100-Time
			}
		}

2.4.2 独立按键控制电机转速(类似于电风扇档位切换)

通过独立按键调整占空比,每个档位固定一个占空比,实现电风扇档位切换。

三,创建Keil项目

详细参考:51单片机STC89C52RC——创建Keil项目-CSDN博客

四,代码 

代码详情 请参考 STC89C52RC: 51单片机学习资料、代码

4.1 电机转速同步LED呼吸灯

#include <REGX52.H>

sbit LED=P2^0;		//LED 呼吸灯
sbit Motor=P1^0;	//电机供电
/**
 * 函    数:延时函数
 * 参    数:无
 * 返 回 值:无
 */
void Delay(unsigned int t)
{
	while(t--);
}
/**
 * 函    数:主函数
 * 参    数:无
 * 返 回 值:无
 */
void main()
{
	unsigned char Time,i;
	while(1)
	{
		for(Time=0;Time<100;Time++)		//改变亮灭时间,由暗到亮
		{
			for(i=0;i<20;i++)			//计次延时
			{
				LED=0;					//LED亮
				Motor=1;				//电机转
				Delay(Time);			//延时Time
				LED=1;					//LED灭
				Motor=0;				//电机停
				Delay(100-Time);		//延时100-Time
			}
		}
		for(Time=100;Time>0;Time--)		//改变亮灭时间,由亮到暗
		{
			for(i=0;i<20;i++)			//计次延时
			{
				LED=0;					//LED亮
				Motor=1;				//电机转
				Delay(Time);			//延时Time
				LED=1;					//LED灭
				Motor=0;				//电机停
				Delay(100-Time);		//延时100-Time
			}
		}
	}
}

4.2 独立按键对电机调速 

#include <REGX52.H>
#include "Timer0.h" 
#include "key.h"
#include "LCD1602.h"
#include "Delay.h"
unsigned char Counter,//计数器
              KeyNum,//按键值
              Speed=1,//档位
              Compare=35;//占空比
/**
 * 函    数:主函数
 * 参    数:无
 * 返 回 值:无
 */
void main()
{ 
	Timer0_Init();	//初始化定时器 
	LCD_Init();			
	while(1)
	{
		LCD_ShowNum(1,1,Speed,3);
		KeyNum=GetKey();
		if(KeyNum==1)
		{
			Speed--;
		}
		else if(KeyNum==2)
		{
			Speed++;
		}
		Speed=Speed%5;
		if(Speed==0)Compare=0;
		if(Speed==1)Compare=35;
		if(Speed==2)Compare=50;
		if(Speed==3)Compare=75;
		if(Speed==4)Compare=100; 
	}
}
/**
 * 函    数:定时器0中断函数
 * 参    数:无
 * 返 回 值:无
 */
void Timer0_Routine() interrupt 1
{
	TL0 = 0x91;			//设置定时初值
	TH0 = 0xFF;			//设置定时初值
	Counter++;
	Counter%=100;
	if(Counter>=Compare)
	{
		P2_0=1;//led 熄灭
		P1_0=0;//电机断电
	}
	else {
		P2_0=0;//led 亮起
		P1_0=1;//电机通电
	}
}

五,代码编译、下载到51单片机

代码编译请参考

《51单片机STC89C52RC——代码编译-CSDN博客》

代码下载请参考

《51单片机STC89C52RC——STCAI-ISP代码下载-CSDN博客》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/775925.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型LLMs概述:利用大模型 (LLMs) 解决信息抽取任务

论文标题&#xff1a;Large Language Models for Generative Information Extraction: A Survey 论文链接&#xff1a;https://arxiv.org/pdf/2312.17617.pdf 论文主要探讨了大型语言模型&#xff08;LLMs&#xff09;在生成式信息抽取&#xff08;IE&#xff09;任务中的应用…

知识库系统平台管理与优化

在之前做的关于FAQ知识库问答系统中&#xff0c;总结了相关踩坑内容&#xff0c;梳理如下&#xff0c;供大家参考。系统平台的管理与优化对于企业来说至关重要&#xff0c;它不仅关乎数据处理的效率&#xff0c;还直接影响到用户体验和业务成果。本文将从系统平台管理方式、系统…

World of Warcraft [CLASSIC] Talent Tree

World of Warcraft [CLASSIC] Talent Tree 天赋树模拟器 01&#xff09;初始化整个页面&#xff0c;选择游戏职业&#xff0c;初始化3个天赋树 02&#xff09;初始化天赋树结构&#xff0c;层次为N层 03&#xff09;每层有4个技能&#xff0c;设置可显示&#xff0c;设置隐藏…

通用代码生成器模板体系,语句和语句组

通用代码生成器或者叫动词算子式通用目的代码生成器是一组使用Java编写的通用代码生成器。它们的原理基于动词算子和域对象的笛卡尔积。它们没有使用FreeMarker和或者Velocity等现成的文件式模板引擎。而是使用java语言开发了一套专门为动词算子式代码生成器使用的模板API。而其…

uniapp启动安卓模拟器mumu

mumu模拟器下载 ADB&#xff1a; android debug bridge &#xff0c; 安卓调试桥&#xff0c;是一个多功能的命令行工具&#xff0c;他使你能够与连接的安卓设备进行交互 # adb连接安卓模拟器 adb connect 127.0.0.1:port # 查看adb设备 adb deviceshubuilderx 有内置的adb&a…

使用 Git Hooks 防止敏感信息泄露

欢迎关注公众号&#xff1a;冬瓜白 在日常开发中&#xff0c;我们可能会不小心将敏感信息提交到 Git。为了防止这种情况&#xff0c;可以利用 Git Hooks 编写一个简单的脚本&#xff0c;当发现提交中包含敏感词时&#xff0c;给出提示。 以下是一个基于 pre-commit 钩子的示例…

【MindSpore学习打卡】应用实践-计算机视觉-深入解析 Vision Transformer(ViT):从原理到实践

在近年来的深度学习领域&#xff0c;Transformer模型凭借其在自然语言处理&#xff08;NLP&#xff09;中的卓越表现&#xff0c;迅速成为研究热点。尤其是基于自注意力&#xff08;Self-Attention&#xff09;机制的模型&#xff0c;更是推动了NLP的飞速发展。然而&#xff0c…

Git代码提交流程

1. 核心流程 2. 完成流程

LeetCode 196, 73, 105

目录 196. 删除重复的电子邮箱题目链接表要求知识点思路代码 73. 矩阵置零题目链接标签简单版思路代码 优化版思路代码 105. 从前序与中序遍历序列构造二叉树题目链接标签思路代码 196. 删除重复的电子邮箱 题目链接 196. 删除重复的电子邮箱 表 表Person的字段为id和email…

我遭遇的奥数难题(持续更新)

第一题 地上有四堆石子&#xff0c;石子数分别是1、9、15、31。如果每次从其中的三堆同时各取出1个&#xff0c;然后都放入第四堆中&#xff0c;那么&#xff0c;能否经过若干次操作&#xff0c;使得四堆石子的个数都相同?(如果能&#xff0c;请说明具体操作&#xff0c;不能…

【html】许多大型网页都会有一个自己的主题色

许多网站确实会选择一种或几种特定的颜色作为他们的主题色&#xff0c;这通常是为了建立品牌识别度和一致性。 主题色在网站设计中起着至关重要的作用&#xff0c;它们不仅影响网站的视觉效果&#xff0c;还能传达品牌的情感和价值观。选择适当的主题色可以增强用户的品牌记忆…

从传统到智能:工业园区消防管理开始华丽转身

一、工业园区的消防管理现状 然而&#xff0c;当我们审视当前工业园区的消防管理现状时&#xff0c;不难发现其中存在诸多不足。首先&#xff0c;消防信息的智能化程度低&#xff0c;仿佛一位年迈的守望者&#xff0c;力不从心&#xff0c;难以即时将现场的数据信息传达至指挥…

重定向与转发

转发参数不会自动包含在新的请求中。若要将参数传递给重定向地址&#xff0c;可以在服务器端显式地添加参数到重定向URL中。 在重定向URL中包含参数 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; impor…

TCP的pop网络模式

TCP的pop网络模式 1、tcp连接的状态有以下11种 CLOSED&#xff1a;关闭状态LISTEN&#xff1a;服务端状态&#xff0c;等待客户端发起连接请求SYN_SENT&#xff1a;客户端已发送同步连接请求&#xff0c;等待服务端相应SYN_RECEIVED&#xff1a;服务器收到客户端的SYN请请求&…

巨头们涌入的医疗大模型,何时迎来最好的商业时代?_google医疗大模型 医疗大模型

当下极为火爆的大模型&#xff0c;在医疗赛道同样炙手可热。谷歌刚刚发布了准确率达 91.1%、性能远超 GPT-4 系列的多模态医学大模型 Med-Gemini&#xff0c;国内市场亦很热闹。自 2023 年以来&#xff0c;百度、腾讯、京东等诸多大厂都相继加码医疗大模型领域&#xff0c;与医…

C++:Level3阶段测试

1、黑客小知识&#xff1a; &#xff08;1&#xff09;常用的黑客头文件有____和____。 &#xff08;2&#xff09;创建文件的函数叫做________。 &#xff08;3&#xff09;我更新了____个黑客头文件。 &#xff08;4&#xff09;万能头文件包含的黑客头文件是________。 …

2.4G无线收发芯片 XL2401D,SOP16封装,集成单片机,高性价比

XL2401D 芯片是工作在2.400~2.483GHz世界通用ISM频段&#xff0c;片内集成了九齐 NY8A054E单片机的SOC无线收发芯片。芯片集成射频收发机、频率收生器、晶体振荡器、调制解调器等功能模块&#xff0c;并且支持一对多组网和带ACK的通信模式。发射输出功率、工作频道以及通信数据…

NoSQL 非关系型数据库 Redis 的使用:

redis是基于内存型的NoSQL 非关系型数据库&#xff0c;本内容只针对有基础的小伙伴&#xff0c; 因为楼主不会做更多的解释&#xff0c;而是记录更多的技术接口使用&#xff0c;毕竟楼主不是做教学的&#xff0c;没有教学经验。 关于redis的介绍请自行搜索查阅。 使用redis数据…

【HICE】基于用户认证的虚拟服务搭建

1.创建特定的内容 --账号与密码&#xff08;需要认证访问&#xff09;【里面】 2.编辑配置1.conf的内容&#xff0c;更新httpd 3.编辑hehe网页&#xff08;外部公开&#xff09; cd /www/ echo hehe > hehe/index.html 4.更改本地hosts和window下的解析 5.浏览器下验证内…

新手快速部署Springboot 的Jar包 (图解-BuiId,Maven)

目录 项目的构建 打包前的准备 合理配置pox.xml文件 Build 打包方式 Maven打包方式 Jar包部署 测试后端接口 项目的构建 我的项目是SpringBoot2脚手架 先准备一个相对于的数据库依赖 数据库的任意库 Yaml配置后 才能正常在IDEA中跑起来 打包前的准备 合理配置pox.xm…