基于ATmega8的直流电机PWM调速控制系统设计与实现
3、控制程序
以下是ATmega8单片机实现电机控制的部分程序:
PWM控制器的初始化:
voidtimer1_init(void)
{ OCR1A=0; //初始化为0,电机停止
OCR1B=0; //初始化为0,电机停止
TCCR1A=(1TCCR1B=(1 TCNT1=1;
CLR_IN1;
SET_IN2;
CLR_IN3;
SET_IN4;
}
定时器0中断服务函数,用于控制PWM1A的时间:
SIGNAL(SIG_OVERFLOW0)
{ if(Timer0_TickPWM1A_counter)
{ Timer0_Tick++;}
else{printf(ACK:);
SET_IN3;
SET_IN4;
OCR1A=0;
TIMSK=~_BV(TOIE0);
}
}
电机正转,speed为速度(0-255可调),choose为电机通道选择(R为右、L为左):
voidfor_ward(ucharspeed,charchoose)
{ if(ch=='R')
{ OCR1B=speed; //PWM1B_EN;
SET_IN1;
CLR_IN2; }
Else
{ OCR1A=speed;//PWM1A_EN;
SET_IN3;
CLR_IN4; }
}
五、结语
利用ATmega8单片机产生的PWM信号,加入数字PID算法实现对电机速度的控制,提高了系统的控制精度,保证了电机转速的稳定性;电机的启动、停止、左右转和速度都由程序定义,调试时只需修改PWM信号占空比即可实现速度控制,改变输出口电平即可实现电机正反转,无须改变系统硬件电路,即可实现各种控制,能有效缩短开发周期,提高效率;结合了受限倍频单极性可逆PWM电机驱动电路,增强了系统的驱动能力,提高了系统的可靠性和性价比。电路设计简单,电机控制方便,有利于广泛推广。本文引用地址:https://www.eepw.com.cn/article/162036.htm
pid控制器相关文章:pid控制器原理
pwm相关文章:pwm原理
脉宽调制相关文章:脉宽调制原理
评论