标题: 两相四线步进电机(有滑台的那种),反转正常(滑台移动),正转电机振动(滑台不动) [打印本页]

作者: almsy    时间: 2019-9-5 20:44
标题: 两相四线步进电机(有滑台的那种),反转正常(滑台移动),正转电机振动(滑台不动)
两相四线步进电机(有滑台的那种),反转正常(滑台移动),正转电机振动(滑台不动,有时也转并且滑台移动的方向与反转移动的方向一样)

我用STM32写的代码
PA9 、PA12、PA11、PA15---------------------A+,A-,B+,B-
我用的L298N驱动模块驱动的,怀疑过L298N驱动模块坏了,换一个结果还是一样。我有两个同样的步进电机,本来以为电机坏了,结果换了另一个电机结果还是一样。记得之前我还用得挺好的呢!这几天用怎么就不行了呢?晕乎两天了。请大家帮帮我找找原因,谢谢了
部分主程序如下
while(1)
{
  motor2(1);
}

下面是电机驱动程序
void motor2(unsigned char derection)

{
unsigned char i;
if(derection!=0)
{
    if(derection==1)
     {
     for(i=1;i<5;i++)
     {
       switch(i)    //?????????????
      {
       case 1://A B A- B-
        PAout(8)=1;PAout(12)=1;PAout(11)=0;PAout(15)=0;delay_ms(5); //ab
       break;
       case 2:
        PAout(8)=0;PAout(12)=1;PAout(11)=1;PAout(15)=0;delay_ms(5); //a~b
       break;
       case 3:
        PAout(8)=0;PAout(12)=0;PAout(11)=1;PAout(15)=1;delay_ms(5);//a~b~
       break;
       case 4:
        PAout(8)=1;PAout(12)=0;PAout(11)=0;PAout(15)=1;delay_ms(5); //ab~
       break;
      }  //
     }
    }
   
    if(derection==2)
     {
      for(i=4;i>0;i--)
      {
        switch(i)    //?????????????
       {
        case 1:
         PAout(8)=1;PAout(12)=1;PAout(11)=0;PAout(15)=0;delay_ms(5); //ab
        break;
        case 2:
         PAout(8)=0;PAout(12)=1;PAout(11)=1;PAout(15)=0;delay_ms(5); //a~b
        break;
        case 3:
         PAout(8)=0;PAout(12)=0;PAout(11)=1;PAout(15)=1;delay_ms(5);//a~b~
        break;
        case 4:
         PAout(8)=1;PAout(12)=0;PAout(11)=0;PAout(15)=1;delay_ms(5); //ab~
        break;
       }  //
      }
    }
  }
}



作者: aking991    时间: 2019-9-6 08:22
PA9 、PA12、PA11、PA15---------------------A+,A-,B+,B-这个与这个是否对应PAout(8)=1;PAout(12)=1;PAout(11)=0;PAout(15)=0;delay_ms(5); //ab
作者: YYCX1995    时间: 2019-9-6 08:37
换个单片机试试?
作者: yuduan66    时间: 2019-9-6 16:31
最好是不要用L298N来驱动步进电机,可以选2003或DV8912等,控制方式都比较直观。
作者: almsy    时间: 2019-9-6 17:43
aking991 发表于 2019-9-6 08:22
PA9 、PA12、PA11、PA15---------------------A+,A-,B+,B-这个与这个是否对应PAout(8)=1;PAout(12)=1;PAout ...

尴尬,我打错了把PA8打成PA9了。
作者: almsy    时间: 2019-9-6 17:45
aking991 发表于 2019-9-6 08:22
PA9 、PA12、PA11、PA15---------------------A+,A-,B+,B-这个与这个是否对应PAout(8)=1;PAout(12)=1;PAout ...

void motor_Init2(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
       
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_11| GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
       
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}
这个是我的初始化代码。
作者: sZhou    时间: 2019-9-6 20:07
1.A+A-;B+B-两相对调一下,看是否机械阻力过大。
2.如果不是看步进驱动板,对应的那路的续流管是否性能不好,一般要求除了耐压,还要求反向恢复速度,
3.步进启动的脉冲信号速度(准确说是频率)不能太高,
4.接口的线必须接触良好,电机的瞬时一般较大,接触良好是必须的。
解决不了再联系,,,,祝你成功
作者: almsy    时间: 2019-9-7 11:08
sZhou 发表于 2019-9-6 20:07
1.A+A-;B+B-两相对调一下,看是否机械阻力过大。
2.如果不是看步进驱动板,对应的那路的续流管是否性能不 ...

解决了,谢谢你!是接口线坏了,看着是新的杜邦线,结果是坏的。
比心
作者: 少文    时间: 2019-10-12 15:35
杜邦线有没有问题?
作者: bai_yun_123    时间: 2019-10-14 09:47
一般时序问题,因为你有一个方向能转,说明电源和电机都没有问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1