stm32使用TB6600驱动器控制42BYGH型步进电机

stm32使用TB6600驱动器控制42BYGH型步进电机

stm32使用TB6600驱动器控制42BYGH型步进电机



前言

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、使用的设备说明介绍

在这里插入图片描述

24V开关电源

24V电源就是通过电路控制开关进行高速的导通于截至,将直流电转化为高频率的交流电提供给变压器进行变压从而产生所需要的一组或多组24V电压
在这里插入图片描述

接线注意事项,一般使用直接接线火线和零线,电源不分正负极,
输出电源和输入别搞反了,搞反了就冒烟了,容易到沫子
电压微调旋钮一般不建议使用。

TB6600驱动器

产品特点

原装全新步进电机驱动芯片— 芯片:TB67S109AFTG
8档电流控制
7种细分可调
接口采用高速光耦隔离
自动半流减少发热量
大面积散热片不惧高温环境使用
抗高频干扰能力强
输入电压防反接保护
过热,过流短路保护

技术规格

输入电压:DC9-42V
控制信号:3.3-24V通用(无需串电阻)
输入电流:推荐使用开关电源功率5A
输出电流:0.5-4.0A
最大功耗:160W
细 分:1,2/A,2/B,4,8,16,32
温 度:工作温度-10~45℃;存放温度-40℃~70℃
湿 度:不能结露,不能有水珠
气 体:禁止有可燃气体和导电灰尘
体 积:96 * 71 * 37 mm
重 量:0.2 kg

拨码开关设定

6路拨码开关
S1~S3 细分脉冲
S4~S6 电流设置
在这里插入图片描述
在这里插入图片描述

42BYGH 步进电机

在这里插入图片描述

接线方法

在这里插入图片描述

在这里插入图片描述

控制步进电机的正反转

TB6600驱动器上面有方向控制使能如下图
在这里插入图片描述
通过高低电平的使能方向来控制电机的正方转。
DIR+ 高电平 正转
DIR+ 低电平 反转
DIR- 低电平 正转
DIR- 高电平 反转

具体的转向根据实际电机的情况

控制步进电机的调速

通过使用驱动器来调速,开关拨码S1~S3 来设置不同的细分设置,
例如: 200,400,,,,3200,6400。
我们通过设置的pwm 的输入频段来确定每秒的输出,来确定所转化的步数,来确定转动一圈所需要的时间,或者转动的角度来确定的时间,TIM4_PWM_Init(100,500);通过数值算出一秒1440次,电机大约4.44秒转一圈 ,72000000/100/500= 14,40步/s ,设置6400 步为一周,则需要4.44s

### 实现 STM32TB6600 驱动 42 步进电机的精确角度控制 为了实现 STM32 控制 TB6600 驱动器并进一步驱动 42BYGH 步进电机完成精确的角度旋转,需要综合考虑硬件连接、软件配置以及步进电机的工作原理。 #### 硬件准备 所需的主要硬件组件包括: - **STM32控制器** - **TB6600 步进电机驱动器** - **42BYGH 步进电机** 具体接线方式如下: -STM32 的 GPIO 引脚分别连接到 TB6600 的 `PUL`(脉冲输入)、`DIR`(方向输入)和 `ENA`(使能端口)引脚。 - 连接电源至 TB6600 的 VCC 和 GND 接口,并确保电压满足步进电机的要求[^2]。 #### 软件设计 要实现精确的角度控制,首先需要计算每一步对应的机械角度。对于常见的 42BYGH 步进电机,默认步距角为 1.8°/步。如果启用了细分模式,则实际转动角度会更小。例如,在 16 细分模式下,每步对应的实际角度为 \( \frac{1.8^\circ}{16} = 0.1125^\circ \)。 以下是基于 HAL 库编写的 STM32 PWM 输出代码示例: ```c #include "stm32f1xx_hal.h" #define PULSE_PIN GPIO_PIN_0 #define DIR_PIN GPIO_PIN_1 #define ENA_PIN GPIO_PIN_2 #define GPIO_PORT GPIOA void Motor_Init(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = {0}; // 初始化 PUL, DIR, ENA 引脚 GPIO_InitStruct.Pin = PULSE_PIN | DIR_PIN | ENA_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct); // 默认关闭电机 HAL_GPIO_WritePin(GPIO_PORT, ENA_PIN, GPIO_SET); } // 设置目标角度 float SetAngle(float target_angle, uint8_t microsteps) { float step_angle = (1.8 / microsteps); // 计算单步步数对应的角度 int steps_required = round(target_angle / step_angle); // 总共需要多少步 return steps_required; // 返回总步数 } // 发送指定数量的脉冲信号 void Send_Pulses(int num_pulses, uint16_t delay_us) { for (int i = 0; i < num_pulses; ++i) { HAL_GPIO_TogglePin(GPIO_PORT, PULSE_PIN); HAL_Delay_Microseconds(delay_us); // 延迟时间决定转速 } } ``` 上述代码实现了以下功能: 1. 定义了用于控制步进电机的三个主要引脚:`PUL`, `DIR`, 和 `ENA`。 2. 提供了一个函数 `SetAngle()` 来根据目标角度和细分数目计算所需的步数。 3. 使用循环发送一定数量的脉冲信号给步进电机,从而达到设定的目标位置。 #### 参数调整 在实际应用中可能还需要注意以下几个方面: - **电流调节**:通过调整 TB6600 上的电位计来适配不同负载条件下的最佳运行状态[^1]。 - **速度与加减速处理**:为了避免启动或停止过程中产生振动或者失步现象,可以引入梯形加速曲线算法优化运动轨迹。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闰土小蒋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值