zoukankan      html  css  js  c++  java
  • STM32串口控制步进电机(原创)

    用的42步进电机:

    厂家可能不一样,两项四线步进电机,里面有两个线圈。在电机什么电都没有接的情况下,用万用表测量四个管脚;两两短接(或者阻值很小)的为一组,可以分别接A+,a-剩余接B+,B-;顺序可以互换;  经测,我用的17hs4417  黑绿一组,红蓝一组。

    建议还是买个步进电机驱动器,五六十一个,相当好用。

    贴一下STM32串口控制步进电机的代码:

    #include "led.h"
    #include "delay.h"
    #include "key.h"
    #include "sys.h"
    #include "usart.h"
    #include "timer.h"
    
    //#define EN PBout(0)//步进电机使能端口置零停止
    //#define Dirt PBout(1)  //置零反转 ,
    //en 绿色    pb0
    //dir- 黄色   正反   pb1
    //pul— 蓝色   脉冲   pb5   
    //共阳极   橙色 3.3v
     int main(void)
     {    
    
         u8 t;
      u8 Rx1;    
      u8 Rx2;    
      u32  n;
         u16 pwmval=0;    
        delay_init();             //延时函数初始化      
        NVIC_Configuration();      //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(9600);     //串口初始化为9600
         LED_Init();
        TIM3_PWM_Init(750,720);    
        //LED端口初始化
     //不分频。PWM频率=72000000/7200=10000hz   10000/100=100hz;
        //400-1000
        EN=0;//开机后,步进电机使能为0,不转
        Dirt=0;
      while(1)
        {
            TIM_SetAutoreload(TIM3,n);
            pwmval=n/2;        
            TIM_SetCompare2(TIM3,pwmval);    
        //n=750;
                    if(USART_RX_STA&0x8000)
                    {                       
                        Rx1=USART_RX_BUF[0];
                        Rx2=USART_RX_BUF[1];
                        USART_RX_STA=0;}
                    switch (Rx1)
                    { 
            //      case 'g':    TIM3_PWM_Init(720,700);EN=1;Dirt=0;break;// 前进
            //             case 'b':    TIM3_PWM_Init(720,700);EN=1;Dirt=0;break;// 后退:步进电机暂时没有前进后退
                        case 'l':    n=720;EN=1;Dirt=1;break;// 左转
                        case 'r':    n=720;EN=1;Dirt=0;break;// 右转
                        case 's':    EN=0;break;// 停止
                         case 'a':    n=Rx2*6+400;EN=1;Dirt=1;break;// 自动巡航左转
                         case 'c':    n=Rx2*6+400;EN=1;Dirt=0;break;// 自动巡航右转
                        default:break;             
                    }
        }
    }

    关于PWM的使用方法,在博主的其他随笔里有较详细说明。

    Smartkeke
  • 相关阅读:
    学习java随笔第五篇:流程控制
    学习java随笔第四篇:运算符
    学习java随笔第三篇:java的基本数据类型
    知识精简
    性能优化(详细)
    2,8,10,16进制转换
    前端优化35例
    性能优化
    字面量自定义事件

  • 原文地址:https://www.cnblogs.com/smartkeke/p/6821532.html
Copyright © 2011-2022 走看看