51单片机直流电机控制

news2024/12/28 18:55:52

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

文章目录

  • 前言
  • 一、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 如何控制多个电机?

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LongAdder功能和原理

AtomicLong能保证并发情况下计数的准确性&#xff0c;其内部通过CAS来解决并发安全性的问题。 AtomicLong的缺点&#xff1a; 可以看到在高并发情况下&#xff0c;当有大量线程同时去更新一个变量&#xff0c;任意一个时间点只有一个线程能够成功&#xff0c;绝大部分的线程在尝…

K8S基础笔记

1、namespace 名称空间用来对集群资源进行隔离划分&#xff0c;默认只隔离资源&#xff0c;不隔离网络k8s默认的名称空间为default 查看k8s的所有命名空间 kubectl get namespace 或者 kubectl get ns 创建名称空间 kubectl create ns 名称 或使用yaml方式 编写yamlkub…

vs添加 高级保存选项

工具-自定义-命令-菜单栏-文件-添加命令-文件-高级保存选项

win10手机投屏到电脑的操作方法

工具/原料&#xff1a; 系统版本&#xff1a;iOS 15.3,HarmonyOS 2.0.0&#xff0c;windows10系统 品牌型号&#xff1a;iPhone 13,HUAWEI Mate 40 Pro&#xff0c;联想小新air14 方法/步骤&#xff1a;方法一&#xff1a;安卓手机使用无线投屏功能投屏到win10电脑 1、保持手…

赴日开发工程师是做什么的?

日本的软件开发岗位对技术要求和沟通能力都有较高的要求&#xff0c;赴日开发工程师主要负责软件设计、开发和测试&#xff0c;包括编写代码、测试代码和修复漏洞等工作。开发人员必须对软件架构、设计模式和业务逻辑有深入的理解&#xff0c;并能做出合适的技术决策。 当然&a…

细说MySQL数据类型

TOC 目录 MySQL数据类型 数据类型分类 数值类型 tinyint类型 有符号tinyint范围测试 无符号tinyint范围测试 bit类型 bit类型的显示方式 bit类型的范围测试 float类型 有符号float范围测试 无符号float范围测试 decimal类型 字符串类型 char类型 char类型测试 …

IObit Unlocker丨解除占用程序软件

更多内容请收藏&#xff1a;https://rwx.tza-3.xyz 官网&#xff1a;IObit Unlocker “永远不用担心电脑上无法删除的文件。” 界面简单&#xff0c;支持简体中文&#xff0c;一看就会&#xff0c;只需要把无法删除/移动的文件或整个U盘拖到框里就行。 解锁率很高&#xff0c;…

【云栖 2023】林伟:大数据 AI 一体化的解读

云布道师 本文根据 2023 云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;林伟 | 阿里云研究员&#xff0c;阿里云计算平台事业部首席架构师&#xff0c;阿里云人工智能平台 PAI 和大数据开发治理平台 DataWorks 负责人 演讲主题&#xff1a…

软件测试:测试分类

一. 按照测试对象划分 1.1 界面测试 界面测试(简称UI测试),按照界面的需求(UI设计稿)和界面的设计规则,对我们软件界面所展示的全部内容进行测试和检查,一般包括如下内容: • 验证界面内容的完整性,一致性,准确性,友好性,兼容性.比如页面内容对屏幕大小的自适应,换行,内容是否…

认识前端包常用包管理工具(npm、cnpm、pnpm、nvm、yarn)

随着前端的快速发展,前端的框架越来越趋向于工程化,所以对于包的使用也越来越多,为了优化性能和后期的维护更新,对于前端包的管理也尤为重要,本文主要阐述对node中包管理工具的理解和简单的使用方法。也欢迎各位大佬和同行们多多指教。😁😁😁 👉1. npm 安装npm 通…

Django 入门学习总结6 - 测试

