打印
[活动专区]

【Autochips评测】+AC7811电机驱动板上手实测

[复制链接]
3031|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
很荣幸收到杰发科技的电机驱动开发版。收到以后就进行了实际电机的测试。在测试期间参考了论坛网友的一些测评经验,现在来做一次测评的综合发帖。
本次测评步骤分为以下几个步骤。
第一:先了解开发版的功能特点,及开发环境,以及可以驱动的电机类型。
第二:根据开发板儿所能驱动电机的类型。综合考虑,采购开发板儿所能驱动的电机。
第三:选择开发环境,并搭建开发环境。
第四:将杰发科技提供的电机驱动例程程序下载到,电机驱动板。根据电路图及接口说明将电机接至杰发电机开发版进行控制实验,并展示实验图片及视频。
第五:对杰发科技提供的电机驱动程序例程程进行学习研究。好的,接下来进入正题。

第一部分
先来看下开发板实物图

首先我们知道这是一款基于单片机的电机开发版,先去杰发科技的官网下载相关的资料文档。

其中我们先看这篇文档“ATC AC78xx Motor Demo Board Guide  ”介绍


得出关键信息: 可以采用Jtag调试下载程序,电机采用三相,输入电源最低直流12V。

从这里可以知道,开发板所支持的电机为以上四种,并且有详细的供电电源范围。
好的,第一步就这么简单,下一步去详细的了解所支持的这四种电机区别,并选一种来做测试。
第二部分
本开发板所支持的电机类型其实就是两种,一种BLDC直流无刷电机,另一种是PMSM(永磁同步)电机。这两种电机都属于同步电机,唯一区别就是感应电压的波形不同,因此有两种不同的定子线圈接线方式,反电势为梯形波的是BLDC,正弦波的是PMSM。从控制算法来看,BLDC较简单一些。所以就决定采用BLDC电机,于是从网上开始搜索并最终采购了一款进口nidec尼得科12V直流无刷电机,具有高转速带霍尔特点。

最高12V的驱动电压,空载电流1A,功率10W, UVW 三相接口、霍尔五线接口、一应俱全,正好和开发板接口对应匹配,完美!

第三部分
购买过电机后,趁电机未到,抓紧来了解开发板,准备开发环境,运行官方提供的demo例程,从文档“ATC MCU AC781x 开发板说明手册”  可以找到开发板所支持的开发环境及搭建方法。


可以看出开发板支持MDK开发环境,这么通用,那就太方便了,不过要下载 安装 CMSIS 软件开发支持包(支持杰发 AC7811系列MCU),从keil官方可以下载,也可以从杰发科技官网下载:

如何在keil安装,这里就不做详细介绍了,安装好以后可以打开工程配置窗口看到已经含有支持的杰发芯片列表了,如下所示:


接下来,从官网下载电机驱动Demo例程,

这个代码包即是MDK环境下的工程,打开工程文件,直接点击编译,编译成功,结果如下:

整个过程相当顺利,接下来准备下载程序。

第四部分
通过对开发环境的搭建,以及购买的直流无刷电机已经到货了,那么现在就开始将电机接到开发板上面,并且将程序下载到开发板当中来进行电机的测试。
到手的直流无刷电机如图所示。

通过第一部分我们知道开发板可以采用jtag的方式来下载和调试,通过查看jtag的电路接口,决定采用swd的下载方式来下载和调试程序。下图分别为,电路图上jtag的接口标示及SWD下载器和电路板实际的连接接线图。

将直流无刷电机电机的三相驱动端UVW和霍尔传感器的接线端分别插在电路板的j17和j5插头上面。j17和j5的接线说明分别如下。

无刷直流电机和电路板的实际连接图如下:

另外还有一个从文档中看到的接口配置。通过这三个接口的配置,可以将电机配置为不同的驱动方式。这三个接口的配置方式如下:
,由于我使用的电机是直流无刷电机带霍尔传感器,所以采用的是第一行的模式,带霍尔 BLDC 方波模式。
将下载器和电路板连接以后,我们就可以通过MDK软件配置好下载方式,即可将程序下载到开发板当中。软件配置下载方式界面如下。

