新手提问按钮调速步进电机问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 488|回复: 2

[未解决] 新手提问按钮调速步进电机问题

[复制链接]
发表于 2022-4-13 21:42 | 显示全部楼层 |阅读模式
用一个按钮给步进电机调速,按钮按下得到高电平1,让步进电机持续加速,按钮松开得到低电平0,让步进电机持续减速,设置步进驱动器的最高速和最低速,问题是如果不要在串口监视器中显示速度信息的话,按下按钮就能正常换向和调速,如果把代码中最后两行被注释掉的恢复的话就没法调速,电机始终以一个低速转动,按下按钮只能换向不能调速

int dir = 5;     // 步进电机方向引脚
int stepp = 4;    // 步进电机速度脉冲引脚
int anniu = 8; //定义按钮端口8
int val;//定义存储按钮状态(高电平,低电平)变量
int led; //步进电机速度变量

void setup() {
  pinMode(anniu, INPUT); //定义按钮端口为输入模式(接收信号)
  pinMode(stepp, OUTPUT);    // 速度引脚为输出模式
  pinMode(dir, OUTPUT);     // 方向引脚为输出模式
  Serial.begin(9600);// 定义串口波特率(通信速率)

}

void loop() {
  val = digitalRead(anniu); //用函数digitalRead读取端口8数字信号(高,低电平)并存入val
  if (val == 1) {//如果按下按钮(高电平=1,低电平=0)
    led = led - 1; //步进电机速度逐渐提高:脉冲时间越短,频率越高,速度越快
    digitalWrite(dir, LOW);  //改变步进电机旋转方向   
  }
  if (val == 0) {//如果松开按钮(高电平=1,低电平=0)
    led = led + 1; //步进电机速度逐渐降低:脉冲时间越长,频率越低,速度越慢
    digitalWrite(dir, HIGH);  //改变步进电机旋转方向
  }
  if (led > 2000) {//设置步进电机最慢速度
    led = 2000;
  }
  if (led < 120) {//设置步进电机最快速度
    led = 120;
  }
  digitalWrite(stepp, HIGH);    //电机驱动器输出高脉冲
  delayMicroseconds(led);   //脉冲频率为按钮控制的加-减速
  digitalWrite(stepp, LOW);     //电机驱动器输出低脉冲
  delayMicroseconds(led);   //脉冲频率为按钮控制的加-减速
  //Serial.print("电机速度=");//串口监视器输出提示字符:电机速度=
  //Serial.println(led);//串口监视器输出电机速度值
}


发表于 2022-4-25 11:25 | 显示全部楼层
我没有开关  所以只能默认按钮位置一直输入0,我试了一下你的程序,是可以控制速度和显示速度的
 楼主| 发表于 2022-4-25 11:55 来自手机 | 显示全部楼层
哦,我用闭环步进电机试的,加上串口监视器显示信息的两句就不能调速,等找个普通步进电机在试试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 07:41 , Processed in 0.070276 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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