1、介绍自动化测试 测试的主要工作是检查代码的运行情况。测试有全覆盖和部分覆盖。 自动测试表示测试工作由系统自动完成。 在大型系统中&#xff0c;有许多组件有很复杂的交互。一个小的变化可能会带来意想不到的后果 测试能发现问题&#xff0c;并以此解决问题。 测试驱…

Azure Machine Learning - 什么是 Azure AI 搜索?

Azure AI 搜索&#xff08;以前称为“Azure 认知搜索”&#xff09;在传统和对话式搜索应用程序中针对用户拥有的内容提供大规模的安全信息检索。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦…

8、创建第一个鸿蒙页面并实现页面跳转

一、创建页面 1、新建页面 在项目的"pages"目录上右键&#xff0c;选择”新建“——”page" 2、录入页面的名称 在“Page name”中输入页面的名称&#xff0c;并点击“Finish”完成创建 3、以下为创建的新页面 2、注册页面 新建的页面会自动在“resources”…

Python---PyCharm调试技巧--Step over(F8)、Step into(F7)

Step over&#xff08;F8&#xff09;&#xff1a;代码一步一步向下执行&#xff0c;但是遇到了函数以后&#xff0c;不进入函数体内部&#xff0c;直接返回函数的最终的执行结果。------------遇到函数跳过&#xff0c;直接执行最后的结果。 Step into&#xff08;F7&#xf…

SpringBoot——静态资源及原理

优质博文&#xff1a;IT-BLOG-CN 一、使用 SpringBoot 的步骤 【1】创建SpringBoot应用&#xff0c;选中自己需要的模块。 【2】SpringBoot已经默认将这些场景配置好&#xff0c;只需要在配置文件中指定少量配置就可以运行起来。 【3】编写业务逻辑代码。 二、自动配置原理 …

iceberg学习笔记(2)—— 与Hive集成

前置知识&#xff1a; 1.了解hadoop基础知识&#xff0c;并能够搭建hadoop集群 2.了解hive基础知识 3.Iceberg学习笔记&#xff08;1&#xff09;—— 基础知识-CSDN博客 可以参考&#xff1a; Hadoop基础入门&#xff08;1&#xff09;&#xff1a;框架概述及集群环境搭建_TH…

归并排序详解:递归实现+非递归实现(图文详解+代码)

文章目录 归并排序1.递归实现2.非递归实现 归并排序 时间复杂度&#xff1a;O ( N * logzN ) 每一层都是N,有log2N层空间复杂度&#xff1a;O&#xff08;N&#xff09;&#xff0c;每个区间都会申请内存&#xff0c;最后申请的数组大小和array大小相同稳定性&#xff1a;稳定 …

【Java程序员面试专栏 算法训练篇】二叉树高频面试算法题

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是二叉树相关汇总的高频题目 遍历二叉树 遍历二叉树,分为递归和迭代两种方式,递归类似于DFS,迭代类似于BFS,【算法训练-二叉树 一】【遍历二叉树】前序遍历、中序遍历、后续遍…

OpenCV快速入门:直方图、掩膜、模板匹配和霍夫检测

文章目录 前言一、直方图基础1.1 直方图的概念和作用1.2 使用OpenCV生成直方图1.3 直方图归一化1.3.1 直方图归一化原理1.3.2 直方图归一化公式1.3.3 直方图归一化代码示例1.3.4 OpenCV内置方法&#xff1a;normalize()1.3.4.1 normalize()方法介绍1.3.4.2 normalize()方法参数…

C语言——1.入门须知

文章目录 1.C语言的简要概述1.1.C语言类比自然语言1.2.计算机语言的发展1.3.C语言在当今的地位1.4.C语言的优势和劣势1.4.1.C语言的优势1.4.2.C语言的劣势 2.C语言的应用场景3.C语言的学习路径3.1.学习目的3.2.学习路径3.3.学习资源3.3.1.推荐书籍3.3.2.推荐课程3.3.3.推荐题库…