标签:Compare 电机 Counter 51 单片机 直流电机 include Speed
一、直流电机介绍
直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时, 电机正转,当电极反接时,电机反转。直流电机主要由永磁体(定子)、线圈(转子) 和换向器组成
除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等。
二、电机驱动电路
①大功率器件直接驱动 ULN2003芯片做驱动或直接搭建器件电路,不能反转
②H桥驱动,可以做正反转
ULN2003芯片:
给0输出1,给1输出0;0是有驱动能力的,1是没有驱动能力的,相当于断开,因此9脚接VCC,续流二极管起作用,因此负载就一端接VCC,一端直接接ULN2003的端口。该芯片高压输出50V,集电极电流最大50mA。
三、PWM介绍和产生方法
PWM (Pulse Width Modulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、开关电源等领域。
频率=1/Ts
占空比=Ton/Ts 精度=占空比变化步距
四、代码
产生一个100Hz的PWM波
#include <REGX52.H>
#include "Delay.h"
#include "key.h"
#include "Timer0.h"
#include "Shuma.h"
sbit Moter=P1^0;
unsigned char Counter,Compare,KeyNum,Speed;
void main()
{
Timer0Init();
Compare=5;
while(1)
{
KeyNum=Key();
if(KeyNum==1)
{
Speed++;
Speed%=4;
if(Speed==0){Compare=0;}
if(Speed==1){Compare=5;}
if(Speed==2){Compare=50;}
if(Speed==3){Compare=100;}
}
Shuma(1,Speed);
}
}
void Timer0_Routine() interrupt 1
{
//这里的Counter作为全局变量也可以,不会因为中断结束而销毁
TL0 = 0x9C; //设置定时初值
TH0 = 0xFF; //设置定时初值
Counter++;
Counter%=100; //当Counter=100,对100取余为0,刷新为0
if(Counter<Compare)
{
Moter=1;
}
else
{
Moter=0;
}
}
标签:Compare,电机,Counter,51,单片机,直流电机,include,Speed 来源: https://blog.csdn.net/qq_42786221/article/details/123638490
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。