接下来给开发板儿进行供电,开发板共有两处电源接口,接口P3 作为给单片机供电的独立电源,接口J15作为功率管的供电电源,电路板上有一个短路帽,如果功率管采用12V电压供电,那么可以直接将短路帽短接即可,这样即可让两路电源共用,这里我采用12V作为输入电源,从J15接口输入。
在下载程序之前还是先看下程序中的功能内容,先看官方的文档“ATC AC78xx MotorApp Development Guide”
文档当中有着关于例程程序详细的介绍,


从查看文档说明结合程序内容来看,我们是需要找到程序中电机驱动选择的宏定义,然后打开相应的宏定义,开发板才可以运行到相应的驱动模式程序。
按图索骥,通过看函数命名名称即可判断哪个是BLDC带霍尔功能的驱动函数,那就是 APP_BLDC_HALL();
通过宏定义找到这个函数的位置,查看这个函数当中的内容如下:
void App_BLDC_Hall(void)
{
    DEBUGMSG(DEBUG_ZONE_INFO, ("[BLDC]App_BLDC_Hall\r\n"));
    BLDC_GPIO_Initialize();
    Motor_Encoder_Gpio_Init();
    BLDC_TIM_Initialize();
    BLDC_Parameters_Initialize();
    BLDC_CTU_Init();
    BLDC_ADC_Init();
#if (defined BLDC_HALL)
    BLDC_Hall_PWDT_Initialize();
#elif (defined BLDC_ENCODER)
    ENCODER_SpeedParameter_Initialize();
#endif
    BLDC_PWM_Initialize();
    PWM_ComplementaryModeConfig(PWM2, 0);
    BLDC_DEBUG_Initialize();

#if (defined INIT_POS_CTRL)
    BLDC_InitPos_Initialize();
#endif
    while (1)
    {
        BLDC_Keys_Read();
        if (g_bldc1msTime)
        {
            g_bldc1msTime = 0;
#if (defined BLDC_HALL)
            BldcHallMachine();
#elif (defined BLDC_ENCODER)
            BldcEncoderMachine();
#endif

        }
    }
}
从这个函数当中我们看到 #if (defined BLDC_HALL)   ,这是一个宏定义的判断,那么我们去找到这个宏定义位置。
/*** bldc angle sensor selection ***/
//#define BLDC_SENSORLESS //默认
#define BLDC_HALL    //有霍尔传感器 选择此项
//#define BLDC_ENCODER
找到以后发现默认是屏蔽掉的,那么我们将它打开。
好的,打开这个宏定义以后,电机驱动模式也就设置完成了。我们可以将USB插在板子上用电脑串口助手来查看一下输出的打印信息。
,从串口打印的信息可以看到,程序已经运行在带霍尔BLDC驱动模式。
好的,到这里我们就将程序下载到开发板当中,电机已经连接完成,12v电源开始上电。
运行效果还不错。

从电机转动的噪音和转动的流畅性来看。噪音还是比较大的,而且发现电机的电流已经达到1.5A,说明控制还是有问题的。
示波器测量一下其中两相输出之间的驱动波形:


第五部分
好的,我们现在已经将电机给驱动转起来了,但是电机转动的性能还有待提高。接下来就要按照官方给的算法说明手册,去真真正正的去研究一下它的算法内容了。

电机控制算法还是相当复杂的,这个就留着以后慢慢的去研究。 待做一些深入的研究了解,做测试得出一些相关的测试结果数据,再来和大家发帖分享探讨。




80592604b0a9c8aabe.png (143.24 KB )

80592604b0a9c8aabe.png

18849604ae4adf040a.png (20.67 KB )

18849604ae4adf040a.png

7305604addef44b90.png (427.19 KB )

7305604addef44b90.png

1313604addeb7eaf3.png (427.19 KB )

1313604addeb7eaf3.png

61233604add881e092.png (427.19 KB )

61233604add881e092.png

使用特权

评论回复

相关帖子

沙发
txquaker| | 2021-5-20 17:24 | 只看该作者
好帖,顶一个。

使用特权

评论回复
板凳
lvyunhua| | 2021-5-28 21:09 | 只看该作者
这个有没有做成产品啊 ,实际应用有用到FOC吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

51

帖子

4

粉丝