【新提醒】基于HC32F460开发板的电机驱动及调速控制

步进电机是一种常用的执行器件,使用它能进行精准的定位及转速调节等工作。一个简单的步进电机驱动要由步进电机、驱动电路及微控制器构成,见图1所示。

图1 步进电机驱动构成
在HC32F460开发板上,提供了电机驱动控制接口,见图2所示。
图2 电机驱动控制接口
为了驱动步进电机,除了硬件方面的准备,还需必要的软件配合。
要编写步进电机驱动程序主要分为以下几步:
1)分配引脚
使步进电机的MA~ MD引脚分别与PE8~ PE11相连接
MA---PE8
MB---PE9
MC---PE10
MD---PE11
2)定义输出高低电平的语句
  1. #define MAL     PORT_ResetBits(PortE, Pin08)
  2. #define MAH     PORT_SetBits(PortE, Pin08)
  3. #define MBL     PORT_ResetBits(PortE, Pin09)
  4. #define MBH     PORT_SetBits(PortE, Pin09)
  5. #define MCL     PORT_ResetBits(PortE, Pin10)
  6. #define MCH     PORT_SetBits(PortE, Pin10)
  7. #define MDL     PORT_ResetBits(PortE, Pin11)
  8. #define MDH     PORT_SetBits(PortE, Pin11)

复制代码

3)配置延时函数
配置延时函数的工作在步进电机的驱动中十分重要,它控制着步进电机运转的快慢。
对于步进电机来说其速度是与驱动脉冲相有关的,但也并非脉冲越快,电机的转速越快。因为电机电机属于机械器件,要建立相应的磁场以达到相应的扭矩才能使电机转动。过快的脉冲只会使电机在原地震颤和抖动,并无法旋转。
4)控制电机旋转方向
对于4相5线式步进电机来讲,可通过8个节拍的脉冲序列来控制其正反转。
正转的驱动函数为:
  1. void zx(void)
  2. {
  3. unsigned char X,Y;
  4. for(X=0;X<64;X++)
  5. {
  6. for(Y=0;Y<8;Y++)
  7. {
  8. MDL;
  9. MAH; //A
  10. Ddl_Delay1ms(n);
  11. MBH; //AB
  12. Ddl_Delay1ms(n);
  13. MAL; //B
  14. Ddl_Delay1ms(n);
  15. MCH; //BC
  16. Ddl_Delay1ms(n);
  17. MBL; //C
  18. Ddl_Delay1ms(n);
  19. MDH; //CD
  20. Ddl_Delay1ms(n);
  21. MCL; //D
  22. Ddl_Delay1ms(n);
  23. MAH; //DA
  24. Ddl_Delay1ms(n);
  25. }
  26. }
  27. }

复制代码

反转的驱动函数为:

  1. void fx(void)
  2. {
  3. unsigned char X,Y;
  4. for(X=0;X<64;X++)
  5. {
  6. for(Y=0;Y<8;Y++)
  7. {
  8. MDH;
  9. MAH; //A
  10. Ddl_Delay1ms(n);
  11. MAL; //AB
  12. Ddl_Delay1ms(n);
  13. MCH; //B
  14. Ddl_Delay1ms(n);
  15. MDL; //BC
  16. Ddl_Delay1ms(n);
  17. MBH; //C
  18. Ddl_Delay1ms(n);
  19. MCL; //CD
  20. Ddl_Delay1ms(n);
  21. MAH; //D
  22. Ddl_Delay1ms(n);
  23. MBL; //DA
  24. Ddl_Delay1ms(n);
  25. }
  26. }
  27. }

复制代码

5)控制电机运行

控制电机运行的关键程序
  1. OLED_Init();
  2. OLED_Clear();
  3. OLED_ShowString(0,0,"HC32F460 TEST",16);
  4. OLED_ShowString(0,2,"OLED & MOTOR:",16);
  5. MAL;
  6. MBL;
  7. MCL;
  8. MDL;
  9. Ddl_Delay1ms(500);
  10. f=1;
  11. rdata=5;
  12. n=3;           // n>1
  13. OLED_ShowNum(112,2,0,2,16);
  14. for(c=0;c<rdata;c++)
  15. {
  16. if(f==0)    fx();
  17. else          zx();
  18. OLED_ShowNum(112,2,c,2,16);
  19. }

复制代码

感兴趣的话,还可以添加按键来设置转速和转动的圈数等,那会使应用价值更高!

(0)

