收藏 分享(赏)

使用 dsPIC30F2010控制带传感器的 BLDC电机.pdf

上传人:精品资料 文档编号:8878123 上传时间:2019-07-15 格式:PDF 页数:20 大小:758.74KB
下载 相关 举报
使用 dsPIC30F2010控制带传感器的 BLDC电机.pdf_第1页
第1页 / 共20页
使用 dsPIC30F2010控制带传感器的 BLDC电机.pdf_第2页
第2页 / 共20页
使用 dsPIC30F2010控制带传感器的 BLDC电机.pdf_第3页
第3页 / 共20页
使用 dsPIC30F2010控制带传感器的 BLDC电机.pdf_第4页
第4页 / 共20页
使用 dsPIC30F2010控制带传感器的 BLDC电机.pdf_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、 2005 Microchip Technology Inc. DS00957A_CN第 1页 AN957 引言 dsPIC30F2010 是一款专门为嵌入式电机控制应用设计 的 28引脚 16 位 MCU。它主要是为交流感应电机(AC Induction Motor, ACIM)、无刷直流电机(Brushless DC,BLDC)和普通直流电机这些典型的电机类型而专 门设计的。以下是 dsPIC30F2010 的一些主要特性: 6个独立或 3 对互补的电机控制专用 PWM 输出。 6输入、采样速率为 500Ksps 的 ADC,可同时采 样最多 4 路输入。 多种串行通信:UART、 I 2

2、 C和 SPI 小型封装:6 6 mm QFN,适用于嵌入式控制 应用 DSP引擎可实现控制环的快速响应。 在本应用笔记中,我们将讨论如何使用 dsPIC30F2010 来控制带传感器的 BLDC电机。 欲知 BLDC的详细工作 原理以及 BLDC 电机运行和控制的一般信息,请参阅 AN901_CN。本应用笔记讨论了使用 dsPIC30F2010控 制 BLDC电机的具体实现, 而对 BLDC电机的细节涉及 较少。 BLDC电机 BLDC 电机基本是内外倒置的直流电机。在一般直流电 机中,定子是永磁体。转子上有绕组,对绕组通电。通 过使用换向器和电刷将转子中的电流反向来产生旋转的 或运动的电场

3、。与之相反,在 BLDC 电机中绕组在定子 上而转子是永磁体。 “内外倒置的直流电机”这一称谓 由此得名。 要使转子转动,必须存在旋转电场。一般来说,三相 BLDC电机具有3相定子, 同一时刻为其中的两相通电, 以产生旋转电场。此方法相当容易实现,但是为了防止 永磁体转子被定子锁住,在知道转子磁体的精确位置的 前提下,必须以特定的方式按顺序为定子通电。位置信 息通常用霍尔传感器检测转子磁体位置获得,也可采用 轴角编码器方式获得。对于典型的三相带传感器的 BLDC 电机,有 6 个不同的工作区间,每个区间中有特 定的两相绕组通电。如图 1 所示。 图 1: BLDC 换相图 通过检测霍尔传感器,

4、可以得到一个 3 位编码,编码值 的范围从1到6。每个编码值代表转子当前所处的区间。 从而提供了需要对哪些绕组通电的信息。因此程序可以 使用简单的查表操作来确定要对哪两对特定的绕组通电 以使转子转动。 注意状态“0”和 “7”对于霍尔效应传感器而言是无 效状态。软件应该检查出这些值并相应地禁止 PWM。 变化通知输入 灵活使用上述的技巧,可以将霍尔效应传感器连接到 dsPIC30F2010的输入引脚上,来检测变化(变化通知 (Change Notification, CN)输入)。当这些引脚上的 输入电平发生变化时,就会产生中断。在 CN 中断服务 程序(Interrupt Service R

5、outine, ISR)中,由用户应 用程序读取霍尔效应传感器的值,用以计算偏移量并查 表,来正确地驱动 BLDC 电机的绕组。 著者: Stan D Souza Microchip Technology 导通 60 o HALL R HALL Y HALL B 霍尔状态 RYB 546231546 Q1,Q5Q1,Q6 Q3,Q5Q1,Q5Q1,Q6Q2,Q6Q2,Q4Q3,Q4Q3,Q5 使用 dsPIC30F2010控制带传感器的 BLDC电机 AN957 DS00957A_CN第 2 页 2005 Microchip Technology Inc. 电机控制脉宽调制(MCPWM) 使用

