JMU2010 发表于 2020-6-14 09:05

【MM32 eMiniBoard测评报告】+驱动步进电机

本帖最后由 JMU2010 于 2020-6-14 09:09 编辑

1. 引言先简单聊一下我与MM32的故事。 在去年,我开始做BLDC的项目,于是开始学习了解各家的mcu及其解决方案。有幸获得了灵动微电子的MM32 SPIN系列开发板,给我的感觉是开发板做工精良,开发配套资料很全,FAE支持也很及时,我想有机会也要去了解其他系列,这不,机会就来了嘛。
static/image/hrline/1.gif

2. 关于开发板学习使用一款新的mcu及其解决方案,要先把相关的软硬件资料准备好。推荐去灵动官网下载相关资料。 以下为链接地址:http://www.mm32mcu.com/download1.aspx由于MM32系列很多,我们可以根据自己的需要下载对应的资料,如我们手中的 Mini board 搭载的是 MM32L073,下载相关资料即可。
2.1 硬件资料这个链接里的文档附有原理图和操作手册,建议仔细查阅。
2.2 软件资料这个链接里有库函数和相关的 Demo,建议仔细查阅。
2.3 开箱点评:元器件都在正面,反面啥也没有。开发板摸上去手感很好。
2.4 硬件资源盘点我手中这一款是MB-023,根据相关文档可知,其具备以下模块:
[*]CN2, Power And Debug
[*]CN3, Power,稳压输出3.3V
[*]4个LED灯
[*]4个按键
[*]支持 Arduino 接口
[*]CN4, UART接口
[*]CN5, CAN接口
[*]1个蜂鸣器模块
[*]8MHz晶振
[*]SPI Flash模块
[*]AT24C02, EEPROM存储模块
[*]板载仿真器
点评:板载资源非常丰富,有点超出期望了。之前玩过的STM32评估板资源很少,只有板载调试器+ mcu 最小系统。做原型样机开发时,连接很多外部模块时就显得不方便。相比较而言,MM32就考虑更周全了。嵌入式开发的最常用的模块都有,有了这款开发板,很方便做原型样机验证,这里,给灵动点个赞。
2.5 软件Demo演示有了板载调试器,用一根 Micro USB 数据线连接好就可以进行开发调试了,很方便。软件库支持最主流的两大编译器:Keil 和 IAR.首次使用L073系列,需要安装 Pack 包。 下载解压后,双击安装即可。点灯程序,号称嵌入式世界的 "Hello world".#include "delay.h"
#include "sys.h"
#include "led.h"

int main(void)   
{
    delay_init();
    LED_Init();
    while(1)      
    {
      LED1_TOGGLE();
      LED2_TOGGLE();
      LED3_TOGGLE();
      LED4_TOGGLE();
      delay_ms(300);
    }
}
需要注意的是:仿真调试时需要手动选择一下仿真器型号。 效果:4个IO口间隔300ms翻转,可以看到4个LED灯在闪烁。
static/image/hrline/3.gif

3. 项目实战3.1 项目描述使用 MM32 驱动步进电机工作,步进电机有工作头,进而完成一些自动化的任务。
3.2 步进电机控制原理当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。简单来说,驱动器的四个 IO 口需要规则的脉冲信号,如间隔一小段时间的0b1000->0b0100->0b0010->0b0001,驱动信号一直循环下去电机就可以一直旋转。
3.3 主要代码int main(void)   
{
      static uint8_t s_u8Step = 0;
      
    delay_init();
    LED_Init();
    while(1)            
    {
      switch(s_u8Step)
      {
                case 0:S1_OFF();S2_ON();S3_ON();S4_ON();break;
                case 1:S2_OFF();S1_ON();S3_ON();S4_ON();break;
                case 2:S3_OFF();S1_ON();S2_ON();S4_ON();break;
                case 3:S4_OFF();S1_ON();S2_ON();S3_ON();break;
                default:break;
      }
      s_u8Step++;
      if(s_u8Step >= 4)
      {
                s_u8Step = 0;
      }
      delay_ms(5);
    }
}
// 步进电机引脚控制
#define S1_ON()GPIO_ResetBits(GPIOA,GPIO_Pin_4)      // PA4
#define S1_OFF()GPIO_SetBits(GPIOA,GPIO_Pin_4)      // PA4
#define S1_TOGGLE()(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_4))?(GPIO_ResetBits(GPIOA,GPIO_Pin_4)):(GPIO_SetBits(GPIOA,GPIO_Pin_4))      // PA4

连线说明: 驱动器的电源来自开发板的 5V 和 GND 。 驱动器的 IO 信号来自开发板的 PA3~PA7,需全部设置为GPIO的输出引脚功能。实测效果:步进电机旋转一周大约5s。
static/image/hrline/line6.png

小结最后,总结一下总体感受。
[*]开发板做工精良
[*]板载资源丰富,原型开发验证方便
[*]软件资源齐全,与主流开发工具无缝对接
[*]软件库与STM32相似度较高,便于开发人员快速上手。


B1lanche 发表于 2021-1-10 12:39

写的够细致的,这块开发板做的还是比较贴心的,IO基本都引出了,方便开发

wahahaheihei 发表于 2021-1-11 22:18

这程序真是棒

lidi911 发表于 2021-1-15 08:37

没有电机演示效果

jcky001 发表于 2021-1-18 15:36

给楼主赞一个,很细致

liangshuang95 发表于 2021-1-19 18:38

赞一个,感谢楼主分享经验。

51xlf 发表于 2021-4-5 16:21

步进电机是一种将电脉冲信号转换为角位移的执行机构

i1mcu 发表于 2021-4-5 16:21

驱动有什么要求?

pmp 发表于 2021-4-5 16:22

如何用PWM驱动步进电机

mmbs 发表于 2021-4-5 16:22


求两相四线步进电机驱动,C语言源码

1988020566 发表于 2021-4-5 16:22

步进电机的驱动方式?

lzbf 发表于 2021-4-5 16:23

可以驱动几个步进电机?

youtome 发表于 2021-4-5 16:23

谢谢楼主的方案。   

cemaj 发表于 2021-4-5 16:23

驱动是只有最简单的正反转   

jimmhu 发表于 2021-4-5 16:24

怎样直接驱动步进电机

uptown 发表于 2021-4-5 16:24

使用光耦了吗

mmbs 发表于 2021-4-5 16:25

可以控制步数的。

i1mcu 发表于 2021-4-5 16:25

步进电机怎么选择

51xlf 发表于 2021-4-5 16:25

求c语言带步数为参数的步进电机驱动子函数

youtome 发表于 2021-4-5 16:25

      
页: [1] 2 3
查看完整版本: 【MM32 eMiniBoard测评报告】+驱动步进电机