PWM技术的应用

目录

PWM技术简介

PWM重要参数

PWM实现呼吸灯

脉宽调制波形

PWM案例

电路图

keil文件

直流电机

直流电机的控制

直流电机的驱动芯片L293D

L293D引脚图

L293D功能表

直流电机案例

电路图

keil文件

步进电机

步进电机特点

步进电机驱动芯片L298

L298引脚图

L298逻辑功能表

四相步进电机原理

步进电机案例

电路图

keil文件

PWM技术简介

  • PWM即脉宽调制技术,在具有惯性的系统中,可通过对一系列脉冲的宽度进行调制,来等效的获得所需要的模拟参量,常适用于电机控速度,开关电源等领域
  • 占空比:在一个周期内,其高电平持续的时间除以整个周期的值就是占空比;其一般用D表示。

PWM重要参数

  • 频率:f=1/Ts
  • 占空比:D=Ton/Ts

注意:

  • 由右图可知,Ts内电机两端的平均电压为:U=(Ton/Ts)*Umax=D*Umax
  • 左图就是由PWM调制技术所获得的模拟量电压。
  • 通常我们的PWM会保证一个周期的时间是一样的

PWM实现呼吸灯

呼吸灯:呼吸灯是指在控制器的控制下,灯光实现由亮到暗或由暗到亮的逐渐变化(感觉就像是人在呼吸一样)。

脉宽调制波形

  • t:高电平时长
  • T:脉冲周期
  • Up脉冲电压幅度值
  • 占空比:D=t/T
  • 均值电压:U=t/T*Up

注意:

  • 通过改变相同周期内U的占空比就可以实现呼吸灯的效果。
  • 若上面的脉宽调制状态中灯用共阳极连接,那么就可以实现灯的由亮到灭

PWM案例

需求:实现发光二极管的呼吸效果。

电路图

keil文件