6、上面的方法可以使 BLDC电机全速旋转。然而,为 了使 BLDC电机速度可变,必须在两相绕组的两端加上 可变电压。从数字化的语言来讲,就是加在 BLDC 电机 绕组上的 PWM信号的不同占空比可以获得可变电压。 dsPIC30F2010有六个由 PWM信号驱动的 PWM输出。 如图 2 所示,通过使用六个开关、IGBT 或 MOSFET, 可以将三相绕组驱动为高电平、低电平或根本不通电。 例如,当绕组的一端连接到高端驱动器时,就可在低端 驱动器上施加占空比可变的 PWM 信号。这与将 PWM 信号加在高端驱动器上,而将低端驱动器连接到 VSS或 GND 的作用相同。一般更喜欢对低端驱动器施加

7、PWM 信号。 图 2:电机驱动电路与绕组连接示意图 PWM 信号由 dsPIC30F2010 的电机控制(Motor Control,MC)专用 PWM 模块提供。MCPWM 模块是 专为电机控制应用而设计的。 (阅读本节时,请参阅 图 3。) MCPWM有一个专用的 16位 PTMR时基寄存器。 此定 时器每隔一个由用户定义的时间间隔进行一次递增计 数,该时间间隔最短可以为 TCY。通过选择一个值并将 它装入 PTPER 寄存器,用户可以决定所需的 PWM 周 期。每个 T CY, PTMR 与 PTPER 作一次比较。当两者 匹配时,开始一个新的周期。 控制占空比的方法与此类似,只需在三

8、个占空比寄存器 中装入一个值即可。与周期比较不同,每隔 TCY/2 就将 占空比寄存器中的值与 PTMR 进行一次比较(即,比 较的频率是周期比较的两倍)。 如果PTMR的值与PDCx 的值相匹配,那么对应的占空比输出引脚就会根据选定 的 PWM 模式驱动为低电平或高电平。通过占空比比较 产生的三个输出将被分别传输给一对互补的输出引脚, 其中一个引脚输出为高电平,而另一个引脚输出为低电 平,反之亦然。这两个输出引脚也可以被配置为独立输 出模式。当驱动为互补输出时,可以在高电平变低与低 电平变高之间插入一段死区。死区是由硬件配置的,最 小值为 TCY。插入死区可以防止输出驱动器发生意外的 直通现

9、象。 +V 1H 1L三相负载 2H 2L 3H 3L 2005 Microchip Technology Inc. DS00957A_CN第 3页 AN957 图 3: PWM 框图 PDC3 PDC3缓冲器 PWMCON1 PTPER缓冲器 PWMCON2 PTPER PTMR比较器比较器 通道 3死区 发生器和 PTCON SEVTCMP比较器 特殊事件触发信号 FLTACON OVDCON PWM使能和模式控制 SFR FLTA引脚控制 SFR PWM手动 通道 2死区 发生器和 通道 1 死区 发生器和 PWM 发生器 #2 PWM发生器 #1 PWM发生器 #3 SEVTDIR P

10、TDIR DTCON1 死区时间控制 SFR特殊事件后分频器 FLTA PWM1L PWM1H PWM2L PWM2H PWM3L PWM3H 16 位数据总线 改写逻辑 改写逻辑 改写逻辑控制 SFRPWM时基 输出 驱动器 模块 注:为了明了起见没有给出 PWM发生器 #1 和 #2 的细节。AN957 DS00957A_CN第 4 页 2005 Microchip Technology Inc. 可以将 MCPWM 模块配置为多种模式。其中边沿对齐的输 出模式可能是最常见的。图 4描述了边沿对齐的 PWM 的 工作原理。在周期开始时,所有输出均驱动为高电平。随 着 PTMR 中值的递增,

11、一旦该值与占空比寄存器中的值发 生匹配就会导致对应的占空比输出变为低电平,从而表示 该占空比结束。 PTMR寄存器的值与 PTPER寄存器的值匹 配导致一个新的周期开始,所有输出变为高电平以开始一 个全新的周期。 图 4: 边沿对齐的 PWM 还可以将 MCPWM设置为其它模式:中心对齐的 PWM 和单个 PWM。由于它们不用于控制 BLDC 电 机,在此将不对这些模式进行讨论。欲知有关这些模式 的详细信息,请参阅dsPIC30F系列参考手册 (DS70046C_CN) 。 改写是本应用中使用的 MCPWM 的一个重要特征。改 写控制是MCPWM模块的最后级。它允许用户直接写入 OVDCON寄

