四相五线步进电机定时器驱动

本文介绍了四相五线步进电机的工作原理,步距角计算,常见问题及解决办法,启动频率的重要性,以及如何使用定时器进行调速。通过减速比计算控制电机转动角度和圈数,并分析了由于减速比误差导致的微小定位误差。文中还提供了相关源代码,展示了如何利用定时器实现按键消抖和电机控制。
摘要由CSDN通过智能技术生成

最近研究了四相五线步进电机,在这里记录一下,如有错误,欢迎指正。

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

2)步进电机是改变频率调速。

3)步距角 = 360/运行的拍数/转子齿数

4)针对电机只震动而不转的原因:
    1、接线错误
    2、程序给的频率太快电机反应不过来,可以给一个较慢的频率启动电机,在通过修改频率的方法加快频率。
    3、负载过重
5) 启动频率
    步进电机有一个启动频率,当大于这个频率的时候电机无法启动。
6)减速步进电机
    电机参数表中有个减速比,1:64。当步进电机在8拍模式下,转一圈需要64个节拍,实际看电机参数中的步距角来算转一圈的拍数。那么这个减速比的意思的就是,当转子转64拍的时候输出轴才转一拍的角度,那么实际转一圈的拍数就是 64*64 =   4096拍。
    根据这些条件就可以任意的控制电机转动的角度和圈数了。 eg : 使电机转动5圈,那么所需要的拍数就是 5*4096了,可以根据这个参数条件去判断。 使电机转动270度 则可以算出:4096/360*270 = 3072,这就是转动270度所需要的拍数。

7) 步进电机调速

因为步进电机的转速与脉冲频率成正比的,在用定时器的情况下,我们可以利用TIM_SetAutoreload()来修改ARR的值,从而实现改变转速的效果。这里建议用定时器来实现步进电机的运作,当步进电机运行的时候用延时函数的话会影响其他功能的正常使用。

8)误差

        当我们利用4096这个拍数来执行电机,会有相应的误差。当运行一百圈的时候会出现半圈的误差,我们是根据减速比1:64来计算出4096这个拍数的,而这个减速比是不准确的,实测的减速比是(32/8)*(22/11)*(26/9)* (31/10)约等于 63.684,那么利用这个算出的拍数是4076了,因为上面的数据记过是约等于出来的,实际的误差大约是0.000056,即转一万圈才会出现半圈的误差,已经可以忽略不记了。

TIM.h文件

#ifndef __TIMER__H
#define __TIMER__H
#include "sys.h"
void TIM3_Init();

#endif

TIM.c文件

#include "timer.h"
#include "motor.h"
void TIM3_Init()
{
	NVIC_InitTypeDef NVIC_InitStruct;
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
	
	TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInitStruct
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值