51单片机直流电机控制

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

文章目录

  • 前言
  • 一、pwm波形?
    • 1.1高低电平交互,LED亮灭。
    • 1.2 驱动电机时?
    • 1.3 怎么调节电机的速度?
  • 二、怎么用51单片机产生PWM波形
    • 2.1 t 怎么来?
    • 2.2 t0怎么来?
    • 2.3 t1怎么来?
    • 2.4 如何更好的写程序,只用一个时间基准1ms
    • 2.5参考程序
  • 三、电路连接图
    • 3.1电机连接图
    • 3.2 ULN2003 逻辑图
    • 3.3 按键连接图
  • 四、 电机开机、关机
  • 五、思考
    • 5.1 如何控制电机正反转?
    • 5.2 如何控制多个电机?
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

我们学习了51单片机的定时器之后,已经定时1s,用按键控制定时的时间。
之前产生的波形都是方波,就是高电平、低电平一样的波形。PWM


提示:以下是本篇文章正文内容,下面案例可供参考

一个学期都没搞懂的直流电机工作原理,一分钟讲解清楚!

https://www.bilibili.com/video/BV1yV4y1o7Nd/?spm_id_from=333.337.search-card.all.click

基于51单片机直流电机调速实验

https://www.bilibili.com/video/BV1Eo4y1m774/?spm_id_from=333.337.search-card.all.click

一、pwm波形?

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1.1高低电平交互,LED亮灭。

接通电机会有效果?

在这里插入图片描述

1.2 驱动电机时?

电压越高,电机转得越快

1.3 怎么调节电机的速度?

在这里插入图片描述
在这里插入图片描述

二、怎么用51单片机产生PWM波形

2.1 t 怎么来?

t=t0+t1;=50+10=60
D=10/60%100

2.2 t0怎么来?

sbit motor=P1^0;

t0=50ms ,motor=0;
定时50ms,

TH0=( 65536-50000)/256;
TL0=( 65536-50000)%256;

2.3 t1怎么来?

t1=10ms
定时10ms,motor=1;
TH0=( 65536-10000)/256;
TL0=( 65536-10000)%256;

2.4 如何更好的写程序,只用一个时间基准1ms

TH0=( 65536-1000)/256;
TL0=( 65536-1000)%256;
t0=150
t1=1
10

50 10 ->num
num<10 motor=1
num>=10 motor=0
num=60 num=0

在这里插入图片描述

2.5参考程序

代码如下(示例):

#include<reg51.h>

void main()
{
	//初始化定时器
	while(1)
	{
		if(key0)
		{
		   10
		}
		
		if(key1)
		{
		   60
		}

	}

}

void timer0()interrupt 1
{

	TH0=( 65536-1000)/256;
	TL0=( 65536-1000)%256;
	num++;
	if(num<10)
	{
		motor=1;
	}else if(num<60)
	{
	     motor=0;
	}
	else
	{
		num=0;
	}
	
	
/*	t0=1*50
	t1=1*10

	50 10   ->num
	num<10   motor=1
	num>=10 motor=0
	num=60  num=0*/
}

#include<reg51.h>

sbit motor=P1^0;
sbit key0=P3^0;
sbit key1=P3^1;

sbit led0=P2^0;

unsigned int num=0;
 int d=0;//占空比
//unsigned int t=0;
#define t 1000


void delay(unsigned int ms)
{
	unsigned int x,y;
	for(x=0;x<ms;x++)
	{
		for(y=0;y<100;y++);
	}
}



void timer_init()
{
	TMOD=0X01;//方式1 16位
	TH0=( 65536-1000)/256;
	TL0=( 65536-1000)%256;
	EA=1;
	ET0=1;
	TR0=1;
	
}

void main()
{
	//初始化定时器
	timer_init();
	key0=1;
	key1=1;
	while(1)
	{
		if(!key0)
		{
		    delay(5);
			if(!key0)
			{
				while(!key0);
				d=d+100;
				if(d>t)
				{
				  d=t;
				}
			}
			
		}
		
		if(!key1)
		{
		    delay(5);
			if(!key1)
		    {
				while(!key1);
				d=d-100;
				if(d<0)
				{
					d=0;		
				}
			 }
				
		}

	}

}

