下面用PWM2和PWM3来控制。
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h>/* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
int cnt2=80,cnt3=20
void init_pwm(void)
{
PWME=0X00//PWM禁止
PWMPRCLK=0x10//Clock B=8M/2=4MHz
PWMSCLB=200//Clock SB=Clock B/2/200=10kHz
PWMCLK=0x0c//设置PWM2、PWM3的时钟源均为Clock SB
PWMPOL=0x0c//设置PWM2、PWM3的极性均为1
PWMCAE=0x00//设置PWM2、PWM3的对齐方式为左对齐
PWMPER2=200
PWMDTY2=cnt2 //设置PWM2的周期内高电平时间
PWMPER3=200
PWMDTY3=cnt3 //设置PWM3的周期内高电平时间
PWME=0x0c//PWM2、PWM3使能
}
void init_ect(void)
{
TSCR1_TEN=0//计数器清零
TSCR2_PR=7// Clock=Bus/128
TIOS_IOS1=1//设置ECT1口为输出比较
TC1=406250//设置每6500ms产生定时中断
DLYCT=0x01//延迟256个Bus周期,即32us
PACN1=0//清零TC1寄存器
TIE_C1I=1//设置ECT1口中断使能
TSCR1_TEN=1//计数开始
}
void interrupt 9 run(void) //计数650ms后中断
{
TFLG1_C1F=1//清除ECT1的中断标志
TC1=TC1+406250
cnt2=cnt2-5
cnt3=cnt3+5
PWMPER2=cnt2
PWMPER3=cnt3
if (cnt2==0)
init_pwm()
}
void main(void)
{
DDRB=0XFF
PORTB=0x04
init_pwm()
init_ect()
EnableInterrupts
for()
{ }
}
直流有刷电机的驱动电路是一个H桥,可以通过控制H桥的的四个驱动管来实现电机的调速与正反转。直流有刷电机的扭矩与输入的电压有关,而输入电压是通过控制PWM的占空比来实现的(一个周期内的平均电压与占空比成正比)。
如何计算PWM的占空比,一般是通过闭环控制来实现。比如用测速机构测得当前的车速,发现车速小于目标转速,用PID闭环就可以算出需要增加多少占空比。
仪器介绍
有刷直流电机的工作原理
有刷电机的定子上安装有固定的主磁极和电刷,转子上安装有电枢绕组和换向器。直流电源的电能通过电刷和换向器进入电枢绕组,产生电枢电流,电枢电流产生的磁场与主磁场相互作用产生电磁转矩,使电机旋转带动负载。由于电刷和换向器的存在,有刷电机的结构复杂,可靠性差,故障多,维护工作量大,寿命短,换向火花易产生电磁干扰。
有刷直流电机的工作原理图如图2-1所示。在有刷直流电机的固定部分有磁铁,这里称作主磁极固定部分还有电刷。转动部分有环形铁芯和绕在环形铁芯上的绕组。
图2-1所示的两极有刷直流电机的固定部分(定子)上装设了一对直流励磁的静止的主磁极N和S,在旋转部分(转子)上装设电枢铁芯。定子与转子之间有一气隙。在电枢铁芯上放置了由A和X两根导体连成的电枢线圈,线圈的首端和末端分别连到两个圆弧形的铜片上,此铜片称为换向片。换向片之间互相绝缘,由换向片构成的整体称为换向器。换向器固定在转轴上,换向片与转轴之间亦互相绝缘。在换向片上放置着一对固定不动的电刷B1和B2,当电枢旋转时,电枢线圈通过换向片和电刷与外电路接通。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)