dsPIC30F2010 控制带传感器的BLDCM 无刷直流电机(11)

发布时间:2021-06-06

dsPIC30F2010 microchip 无刷直流电机

AN957

void _ISR _CNInterrupt(void){

IF = 0;// 清零标志HallValue = PORTB & 0x0038;// 屏蔽其它位,保留RB3、RB4和RB5HallValue = HallValue >> 3;// 执行3次右移

OVDCON = StateLoTable[HallValue];// 装载改写控制寄存器}

/*********************************************************************ADC中断用给定的电位计值装载DesiredSpeed变量。然后用该值来确定速度误差。当电机不运行时,使用来自电位计的直接给定值作为PDC值。

*********************************************************************/void _ISR _ADCInterrupt(void){

IFS0bits.ADIF = 0;

DesiredSpeed = ADCBUF0;if (!Flags.RunMotor)

{

PDC1 = ADCBUF0;// 赋值……PDC2 = PDC1;// 并装载所有的三个PWM……PDC3 = PDC1;// 占空比寄存器}

}

/************************************************************************该主程序控制初始化,按键以起动和停止电机。

************************************************************************/int main(void){

LATE = 0x0000;// 设置为输出PWM信号CNEN1 = 0x00E0;// 使能CN5、CN6和CN7// 使能内部上拉IF = 0;// 清零IE = 1;// 允许CN中断SpeedError = 0;SpeedIntegral = 0;InitTMR3();InitMCPWM();InitADC10();while(1){

while (!S2);// 等待按开始键while (S2)// 等待直到释放按键

DelayNmSec(10);

// 通过端口B读来自霍尔位置传感器的信号HallValue = PORTB & 0x0038;// 屏蔽其它位,保留RB3、RB4和RB5HallValue = HallValue >> 3;// 右移以获得值1、2……6OVDCON = StateLoTable[HallValue];// 装载改写控制寄存器PWMCON1 = 0x0777;// 使能PWM输出Flags.RunMotor = 1;// 将标志置1T3CON = 0x8030;// 启动TMR3while (Flags.RunMotor)// 当电机运行时

if (!S2)// 如果未按下S2

© 2005 Microchip Technology Inc.DS00957A_CN第13页

dsPIC30F2010 控制带传感器的BLDCM 无刷直流电机(11).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219