void timer0()interrupt 1
{

	TH0=( 65536-1000)/256;
	TL0=( 65536-1000)%256;
	num++;
	if(num<d)
	{
		motor=1;
	}else if(num<t)
	{
	     motor=0;
	}
	else
	{
		num=0;
		led0=~led0;
	}
	
	
/*	t0=1*50
	t1=1*10

	50 10   ->num
	num<10   motor=1
	num>=10 motor=0
	num=60  num=0*/
}

三、电路连接图

3.1电机连接图

在这里插入图片描述

3.2 ULN2003 逻辑图

在这里插入图片描述

3.3 按键连接图

在这里插入图片描述

四、 电机开机、关机



//开机: TR0=1;

if(!key2)
{
	TR0=1;
}


//关机:TR0=0;

if(!key3)
{
	TR0=0;
}

五、思考

5.1 如何控制电机正反转?

5.2 如何控制多个电机?

总结

了解直流电机工作原理,熟悉定时器定时功能,掌握电机调速技术。

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

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

相关文章

OpenVPN Connect使用连接公网VPN服务器实现内网穿透

安装并运行OpenVPN Connect 点击AGREE 添加配置.OVPN文件 点击连接 连接成功 两个内网主机通过公网VPN穿透

哪些软件可以监控电脑(保姆级教程!值得收藏!)

今天了解到了一个软件&#xff0c;真的把我吓到了。 我才知道原来我上班时摸鱼时多么愚蠢的一件事情。原来老板可以通过一些软件轻而易举的知道你用电脑做的所有事情&#xff0c;怪不得我每次摸鱼时老板看我的眼神都不对…… 安装好域之盾软件以后&#xff0c;打开就能监控你使…

电容的耐压值是什么意思呢?

电容是什么&#xff1f; 电容是一种能以电荷的形式储存能量的装置。与同样大小的电池相比&#xff0c;电容能储存的能量要小得多&#xff0c;大约1w个电容存储的能量才顶一节电池存储的能量&#xff0c;但对于许多电路设计来说却足够使用了。 看下图的直插式电容&#xff0c;…

竞赛 题目:基于深度学习的中文汉字识别 - 深度学习 卷积神经网络 机器视觉 OCR

文章目录 0 简介1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &a…

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制

文章目录 1. javap -version 版本信息2. javap -verbose 输出附加信息3. javap -l 显示行号和局部变量列表4. javap -c 对代码进行反汇编&#xff08;或叫反编译生成汇编代码&#xff0c;一般说反编译是生成java代码&#xff09;&#xff0c;分解方法代码&#xff0c;也就是显示…

OSG文字-显示汉字 (1)

OSG文字 适当的文字信息对于显示场景信息是非常重要的。在 OSG中&#xff0c;osgText 提供了向场景中添加文字的强大功能&#xff0c;由于有第三方插件 FreeType 的支持&#xff0c;它完全支持TrueType字体。 读者可能对 FreeType和TrueType还不太了解&#xff0c;下面进行具体…

Openlayer【二】—— 绘制不同的点、线以及给其添加监听事件

Openlayer【二】—— 绘制不同的点、线以及给其添加监听事件 接上篇&#xff1a;OpenLayer初始化 在openlayer当中&#xff0c;图层Layer与地图源Source是一对一的关系。当创建了一个图层Layer&#xff0c;相应的需要给图层添加地图源Source&#xff0c;然后将图层Layer添加到…

企业经营好不好?看看官方评价指标(适电子元、器件制造业)

一家企业经营的到底好不好&#xff1f;有没有评价标准呢&#xff1f;这里我们不妨参考一下国资委对全国各个行业的考核指标&#xff0c;对照一下自己的企业&#xff0c;就比较清楚自身企业的经营水平了。另外&#xff0c;我们也希望使用ODOO-ERP业财一体系统的企业&#xff0c;…

docker swarm集群部署

文章目录 前言一、安装docker1.1 解压1.2 配置docker 存储目录和dns1.3 添加docker.service文件1.4 docker 启动验证 二、docker swarm 集群配置2.1 关闭selinux2.2 设置主机名称并加入/etc/hosts2.3 修改各个服务器名称&#xff08;uname -a 进行验证&#xff09;2.4 初始化sw…

