手机版

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

发布时间:2021-06-06   来源:未知    
字号:

dsPIC30F2010 microchip 无刷直流电机

AN957

附录A:

开环控制的源代码清单

软件许可协议

Microchip Technology Incorporated(“公司”)随附提供的软件旨在提供给您(该公司的客户)使用,仅限于且只能在该公司制造的产品上使用。

该软件为公司和/或其供应商所有,并受适用的版权法保护。版权所有。任何违反前述限制的使用将使其用户遭受适用法律的刑事制裁,并承担违背此许可的条款和条件的民事责任。

该软件“按现状”提供。不提供保证,无论是明示的、暗示的还是法定的保证。这些保证包括(但不限于)对出于某一特定目的应用此软件的适销性和适用性默示的保证。在任何情况下,公司都将不会对任何原因造成的特别的、偶然的或间接的损害负责。

此附录包含了开环控制的源代码清单。

//---------------------------------------------------------------------------------// Software License Agreement//

// The software supplied herewith by Microchip Technology Incorporated

// (the “Company”) is intended and supplied to you, the Company’s customer, // for use solely and exclusively with products manufacture by the Company.

// The software is owned by the Company and/or its supplier, and is protected under // applicable copyright laws. All rights are reserved. Any use in violation of the // foregoing restrictions may subject the user to criminal sanctions under applicable // laws, as well as to civil liability for the breach of the terms and conditions of // this license.//

// THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES, WHETHER EXPRESS, // IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.

// THE COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.

//---------------------------------------------------------------------------------//文件:ClosedLoopSenBLDC.c//

//编写者:Stan D'Souza,Microchip Technology//

// 下列文件应该包含在MPLAB项目中:////ClosedLoopSenBLDC.c——主源代码文件//p30f2010.gld——链接描述文件////

//---------------------------------------------------------------------//

// 版本历史//

// 10/01/04——第一版

//---------------------------------------------------------------------- /*************************************************************

以下是低端驱动器表。在此StateLoTable中,

在低端驱动器施加PWM信号,而高端驱动器为“导通”或“截止”状态。 在本练习中使用此表。

/*************************************************************/unsigned int StateLoTable[] = {0x0000, 0x0210, 0x2004, 0x0204,

0x0801, 0x0810, 0x2001, 0x0000};

、CN6和当霍尔传感器改变状态时,将引起中断,指令执行将转到下面的子程序。然后用户必须读端口B的第3位、第4位和第5位,1、2……6。

然后将调整后的值用作查找表StateLoTable中的偏移量以确定装入OVDCON寄存器的值。

*****************************************************************/

dsPIC30F2010 microchip 无刷直流电机

AN957

void _ISR _CNInterrupt(void){

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

// 执行3OVDCON = StateLoTable[HallValue];}

/*********************************************************************ADC中断用给定的电位计值装载PDCx寄存器。仅在电机运行时执行此操作。

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

IFS0bits.ADIF = 0;if (Flags.RunMotor){

PDC1 = ADCBUF0;PDC2 = PDC1;PDC3 = PDC1;}}

// 赋值……

// 并装载所有的三个PWM……// 占空比寄存器

int main(void){

LATE = 0x0000;TRISE = 0xFFC0;// 设置为输出PWM信号CNEN1 = 0x00E0;// 使能CN5、CN6和CN7CNPU1 = 0x00E0;// 使能内部上拉IF = 0;// 清零IE = 1;// 允许CN中断InitMCPWM();InitADC10();while(1){while (!S2);// 等待按开始键

while (S2)// 等待直到释放按键

DelayNmSec(10);

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

if (S2)// 如果按下S2{

PWMCON1 = 0x0700;// 禁止PWM输出

OVDCON = 0x0000;// 将PWM改写为低电平

Flags.RunMotor = 0;// 复位运行标志while (S2)// 等待释放按键

DelayNmSec(10);

}

}// while (1)结束}

© 2005 Microchip Technology Inc.DS00957A_CN第9页

dsPIC30F2010 控制带传感器的BLDCM 无刷直流电机(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)