12、存器并控制输出引脚。 OVDCON寄存器中 有两个 6 位字段。这两个字段中的每一位对应于一个输 出引脚。 OVDCON 寄存器的高字节部分确定对应的输 出引脚是由 PWM 信号驱动(当置为 1 时) ,还是 由OVDCON寄存器低字节部分中的相应位驱动为有效/ 无效(当置为 0 时)。 此功能允许用户使用 PWM 信号, 但是并不驱动所有输出引脚。对于 BLDC 电机,相同的 值被写入所有 PDCx寄存器。 根据 OVDCON 寄存器中的值,用户可以选择哪个引脚 获得 PWM 信号以及哪个引脚被驱动为有效或无效。控 制带传感器的 BLDC 时,必须根据由霍尔传感器的值所 指定的转子位置对两相

13、绕组通电。在 CN 中断服务程序 中,首先读霍尔传感器,然后将霍尔传感器的值用作查 找表中的偏移量,以找到对应的将要装入 OVDCON 寄 存器的值。 表 1和图 5说明了如何根据转子所处的区间 将不同的值装入 OVDCON 寄存器,从而确定需要对哪 些绕组通电。 表 1: PWM输出改写示例 图 5: PWM输出改写示例 周期 占空比 0 PTPER从 PDCx 中重载新占空比 PWM1H PWM2H PDC1 PDC2 PTMR 中的值 状态 OVDCON OVDCON 1 00000011b 00000000b 2 00110000b 00000000b 3 00111100b 0000

14、0000b 4 00001111b 00000000b PWM3H PWM3L PWM2H PWM2L 1234 PWM1H PWM1L 状态 注: 在状态 1- 4 之间切换的时间由用户软件控制。通 过向 OVDCON写入新值控制状态切换。本例中 PWM输出工作在独立模式。 2005 Microchip Technology Inc. DS00957A_CN第 5页 AN957 硬件描述 图 6 中的框图说明了如何使用 dsPIC30F2010 驱动 BLDC 电机。如需详细的原理图,请参阅附录 C。 图 6: 硬件框图 6 个 MCPWM 输出连接到 3 对 MOSFET 驱动器 (IR2

15、101S),最终连接到6个MOSFET(IRFR2407) 。 这些 MOSFET以三相桥式连接到 3相 BLDC电机绕组。 在当前实现中, MOSFET 的最大电压为 70V,最大电流 为 18A。 注意在使用最大功率时必须提供充分的散热,这一点很 重要。MOSFET驱动器也需要一个较高的电压(15V) 来运行,因此需要提供这么高的电平。该电机是 24V BLDC 电机,因此 DC+ 到 DC- 母线电压为 24V。需要 提供 5V的稳压电源来驱动 dsPIC30F2010。 3个霍尔效 应传感器的输出信号连接到与变化通知电路相连的输入 引脚,使能输入的同时也使能相应中断。若这 3个引脚 中

16、的任何一个发生了电平变化,就会产生中断。为了提 供速度给定,将一个电位计连接到 ADC 输入(RB2) 。 在 RC14 上提供了一个按钮开关,用于起动和停止电 机。为了向电机提供一些电流反馈,在 DC 母线负电压 与地或 Vss之间连接了一个低阻值电阻(25 毫欧) 。由 此电阻产生的电压被一个外部运放(MCP6002)放大 并反馈到 ADC 输入 (RB1) 。 固件描述 附录A和附录B包含了两个固件程序来举例说明此应用 笔记中描述的方法。一个程序使用开环速度控制。另一 个使用比例和积分反馈来实现闭环速度控制。 对于实际应用而言,开环方式通常是不实用的。此处介 绍它主要是为了阐明 BLDC

17、 电机的驱动方法。 开环控制 在开环控制中, MCPWM 根据来自速度电位计的电压输 入直接控制电机速度。初始化 MCPWM、ADC、端口和 变化通知输入之后,程序将等待一个激活信号 (例如, 按一个键)来表示开始(参见图 7) 。按下键后,程序 将读霍尔传感器。根据读到的值,从表中取出对应的值 并将它写入 OVDCON。此时电机开始旋转。 图 7: 开环流程图 PWM3H PWM3L PWM2H PWM2L PWM1H PWM1L BLDC dsPIC30F2010 CN5 CN6 CN7 AN2 给定 霍尔效应传感器反馈 MOSFET 驱动电路 开始 读霍尔效应传感器;用表中 查到的状态装

