资料编号:117

仿真图proteus 7.8
程序编译器:keil 5
编程语言:C语言

采用51单片机,用PWM控制电机脉冲频率应控制在25HZ~35HZ之间
定时1ms,1个周期30ms,脉冲频率为33HZ 来控制马达调速以及正反转

具体功能请看下方演示视频:

117-基于51单片机的PWM控制马达电机调速正反转(仿真+源码+全套资料)

单片机最小系统介绍
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。本文的单片机特指51单片机,具体芯片型号是 AT89C52。需注意STC89C51,STC89C52,AT89C51,AT89C52都是51单片机的一种具体芯片型号。

最小系统组成:

51单片机最小系统:单片机、复位电路、晶振(时钟)电路、电源

最小系统用到的引脚

1、主电源引脚(2根)

VCC:电源输入,接+5V电源

GND:接地线

2、外接晶振引脚(2根)

XTAL1:片内振荡电路的输入端

XTAL2:片内振荡电路的输出端

3、控制引脚(4根)

RST/VPP:复位引脚,引脚上

复位电路
一般来说,在电路图中,电容的的大小是10uf,电阻的大小是10k。(不特指本电路,具体参数看仿真图)

在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。可以算出电容充电到电源电压的0.7倍,即电容两端电压为3.5V、电阻两端电压为1.5V时,需要的时间约为T=RC=10K*10UF=0.1S。

也就是说在单片机上电启动的0.1S内,电容两端的电压从0-3.5V不断增加,这个时候10K电阻两端的电压为从5-1.5V不断减少(串联电路各处电压之和为总电压),所以RST引脚所接收到的电压是5V-1.5V的过程,也就是高电平到低电平的过程。

单片机RST引脚是高电平有效,即复位;低电平无效,即单片机正常工作。所以在开机0.1S内,单片机系统RST引脚接收到了时间为0.1S左右的高电平信号,所以实现了自动复位。

在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。

晶振电路
晶振基本概念 晶振全名叫晶体振荡器,每个单片机系统里都有晶振,晶振是由石英晶体经过加工并镀上电极而做成的,主要的特性就是通电后会产生机械震荡,可以给单片机提供稳定的时钟源,晶振提供时钟频率越高,单片机的运行速度也就越快。 晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

晶振起振后, 产生的振动信号会通过XTAL1引脚, 依次经过振荡器和时钟发生器的处理,得到机器周期信号,作为指令操作的依据。51单片机常用的晶振是12M和11.0592M

资料相关源码:

#include   <reg51.h>   
  typedef   unsigned   char   uchar;   
  sbit   P0_0=P0^0;
  sbit   P0_1=P0^1; 
  sbit   P0_2=P0^2;
  sbit   P0_3=P0^3; 
  sbit   P2_0=P2^0;
  sbit   P2_1=P2^1; 
  uchar   time=0;   
  uchar   period=25;   
  uchar   high=10;
  uchar   th1=0;
  uchar   tl1=0;
  uchar   th0=0; 
  uchar   tl0=0;     
    
  void   timer0()   interrupt   1   using   1   
  {   
            TH0=0x3c;     /*定时器初值重装载*/   
            TL0=0xb0;
            //TH0=0xc3;/*定时器初值重装载*/
            //TL0=0x50;  
            time++;   
            if(time==high)   /*高电平持续时间结束,变低*/   
            {   P2_0=tl0;
                P2_1=tl1;        
              }   
            else   if(time==period)     /*周期时间到,变高*/   
                      {   time=0;   
                          P2_0=th0;
                          P2_1=th1;
                             
                      }   
    
  }   
    
  void   main()   
  {   
        TMOD=0x01;   /*定时器0方式1*/   
        TH0=0x3c;     /*定时器装载初值,设置脉冲信号的占空比为1/5*/   
        TL0=0xb0; 
        //TH0=0xc3;/*定时器装载初值,设置脉冲信号的占空比为4/5*/
        //TL0=0x50;    
        EA=1;     /*开CPU中断*/   
        ET0=1;   /*开定时器0中断*/   
        TR0=1;/*启动定时器0*/  
        
        if(P0_2==1)
         {
          th0=1;
          tl0=0;
          th1=0;
          tl1=0;
              }

if(P0_3==1)
         {
          th0=0;
          tl0=0;
          th1=1;
          tl1=0;
              }
        while(1)     /*等待中断*/   
        {}   
    
  }

PWM对电机转速的控制

占空比可以实现对电机转速的调节,我们知道,占空比是高电平在一个周期之中的比值,高电平的所占的比值越大,占空比就越大,对于直流电机来讲,电机输出端引脚是高电平电机就可以转动,当输出端高电平时,电机会转动,但是是一点一点的提速,在高电平突然转向低电平时,电机由于电感有防止电流突变的作用是不会停止的,会保持这原有的转速,以此往复,电机的转速就是周期内输出的平均电压值,所以实质上我们调速是将电机处于一种,似停非停,似全速转动又非全速转动的状态,那么在一个周期的平均速度就是我们占空比调出来的速度了,

在电机控制中,电压越大,电机转速越快,而通过PWM输出不同的模拟电压,便可以使电机达到不同的输出转速。

当然,在电机控制中,不同的电机都有其适应的频率 频率太低会导致运动不稳定,如果频率刚好在人耳听觉范围,有时还会听到呼啸声。频率太高的电机可能反应不过来。

