直流电机驱动
- 15.1直流电机驱动基础知识
- 1.直流电机介绍
- 2.电机驱动电路
- 3.PWM介绍
- 15.2LED呼吸灯和直流电机调速
- 1.LED呼吸灯代码
- 2.直流电机调速
- (1)产生PWM的方法
- (2)工程目录
- (3)main.c函数
15.1直流电机驱动基础知识
1.直流电机介绍
直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转
直流电机主要由永磁体(定子)、线圈(转子)和换向器组成
除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等
2.电机驱动电路
3.PWM介绍
PWM(Pulse Width Modulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用干电机控速、开关电源等领域PWM重要参数:
频率=1/Ts
占空比=ToN/Ts
精度=占空比变化步距
15.2LED呼吸灯和直流电机调速
1.LED呼吸灯代码
只有一个main函数
#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);
}
}
}
}
2.直流电机调速
(1)产生PWM的方法
(2)工程目录
(3)main.c函数
#include <REGX52.H>
#include "Key.h"
#include "Delay.h"
#include "Timer0.h"
#include "Nixie.h"
sbit Motor=P1^0;
unsigned char Counter,Compare;
unsigned char KeyNum,Speed;
void main()
{
Timer0_Init();
Compare=5;
while(1)
{
KeyNum=Key();
if(KeyNum==1)
{
Speed++;
Speed%=4;
if(Speed==0){Compare=0;}
if(Speed==1){Compare=50;}
if(Speed==2){Compare=75;}
if(Speed==3){Compare=100;}
}
Nixie(1,Speed);
}
}
void Timer0_Routine() interrupt 1
{
TL0 = 0xA4;
TH0 = 0xFF;
Counter++;
if(Counter>=100)
{
Counter=0;
}
if(Counter<Compare)
{
Motor=1;
}
else
{
Motor=0;
}
}