18、载 OVDCON 读过给定电位计吗? 初始化 MCPWM、 ADC和 端口 按过键吗? 用给定值 装载 PDCx 使用 OVDCON停止 MCPWM 按过键吗? 否 否 否 是 是 是AN957 DS00957A_CN第 6 页 2005 Microchip Technology Inc. 最初占空比值保持在默认值 50%。但是,在主程序的第 一个循环,将读电位计并将其值(即正确的给定值)作 为占空比插入。该值决定电机的速度。占空比值越高, 电机转得越快。图 8 所示电机速度由电位计控制。 图 8: 开环电压控制模式 霍尔效应传感器连接到变化通知引脚。允许 CN 中断。 当转子旋转时,转子磁体

19、的位置发生变化,从而使转子 进入不同的区间。 CN 中断表示转子进入每个新位置。 在 CN 中断程序(如图 9 所示)中,读霍尔效应传感器 的值,并根据该值得到一个表查找值,并将它写入 OVDCON 寄存器。此操作将确保在正确的区间对正确 的绕组通电,从而使电机继续旋转。 图 9: CN 中断流程图 相位超前 欲知有关相位超前以及实现方式的详细信息,请参阅 AN901_CN。 闭环控制 在闭环控制固件版本中,主要的不同是使用电位计来设 定速度给定。控制环提供了对速度的比例和积分 (Proportional and Integral, PI)控制。要测量实际速 度,可以使用 TMR3 作为定时器

20、来选通一个完整的电周 期。由于我们使用的是 10 极电机,因此一个机械周期 将由 5 个电周期构成。如果 T(秒)是一个电周期的时 间,那么速度 S = 60/(P/2*T) rpm,其中 P 是电机 的极数。 控制如图 10所示。 闭环控制流程图如图 11 所 示。 图 10: 闭环电压控制模式 图 11: 闭环控制流程图 dsPIC MCPWM BLDC 电机 电压 给定 开始 读霍尔效应传感器 获得在表中查找到的状态值 装载 OVDCON 结束 dsPIC MCPWM 速度 PI 控制器 给定 + - 电机速度计算结果 电机 S 开始 读霍尔效应传感器;用表中 查到的状态装载 OVDCO

21、N 读过实际速度吗? 初始化 MCPWM、 ADC 和端口 按过键吗? 计算比例和积分速度误差 * 使用 OVDCON 停止 MCPWM 按过键吗? 否 否 否 是 是 是 * PDCx = KP(比例速度误差) + KI(积分速度误差) 2005 Microchip Technology Inc. DS00957A_CN第 7页 AN957 结论 dsPIC30F2010非常适合对带传感器的 BLDC电机进行 闭环控制。外设和 DSP 引擎为带传感器的 BLDC 应用 提供了足够宽的带宽,并为客户的应用程序提供了充足 的代码空间。 参考书目 AN885Brushless DC(BLDC) M

22、otor Fundamentals AN901_CNdsPIC30F 在无传感器 BLDC 控制 中的应用 AN857 Brushless DC Motor Control Made Easy AN899 Brushless DC Motor Control Using PIC18FXX31 MCUsAN957 DS00957A_CN第 8 页 2005 Microchip Technology Inc. 附录 A: 开环控制的源代码清单 此附录包含了开环控制的源代码清单。 /- / Software License Agreement / / The software supplied he

23、rewith by Microchip Technology Incorporated / (the “Company”) is intended and supplied to you, the Companys 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 l

24、aws. 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

25、 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 A

26、NY REASON WHATSOEVER. /- / 文件:ClosedLoopSenBLDC.c / / 编写者:Stan DSouza,Microchip Technology / / 下列文件应该包含在MPLAB项目中: / / ClosedLoopSenBLDC.c主源代码文件 / p30f2010.gld链接描述文件 / / /- / / 版本历史 / / 10/01/04第一版 /- /* 以下是低端驱动器表。在此StateLoTable中, 在低端驱动器施加PWM信号,而高端驱动器为“导通”或 “截止”状态。 在本练习中使用此表。 /*/ unsigned int StateLo

