一、对42步进电机使用演示记录

一、硬件

42步进电机:

主要参数根据标识得到:
电流:1.7A 即驱动器上选择时至少要大于1.7A。
步距角:1.8°,42电机转动时的最小角度
接线方式:根据步进电机标识的颜色于字母和驱动器上标识的字母一 一对应连接。
在这里插入图片描述
步进电机驱动器

在这里插入图片描述

驱动器上面的标识:

1、ENA功能说明:控制器的输出是通过该组信号使能,又称脱机信号。当此信号有效时,输出关闭,电机绕组电流为零, 电机为无力矩状态,可以自由转动电机,适合需要手动调整电机的场合。
2、DIR功能说明:电机的方向控制信号,当此信号有效时,电机顺时针转动,当此信号无效时,电机逆时针旋转。、
3、PUL功能说明:电机的转动控制信号,驱动器接收到的脉冲信号电机就会按照既定的方向旋转。电机的角位移与脉冲的数量成正比, 速度与脉冲的频率成正比。通常脉冲的有效宽度>=5us,频率<=125KHz。
带+号的根据需要:采用共阳极或共阴极接法,接单片机上的vcc(5v)或gnd。
4、驱动器上的vcc 和gnd ,则是接直流电源的正极和负级。电源选择上一般采用开关电源,或直流电源。且电源的电压在驱动器标识的范围,关于电流则可以根据挡位进行调节,调节电流挡位到合适的挡位,(有无负载的因素直接影响电机的转动,所以无负载,满足基本电机转动电流的挡位即可,有负载时调到大一些的挡位)
5、驱动器的细分设置由拨码开关的SW1~SW3来设定,默认为2细分,一般的42步进电机的步进角都是1.8°, 因此电机旋转一圈需要360° /1.8° =200个脉冲,这里2细分转一圈 需要的脉冲数200*2=400个。(量程最高32细分,所以需要脉冲数6400个,且基本上都是对应的。)

二、代码编写

42步进电机控制转动原理:
由三个类型的输入决定:
PUL提供脉冲,进行转动。
DIR提供转动方向,顺,逆转。
ENA提供转动使能,手动转动调节/信号使能。(若不需要调节,实际都可以不接)

1、生成代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此处通过配置tim2定时器的输出比较,用以生成可变频率的脉冲方波信号,来控制电机的快慢,

代码配置

__IO uint16_t Toggle_Pulse = 100; //小于10丢失,10~7000转动会越来越慢
//配置tim2
  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 84-1;//分频得到1mhz
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 0xffff;//默认
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
//配置比较输出
  sConfigOC.OCMode = TIM_OCMODE_TOGGLE;
  sConfigOC.Pulse = Toggle_Pulse;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)

//开启tim
  HAL_TIM_Base_Start(&htim2);
  HAL_TIM_OC_Start_IT(&htim2,TIM_CHANNEL_3);  /* 启动比较输出并使能中断 */
  TIM_CCxChannelCmd(TIM2,TIM_CHANNEL_3,TIM_CCx_ENABLE); /* 使能输出 */

//输出比较中断回调
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{
  uint32_t count;
  uint32_t tmp;
  count=__HAL_TIM_GET_COUNTER(htim);
  tmp = 0xffff & (count+Toggle_Pulse); //改变频率
  __HAL_TIM_SET_COMPARE(htim,TIM_CHANNEL_3,tmp);//设置占空比
}
//用以配置转动方向和使能开关(通过输出高低电平进行控制)
  HAL_GPIO_WritePin(GPIOE, DIR_Pin, GPIO_PIN_SET);// 方向 顺/逆
  HAL_GPIO_WritePin(GPIOE, ENA_Pin, GPIO_PIN_RESET);// 开启/关闭


效果:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值