51单片机(十五)直流电机驱动(PWM)

article/2025/9/11 18:03:36

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。
☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。
🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。

⭐️ 专栏主要内容: 主要学习51单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:http://t.csdn.cn/HCD8v

本学习过程参考:https://space.bilibili.com/383400717

单片机安装软件、各种资料以及源码的路径:
https://pan.baidu.com/s/1vDTN2o8ffvczzNQGfyjHng
提取码:gdzf

本节主要介绍学习直流电机驱动(PWM)的相关知识,包括直流电机驱动(PWM)介绍、本节目标等;并利用两个小实验来写程序进行练习,分别是LED呼吸灯以及 直流电机调速,最后附上相关代码。

文章目录

  • 一、直流电机驱动(PWM)和本节目标
    • 1.1 直流电机驱动(PWM)基础知识
    • 1.2 本节目标
  • 二、LED呼吸灯
  • 二、直流电机调速

一、直流电机驱动(PWM)和本节目标

1.1 直流电机驱动(PWM)基础知识

直流电机介绍

在这里插入图片描述
本节我们主要学习的是直流电机,当然除了直流电机外还有很多其他种类的电机,比如步进电机、舵机、无刷电机、空心杯电机灯;

步进电机的结构中,外壳一整圈都分布着磁铁,中间有个转子,转子也是永磁体;通过对不同角度的磁铁进行通电,从而产生不同方向的磁力,改变转子的角度,最终吸引转子朝着特定的方向转动; 其好处就是,转子转动的速度,完全是由我们代码写入的通电时间决定的;

舵机可以输出固定的角度;常用与小车的转向电机;

无刷电机一般在四轴飞行器中会用到;其转速非常快,适合为飞机起飞提供强劲的动力;功率比较大,动力比较足;

电机驱动电路

在这里插入图片描述
电机对于单片机来说也是一种功率比较大的负载;如果将电机直接接在单片机的i/o口上,肯定是驱动不了的;而且有可能会损坏单片机的i/o口;所以我们需要在电机和i/o口之间加入驱动电路;

常见的驱动电路由两种,分别是大功率器件直接驱动和H桥驱动;

大功率器件直接驱动方式的特点是,它只能驱动电机朝着一个方向转动;因为这种电路不具备调换电机正反方向的功能;

H桥驱动方式是电机驱动里面非常有名的一种驱动方式;这种方式可以控制电机正反转;所以如果我们需要驱动电机正反转,那么就选H桥驱动电路;

在这里插入图片描述
大功率器件直接驱动方式跟三极管开关差不多,图中的Q1 PNP三极管要求选择一个功率比较大的器件;常见的达林顿管或mos管;

当IN输入低电平时,Q1三极管就会导通,电流就会由上往下(上图中)流动;D1二极管是用来保护电路的,称为续流二极管;正常驱动时,电流由上往下流动时,经过B1,就会驱动B1电机进行旋转;

续流二极管的作用是:因为电机是感性负载元件,所以在驱动时就要留意其感性值(电感值);即当电路正常通电,电机正常运转一段时间,突然断电后,由于电感的特性,在断电的瞬间,电感会产生很大的电压,如果不加续流二极管,则电感产生的电压有反向击穿三极管的风险;加了续流二极管后,电感和续流二极管则会连通形成回路,消耗电机在断电瞬间产生的电压,直到消耗完;

下面是H桥驱动:
在这里插入图片描述
因为整天的形状像是H,所以这个电路被称为H桥;

在这里插入图片描述

如果使Q1和Q4两个三极管导通,而Q3和Q2两个三极管断开,那么电流就是从左上角流向右下角,如上图所示,这样电机就会朝着一个方向转动;如果反过来,Q3和Q2两个三极管导通,Q1和Q4两个三极管断开,则电流就是从右上角流向左下角,如下图所示,这样电机就会朝着另一个方向转动;通过这种方式控制电机的正反转,因为电流方向既可以向右又可以向左;

在这里插入图片描述
在H桥驱动中,因为电流可以正方向也可以反方向,所以没办法加续流二极管,所以就要求四个三极管具有很强的耐压特性,以保证能够扛得住电感在断电瞬间感应出来的高电压;

下面介绍电机调速的相关知识