27、Table = 0x0000, 0x0210, 0x2004, 0x0204, 0x0801, 0x0810, 0x2001, 0x0000; /* 以下是变化通知引脚CN5、CN6和CN7的中断向量。 当霍尔传感器改变状态时,将引起中断,指令执行将转到下面的子程序。 然后用户必须读端口B的第3位、第4位和第5位, 对读到的值进行移位和调节以使之读作1、26。 然后将调整后的值用作查找表StateLoTable中的偏移量 以确定装入OVDCON寄存器的值。 */ 软件许可协议 Microchip Technology Incorporated (“公司”)随附提供的软件旨在提供给您(该公司的客

28、户)使用,仅限于且只能在该公司制造 的产品上使用。 该软件为公司和 /或其供应商所有,并受适用的版权法保护。版权所有。任何违反前述限制的使用将使其用户遭受适用法律的刑事制 裁,并承担违背此许可的条款和条件的民事责任。 该软件“按现状”提供。不提供保证,无论是明示的、暗示的还是法定的保证。这些保证包括(但不限于)对出于某一特定目的应 用此软件的适销性和适用性默示的保证。在任何情况下,公司都将不会对任何原因造成的特别的、偶然的或间接的损害负责。 2005 Microchip Technology Inc. DS00957A_CN第 9页 AN957 void _ISR _CNInterrupt(v

29、oid) IFS0bits.CNIF = 0; / 清零标志 HallValue = PORTB / 屏蔽其它位,保留RB3、RB4和RB5 HallValue = HallValue 3; / 执行3次右移 OVDCON = StateLoTableHallValue; /* ADC中断用给定的电位计值装载PDCx 寄存器。 仅在电机运行时执行此操作。 */ void _ISR _ADCInterrupt(void) IFS0bits.ADIF = 0; if (Flags.RunMotor) PDC1 = ADCBUF0; / 赋值 PDC2 = PDC1; / 并装载所有的三个PWM P

30、DC3 = PDC1; / 占空比寄存器 int main(void) LATE = 0x0000; TRISE = 0xFFC0; / 设置为输出PWM信号 CNEN1 = 0x00E0; / 使能CN5、CN6和CN7 CNPU1 = 0x00E0; / 使能内部上拉 IFS0bits.CNIF = 0; / 清零CNIF IEC0bits.CNIE = 1; / 允许CN中断 InitMCPWM(); InitADC10(); while(1) while (!S2); / 等待按开始键 while (S2) / 等待直到释放按键 DelayNmSec(10); / 在PORTB上读霍尔

31、位置传感器 HallValue = PORTB / 屏蔽其它位,保留RB3、RB4和RB5 HallValue = HallValue 3; / 右移以获得值1、26 OVDCON = StateLoTableHallValue;/ 装载改写控制寄存器 PWMCON1 = 0x0777; / 使能PWM输出 Flags.RunMotor = 1; / 将标志置1 while (Flags.RunMotor) / 当电机运行时 if (S2) / 如果按下S2 PWMCON1 = 0x0700; / 禁止PWM输出OVDCON = 0x0000; / 将PWM改写为低电平 Flags.RunMo

32、tor = 0; / 复位运行标志 while (S2) / 等待释放按键 DelayNmSec(10); / while (1) 结束 AN957 DS00957A_CN第 10 页 2005 Microchip Technology Inc. /* 以下代码用于设置ADC寄存器,该代码可实现下列功能: 1. 1 个通道转换(本例中,该通道为RB2/AN2) 2. PWM 触发信号启动转换 3. 电位计连接到CH0和RB2 4. 手动停止采样和启动转换 5. 手动检查转换完成 */ void InitADC10(void) ADPCFG = 0xFFF8; / 将端口B的RB0到RB2配置为

33、模拟引脚;将其它引脚配置为数字引脚ADCON1 = 0x0064; / PWM 启动转换ADCON2 = 0x0200; / 同时采样4个通道ADCHS = 0x0002; / 将RB2/AN2作为CH0连接到电位计 / ch1 连接母线电压、Ch2连接电机,Ch3 连接电位计ADCON3 = 0x0080; / Tad 来源于内部RC(4uS)IFS0bits.ADIF = 0;IEC0bits.ADIE = 1;ADCON1bits.ADON = 1; / 启动ADC /* InitMCPWM,对PWM做以下初始化: 1. FPWM = 16000 hz 2. 独立的PWM 3. 使用OV

34、DCON 控制输出 4. 用从电位计读取的ADC值设置占空比 5. 将ADC 设置为由PWM 特殊触发信号触发 */ void InitMCPWM(void) PTPER = FCY/FPWM - 1; PWMCON1 = 0x0700; / 禁止PWM OVDCON = 0x0000; / 允许使用OVD控制 PDC1 = 100; / 将PWM1、PWM2和PWM3 初始化为100 PDC2 = 100; PDC3 = 100; SEVTCMP = PTPER; PWMCON2 = 0x0F00; / 后分频比设为1:16 PTCON = 0x8000; / 启动PWM /- / 这是普通

