zoukankan      html  css  js  c++  java
  • arduino中驱动 步进电机

    参考:https://www.arduino.cn/thread-75936-1-1.html

     知识点:
        步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

        步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。。。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。)

       正文:
       本文用Arduino 驱动步进电机28BYJ48,没有使用库文件,编写的程序简捷高效。注意,连接成组,在端口4 5 6 7,之后就可以测试了。程序测试通过,没有问题,供学习Arduino和步进电机用。


    [kenrobot_code]/*********************************
      功能:驱动28BYJ-48步进电机
      设计:凌晨七點半
      日期:2018.3.25
      连接引脚:分别将28BYJ-48驱动器的IN1 IN2 IN3 IN4连接到
                Arduino Uno R3 4 5 6 7引脚 也就是PORTD 4 5 6 7
    *********************************/
    //定义连接为PD4 PD5 PD6 PD7

    #define ROTATE(x) {PORTD|=x; PORTD&=(x|0x0F);}

    //四相单四拍
    const char SinBeat[4]={0x80,0x40,0x20,0x10};
    //四相双四拍
    const char DulBeat1[4]={0xc0,0x60,0x30,0x90};
    //四相双八拍
    const char DulBeat2[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};

    //节拍模式选择
    #define MODE DulBeat2
    void setup() {
      pinMode(4,OUTPUT);
      pinMode(5,OUTPUT);
      pinMode(6,OUTPUT);
      pinMode(7,OUTPUT);
      Serial.begin(9600);
    }
    //逆时针旋转
    void Anti_Clockwise(int Speed)
    {
    for(int i=0;i<sizeof(MODE);i++)
    {
    ROTATE(MODE);
    delay(Speed);
    }
    }
    //顺时针旋转
    void Clockwise(int Speed)
    {
    for(int i=sizeof(MODE);i>=0;i--)
    {
    ROTATE(MODE);
    delay(Speed);
    }
    }
    void loop() {


    Clockwise(50);
    delay(500);
    //Serial.println("OK...");

    }[/kenrobot_code]

    <ignore_js_op>

    IMG_20180325_173728.jpg (399.76 KB, 下载次数: 208)

     

    IMG_20180325_173728.jpg
    <ignore_js_op>

    STEPPER_2018.3.25.zip

     参考:

    /*********************************
      功能:驱动28BYJ-48步进电机
      设计:凌晨七點半
      日期:2018.3.25
      连接引脚:分别将28BYJ-48驱动器的IN1 IN2 IN3 IN4连接到
                Arduino Uno R3 4 5 6 7引脚 也就是PORTD 4 5 6 7
    *********************************/
    //定义连接为PD4 PD5 PD6 PD7

    #define ROTATE(x) {PORTD|=x;PORTD&=(x|0x0F);}
    unsigned long Time;
    unsigned long End;

    //四相单四拍
    const char SinBeat[4]={0x80,0x40,0x20,0x10};
    //四相双四拍
    const char DulBeat1[4]={0xc0,0x60,0x30,0x90};
    //四相双八拍
    const char DulBeat2[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};

    //节拍模式选择
    #define MODE SinBeat//DulBeat1
    void setup() {
      pinMode(4,OUTPUT);
      pinMode(5,OUTPUT);
      pinMode(6,OUTPUT);
      pinMode(7,OUTPUT);
      Serial.begin(9600);
    }
    ////逆时针旋转
    //void Anti_Clockwise(int Speed)
    //{
    //for(int i=0;i<sizeof(MODE);i++)
    //{
    // ROTATE(MODE[i]);//{PORTD|=MODE[i];PORTD&=(MODE[i]|0x0F);}
    //delay(Speed);
    //}
    //}
    //顺时针旋转
    void Clockwise(int Speed)
    {
    for(int i=sizeof(MODE);i>=0;i--)
    {
     ROTATE(MODE[i]);
    delay(Speed);
    }
    }
    void loop() {
    Time = millis();
    do
    {
    Clockwise(2);
    End = millis() - Time;
    } while(End < 6000);

    delay(25920000); // 一天86400000  三天25920000
     //Serial.println("OK...");


    }




  • 相关阅读:
    MySQL学习记录
    Python3玩转儿 机器学习(4)
    Python3玩转儿 机器学习(3)
    C#-WebForm-文件上传-FileUpload控件
    C#将WebBowser控件替换为谷歌内核【转】
    各种【icon】矢量图
    WPF 获取鼠标全局坐标【精简】
    winfrom 的 各种效果【需要新浪帐号查看】
    JS 文字波纹效果【插件】
    C# 窗口抖动
  • 原文地址:https://www.cnblogs.com/MCSFX/p/12070325.html
Copyright © 2011-2022 走看看