在这里插入图片描述
PWM通俗解释:

第一种情况,可以先让电机通电转1ms,然后将其断开5ms,此时,断电后电机由于惯性还在转,只是速度会缓慢下降;下降5ms后,继续通电,又加速转了1ms,然后又断开,用惯性减速5ms;这样反复进行,电机通电增长的速度远小于断电后下降的速度,最终电机则会以一个比较缓慢的速度在运行;

第二种情况,让电机通电转5ms,然后将其断开1ms,此时断电后电机由于惯性还在转,只是速度会缓慢下降;下降1ms后,继续通电,又加速转了5ms,然后又断开,用惯性减速1ms;这样反复进行,电机通电增长的速度远小于断电后下降的速度,电机则会以一个比较快速的速度在运行,电机的转速会远大于第一种情况;

第三种情况,让电机通电转5ms,然后将其断开5ms,此时断电后电机由于惯性还在转,只是速度会缓慢下降;下降5ms后,继续通电,又加速转了5ms,然后又断开,用惯性减速5ms;这样反复进行,电机通电增长的速度基本等于断电后下降的速度,电机则会以一个比中间的的速度在运行,比第一种情况速度大,比第二种情况的速度小;

总结一下就是,转的时间比较短,停的时间比较长,那么速度就比较低;反之,转的时间比较长,停的时间比较短,则转速比较高;

当然这里只是举个例子,具体在应用中设置多长时间通电和多长时间断电,就是下面要学习的PWM,脉冲宽度调制;

PWM经常用于这种存在惯性的场景,比如LED,断电后不会立马灭,而是有余晖慢慢变灭;比如电机,断电后不会立马停止转动,而是由于惯性慢慢的减速; 在这些具有惯性的场景中,PWM还是有很好的应用效果的;

PWM的参数包括:
频率:对于电机来说,就是断电和通电的次数,如果频率比较高,则电机转动的比较平滑;反之如果频率比较低,则电机转动的会有抖动;

占空比:占空比就是打开的时间比上一个周期的总时间;

精度:精度就是占空比的变化步距;

学习完PWM,就可以猜到电机调速的大致思想就是,不断的给电机高电平->低电平->高电平->低电平->高电平->低电平->高电平->低电平->高电平.........;通过控制频率就能控制电机的速度;

1.2 本节目标

目标1:LED呼吸灯

如下图所示,第一个LED灯以呼吸灯的形式进行亮灭

在这里插入图片描述
目标2:直流电机调速

将直流电机插在开发板上,按键K1、K2、K3可以对直流电机进行调速;

当按下K1时,1级速度速,如下图:
在这里插入图片描述

当按下K2时,2级速度速,如下图:

在这里插入图片描述

当按下K3时,3级速度速,如下图:

在这里插入图片描述

二、LED呼吸灯

代码路径:51单片机入门教程资料\课件及程序源码\程序源码\KeilProject\15-1 LED呼吸灯

具体代码:

#include <REGX52.H>sbit LED=P2^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亮Delay(Time);			//延时TimeLED=1;					//LED灭Delay(100-Time);		//延时100-Time}}for(Time=100;Time>0;Time--)		//改变亮灭时间,由亮到暗{for(i=0;i<20;i++)			//计次延时{LED=0;					//LED亮Delay(Time);			//延时TimeLED=1;					//LED灭Delay(100-Time);		//延时100-Time}}}
}

二、直流电机调速

在这里插入图片描述
以下代码就是参考上图的思想写出来的,通过控制“比较值”的大小,控制输出波形,从而控制电机转速。

代码路径:51单片机入门教程资料\课件及程序源码\程序源码\KeilProject\15-2 直流电机调速

具体代码:

#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Nixie.h"
#include "Timer0.h"sbit Motor=P1^0;unsigned char Counter,Compare;	//计数值和比较值,用于输出PWM
unsigned char KeyNum,Speed;void main()
{Timer0_Init();while(1){KeyNum=Key();if(KeyNum==1){Speed++;Speed%=4;if(Speed==0){Compare=0;}	//设置比较值,改变PWM占空比if(Speed==1){Compare=50;}if(Speed==2){Compare=75;}if(Speed==3){Compare=100;}}Nixie(1,Speed);}
}void Timer0_Routine() interrupt 1
{TL0 = 0x9C;		//设置定时初值TH0 = 0xFF;		//设置定时初值Counter++;Counter%=100;	//计数值变化范围限制在0~99if(Counter<Compare)	//计数值小于比较值{Motor=1;		//输出1}else				//计数值大于比较值{Motor=0;		//输出0}
}

http://chatgpt.dhexx.cn/article/SQVCxQD8.shtml

相关文章

GC3909 12V直流电机驱动芯片低成本替代allegro的A3909

GC3909是一款双通道12V直流电机驱动芯片&#xff0c;为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。芯片一般用来驱动两个直流电机或者驱动一个步进电机。   GC3909可以工作在3.8~12V的电源电压上&#xff0c;每通道能提供…

[直流有刷电机步进电机]驱动芯片AS4950完美替代A4950/DRV8870/AT8870/TMI8870/G2057

大家好&#xff0c;我是芯知识学堂的SingleYork&#xff0c;今天要给大家分享的是AS4950这款直流有刷电机芯片的应用&#xff08;控制直流电机和步进电机&#xff09;。 AS4950 是一款具有优越性能的全桥 DMOS 直流有刷电机驱动芯片&#xff0c;最大工作范围可以撘3.5A 和 40V …

直流电机驱动(PWM)

直流电机介绍 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极&#xff0c;当电极正接时&#xff0c;电机正转&#xff0c;当电极反接时&#xff0c;电机反转 直流电机主要由永磁体&#xff08;定子&#xff09;、线圈&#xff08;转子&#xff09;和换向器…

直流电机驱动电路整理笔记

—— 博文内容是从好几篇论文中摘抄下来的&#xff0c;不过遗憾的是那时候我没有对这几篇论文进行来源记录。 1基础知识 1.1专业名词 本小节用于阐述本文将提到的专业名词。 逻辑电压&#xff1a;用于表示逻辑的高电平或低电平&#xff0c;驱动能力很弱 驱动电压&#xff1a…

直流电机驱动PWM

正接时正转,反接时反转 IN为低电平时,三极管导通 IN为高电平时,三极管断开 P10口如果给1,就为0 主循环写法 while(1) {for(Time0;Time<100;Time){for(i0;i<20;i){LED0;Delay(Time);//亮的时间LED1;Delay(100-Time);//暗的时间}} } #include <REGX52.H> sbit …

DRV8711的通用步进电机驱动器和直流电机驱动器

DRV8711的通用步进电机驱动器和直流电机驱动器 芯片说明 DRV8711 是一款步进式电机控制器&#xff0c;此控制器使用外部 N 通道 MOSFET 来驱动一个双极步进式电机或两个有刷直流电机。 集成了一个微步进分度器&#xff0c;此分度器能够支持全步长至 1/256 步长的步进模式。 通…

国产单通道直流有刷马达驱动芯片型号推荐

直流有刷马达驱动芯片是一款适应消费类、工业类的单通道直流有刷驱动IC&#xff0c;适用于各类玩具&#xff0c;智能家居&#xff0c;智能三表。小封装&#xff0c;低功耗&#xff0c;内置完善的保护机制&#xff08;过温/过流/过压&#xff09;。具有一个PWM&#xff08;INA/I…

九、51单片机之直流电机驱动

目录 1、什么是电机 2、常见电机 2.1、交流电机 2.2、交流电机补充(可跳过) 2.3、直流电机 2.4、步进电机、伺服电机 3、直流电机驱动 1、什么是电机 (1)电机的全称是电动机&#xff0c;把电能转换成动能的一种电器。 (2)外观 2、常见电机 常见电机包括交流电机、直流…

直流电机驱动c语言程序,单片机PWM控制直流电机驱动程序+仿真+报告

直流电机驱动资料包: 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 电子系统设计报告 课题名称 直流电动机驱动 专 业 电子信息工程技术 目录 第1章 设计题目与要求 第2章 设计方案 2.1 设计方案 2.2 方案…

GC9110T 12V 直流电机驱动芯片 GC9110(低压6V驱动)的12V升级版本

GC9110T是一款12V直流电机驱动芯片&#xff0c;为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。芯片一般用了驱动一个直流电机或者使用两颗来驱动一个步进电机。GC9110T是GC9110&#xff08;低压6V驱动&#xff09;的12V升级…

直流电机驱动

1. 直流电机是一种将电能转化为机械能的装置&#xff0c;一般的直流电机有两个电极&#xff1b;当电极正接时&#xff0c;电机正转&#xff1b;当电机反接时&#xff0c;电机反转&#xff1b; 2. PWM&#xff1a;脉冲宽度调制-------PWM调速的原理就是&#xff1a;我让他转5us…

GC8871一款带内部电流感测功能的刷式直流电机驱动芯片(可替代DRV8871)

GC8871是一款带内部电流感测功能的刷式直流电机驱动芯片&#xff0c; 适用于打印机、电器、工业设备以及其他小型机器。两个逻辑输入控制 H 桥驱动器&#xff0c; 该驱动器由四个NMOS组成&#xff0c; 能够以高达3.6A 的峰值电流双向控制电机。 利用电流衰减模式&#xff0c;可…

几款H桥电机驱动芯片直流有刷电机驱动芯片性能分析

如果您正在寻找一款高性能、可靠、集成度高、能实现卓越电流控制的H桥电机驱动芯片&#xff0c;那么下面介绍的芯片将是不错的选择。 这一系列芯片具有出色的功耗管理能力&#xff0c;以及多种保护功能&#xff0c;精确的电流检测和监控&#xff0c;能够确保系统的长期稳定运…

DRV8872直流电机驱动芯片简要的使用说明

DRV8872直流电机驱动芯片简要的使用说明 ​ (DRV8872) 一、能干什么 DRV8872主要用于直流电机的驱动。它有两个输入端子&#xff0c;控制一个BDC(直流电机)的工作。同时&#xff0c;它还能通过在ISEN引脚外接电阻控制流过电机的电流&#xff1b;通过nFAULT引脚输出错误信息给…

【电机驱动芯片(H桥、直流电机驱动方式)——DRV8833、TB6612、A4950、L298N的详解与比较】

文章目录 一.全H桥电路基础知识1.原理图&#xff08;以全NMOS管为例&#xff09;2.H桥工作模式正转模式反转模式电流衰减模式 3.补充 二.DRV8833芯片介绍1.基本介绍2.引脚功能3.功能框图4.结构详细介绍5.逻辑控制6.另外一种DRV8833CPWP型号的区别 三.TB6612FNG芯片介绍1.基本介…

直流电机驱动芯片

由于单片机属于信息类电路&#xff0c;带负载能力极差&#xff0c;不可能直接用来控制电机的运动。因此电机的驱动就显得尤为重要。本文汇总了自己用过的几个电机驱动芯片及其注意事项等等&#xff0c;以后有机会还会继续修正增加等。大家有其他的方案也欢迎交流。 芯片种类 驱…

一些免费Api分享(持续更新中...)

有时候想自己写点有意思的工具&#xff0c;又不想自己搭服务器&#xff0c;这里我们就得找一些有意思的Api供自己使用&#xff01; 免费API http://api.wpbom.com/ 46 种类多 公共API https://www.qqlykm.cn/ 87 类型多 接口大全 https://www.free-api.com/ 100 类型丰富&#…

夏柔免费API管理系统

系统介绍 基于ZeroArt二开美化 页面方式仿的ApiFox&#xff0c;严禁商用&#xff0c;仅供学习测试交流 内置**100**免费接口&#xff08;远程&#xff09;&#xff0c;部署即用&#xff0c;内置的远程接口可持续提供调用服务&#xff01; 接口数据来源&#xff1a;api.aa1.c…

公开的免费API集锦

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl API集锦 在此&#xff0c;介绍部分目前已知的公开的免费API供开发人员使用。 http协议测试 http://httpbin.org/ httpbin非常强大&#xff0c;简单&#xff0c;易用。 文…

免费接口及资源

手机号码归属地API接口&#xff1a; https://www.juhe.cn/docs/api/id/11 历史上的今天API接口&#xff1a; https://www.juhe.cn/docs/api/id/63 股票数据API接口&#xff1a; https://www.juhe.cn/docs/api/id/21 全国WIFI接口&#xff1a; https://www.juhe.cn/docs/…