相关推荐

  • 青少年机器人技术等级考试6月实操试题-视频解读

    三级 实操主题:距离指示器 知识点: (1)超声波测距 (2)舵机转动控制 (3)PWM模拟输出 (4)多分支选择结构 (5)IPO信息处理基本流程 任务描述:采用图形化编程,通过超声波传感器检测距离 ...

  • HC32F460 系列的 DMA 控制器

    32 位微控制器 HC32F460 系列的 DMA 控制器 1 摘要 本篇应用笔记主要介绍如何使用 HC32F460 系列芯片的 DMA 模块传输数据. 2 DMA 简介 什么是 DMA? DMA(直 ...

  • 单片机提高GPIO驱动能力的机中方法

    单片机的GPIO口驱动能力有限,不能直接驱动较大功率的负载,如果负载的功率较大必须要考虑采用驱动功率器件的方式,比如说三极管.MOS管以及其他的专用驱动芯片.下面结合几个典型的例子来介绍以下如何提高单 ...

  • 华大HC32F460 HC32F4A0加速程序运行速度

    华大单片机HC32F4xx系类(HC32F460 HC32F4A0)可以运行200Mhz,但内部Flash在 CPU运行频率达到33M后,就需要加入不同的等待周期. 所以实际程序在内部FLash内运行 ...

  • 32 位微控制器 HC32F460 系列的数据计算单元 DCU

    32 位微控制器 HC32F460 系列的数据计算单元 DCU

  • 嵌入式开发中的两点编程思想

    嵌入式开发,除了掌握基本的编程语法之外,编程的思想也是很关键,下面说两点编程思想. 1分层思想 嵌入式分层思想,可能你不懂,但你肯定见到过很多类似下面这样的软件结构图. 比如,RT-Thread Na ...

  • 【新提醒】HC32F460开发板的程序下载及LED控制

    我使用的HC32F460开发板是基于HC32F460JETA,共有48个引脚.所使用的开发工具,则是第三方的雅特力调试下载器AT_LINK. 该开发板有别于原厂的HC32F460开发板,其LED灯的原 ...

  • 【新提醒】HC32F460开发板OLED屏显示驱动

    与其他的开发板不同,在HC32F460开发板上配置了小巧别致的I2C接口OLED屏. 有了它,我们需要显示的数据和信息就不必完全借助于串口通信了! 好像是华大要测试测评者的水平,尽管开发板配置了OLE ...

  • 【新提醒】HC32F460开发板数据采样及显示

    HC32F460内置有2个独立的12位ADC,并在开发板上配有10K的电位器以模拟电位高低,见图1所示. 由原理图可知该电位器的引脚被连到MCU的PC0上,即ADC12_IN10. 图1 电位器连接 ...

  • 【新提醒】基于HC32F460开发板的RTC电子时钟

    在HC32F460内部配有RTC功能,这里我们为它配上OLED屏显示,这样它就构成一个RTC电子时钟. 所用的OLED屏就是随板子自带的,该OLED屏的原理图见图1所示. 图1  OLED屏原理图 本 ...

  • 【新提醒】基于HC32F460开发板的秘密锁功能实现

    本帖最后由 jinglixixi 于 2020-10-2 13:41 编辑 在HC32F460的开发板上,提供了一个I2C接口的AT24C02存储芯片,通过它可进行关键参数的读写. 由于其存储容量相对 ...

  • 【新提醒】基于HC32F460开发板的FLASH读写及字库构建测试

    本帖最后由 jinglixixi 于 2020-10-3 00:30 编辑 在HC32F460的开发板上,提供了一个SPI接口的W25Q64存储芯片,由于其存储容量较大,故适宜做字库或图库来使用. W ...

  • 【新提醒】HC32L072开发板之 KEY控制LED

    开发板上LED与KEY的原理图如图1所示,可以用SW1和SW2分别控制DS1和DS2.其程序如下: 图1  LED与KEY原理图 实现控制功能的程序如下: /********************* ...

  • 【新提醒】HC32L072开发板驱动 I2C接口光照传感器

    单有了显示单元还只是解决了人机交互的部分问题,要让机器具备感知能力就离不开传感器.传感器的种类有许多种,BH1750光照传感器就是其中的一种,它是一种基于I2C接口的数字式传感器,因此无需对获取的数据 ...

  • 【新提醒】HC32L136开发板的OLED驱动及应用

    在HC32L136开发板上配有一个笔段式的液晶屏,但无奈的是厂家却没提供一个能直接调用的显示函数. 在没解决该显示屏的显示函数前,先以轻车熟路的OLED屏来实现显示的问题. 由于手头的OLED屏是一款 ...