35、的1 ms 延迟程序,用于提供1 mS到65.5 秒的延迟。 / 如果N = 1,则延迟为1 mS ;如果N = 65535,则延迟为65,535 mS。 / 注意FCY 用于计算。 / 请根据上述定义语句做出必要的更改(PLLx4或PLLx8等) / 以计算出正确的FCY。 void DelayNmSec(unsigned int N) unsigned int j; while(N-)for(j=0;j MILLISEC;j+); 2005 Microchip Technology Inc. DS00957A_CN第 11页 AN957 附录 B: 闭环控制的源代码清单 此附录包含了闭环控

36、制的源代码清单。 /- / Software License Agreement / / The software supplied herewith by Microchip Technology Incorporated / (the “Company”) is intended and supplied to you, the Companys customer, / for use solely and exclusively with products manufacture by the Company. / The software is owned by the Company

37、 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 / th

38、is icense. / / 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,

39、 BE LIABLE FOR SPECIAL, INCIDENTAL OR / CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. /- / 文件:ClosedLoopSenBLDC.c / / 编写者:Stan DSouza,Microchip Technology / / 下列文件应该包含在MPLAB项目中: / / ClosedLoopSenBLDC.c主源代码文件 / p30f2010.gld链接描述文件 / /- / 版本历史 / / 10/01/04第一版 /- /* ClosedLoopSenBLDC.c 用于对带传感器的BLDC

40、电机进行闭环控制。 它的任务包括: 将霍尔传感器的传感变化信号输出到CN5、CN6 和CN7引脚 (端口B) 在CN中断期间,通过读端口B读取来自传感器的输入信号 分析并确定位置的状态1、26。 使用查找表StateLoTable,该表用于确定 OVDCON 的值。将在表中找到的值装入OVDCON。 将PWM初始化为产生独立连续的PWM信号。 电位计参考电压值用来确定给定(即要求的) 电机速度。然后使用要求的速度值和 实际的速度值来确定比例速度误差和 积分速度误差。有了这两个值,就可以使用下面的公式计算出新的占空比: NewDutyCycle (新的占空比)= Kp*(比例速度误差) + Ki

41、*( 积分速度误差) 然后将10位的NewDutyCycle(新占空比值)装入所有的3 个PWM 占空比寄存器中。 FPWM = 16000hz 设置ADC,使通过PWM触发信号来启动转换。 */AN957 DS00957A_CN第 12 页 2005 Microchip Technology Inc. #define _dsPIC30F2010_ #include “c:pic30_toolssupporthp30F2010.h“ #define FCY 10000000/ xtal = 5.0Mhz;PLLx8 #define MILLISEC FCY/10000/ 1 mS 延迟常数 #

42、define FPWM 16000 #define Ksp1200 #define Ksi10 #define RPMConstant60*(FCY/256) #define S2!PORTCbits.RC14 void InitTMR3(void); void InitADC10(void); void AverageADC(void); void DelayNmSec(unsigned int N); void InitMCPWM(void); void CalculateDC(void); void GetSpeed(void); struct unsigned RunMotor : 1

43、; unsigned Minus : 1; unsigned unused : 14; Flags; unsigned int HallValue; int Speed; unsigned int Timer3; unsigned char Count; unsigned char SpeedCount; int DesiredSpeed; int ActualSpeed; int SpeedError; int DutyCycle; int SpeedIntegral; /* 以下是低端驱动器表。在此StateLoTable中, 在低端驱动器上施加PWM信号,而高端驱动器为“导通”或 “截止”状态。 在本练习中使用此表。 */ unsigned int StateLoTable = 0x0000, 0x1002, 0x0420, 0x0402, 0x0108, 0x1008, 0x0120, 0x0000; /* 以下是变化通知引脚CN5、CN6和CN7的中断向量。 当霍尔传感器改变状态时,将引起中断,指令执行将转到下面的子程序。 然后用户必须读端口B的第3位、第4位和第5位, 对读到的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报