motor.h
#ifndef __waishe_H
#define __waishe_H
#define IN1_H GPIO_SetBits(GPIOB,GPIO_Pin_13)
#define IN1_L GPIO_ResetBits(GPIOB,GPIO_Pin_13)
#define IN2_H GPIO_SetBits(GPIOB,GPIO_Pin_14)
#define IN2_L GPIO_ResetBits(GPIOB,GPIO_Pin_14)
#define IN3_H GPIO_SetBits(GPIOB,GPIO_Pin_15)
#define IN3_L GPIO_ResetBits(GPIOB,GPIO_Pin_15)
#define IN4_H GPIO_SetBits(GPIOB,GPIO_Pin_12)
#define IN4_L GPIO_ResetBits(GPIOB,GPIO_Pin_12)
void motor_Init(void);
void zhengzhuan(void);
void fanzhuan(void);
void ting(void);
void chuanglian_on(void);
void chuanglian_off(void);
#endif
motor.c
#include "motor.h"
#include "sys.h"
#include "delay.h"
int C=0,b=0;
void motor_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //ʱÖÓʹÄÜ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15|GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯
IN1_L;
IN2_L;
IN3_L;
IN4_L;
}
void fanzhuan(void)
{
IN1_H;
delay_ms(4);
IN1_L;
IN2_H;
delay_ms(4);
IN2_L;
IN3_H;
delay_ms(4);
IN3_L;
IN4_H;
delay_ms(4);
IN4_L;
}
void zhengzhuan(void)
{
IN1_H;
delay_ms(4);
IN1_L;
IN4_H;
delay_ms(4);
IN4_L;
IN3_H;
delay_ms(4);
IN3_L;
IN2_H;
delay_ms(4);
IN2_L;
}
void ting(void)
{
IN1_L;
IN2_L;
IN3_L;
IN4_L;
delay_ms(5);
}
void chuanglian_on(void)
{
while(1)
{
for(C=0;C<500;C++)
{
zhengzhuan();
}
if(C==500)
{
C=0;
ting();
break;
}
}
}
void chuanglian_off(void)
{
while(1)
{
for(b=0;b<500;b++)
{
fanzhuan();
}
if(b==500)
{
b=0;
ting();
break;
}
}
}
可能原因:丟步。
解决:1. 减速;2. 加大驱动电流
参考步进电机内部有动静但是外部轴不转是怎么回事?(附程序)-OpenEdv-开源电子网
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员【8折】购 ,仅需→¥23.2,即可享受5次/月 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m