12. 直流电机调速(PWM)

2023-11-11

  1. 直流电机介绍

•直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转

•直流电机主要由永磁体(定子)、线圈(转子)和换向器组成

•除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等

  1. 电机驱动电路

  1. PWM波介绍

•PWM(Pulse Width Modulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、开关电源等领域

•PWM重要参数:

频率= 1 /TS 占空比= TON / TS 精度= 占空比变化步距

  1. 产生PWM波方法

  1. 呼吸灯

1)程序

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

2)Proteus仿真

  1. 直流电机驱动

1)程序

#include <REGX52.H>
#include "Nixie.H"
#include "Timer0.H"
#include "Key.H"

sbit Motor=P1^0;

unsigned char Counter,Compare,KeyNum,Speed;
void main ( )
{
    Timer0_Init();
  while(1)
  {
        KeyNum=Key();
        Nixie(1,Speed);    
        if(KeyNum==1)
        {
            Speed++;        
        }
        if(Speed<4)
        {
            switch(Speed)
            {
                case 0:Compare=0;
                break;
                case 1:Compare=25;
                break;                
                case 2:Compare=75;
                break;
                case 3:Compare=100;
                break;
            }
        }    
        else
            {
                Speed=0;
            }
  }
}

void Timer0_Routine() interrupt 1
{
    TL0 = 0x9C;        //设置定时初值
    TH0 = 0xFF;        //设置定时初值
    Counter++;
    Counter%=100;    //计数值变化范围限制在0~99
    if(Counter<Compare)    //计数值小于比较值
    {
        Motor=1;        //输出1
    }
    else                //计数值大于比较值
    {
        Motor=0;        //输出0
    }
}

2)仿真软件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

12. 直流电机调速(PWM) 的相关文章

  • 语义分割常用数据集整理

    语义分割的数据集分为三类 2D图片 2 5D图片 RGB D 3D图片 每一个类别的数据集都提供了像素级的标签 可以用来评估模型性能 同时其中一部分工作用到了数据增强来增加标签样本的数量 一 2D数据 1 PASCAL Visual Obj