#include "REGX52.H"
void delay(unsigned int n){int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
void pwm(unsigned char k){unsigned int n=0;for(n=0;n<10;n++){P2=0xff;delay(k);P2=0x00;delay(10-k);}
}
void main()
{unsigned int t;while(1){//由亮到暗for(t=1;t<10;t++){pwm(t);}//由暗到亮for(t=9;t>0;t--){pwm(t);}}
}

注意:因为我的LED二极管为共阳极连接,所以从单片机输出的信号0为亮,1为灭。

直流电机

前言:

  • 定义输出或输入为直流电能的旋转电机称为直流电机,他是能实现直流电能和机械能相互转化的电机。
  • 当他做电动机运行时是直流电动机,将电能转化为机械能;当作发电机运行时是直流发电机,将机械能转化为电能。
  • 直流电机主要由永磁体(定子)线圈(转子)和换向器组成。
  • 除去直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等

直流电机的控制

  • 方向控制:直流电机只有正负极,只需要交换正负极就可以调节正反转。
  • 转速控制:在负载变化不大的时候,加在直流电机两端的电压大小与其速度近似成正比

直流电机的驱动芯片L293D

前言:

  • 单片机的驱动电流不足以直接驱动直流电机,所以我们需要去外接一个驱动电路来完成单片机对直流电机的一个操作。
  • L293D支持逻辑控制电压和电机驱动电压4.5——36V,最大输出电流为600ma,由于其驱动能力有限,多应用于小型电器
  • L293D是4通道高电流半H桥输出驱动电路。L293D提供双向驱动电流高达600ma。兼容所有TTL输入。驱动电路shang水水水水内部ESD保护,内有过热关断保护,每个输出都是推拉式驱动电路,可以驱动感性负载
  • 作用:单片机可以发挥控制优势,发出控制电机的信号,让大电流从这个模块流通不经过单片机,保护了单片机,进而实现了电机驱动,同时也发挥了单片机的控制优势。

L293D引脚图

L293D功能表

注意:

  • 上面的EN为使能引脚,也就类似于开关引脚。
  • L293D可以驱动两个直流电机
  • 功能表中两个X分别代表两个输入,也就是上面芯片的1a和4a部位,上面芯片的y部位为对应的输出
  • 停止是自然而然的停止,不受外力干扰;刹停是紧急置停。

直流电机案例

需求:使电机按顺时针转动,并且转动的速度占总速度的1/4。

电路图

注意:IN1引脚给1,IN2引脚给0,电机顺时针转动;IN1引脚给0,IN2引脚给1,电机逆时针转动(通过调整占空比可以调整电机的转速)。

keil文件

#include "reg51.h"
sbit IN1=P2^0;
sbit IN2=P2^1;
sbit E=P2^2l;
void delay(unsigned int n){int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
void motor(){IN1=1;delay(25);//电压延时占1/4IN1=0;delay(75);//空电压延时占3/4IN2=0;E=1;
}
void main()
{while(1){motor();}
}

步进电机

含义:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机一个脉冲信号,电机则转过一个步距角。

步进电机特点

  • 当步进电机接收到一定顺序的脉冲时,他就会根据脉冲的控制时序进行顺时针和逆时针的转动,脉冲的顺序决定了步进电机旋转的方向,脉冲的个数决定了步进电机转动的角度,脉冲的频率决定了步进电机的转速;
  • 有脉冲时步进电机就会转动一定的角度,没有脉冲时他就会保持当前位置
  • 步进电机具有快速启动和快速停止的特性
  • 当负载在一定范围内时,步进电机的转速与负载无关
  • 步进电机转动的方向很容易的通过反方向给脉冲时序来改变

步进电机驱动芯片L298

前言:L298是一种二相和4相单机的专用驱动器,即内含两个H桥的高电压大电流双全桥式驱动器,接受标准TTL逻辑电平信号,可用来驱动器电感性负载。H桥可承受46V电压,相电流高达2.5A。L298的逻辑电路使用5V电源。

L298引脚图

  • 引脚1和引脚15是电流监测端,分别为2个H桥的电流反馈脚,不用时可以直接接地
  • 引脚2和引脚3为电机驱动输出端
  • 引脚4为功率电源电压,此引脚需接100nf电容器
  • 引脚5和引脚7为电机控制信号输入端,TTL电平兼容
  • 引脚6和引脚11为TTL电平兼容输入使能端,低电平禁止输出
  • 引脚8为接地端
  • 引脚9为逻辑电源电压端。此引脚需并接100nf电容器
  • 引脚10和引脚12为电机控制信号输入端,TTL电平兼容
  • 引脚13和引脚14为电机驱动输出端

L298逻辑功能表

四相步进电机原理

理解:四相步进电机中心抽头接地(或电源),在四相线圈分别加以控制信号,就可以使之步进旋转。控制方法有4步法和8步法。四步法即按照如下电平变化在A、B、C、D引脚上产生控制信号:1001、1100、0110、0011,然后循环(每步90度)。若要使电机反向旋转,则在A、B、C、D引脚上逆序输入上述控制信号即可。8步法是四步法的分解,每步是四步法的步脚之半。其控制信号是:1001、1000、1100、0100、0110、0010、0011、0001(每步45度)

步进电机案例

需求:让步进电机每1s逆时针转动45度。

电路图

keil文件

#include "reg51.h"
#逆时针输入控制信号(8步法的倒序)
unsigned char str[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
#近似延时Nms
void delay(unsigned int n){int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
void stepper(){int i=0;for(i=0;i<8;i++){P2=str[i];delay(1000);}
}
void main()
{while(1){stepper();}
}

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

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

相关文章

Django创建app

一个新建立的项目结构大概如下 mysite/  manage.py   mysite/    init.py    settings.py    urls.py    asgi.py    wsgi.py 各文件和目录解释&#xff1a; 外层的mysite/目录与Django无关&#xff0c;只是项目容器&#xff0c;可以任意重命名.manage.py&#x…

opencv-python库 cv2ROI区域颜色通道提取合并颜色通道

文章目录 ROI区域颜色通道提取合并颜色通道 ROI区域 在OpenCV&#xff08;cv2&#xff09;中&#xff0c;ROI&#xff08;Region of Interest&#xff0c;感兴趣区域&#xff09;是指图像中你特别关心的部分。通过指定ROI&#xff0c;你可以对图像的特定区域进行处理、分析或显…

android 扫描二维码

1.在你的build.gradle文件中添加Mobile Vision库的依赖&#xff1a; dependencies {implementation com.google.android.gms:play-services-vision:20.1.0 } 2.创建一个新的Activity来处理扫描过程。 import android.Manifest; import android.content.pm.PackageManager; i…

算法| ss 回溯

39.组合总数46.全排列—478.子集79.单词搜索—1连续差相同的数字—1 39.组合总数 /*** param {number[]} candidates* param {number} target* return {number[][]}*/ // 思路 // dfs传参&#xff0c;传idx&#xff0c; 剩余target // dfs返回&#xff1a; 0 收集&#xff0c…

Linux编译Go运行在Windows上(纯记录)

要在Windows上运行Go程序&#xff0c;您需要使用交叉编译的方法在Linux上编译生成Windows可执行文件。以下是完成此任务的步骤&#xff1a; 安装Go编译器&#xff1a;首先确保您在Linux系统上安装了Go编程语言的编译器。如果尚未安装&#xff0c;请前往Go官方网站下载并安装适用…

vue快速入门(一)vue的导入方法

注释很详细&#xff0c;直接上代码 新增内容 下载js代码导入实例数据绑定显示 源码 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

HbnnMall电子商城系统介绍(功能与技术栈)

今天在看我个人网站上的文章时&#xff0c;看到了曾经在2020年自己开发的电商系统。那时我已经入职小米有一段时间了&#xff0c;基本已经对各个业务线&#xff0c;各种业务知识有了系统性的了解和学习&#xff0c;所以想自己动手写一个电商系统&#xff0c;以便进一步提高自己…

书生·浦语训练营二期第二次笔记

文章目录 1. 部署 InternLM2-Chat-1.8B 模型进行智能对话1.1 配置环境1.2 下载 InternLM2-Chat-1.8B 模型 2. 实战&#xff1a;部署实战营优秀作品 八戒-Chat-1.8B 模型2.1 配置基础环境2.2 使用 git 命令来获得仓库内的 Demo 文件&#xff1a;2.3 下载运行 Chat-八戒 Demo 3. …

19.网络测试

考试频率低&#xff1b;主要是上午题&#xff1b; 主要议题&#xff1a; 1.网络全生命周期测试策略 2.网络设备评测指标 吞吐量&#xff1a;单位时间内完成xxxx的数量&#xff1b;如&#xff1a;不丢包情况下&#xff0c;系统最大的包转发速度&#xff1b; 丢包率&#xff…

哈佛大学商业评论 -- 第二篇:增强现实是如何工作的?

AR将全面融入公司发展战略&#xff01; AR将成为人类和机器之间的新接口&#xff01; AR将成为人类的关键技术之一&#xff01; 请将此文转发给您的老板&#xff01; --- 本文作者&#xff1a;Michael E.Porter和James E.Heppelmann 虽然物理世界是三维的&#xff0c;但大…

java:课程笔记w3

文章目录 1. 程序控制1.1 if-else和switch细节1.2 三元运算符1.3 数据类型细节 2. 循环loop2.1 使用while/ for的情况&#xff1f;2.2 break、continue、exit() 3. class3.1 instance variable属性3.2 构造函数constructor function3.3 this和return3.4 variable 1. 程序控制 …

fdisk -l命令有什么用?fdisk -l详解

fdisk -l命令用于查看CentOS系统中所有硬盘及其分区的详细信息。该命令的输出会显示硬盘的大小、分区表结构、分区类型以及每个分区的起始和结束扇区等信息。 以下是一个典型的fdisk -l命令输出示例及其解释&#xff1a; Disk /dev/sda: 478.9 GB, 478888853504 bytes, 9353297…

C语言进阶课程学习记录-第22课 - 条件编译使用分析

C语言进阶课程学习记录-第22课 - 条件编译使用分析 条件编译基本概念条件编译实验条件编译本质实验-ifdefinclude本质实验-间接包含同一个头文件解决重复包含的方法-ifndef实验-条件编译的应用小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源…

restful和soa区别是啥企业应用是使用RESTFUL还是SOA

SOA&#xff0c;全称为面向服务的体系结构(Service-Oriented Architecture)&#xff0c;是一种根据业务流程来组织功能&#xff0c;并将功能封装成为可互操作的服务的软件架构。它将应用程序的不同功能单元&#xff08;称为服务&#xff09;进行拆分&#xff0c;并通过这些服务…

Java spring 01 (图灵)

01.依赖注入 这里两个方法用到了datasource方法&#xff0c;不是bean这样的使用&#xff0c;没有autowird 会创建两个datasource configuration 会运行代理模式 会产生一个AppConfig的代理对象 这个代理对象会在spring的容器先找bean&#xff0c;datasource此时已经创建了be…

Linux基础和进阶用法

Linux是一个广泛使用的开源操作系统&#xff0c;下面是一些Linux基础用法的详细介绍&#xff1a;文件和目录操作&#xff1a;ls&#xff1a;列出文件和目录的详细信息&#xff0c;包括权限、所有者、大小等。cd&#xff1a;切换到指定目录。使用cd ~返回用户主目录&#xff0c;…

Linux-进程概念

1. 进程基本概念 书面概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序等 内核概念&#xff1a;担当分配系统资源&#xff08;CPU时间&#xff0c;内存&#xff09;的实体。 2. 描述和组织进程-PCB PCB&#xff08;process contral block&#xff09;&#xff0…

RisingWave 在品高股份 Bingo IAM 中的应用

背景介绍 公司背景 品高股份&#xff0c;是国内专业的云计算及行业信息化服务提供商。公司成立于 2003 年&#xff0c;总部位于广州&#xff0c;下设多家子公司和分公司&#xff0c;目前员工总数近 900 人&#xff0c;其中 80 %以上是专业技术人员。 品高股份在 2008 年便开…

Linux集群部署项目

目录 一&#xff0c;环境准备 1.1.安装MySQL 1.2.安装JDK 1.3.安装TomCat 1.4.安装Nginx 二&#xff0c;部署 2.1.后台服务部署 2.2.Nginx配置负载均衡及静态资源部署 一&#xff0c;环境准备 1.1.安装MySQL 将MySQL的安装包上传至服务器 查看系统中是否存在mariadb&…

Go 源码之互斥锁 Mutex

文章目录 一、总结二、源码&#xff08;一&#xff09;Mutex&#xff08;二&#xff09; Lock&#xff08;三&#xff09;Unlock 三、常见问题有劳各位看官 点赞、关注➕收藏 &#xff0c;你们的支持是我最大的动力&#xff01;&#xff01;&#xff01;接下来会不断更新 golan…