1 直流电机介绍
直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转
直流电机主要由永磁体(定子)、线圈(转子)和换向器组成
除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等
2 电机驱动电路
(1)大功率器件直接驱动(只能朝一个方向转)
ULN2003五线四项步进电机
若P10给1,则OUT1为低电平,连接电路时VCC与OUT1分别接两根线驱动电机
IN输入低电平,三极管导通,电流下行(二极管保护电路,称为续流二极管),电流正常通过电机,但电机为感性负载元件,若电路断开,感性会导致高电压,产生电流会经过二极管从而保护电路
(2)H桥驱动
若使左上角和右下角导通,则会形成一个由左至右通路;若使右上角和左下角导通,则会形成一个由右至左通路,从而控制电机正反转
1 PWM介绍
PWM(Pulse Width Modulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、开关电源等领域
PWM重要参数:
频率 = 1 / TS 占空比 = TON / TS 精度 = 占空比变化步距
用不断开关控制速度
2 产生PWM方法
(1)模型结构
(2)波形
程序源码
main.c
#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Nixie.h"
#include "Timer0.h"
sbit Motor=P1^0;
unsigned char Counter,Compare; //计数值和比较值,用于输出PWM
unsigned char KeyNum,Speed;
void main()
{
Timer0_Init();
while(1)
{
KeyNum=Key();
if(KeyNum==1)
{
Speed++;
Speed%=4;
if(Speed==0){Compare=0;} //设置比较值,改变PWM占空比
if(Speed==1){Compare=50;}
if(Speed==2){Compare=75;}
if(Speed==3){Compare=100;}
}
Nixie(1,Speed);
}
}
void Timer0_Routine() interrupt 1
{
TL0 = 0x9C; //设置定时初值
TH0 = 0xFF; //设置定时初值
Counter++;
Counter%=100; //计数值变化范围限制在0~99
if(Counter<Compare) //计数值小于比较值
{
Motor=1; //输出1
}
else //计数值大于比较值
{
Motor=0; //输出0
}
}
标签:Compare,12,电机,51,单片机,include,直流电机,PWM,Speed
From: https://blog.csdn.net/2302_81517810/article/details/141176125