找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2955|回复: 10
打印 上一主题 下一主题
收起左侧

两相四线步进电机(有滑台的那种),反转正常(滑台移动),正转电机振动(滑台不动)

[复制链接]
跳转到指定楼层
楼主
ID:355325 发表于 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;
       }  //
      }
    }
  }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:65956 发表于 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
回复

使用道具 举报

板凳
ID:608261 发表于 2019-9-6 08:37 | 只看该作者
换个单片机试试?
回复

使用道具 举报

地板
ID:425029 发表于 2019-9-6 16:31 | 只看该作者
最好是不要用L298N来驱动步进电机,可以选2003或DV8912等,控制方式都比较直观。
回复

使用道具 举报

5#
ID:355325 发表于 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了。
回复

使用道具 举报

6#
ID:355325 发表于 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);
}
这个是我的初始化代码。
回复

使用道具 举报

7#
ID:505032 发表于 2019-9-6 20:07 | 只看该作者
1.A+A-;B+B-两相对调一下,看是否机械阻力过大。
2.如果不是看步进驱动板,对应的那路的续流管是否性能不好,一般要求除了耐压,还要求反向恢复速度,
3.步进启动的脉冲信号速度(准确说是频率)不能太高,
4.接口的线必须接触良好,电机的瞬时一般较大,接触良好是必须的。
解决不了再联系,,,,祝你成功
回复

使用道具 举报

8#
ID:355325 发表于 2019-9-7 11:08 | 只看该作者
sZhou 发表于 2019-9-6 20:07
1.A+A-;B+B-两相对调一下,看是否机械阻力过大。
2.如果不是看步进驱动板,对应的那路的续流管是否性能不 ...

解决了,谢谢你!是接口线坏了,看着是新的杜邦线,结果是坏的。
比心
回复

使用道具 举报

9#
ID:280202 发表于 2019-10-12 15:35 | 只看该作者
杜邦线有没有问题?
回复

使用道具 举报

10#
ID:616759 发表于 2019-10-14 09:47 | 只看该作者
一般时序问题,因为你有一个方向能转,说明电源和电机都没有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表