随机推荐

  • 更换 CentOS 7 的下载源为阿里云

    1 备份 mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo backup 2 下载新的CentOS Base repo 到 etc yum repos
  • vue3 hooks的简单使用 组合式函数

    想当于vue2的mixins 我们可以使用hooks代替mixins 官方文档 组合式函数 hooks 特点 vue3 中的 hooks 函数相当于 vue2 里面的 mixin 混入 不同在于 hooks 是函数 vue3 中的 hook
  • 离线脱机局域网环境安装visual studio2019企业版

    我这个文章借鉴了网友的一些方法 自己改编的用于记录以后方便自己用 亲测2022社区版可能因为我电脑的win10系统不完善的原因 无法 安装 最后试了2019企业版成功安装 1 在官网下载安装包 点击跳转 2 点开的网页 我英语不好 我翻译了
  • 终极篇 C++算法到安卓的移植——AS调用VS的so库

    目的 windows平台下的c 算法 需要移植到安卓系统上 平时用惯了Visual Studio 再在其他软件上重新写算法 调试算法 实在头疼 所以我用VS的c 移动开发功能创建动态共享库 将算法内容放入 并实现JNI和JAVA接口部分 最
  • libvirt介绍和使用

    libvirt介绍和使用 导读 why what libvirt具体介绍 API 剖析 driver 剖析 如何使用libvirt why what 实现一朵可运行 可运维的云 需要完整的实现三层 VIM层 VNFM层 NFVO层 其中实现
  • C语言文件操作详解(解析各文件函数,如何应用文件函数)

    前言 我们为什么要在C语言中引进文件的概念呢 试想一个场景 我们写好了通讯录的源代码运行后录入了联系人的信息 但是每次的操作范围只局限在此次的执行程序中 执行程序一关 联系人的信息随着执行程序在内存中的消失而消失 因此 我们需要把联系人信息
  • 算法训练营day48

    文章目录 198 打家劫舍 思路分析 代码实现 思考总结 213 打家劫舍II 思路分析 代码实现 337 打家劫舍 III 树形DP 思路分析 代码实现 思考总结 198 打家劫舍 题目链接 你是一个专业的小偷 计划偷窃沿街的房屋 每间房
  • Java String 类练习

    文章目录 前言 一 一些常用的String方法 二 StringBuffer和StringBuilder 1 StringBuffer 2 StringBuilder 一个小项目 学生信息查询系统 简易版 前言 字符串广泛应用 在 Java
  • Docker跨CPU架构使用

    CPU架构 amd64 x86 arm64 mips64el等等 amd64 CPU架构的电脑默认是不能使用其他架构的镜像 但可以通过qemu的技术来实现 Docker跨CPU使用 举例说明 x86 64 CPU架构的电脑运行 ARM64
  • 性能测试:工具篇:Jmeter实时可视化平台搭建

    部署 influxDB 首先 pull influxBD镜像 拉取是1 8的版本 虽有2 0 的版本 但我还是喜欢站在巨人的肩头前行 debugfeng debugfeng sudo docker pull influxdb 1 8 1 8
  • sql for 循环

    declare i int set i 1 while i lt 100 begin update top 1 t set name i where name 123 set i i 1 end
  • SQL Server 数据库实验课第七周——授权:授予与收回

    目录 4 2 3 自主存取控制方法 4 2 4 授权 授予与收回 1 GRANT 2 REVOKE 4 2 5 数据库角色 4 2 3 自主存取控制方法 通过 SQL 的GRANT 语句和REVOKE 语句实现 定义用户存取权限 定义用户可
  • [Echarts可视化] 二.php和ajax连接数据库实现动态数据可视化

    前一篇文章 Echarts可视化 一 入门篇之简单绘制中国地图和贵州地区 主要是通过Echarts可视化介绍入门知识 中国地图和贵州地区各省份的数据分析 其中贵州地图才是它的核心内容 这篇文章主要结合PHP MySQL JQuery和Aja
  • android手机设置固定dns,手机怎么设置dns 手机设置dns方法【详解】

    很多时候 你去一个地方或者自己 的网络DNS解析的速度会直接影响你的网速 不信你打开一个网页 然后看浏览器的左下角的状态 经常会卡在解析 而且 大多数自用的带有路由的网络都默认的是自动获得DNS地址 造成每次链接的速度体验等不一致 直观感觉
  • 华夏食无忧上榜“2021亚洲品牌500强”品牌价值跃升至700.95亿元

    会议现场 同步品牌中国战略 品牌决胜未来 9月28日 第16届亚洲品牌盛典在海南自贸港隆重举行 本届活动由专业品牌评价机构Asiabrand 亚洲品牌集团 发起主办 中国亚洲经济发展协会 一带一路总商会 环球时报 社 澳门商报 东盟 中国工
  • nvme装系统不能自引导_怎么让老电脑实现UEFI启动NVME SSD固态硬盘进系统方法

    可能很多人不知道如果你买的是NVME的固态硬盘可能有些老电脑是不能使用的 因为很多老主板的bios是不支持UEFI的 也就是说不带UEFI bios 所以如果有人想把NVME的固态硬盘给老主板用的话 就需要想想办法了 首先我们可以用硬改bi
  • 设计模式之迭代器模式

    迭代器模式源于对容器的访问 比如java中的List Map 数组等 我们知道对容器对象的访问必然会涉及遍历算法 我们可以将遍历的方法封装在容器中 或者不提供遍历方法 如果我们将遍历的方法封装到容器中 那么对容器类来说就承担了过多的功能 容
  • python中property详解

    文章目录 1 什么是property属性 2 Python的property属性的功能是 property属性内部进行一系列的逻辑计算 最终将计算结果返回 3 property属性的有两种方式 3 1 在类的实例方法上应用 property
  • vue中如何设置鼠标经过切换样式

    vue中如何设置鼠标经过切换样式 第一步 在需要设置样式的标签上加上mouseover和mouseout属性 代码如下 p class content p 可以替换为v on 不影响使用 这里p标签的样式是 content p event是
  • 12. 直流电机调速(PWM)

    直流电机介绍 直流电机是一种将电能转换为机械能的装置 一般的直流电机有两个电极 当电极正接时 电机正转 当电极反接时 电机反转 直流电机主要由永磁体 定子 线圈 转子 和换向器组成 除直流电机外 常见的电机还有步进电机 舵机 无刷电机 空心