有偿求助 esp32 控制57闭环步进电机进行正反转循环-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4209|回复: 1

[未解决] 有偿求助 esp32 控制57闭环步进电机进行正反转循环

[复制链接]
发表于 2018-4-20 16:26 | 显示全部楼层 |阅读模式
本帖最后由 baojian 于 2018-4-20 16:50 编辑

有偿求助 esp32 控制57闭环步进电机进行正反转循环
发表于 2021-9-14 21:33 | 显示全部楼层
  1. #define   enPin     5   // the number of the En pin
  2. #define   stpPin    6   // the number of the Stp pin
  3. #define   dirPin    7   // the number of the Dir pin

  4. /**************************************************************
  5. ***  接线:
  6.     * D5接En(闭环驱动板屏幕上的En选项选择L或Hold)
  7.     * D6接Stp
  8.     * D7接Dir
  9.     * V+和Gnd接10~28V供电
  10.     * 非工业套餐(不带光耦隔离)要把Arduino控制板的Gnd和闭环驱动板的Gnd接在一起(共地)

  11. *** 注意事项:
  12.     * Arduino控制板和闭环驱动板的两个Gnd要接在一起
  13.     * 先接好线再通电,不要带电拔插!!!
  14.     * 上电时,先通10~28V供电,再通Arduino控制板USB供电!!!避免一些效应造成损坏
  15.     * 断电时,先断Arduino控制板USB供电,再断10~28V供电。
  16. ***************************************************************/

  17. long i = 0, j = 0;  bool cntDir = false;

  18. void setup() {
  19.   // put your setup code here, to run once:

  20.   pinMode(enPin , OUTPUT);  digitalWrite(enPin , LOW);  // initialize the En pin as an output
  21.   pinMode(stpPin, OUTPUT);  digitalWrite(stpPin, LOW);  // initialize the Stp pin as an output
  22.   pinMode(dirPin, OUTPUT);  digitalWrite(dirPin, LOW);  // initialize the Dir pin as an output
  23. }

  24. void loop() {
  25.   // put your main code here, to run repeatedly:

  26. /**********************************************************
  27. ***  高低电平的时间间隔,即脉冲时间的一半(控制电机转动速度)
  28. **********************************************************/
  29.   delayMicroseconds(600); //600us

  30. /**********************************************************
  31. ***  取反D6(Stp引脚)
  32. **********************************************************/
  33.   digitalWrite(stpPin, !digitalRead(stpPin));

  34. /**********************************************************
  35. ***  记录IO取反次数(IO取反次数 = 2倍的脉冲数)
  36. **********************************************************/
  37.   if(cntDir)  {--i;}  else  {++i;}

  38. /**********************************************************
  39. ***  PA6(Stp引脚)取反了6400次,即发送了3200个脉冲
  40. *** 16细分下,发送3200个脉冲电机转动一圈(1.8度电机)
  41. **********************************************************/
  42.   if(i >= 6400)
  43.   {
  44.     digitalWrite(dirPin, HIGH);  cntDir = true;   delay(1000);  //切换方向转动
  45.   }
  46.   else if(i == 0)
  47.   {
  48.     digitalWrite(dirPin, LOW);  cntDir = false;   delay(1000);  //切换方向转动
  49.   }
  50. }
复制代码


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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 23:39 , Processed in 0.104969 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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