mtlsh 发表于 2015-10-8 21:48:26

【求助】STC15F2K60S2+ULN2803驱动步进电机,电机不转动

STC15F2K60S2+ULN2803驱动35BYJ412步进电机, 电机内部有震动,感觉已经是在转,但轴没有转动。
请各位做过步进电机驱动的朋友帮忙分析一下是何原因?? 感谢!!!



#include"STC15F2K60S2.H"
#include <math.h>   
#include <stdio.h>   
#include <intrins.H>
#include "Uart.h"

sbit M_A0=P2^7; //蓝
sbit M_A1=P2^6; //粉
sbit M_A2=P2^5; //黄
sbit M_A3=P2^4; //橙

void Delay100ms()                //@24.000MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 10;
        j = 31;
        k = 147;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

void main(void)
{
        unsigned char g_step=0;
       
        P0M0=0x00;
        P0M1=0x00;
        P1M0=0x00;
        P1M1=0x00;
        P2M0=0x00;      
        P2M1=0x00;
        P3M0=0x00;
        P3M1=0x00;
        P4M0=0x00;
        P4M1=0x00;
        P5M0=0x00;
        P5M1=0x00;

        //输出口为强推挽模式
        P2M0=0xff;
        P2M1=0x00;

        Uart_Init();
       
        while(1)
        {
           switch(g_step){
                       case 1:
                                                 M_A0=1; //蓝
                               M_A1=1; //粉
                                    M_A2=1; //黄
                                    M_A3=0; //橙
                          print_string("g_step=1\r\n");
                          break;
                       case 2:
                                M_A0=1; //蓝
                                M_A1=1; //粉
                                M_A2=0; //黄
                                M_A3=0; //橙
                       print_string("g_step=2\r\n");
                          break;
                       case 3:
                                M_A0=1; //蓝
                                M_A1=1; //粉
                                M_A2=0; //黄
                                M_A3=1; //橙
                          print_string("g_step=3\r\n");
                          break;
                       case 4:
                                  M_A0=1; //蓝
                               M_A1=0; //粉
                               M_A2=0; //黄
                                M_A3=1; //橙
                       print_string("g_step=4\r\n");
                          break;
                       case 5:
                                   M_A0=1; //蓝
                                  M_A1=0; //粉
                               M_A2=1; //黄
                               M_A3=1; //橙
                          print_string("g_step=5\r\n");
                          break;
                       case 6:
                                   M_A0=0; //蓝
                               M_A1=0; //粉
                                M_A2=1; //黄
                               M_A3=1; //橙
                          print_string("g_step=6\r\n");
                          break;
                       case 7:
                                   M_A0=0; //蓝
                                   M_A1=1; //粉
                                M_A2=1; //黄
                               M_A3=1; //橙
                       print_string("g_step=7\r\n");
                          break;       
                       case 8:
                                   M_A0=0; //蓝
                                   M_A1=1; //粉
                                M_A2=1; //黄
                               M_A3=0; //橙
                        print_string("g_step=8\r\n");
                          break;       
                        default:
                                print_string("default\r\n");
                                  break;               
               }
               
               g_step++;
               if(g_step>8)
                       g_step=1;
               
   //print_string("g=%d\r\n",g_step);
           Delay100ms();
               Delay100ms();

        }

}

磊磊映画 发表于 2015-10-9 08:03:21

1.首先确定 2803能不能驱动35型步进电机2.步进电机启动时频率要慢慢上升,不能超过启动频率

xiaowu191 发表于 2015-10-9 09:01:00

2803是输入高,输出才通到地

mtlsh 发表于 2015-10-9 19:19:38

磊磊映画 发表于 2015-10-9 08:03
1.首先确定 2803能不能驱动35型步进电机2.步进电机启动时频率要慢慢上升,不能超过启动频率...

如何确定2803是否能驱动35BYJ412步进电机?

35BYJ412步进电机基本参数:
额定电压:12VDC
相数:4相
减速比:1/42.5
步距角:3.75°/42.5
驱动方式:4相8拍
直流电阻:90Ω±7%(25℃)
牵入频率:≥350Hz(空载)
牵出频率:≥500Hz(空载)
牵入转矩:≥800mN.m(120Hz)
自定位转矩:≥200mN.m
绝缘电阻:>50MΩ(500V)
绝缘强度:600VAC/1mA/1S
绝缘等级:A
温升:<60K(120Hz)
噪音:<45dB(120Hz)
重量:大约90g
未注公差按:GB1804-m
转向:CCW

mtlsh 发表于 2015-10-9 19:21:49

xiaowu191 发表于 2015-10-9 09:01
2803是输入高,输出才通到地

这个我知道,输入高、输入低我都试过了

磊磊映画 发表于 2015-10-9 21:23:33

mtlsh 发表于 2015-10-9 19:19
如何确定2803是否能驱动35BYJ412步进电机?

35BYJ412步进电机基本参数:


1.uln2803最大驱动电流是500ma有点小
你看下你那个电机驱动电流多大好
2.隔壁论坛有个帖子并联使用uln2803 提高驱动电流
2803并联

mtlsh 发表于 2015-10-9 23:12:05

磊磊映画 发表于 2015-10-9 21:23
1.uln2803最大驱动电流是500ma有点小
你看下你那个电机驱动电流多大好
2.隔壁论坛有个帖子并联使用uln280 ...

只能这样接试试看了;

liudingding 发表于 2016-2-21 17:16:44

用很低的频率,先一步—步看—下驰动波形是否正确,再用很底的频率连续运行
页: [1]
查看完整版本: 【求助】STC15F2K60S2+ULN2803驱动步进电机,电机不转动