资料下载链接https://pan.baidu.com/s/1UVK4LxdJ9Cea1X9dXeAYtA?pwd=2aft

基于51单片机的PWM控制马达电机调速正反转(仿真+源码+全套资料)相关推荐

  1. 基于51单片机的PWM控制马达电机调速正反转

    资料编号:117  下面是相关功能视频演示: 117-基于51单片机的PWM控制马达电机调速正反转(仿真+源码+全套资料) 仿真图proteus 7.8(理论上高于7.8均可以打开) 程序编译器:ke ...

  2. 设计分享 | 基于51单片机实现红外控制系统控制电机调速

    vx[嵌入式工程师成长日记] https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484124&idx=1&sn ...

  3. 心率脉搏测试c语言算法,基于51单片机语音播报心率计脉搏测量仪设计(仿真源码+电路图+当时PaperPass16%查重论文)...

    一.本课题研究的主要内容.目的和意义 随着科技发展的不断提高,生命科学和信息科学的结合越来越紧密,出现了各种新颖的脉搏测量仪器,特别是电子脉搏仪的出现,使脉搏测量变得非常方便. 脉诊在我国已具有260 ...

  4. 基于51单片机的PWM控制直流电机设计( proteus仿真+程序+报告+讲解视频)

    基于51单片机的PWM控制直流电机设计( proteus仿真+程序+报告+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0031 ...

  5. 基于51单片机的智能门禁控制系统(仿真+源码+全套资料)

    资料编号:119  功能讲解: 采用51单片机作为CPU控制,继电器驱动门锁的打开与关闭,采用按键模拟指纹开锁,以及内部开锁相关信号,当指纹正确门锁可以正常打开,指示灯亮绿灯,如果指纹错误,门锁无法打 ...

  6. 基于51单片机的全自动智能洗衣机控制系统Proteus仿真(仿真+源码+全套资料)

     资料编号:108 设计功能: 1.对水温实时显示 2.显示滚筒转速 3.显示运行倒计时 4.能通过按钮分别设置洗涤时间和脱水时间 5.运行过程为:加热--洗涤--脱水 具体功能请看下方演示视频 10 ...

  7. 基于51单片机的数字温度计ds18b20温度测量报警仿真(仿真+源码+全套资料)

     资料编号:074 可以设置最低值和最高值,超过上限值LED1亮,超过下限值,LED2亮,LCD1602显示 全套资料齐全:具体请看下方演示视频 74-基于51单片机的数字温度计ds18b20温度测量 ...

  8. 基于51单片机的人体红外探测防盗报警(仿真+源码+全套资料)

     资料编号:128 功能说明: 1.按下紧急报警按键,紧急报警灯闪烁,蜂鸣器报警 2.按下布防按键,布防指示灯开始闪烁,闪烁大约30秒,保持亮的状态,进入布防模式 3.按下取消报警/布防按键,取消布防 ...

  9. 基于STM32单片机闭环步进电机驱动调速仿真(仿真+源码+全套资料)

    资料编号:081 (1) 基本功能:本任务通过输出脉冲控制步进电机的停止.运动.方向.使用 两个按键分别控制步进电机的正转和反转,再次按下这两个按键,步进电机停止, 同时 LCD 显示电机状态信息. ...

最新文章

  1. ATS中的RAM缓存简介
  2. php 公共的 受保护的,php-不使用$this-gt;调用受保护的属性
  3. android 音视频流采集,Android 音视频开发(四):使用 Camera API 采集视频数据(示例代码)...
  4. BASE64Encoder cannot be resolved to a type类似问题的解决办法
  5. 正向代理反向代理 简(fu)明(za)解释
  6. 疯狂ios讲义疯狂连载之实现游戏逻辑(2)
  7. 遍历文件夹下所有文件和文件夹
  8. mysql中的强制索引_MYSQL中常用的强制性操作(例如强制索引)
  9. 2016年最酷的十大安全初创公司
  10. C++编程语言中const关键字介绍
  11. Linux 网络编程 —— 套接字的介绍
  12. 历经8年双11流量洗礼,淘宝开放平台架构和技术难点解密
  13. 分割 反比 权重图 梯度 灰度_numpy gradient梯度函数1
  14. 当局为器,人民为水。当局什么样,人民就什么样
  15. 1.17 用Laplace变换解常微分方程
  16. manjaro设置字体_manjaro中文字体安装与设置
  17. 【云计算学习教程】软件(程序)是什么?
  18. java 错误: 无法将类 Customer中的构造器 Customer应用到给定类型
  19. mysql错误01000_错误 ORA-01000: maximum open cursors exceeded Exception
  20. 上半年最中意的 GitHub 更新「GitHub 热点速览 v.22.21」

热门文章

  1. 30岁以后最大的勇敢,是敢于走出舒适圈还是留在舒适圈?
  2. APIDOC使用教程
  3. 谷歌浏览器chrome即将在2020年底停止支持flash,我们程序员该怎么办
  4. 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数
  5. ASR6500S低功耗LoRa+射频前端LPWAN应用芯片
  6. Oracle AWR报告指标全解析-11011552
  7. 硬皮病 中医疗法大全
  8. 数据分析的目的、方法、思路
  9. 【浏览器】HTTP 缓存机制
  10. 纯Ubuntu系统重新安装为纯Windows10系统方法