这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » OK1126B-S开发板下函数构建及步进电机驱动控制

共6条 1/1 1 跳转至

OK1126B-S开发板下函数构建及步进电机驱动控制 25

助工
2026-03-19 17:49:33     打赏

在设计功能较为复杂的程序时,往往离不开各种功能函数的配合。在脚本编程的情况下,自然也不例外。

但在该环境下的函数设计,也与常规的函数设计有一定的差别,那就是这种函数是不带形参的。为此,在进行函数设计时,要借助全局变量的配合来传递参数。

定义函数的方式为:

function 函数名
{
   函数处理内容
}

使用函数的方式为:

函数名

此外,在各种功能设计中还离不开各种延时函数的使用。在这中使用频率最高的当属sleep指令,其可产生秒级延时效果,并支持诸如延时2.5秒的延时效果,其指令为:sleep 2.5

那我们要延时更长的时间呢?

我们可以通过附加延时单位来实现,以延时5分钟为例,其指令为:sleep 5m

那延时单位有那些单位呢?

这些单位分为:s为秒、m为分钟、h为小时、d为天数。

那要延时更短小的时间呢?

可细分为毫秒和微秒级,所使用的指令为msleepusleep

有了以上的知识准备,下面就其来实现步进电机的驱动。

步进电机是一种将电脉冲转换成相应角位移或线位移的电动机。当为其输入脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电动机又称脉冲电机。

受驱动能力的限制,要驱动步进电机需为它配备功率驱动模块,见图1所示。

image.png

1 步进电机与驱动模块 

以五线四相步进电机为例,其内部结构如图2所示。

image.png

2 内部结构 

因为步进电机是由直流脉冲驱动的工作原理是将直流电变成分时供电,进而由多相时序控制电流为步进电机供电,以驱动步进电机转动

该步进电机有两种驱动方式,即:四拍驱动方式八拍驱动方式 

在四驱动方式中,每次仅有一个线圈通电,对磁铁产生吸引作用,从而使电机转动,每次转动一个相位。此外,改变脉冲方向,控制电机的转动方向

image.png

3 驱动方式 

相当于四拍驱动方式,八拍驱动方式实现了更精细的角度控制,更适用于高精度的控制场合。

image.png

4 八拍驱动方式

通过对节拍间时间的控制,可调节步进电机的转动速度间隔时间越短则转速越快,扭矩也越小。

由于在步进电机内部是由齿轮减速的,所以一个节拍周期并不是转动一圈,这之间有一个转换关系,不同的电机比例系数不同。

步进电机与开发板的连接关系为:

A----P0C6gpio22

B----P0C7gpio23

C----P4A0gpio128)  

D----P4A1gpio129

image.png

5 器件连接 

对所用引脚的配置程序,见图6所示。

image.png

6引脚配置 

驱动步进电机转动一周的函数内容及其用法,见图7所示。

image.png

7 函数定义及使用

演示视频:





关键词: OK1126B-S开发板    

专家
2026-03-23 12:08:35     打赏
2楼

印象里,类似帖子中的步进电机,控制脉冲的时间间隔好像不能小于1ms。过快的时序脉冲,机械上的可能无法跟得上。

shell编程灵活,不需要频繁编译、烧录。我觉得非常适合用来测试元器件。


助工
2026-03-23 12:13:09     打赏
3楼

“控制脉冲的时间间隔好像不能小于1ms。过快的时序脉冲,机械上的可能无法跟得上。”的确脉冲过小会产生只抖动,无法转动的问题。通过实际测试,20us是没问题的,效果见视频。


高工
2026-03-25 07:47:55     打赏
4楼

谢谢分享!


高工
2026-03-25 17:57:19     打赏
5楼

 这种不带形参的这种函数,怎么看起来和直接# define的没有什么区别呢,能否 函数名(); 类似 sleep() 替代 sleep. 这样看起来更直观一点


专家
2026-03-26 15:04:44     打赏
6楼

期待下一篇


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]