求助:STM32F103通过驱动器控制两个步进电机

2019-07-21 02:58发布

硬件:stm32 mini板 ,两个步进电机驱动器,两个步进电机,X-Y直角坐标丝杠螺母副 。
目的:控制X-Y两轴步进电机的单独运动,只对定位有要求,调速什么的不做要求 。(重复实现固定动作的机构)
步进电机型号:42型:42BYGH4812    57电机型号:57BYGH748
之前看了原子哥的程序,构造了相对定位和绝对定位函数,觉得挺好,但只控制一个轴。仿写多次无果,如今还是只有一轴可动。
恳求大神帮帮菜鸟小弟,使另一轴动起来,或者有完整的代码发我一份研究研究,不胜感激。
步进电机驱动器如图:
驱动器 (1).png
装置示意图如下:

装置.jpg

代码已打包附件。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
GregJoy
2019-07-21 08:40
驱动头文件[mw_shl_code=applescript,true]#ifndef __DRIVER_H
#define __DRIVER_H
#include "sys.h"
#include "stdlib.h"       


/********** 驱动器 端口定义 **************
//DRIVER_DIR   PC0
//DRIVER_OE    PC2
//STEP_PULSE   PC7 (TIM8_CH2,LCD_RW)
******************************************/
#define DRIVER_DIR   PCout(0) // 旋转方向
#define DRIVER_OE    PCout(2) // 使能脚 低电平有效
#define RCR_VAL    255  //每计数(RCR_VAL+1)次,中断一次,这个值(0~255)设置大一些可以降低中断频率

typedef enum
{
        CW = 1,//高电平顺时针
        CCW = 0,//低电平逆时针
}DIR_Type;//运行方向

extern long target_pos;//有符号方向
extern long current_pos;//有符号方向

void Driver_Init(void);//驱动器初始化
void TIM8_OPM_RCR_Init(u16 arr,u16 psc);//TIM8_CH2 单脉冲输出+重复计数功能初始化
void TIM8_Startup(u32 frequency);   //启动定时器8
void Locate_Rle(long num,u32 frequency,DIR_Type dir); //相对定位函数
void Locate_Abs(long num,u32 frequency);//绝对定位函数

#endif

[/mw_shl_code]

一周热门 更多>