(12)直流电机

直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转

直流电机主要由永磁体(定子)、线圈(转子)和换向器组成

除直流电机外,常见的电机还有步进电机(遥控小车)、舵机(小车转向)、无刷电机(飞控)、空心杯电机(小型飞行器)等

请添加图片描述

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

请添加图片描述

PWM重要参数:

  • 频率 = 1 / TS
  • 占空比 = TON / TS
  • 精度 = 占空比变化步距

请添加图片描述

// 呼吸灯
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++){
    
     // time增长
			for(i = 0; i < 20; i++){
    
     // 状态延时,别变化太快
				LED = 0;
				Delay(time); // 亮时间逐渐增多
				LED = 1;
				Delay(100-time); // 暗时间逐渐减小
			}
		}
		
		for(time = 100; time > 0; time--){
    
     // time减小
			for(i = 0; i < 20; i++){
    
    
				LED = 0;
				Delay(time); // 亮时间逐渐减小
				LED = 1;
				Delay(100-time); // 暗时间逐渐增多
			}
		}
			
	}
}

请添加图片描述

sbit Motor = P1^0;

unsigned char counter, compare;
unsigned char KeyNum, speed;
void main(){
    
    
	
	Timer0_Init();
	
	while(1){
    
    
		KeyNum = Key();
		if(KeyNum == 1){
    
    
			speed++;
			speed %= 4;
			if(speed == 0){
    
    compare = 0;} // 改变不同的比较值,占空比逐渐减小
			if(speed == 1){
    
    compare = 10;}
			if(speed == 2){
    
    compare = 50;}
			if(speed == 3){
    
    compare = 100;}
		}
		Nixie_SetBuf(1, speed, 0);
	}
}


void Timer0_Rountine() interrupt 1{
    
    
	static unsigned int T0Count1 = 0, T0Count2 = 0;
//	TH0 = 64535/256; // 给计数单元赋初值,1000us=1ms
//	TL0 = 64535%256;
	TH0 = 65435/256; // 100us
	TL0 = 65435/256;
	
	counter++; // 计数器
	counter %= 100;
	
    // speed增大,占空比减小,计数器小于比较值的时间逐渐增多
	if(counter < compare){
    
     // 若计数器小于比较值
		Motor = 1; // 输出1,电机转动
	}else{
    
    
		Motor = 0; // 输出0,电机停止
	}
}

猜你喜欢

转载自blog.csdn.net/Falling_Asteroid/article/details/130737290