Java-类和类的关系

代码 总结&#xff1a; 【1】面向对象的思维&#xff1a;找参与者&#xff0c;找女孩类&#xff0c;找男孩类 【2】体会了什么叫方法的形参&#xff0c;什么叫方法的实参&#xff1a; 具体传入的内容 实参&#xff1a; 【3】类和类可以产生关系&#xff1a; &#xff08;1…

Django(九、choices参数的使用、多对多表的三种创建方式、Ajax技术)

文章目录 一、choices参数choices参数的用法choices 参数用法总结 二、MVC与MTV模式1.MVC2.MTV 三、多对多的三种创建方式1.全自动创建2.纯手动创建半自动创建 四、Django与Ajax1.什么是Ajax常见的场景Ajax案例 一、choices参数 在没有用到choices参数之前&#xff0c;我们在D…

如何科学的进行Android包体积优化

这篇文章会分享小厂如何做包体积优化相关主题&#xff0c;涉及内容包括&#xff1a;1) Android包体积优化的一种可能是比较标准的推进做法&#xff0c;2) 大致流程的心路历程和思考方式&#xff0c;3) 如何去总结和分享你们进行过的包体积优化项目。本文不仅仅是一篇分享&#…

PCIe协议加持,SD卡9.1规范达到媲美SSD的速度4GB/s

近日&#xff0c;SD协会&#xff08;SDA&#xff09;宣布了最新的SD Express存储卡的进化&#xff0c;将microSD Express存储卡的速度提高了一倍&#xff0c;达到2GB/s&#xff0c;并引入了4个新的SD Express速度等级&#xff0c;以确保新的SD 9.1规范中最低的顺序性能水平。这…

【自动驾驶解决方案】C++取整与保留小数位

一、C基础 1.1double型保留小数为&#xff0c;并以字符输出 #include <iostream> #include <sstream> #include <iomanip> // 包含std::fixedint main() {//浮点数double number 3.1415926;//转换工具类streamstd::stringstream stream;stream << s…

U-boot(三):start.S

本文主要探讨x210的uboot的start.S文件,也是uboot启动的第一阶段。 头文件 config.h config.h x210_sd.h,由mkconfig脚本生成,包含了开发板的配置宏 rootkaxi-virtual-machine:~/qt_x210v3s_160307/uboot/include# cat config.h /* Automatically generate…

LangChain 组件

输入输出模块 该模块负责与LLM做交互&#xff0c;通过该接口向模型输入 Prompt 并提取模型输出信息。主要包括&#xff1a;提示词、语言模型&#xff0c;输出解析器。 数据连接 已训练好的大语言模型&#xff0c;在训练时使用了大量的训练数据&#xff0c;但这些训练数据中可能…

Windows 下 Sublime Text 2.0.2 下载及配置

1 下载地址&#xff1a; https://www.sublimetext.com/2 Sublime Text 2.0.2 (此版本选择了 portable version)&#xff0c;直接解压就可以使用。 https://download.sublimetext.com/Sublime Text 2.0.2.zip 2 配置Python相关环境 (前提 Pyhon 已加入环境变量) 2.1 新建 py …

为什么大家都不用postman而选择 Apifox呢?

丢掉 Postman&#xff0c;Apifox 更香 作为开发者&#xff0c;丢掉 Postman 和 Jmeter吧&#xff0c;这款国产 API 工具更香&#xff0c;更安全&#xff01;一键即可导入 Postman 数据&#xff01; 一、Apifox 是什么&#xff1f; 1、Apifox 定位 Apifox Postman Swagger …

安全项目简介

安全项目 基线检查 密码 复杂度有效期 用户访问和身份验证 禁用administrator禁用guest认证失败锁定 安全防护软件操作系统安全配置 关闭自动播放 文件和目录权限端口限制安全审计… 等保测评 是否举办了安全意识培训是否有应急响应预案有无第一负责人 工作内容 测评准备…

如何判断sql注入流量特征

如何判断sql注入流量特征 以dvwa的sql注入为例 首先构造一个完整的sql注入请求包 GET /dvwa_2.0.1/vulnerabilities/sqli/?id1&SubmitSubmit HTTP/1.1 Host: 10.9.47.41 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.…