JackCin's blog JackCin's blog
首页
  • 页面

    • Html
    • CSS
  • 核心

    • JavaScript基础
    • JavaScript高级
  • 框架

    • Vue
  • jQuery
  • Node
  • Ajax
Linux
  • 操作系统
  • 数据结构与算法
  • 51单片机
  • CC2530
  • 网站
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

JackCin

前端小菜鸡(✪ω✪)
首页
  • 页面

    • Html
    • CSS
  • 核心

    • JavaScript基础
    • JavaScript高级
  • 框架

    • Vue
  • jQuery
  • Node
  • Ajax
Linux
  • 操作系统
  • 数据结构与算法
  • 51单片机
  • CC2530
  • 网站
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 51单片机

    • 51单片机及补充知识
    • LED
    • 独立按键
    • 数码管
    • LCD1602液晶显示器
    • 矩阵按键
    • 定时器
    • 串口
    • LED点阵屏
    • 蜂鸣器
    • AT24C02存储器
    • AD与DA
    • DS18B20温度传感器
    • DS1302时钟
    • LCD1602液晶显示屏
    • 红外遥控
    • 呼吸灯与直流电机调速(PWM)
      • 一、调节LED灯的亮度
      • 二、硬件知识
      • 三、驱动电路
        • 1、大功率器件直接驱动
        • 2、H桥驱动
      • 四、PWM
        • 1、介绍
        • 2、产生PWM
      • 五、直流电机调速
  • 单片机
  • 51单片机
JackCin
2023-09-13
目录

呼吸灯与直流电机调速(PWM)

(十五)51单片机——呼吸灯与直流电机调速(PWM)_51单片机pwm控制直流电机_花园宝宝小点点的博客-CSDN博客 (opens new window)

# 一、调节LED灯的亮度

  • 我们如何去调节LED灯的亮度?第一时间想到的肯定是调电压,只要电压低,亮度不就下来了吗?确实是这样的,但是在单片机中调节电压不现实,所以我们采用让灯亮一下,灭一会,我们通过控制供电的时间,来达到控制LED灯的亮度。其实PWM也是这样类似的思想,那我们从控制灯的亮度开始,来慢慢理解PWM的工作原理吧!
#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;
				Delay(Time);
				LED=1;
				Delay(100-Time);
			}
			
		}
		
		for(Time=100;Time>0;Time--)
		{
			for(i=0;i<20;i++)
			{
				LED=0;
				Delay(Time);
				LED=1;
				Delay(100-Time);
			}
		}
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  • 运行结果如上所示,起到了控制LED灯亮度的功能。

# 二、硬件知识

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

img

# 三、驱动电路

# 1、大功率器件直接驱动

  • ULN2003D在我们之前介绍过,后面那个相当三极管,起到放大电路的作用,下面的二极管起到保护电路的作用,因为电机可能感应出来比较大电压,从而烧坏电路。

img

# 2、H桥 (opens new window)驱动

  • 就是通过导通Q1、Q4形成正向电流或者Q2、Q3形成反向电流,但就是需要确保反向电流不会损坏电路。

img

# 四、PWM

# 1、介绍

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

  • PWM重要参数: 频率 = 1 / TS 占空比 = TON / TS 精度 = 占空比变化步距

  • 其实就是通过不断给电压,不给电压,来调节频率,和之前的呼吸灯类似。

img

# 2、产生PWM

  • 模型结构

img

  • 波形

img

  • 其实核心原理还是一样的,只不过我们使用定时器来实现PWM。我们结合我们的代码来理解要好一点。

# 五、直流电机调速

#include "Nixie.h"
#include "Time0.h"
 
sbit Motor = P1^0;
 
unsigned char Counter,Compare;//计数值和比较值,用于输出PWM
unsigned char KeyNum,Speed;
 
void main(){
	Timer0_Init();
	Compare = 4;
	while(1){
 
		KeyNum = Key();
		if(KeyNum == 1){
			Speed++;
			Speed %= 4;
			if(Speed==0){Compare=0;}	//设置比较值,改变PWM占空比
			if(Speed==1){Compare=45;}
			if(Speed==2){Compare=70;}
			if(Speed==3){Compare=90;}
		}
		Nixie(1,Speed);
	}
}
 
void Timer0_Routine() interrupt 1
{
	static unsigned int T0Count;
	TL0 = 0xAD;		//设置定时初始值
	TH0 = 0xFF;
	Counter++;
	Counter%=90;
	if(Counter < Compare){
		Motor = 1;
	}else
	Motor = 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  • 目前出现了点小问题,等回宿舍在想办法解决吧。。。。。
编辑 (opens new window)
上次更新: 2023/09/13, 12:29:52
红外遥控

← 红外遥控

最近更新
01
51单片机及补充知识
09-13
02
独立按键
09-13
03
LCD1602液晶显示器
09-13
更多文章>
Theme by Vdoing | Copyright © 2019-2023 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式