查看: 26271|回复: 28

Arduino驱动 步进电机

[复制链接]
  • TA的每日心情
    开心
    2020-9-9 09:23
  • 签到天数: 153 天

    [LV.7]常住居民III

    发表于 2018-3-25 17:39 | 显示全部楼层 |阅读模式
    本帖最后由 希岩 于 2020-5-28 13:05 编辑

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

        步进电机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和步进电机用。


    [mw_shl_code=arduino,true]/*********************************
      功能:驱动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...");

    }[/mw_shl_code]
    IMG_20180325_173728.jpg

    STEPPER_2018.3.25.zip

    981 Bytes, 下载次数: 661

    该用户从未签到

    发表于 2018-4-2 22:54 来自手机 | 显示全部楼层
    我也说一句不错
  • TA的每日心情
    奋斗
    2018-8-20 00:12
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-3-27 01:29 | 显示全部楼层
    上传的时候有提示“xORTD”没有被定义,是不是代码还少了一些东西?
  • TA的每日心情
    开心
    2020-9-9 09:23
  • 签到天数: 153 天

    [LV.7]常住居民III

     楼主| 发表于 2018-3-27 10:56 | 显示全部楼层
    本帖最后由 希岩 于 2018-3-27 10:58 编辑
    happyer 发表于 2018-3-27 01:29
    上传的时候有提示“xORTD”没有被定义,是不是代码还少了一些东西?

    谢谢,是的,上传啃罗布时丢了几行东西,现在编辑好了。我加个了空格,不知道为啥不加那个“P”丢掉了
  • TA的每日心情
    开心
    2018-9-28 11:29
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2018-3-27 14:45 | 显示全部楼层
    学习了,谢谢分享!
  • TA的每日心情
    郁闷
    2019-2-28 22:19
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    发表于 2018-3-27 23:01 | 显示全部楼层
    学习了,,小白强烈建议作者带点注释。。。。谢谢
  • TA的每日心情
    奋斗
    2018-8-20 00:12
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-3-28 00:25 | 显示全部楼层
    希岩 发表于 2018-3-27 10:56
    谢谢,是的,上传啃罗布时丢了几行东西,现在编辑好了。我加个了空格,不知道为啥不加那个“P”丢掉了 ...

    我上传后报了新的数组的问题
    invalid use of non-lvalue array
    能否传个.ino文件?
  • TA的每日心情
    开心
    2020-9-9 09:23
  • 签到天数: 153 天

    [LV.7]常住居民III

     楼主| 发表于 2018-4-13 21:04 | 显示全部楼层
    happyer 发表于 2018-3-28 00:25
    我上传后报了新的数组的问题
    invalid use of non-lvalue array
    能否传个.ino文件?

    已经发了。。。。。。
  • TA的每日心情
    郁闷
    2018-7-23 10:05
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-6-1 13:02 | 显示全部楼层
    小白一个,如何提高转速呢?还有就是这五根线分别控制什么呢?

    该用户从未签到

    发表于 2018-6-7 16:26 | 显示全部楼层
    warning: narrowing conversion of '128' from 'int' to 'const char' inside { } [-Wnarrowing]

    const char SinBeat[4]={0x80,0x40,0x20,0x10};
    In function 'void Anti_Clockwise(int)':

    sketch_jun07a:10: error: invalid use of non-lvalue array

    #define ROTATE(x) {PORTD|=x; PORTD&=(x|0x0F);}
    这个是要怎么弄啊
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    关于第三方IDE
    关于第三方IDE
    刚开始玩esp8266,用arduino做了几个例子,太蛋疼,开始找第三方ide,目前只研究了vsc
    arduino蓝牙接口串口显示为乱码
    arduino蓝牙接口串口显示
    各位看一下代码,我这串口无论怎么改,通过手机发送信息都是乱码。 #include
    开源!白菜白光T12控制器 全新UI界面
    开源!白菜白光T12控制器
    *声明:本项目源于https://github.com/wagiminator/ATmega-Soldering-Station 采用CC3
    关于arduino端口问题,萌新求助帖
    关于arduino端口问题,萌
    已经下好了 arduino的ide 可以从设备管理器看到 连接的板的名称, 但是不能从ide中找
    ESP8266烧录错误
    ESP8266烧录错误
    -首先-ESP8266新手 使用Arduino IDE Mac版开发, 对eps8266进行例程对烧录,总是报错
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表