首页 > 编程知识 正文

关于42步进电机驱动——基于STM32 HAL库实现

时间:2023-05-03 07:44:07 阅读:149540 作者:3954

我找了很多资料,关于42步进电机的很多东西都是文档。 这么多文档需要积分。 需要重点的不仅内容非常差,而且浪费时间和电脑的内存。 大部分是基于Arduino和51驱动的42步进电机驱动硬件如下

首先请了解步进电机的驱动原理。 我也不吵。 请看这里的博客:

二相四线、四相五线、四相六线步进电动机布线及驱动方法,

读了这个就明白了驱动和布线的原理。

一开始我也很烦恼怎么接线。 因为有些博客在谈论这些问题时讲得不够。

方法如下。

用万用表对准欧姆档,在一个簧片上挂上一个表笔,依次测量其他几个簧片的暴躁西装,如果两根簧片的电阻值非常接近,那两根簧片就是其中之一(p

B和~B )、用你的表笔固定的别针在COM一侧(a或b取决于具体情况);

那么,我不知道是什么原因,但我测试的时候,没有电阻值接近的两根导线。

我个人的解决方案是用短路测试方法,当两条导线导通时,确定两条导线是其中一组,确定A组和B组。 这样的线序和从淘宝上拿到的资料图的线序一样。

原理如下。 A、A是连通的,B和B是连通的。 那么,a和a是同一相a,b和b是同一相。

其中,电机内部由8个物理上独立的线圈构成。 因为只有四根电线,所以只有两个线圈。

现在,使用A4988驱动电路板驱动步进电机

A4988驱动器电路板如图所示。

接下来介绍如何布线:

ENA为使能端子(低电平有效)

STEP是阶跃信号输入端子(PWM和IO端子高低电平转换都可以) )。

DIR是步进电机方向控制IO (高电平为稳态,低电平为逆时针方向) )。

VDD是模块的逻辑电压3V3或5V (必须连接)。

VMOT是步进电机的输入电压(8V-35V )

1A、1B为同一相 , 2A、2B为同一相(不能接反,否则电机会出现抖动的情况)

在VMOT电压输入端,并联一个47uF以上的电容,滤波防止保持压值稳定

如果不使用SLEEP休眠模式,请将SLEEP和RESET短路

不发送接线图。 结束后拆线。 线路也有点乱。 这里有简图,但本人的母测图的配线有问题。 (当然,其实STM32系列的单片机也一样。 )

我使用的开发环境是STM32CUBEIDE1.4.0,测试代码如下:

Hal_RDXTZ_base_start(HTIM4 ); voidbsp_Delayus(uint32_tnus ) { htim1.Instance=rdxtz1; htim1.Init.Prescaler=180 - 1; hti m1.init.counter mode=RDX tz _ counter mode _ down; htim1.Init.Period=nus; hti m1.init.clock division=RDX tz _ clock division _ div 1; hti m1.init.autoreload preload=RDX tz _ autoreload _ preload _ disable; Hal_RDXTZ_base_init(HTIM1 ); Hal_RDXTZ_base_start(HTIM1 ); wile (_ Hal _ RDX tz _ get _ counter (hti m1 )0); Hal_RDXTZ_base_stop(HTIM1 ); }Hal_gpio_writepin(gpiob,GPIO_PIN_1,SET ); Hal_gpio_writepin(gpioa,GPIO_PIN_5,RESET );/* user code end2*//* infinite loop *//* usercodebeginwhile */while (1({/* user code end while */* user code begin 3 x200; x () Hal_gpio_writepin(gpiob,GPIO_PIN_0,RESET ); Hal _ gpio _ write pin (step _ gpio _ port,Step_Pin,SET ); BSP_Delayus(1000; Hal _ gpio _ write pin (step _ gpio _ port,Step_Pin,RESET ); BSP_Delayus(1000; (Hal_Delay(5000; for(uint8_tx=0; x400; x () Hal_gpio_writepin(gpiob,GPIO_PIN_0,SET ); Hal _ gpio _ write pin (step _ gpio _ port,Step_Pin,SET ); BSP_Delayus(1000; Hal _ gpio _ write pin (step _ gpio _ port,Step_Pin,RESET ); BSP_Delayus(1000; (Hal_Delay(5000; }不得不谈谈代码。 步进电机的全驱动器、半驱动器和更细分化

我们现在的状态是,全传动模式每转200步,两个线圈就能工作产生更高转矩的半传动状态。 组合全驱动和小波驱动的状态,将分辨率从每转200步增加到400步,再分成1/4、1/8等等,在目前的程序中,STEP引脚每捕捉一次高电平,电机就需要一步每个序列转换为1.8度。 可以使用它来计算特定角度所需的步骤数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。